Błąd kompilatora „nieprawidłowy kontrolujący predykat” przy użyciu OpenMP
Tworzę podstawowy sprawdzian liczb pierwszych, oparty naC - określ, czy liczba jest liczbą pierwszą , ale wykorzystując OpenMP.
int isPrime(int value)
{
omp_set_num_threads(4);
#pragma omp parallel for
for( int j = 2; j * j <= value; j++)
{
if ( value % j == 0) return 0;
}
return value;
}
Podczas kompilacji za pomocą-fopenmp, GCC wersja 4.7.2 jest błędna, stwierdzającinvalid controlling predicate
w odniesieniu do pętli for.
Wygląda na to, że błąd jest spowodowany przez kwadrat w pętli for. Czy istnieje sposób, aby obejść ten problem i nadal osiągnąć pożądany wynik algorytmu?