首页 > 解决方案 > OpenMP 无效控制谓词 - 持久

问题描述

尝试使用 gcc 编译带有 -fopenmp 标志的 C 代码时,我一直收到此错误超过 6 小时。

错误:(int i = 0; i < N; i++) 的控制谓词无效

我浏览了stackoverflow,并删除了我的代码,直到它是OpenMP手册中示例的精确副本,但它仍然无法编译。

#include <stdio.h>
#include <math.h>
#ifdef _OPENMP
#include <omp.h>
#endif

int main(int argc, char *argv[]) {
    double N; sscanf (argv[1]," %lf", &N);
    double integral = 0.0;

    #pragma omp parallel for reduction(+: integral)
        for ( int i = 0; i < N; i++ )
            integral = integral + i;

    printf("%20.18lf\n", integral);
    return 0;
}

有什么建议么..?

标签: cgccopenmp

解决方案


找到了,抱歉乱码。。

对于像我这样的所有其他 C 新手:错误出现在双 N 中。OpenMP 希望您的循环运行 op 到 INTEGER N,而不是双 N。


推荐阅读