Ho aggiunto OpenMP a un codice esistente per parallelizzare un ciclo for. Diverse variabili sono create all'interno del campo di applicazione della regione parallel for
, tra cui un puntatore:I puntatori sono privati nelle sezioni parallele di OpenMP?
#pragma omp parallel for
for (int i = 0; i < n; i++){
[....]
Model *lm;
lm->myfunc();
lm->anotherfunc();
[....]
}
nei file di output risultanti ho notato incongruenze, presumibilmente causate da una condizione di competizione. Alla fine ho risolto le condizioni della gara usando un omp critical
. La mia domanda rimane, però: è lm
privata per ogni thread, o è condivisa?
Grazie per la risposta. Leggendo le specifiche, sembrava ... come se fosse il caso, ma era un po 'oscuro. – argoneus