OpenACC 与 OpenMP

OpenACC vs OpenMP

你好,我测试了 OpenACC vs OpenMP vs Nothing,但我得到了奇怪的结果。

怎么办?

您有多个不同的线程覆盖 sum,因此您得到了错误的结果。你需要告诉它这是一个 "reduction"

#pragma omp parallel for reduction(+:sum)

#pragma acc parallel loop reduction(+:sum)

Google 'race condition' 事实上,较新版本的 PGI OpenACC 足够智能,可以检测给定变量的减少。这并不意味着您应该编写可能有错误的代码