2012-04-16 15 views
6

Sto parallelizzando con un costrutto parallelo for in OpenMP.omp per con clausola di compressione non viene compilato

In spec OpenMP, posso vedere:

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); 
} 

Ho scritto il codice che trovo abbastanza simile, ma non viene compilato:

token imprevisto dopo clausola crollo

#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]); 

Perché non funziona?

+0

quale versione di openmp hai? – Anycorn

+0

quello con VS2010! ? – octoback

+0

VS non è ancora aggiornato con lo standard OpenMP corrente. Forse vuoi provare invece gcc, che implementa quello attuale. –

risposta

5

collapse è un pragma OpenMP 3.0. Il messaggio di errore che hai ricevuto è solitamente dovuto a un compilatore che implementa solo OpenMP 2.x.

Problemi correlati