In una funzione membro, posso parallelizzare usando la variabile membro condiviso int *x
come questoPerché la variabile membro della classe x non può essere condivisa (x) in OpenMP?
#pragma omp parallel for default(shared)
for(int i=0;i<size;i++) {
x[i]=i;
}
Ma se provo
#pragma omp parallel for default(none) shared(x,size)
for(int i=0;i<size;i++) {
x[i]=i;
}
ottengo l'errore: 'obj::x' is not a variable in clause 'shared'
. Preferirei la seconda versione perché annuncia le variabili condivise con cui sta lavorando, ricordandomi che non ci sono condizioni di gara o problemi simili.
Cosa sta succedendo che OpenMP afferma che obj::x
non è una variabile?
hai provato questo-> x? anche quale compilatore stai usando? – Beanz
il compilatore è g ++ 4.4. Provando '#pragma omp parallelo per default (nessuno) condiviso (this-> x, dimensione)' fornisce l'errore 'error: id non previsto prima di 'this'' –