omp for collapse子句不是编译

kir*_*off 6 c++ multithreading openmp

for在OpenMP中与并行构造并行化.

在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);
}
Run Code Online (Sandbox Code Playgroud)

我编写的代码我觉得非常相似,但是它没有编译:

崩溃条款后的意外令牌

#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]);
Run Code Online (Sandbox Code Playgroud)

为什么不工作?

Tho*_* W. 6

collapse是一个OpenMP 3.0编译指示.您收到的错误消息通常是由于编译器仅实现OpenMP 2.x.