2012-04-16 28 views
6

Paruję równolegle z konstrukcją równoległą for w OpenMP.omp dla z klauzulą ​​zwinięcia nie kompiluje się

W specyfikacji OpenMP, widzę:

void sub(float *a) 
{ 
int i, j, k; 
#pragma omp for collapse(2) private(i, k, j) 
for (k=kl; k<=ku; k+=ks) 
    for (j=jl; j<=ju; j+=js) 
     for (i=il; i<=iu; i+=is) 
      bar(a,i,j,k); 
} 

Pisałem kod, który uważam za bardzo podobny, ale nie kompilacji:

Nieoczekiwany token po klauzuli upadku

#pragma omp for collapse(2) 
for(int i=0;i<N-m;i++) 
    for(int k=0;k<m_ndim;k++) 
     points_[i][k]=TRandom::randD(lower[k],upper[k]); 

Dlaczego to nie działa?

+0

jaka masz wersję OpenMP? – Anycorn

+0

ten z VS2010! ? – octoback

+0

VS nadal nie jest aktualny w stosunku do aktualnego standardu OpenMP. Może chcesz wypróbować gcc zamiast tego, który implementuje bieżący. –

Odpowiedz

5

collapse jest pragmą OpenMP 3.0. Otrzymany komunikat o błędzie jest zazwyczaj spowodowany przez kompilator, który implementuje tylko OpenMP 2.x.

Powiązane problemy