Re: max для OMP
От: remark Россия http://www.1024cores.net/
Дата: 30.11.09 20:03
Оценка: 2 (1)
Здравствуйте, barmale-y, Вы писали:

Во-первых, в reduction(data:max) вначале идёт операция, а потом список переменных.
reduction поддерживает только очень ограниченный набор операций, для более сложных нужно использовать ручное аггрегирование с помощью критической секции. Что-то в таком духе:

int main()
{
    int max = 0;
    int lmax;
#   pragma omp parallel shared(max) private(lmax)
    {
        lmax = 0;
#       pragma omp for
        for (int i = 0; i < 1000000; ++i)
        {
            int sq = i * i;
            if (sq > lmax)
                lmax = sq;
        }
#       pragma omp critical
        {
            if (lmax > max)
                max = lmax;
        }
    }
}



1024cores &mdash; all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.