2012-04-16 7 views
6

OpenMPの並列for構造と並列化しています。 OpenMPの仕様でomp for collapse節はコンパイルされていません

、私が見ることができます:

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

を私は非常に似て見つけたコードを書いたが、それはコンパイルされません:

予期しないトークンを崩壊句

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

なぜ機能しないのですか?

+0

openmpのバージョンはありますか? – Anycorn

+0

VS2010のもの! ? – octoback

+0

VSは現在のOpenMP標準の最新版ではありません。代わりにgccを代わりに使って、現在のものを実装したいかもしれません。 –

答えて

5

collapseはOpenMP 3.0プラグマです。あなたが受け取ったエラーメッセージは通常、OpenMP 2.xのみを実装しているコンパイラによるものです。

関連する問題