W funkcji składowej, mogę parallelize korzystania z udostępnionego zmienną składową int *x
jak tenDlaczego zmienna składowa klasy x nie może być współużytkowana (x) w OpenMP?
#pragma omp parallel for default(shared)
for(int i=0;i<size;i++) {
x[i]=i;
}
Ale jeśli próbuję
#pragma omp parallel for default(none) shared(x,size)
for(int i=0;i<size;i++) {
x[i]=i;
}
pojawia się błąd: 'obj::x' is not a variable in clause 'shared'
. Wolę drugą wersję, ponieważ ogłasza zmienne współdzielone, z którymi pracuje, przypominając mi, że nie ma warunków wyścigu lub podobnych problemów.
Co się dzieje, że OpenMP twierdzi, że obj::x
nie jest zmienną?
Czy próbowałeś tego-> x? także jakiego kompilatora używasz? – Beanz
kompilatorem jest g ++ 4.4. Próbuję '#pragma omp równolegle dla domyślnego (none) shared (this-> x, size)' daje błąd 'error: expected unqualified-id before 'this'' –