Я добавил OpenMP к существующей базе кода, чтобы распараллелить цикл for. В области parallel for
области создается несколько переменных, включая указатель:
#pragma omp parallel for
for (int i = 0; i < n; i++){
[....]
Model *lm;
lm->myfunc();
lm->anotherfunc();
[....]
}
В результирующих выходных файлах я заметил несоответствия, предположительно вызванные состоянием гонки. В конечном итоге я решил проблему гонки, используя omp critical
. Однако у меня остается вопрос: является ли lm
частным для каждого потока или он используется совместно?