6

私はforOpenMPの並列構造で並列化しています。

OpenMPの仕様では、次のことがわかります。

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

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

4

1 に答える 1

7

collapseOpenMP3.0プラグマです。受け取ったエラーメッセージは通常、OpenMP2.xのみを実装するコンパイラが原因です。

于 2012-04-16T12:53:08.853 に答える