openmp reduction
От: barmale-y  
Дата: 10.09.10 09:33
Оценка:
Как понимать вот это утверждение о том, что переменные в операторе reduction должны быть декларированы как shared [url=здесь]https://computing.llnl.gov/tutorials/openMP/#REDUCTION[/url]]:

Restrictions:
* Variables in the list must be named scalar variables. They can not be array or structure type variables. They must also be declared SHARED in the enclosing context.


Что это за контекст такой?

Если на директиву shared(s) компилятор ругается, а без этого объявления все хорошо работает, как и с директивой default(shared).

#include <stdio.h>
main() {
    int s = 0, i;
    #pragma omp parallel for shared(s) private(i)  reduction(+:s)
    for(i=0; i<100; ++i)  {
        s += i;
    }
    printf("s=%i",s);
}

error: ‘s’ appears more than once in data clauses
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.