Dodałem OpenMP do istniejącej bazy kodu, aby zrównoleglić pętlę for. Kilka zmienne są tworzone wewnątrz zakresu regionie parallel for
, w tym wskaźnik:Czy wskaźniki są prywatne w sekcjach równoległych OpenMP?
#pragma omp parallel for
for (int i = 0; i < n; i++){
[....]
Model *lm;
lm->myfunc();
lm->anotherfunc();
[....]
}
w wynikowym pliku wyjściowego zauważyłem niespójności, przypuszczalnie spowodowane przez wyścigu. Ostatecznie rozwiązałem warunki wyścigu, używając omp critical
. Pozostaje jednak moje pytanie: czy lm
jest prywatne dla każdego wątku, czy też jest udostępniane?
Dzięki za odpowiedź. Odczytując specyfikację, wyglądało to tak, jakby tak było, ale było to trochę niejasne. – argoneus