En una función miembro, que puede paralelizar el uso de la variable miembro compartido int *x
como esto¿Por qué la variable de miembro de clase x no se puede compartir (x) en OpenMP?
#pragma omp parallel for default(shared)
for(int i=0;i<size;i++) {
x[i]=i;
}
Pero si intento
#pragma omp parallel for default(none) shared(x,size)
for(int i=0;i<size;i++) {
x[i]=i;
}
me sale el error: 'obj::x' is not a variable in clause 'shared'
. Preferiría la segunda versión porque anuncia las variables compartidas con las que está trabajando, y me recuerda que debo asegurarme de que no haya condiciones de carrera o problemas similares.
¿Qué está pasando que OpenMP afirma que obj::x
no es una variable?
¿Has probado esto-> x? también qué compilador estás usando? – Beanz
el compilador es g ++ 4.4. Probando '#pragma omp parallel para default (none) shared (this-> x, size)' da el error 'error: esperado id-no-calificado antes 'this'' –