void random(int M,int a,int c,int *seq,int start,int size)
{
int i = start;
seq[0] = 1;
seq[i] = (a * seq[i - size] + c) % M;
i += size;
}
for(int iter = 0;iter < ceil((double)(n/size));iter++)
{
random(M,a,c,seq,1,1);
}
Run Code Online (Sandbox Code Playgroud)
循环编译-fopenmp并gcc给出"无效控制谓词"错误.怎么解决?
显示的代码中没有OpenMP构造,因此无论有无编译-fopenmp都不会影响它。但是,如果存在[parallel] for构造,则它将因为ceil()is 的类型而失败,double并且OpenMP仅允许循环中使用整数类型。
您必须将结果强制为ceil()整数:
#pragma omp parallel for
for(int iter = 0; iter < (int)ceil((double)n/size); iter++)
{
random(M,a,c,seq,1,1);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |