【发布时间】:2018-08-04 22:45:25
【问题描述】:
您好,我测试了 OpenACC 与 OpenMP 与 Nothing,但我得到了奇怪的结果。
-
代码:
#include <stdio.h> int main () { int a,sum=0; (#pragma omp for/#pragma acc parallel loop/nothing) for( a = 0 ; a < 2000000000; a = a + 1 ){ sum+=a%2; } printf("sum = %d\n",sum); return 0; }- 我使用子系统 Ubuntu for windows 10 (https://docs.microsoft.com/en-us/windows/wsl/install-win10) 和 GCC 7.1(C 编译器)并得到以下结果:Nothing = OpenMP(约 5 秒内正确结果); OpenACC 更快,但结果错误(0 vs 1 000 000 000)
- 我将 VMware 与 Ubuntu 一起使用,结果是:什么都没有 什么都没有(程序无限执行,我只是关闭终端);开放式ACC 显示结果比 OpenMP 更快,但再次显示错误结果。
- 如果我在控制台中使用带有 OpenMP 的 Intel C++ 编译器,我会得到大约 1.3 秒,而在 Ubuntu 中大约是 5 秒
怎么办?
【问题讨论】:
标签: windows ubuntu gcc openmp openacc