c - 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;
}
有什么建议么..?
解决方案
找到了,抱歉乱码。。
对于像我这样的所有其他 C 新手:错误出现在双 N 中。OpenMP 希望您的循环运行 op 到 INTEGER N,而不是双 N。
推荐阅读
- pandas - catplot 问题 Axes 对象
- python - 如何在单元测试中伪造模块?
- javascript - 有没有办法使用js从html文本框中获取文本?
- node.js - PostgreSQL从多对多关系返回数据作为数组
- arduino - ttgo t-beam 和 SPI 解决 SD 卡问题
- javascript - 如何使用 jQuery 隐藏选定选项的某些文本值
- laravel - 如何使用数据透视表十月 Cms 确定结果范围
- grafana - Telegraf inputs.tail 与 zimbra.log
- powershell - 使用 selenium 和 powershell 时出错
- html - 使用 `iframe` 显示 LinkedIn 内容