使用OpenMP后端编译时,推力代码返回不同的结果

时间:2019-10-13 21:12:29

标签: cuda mingw openmp thrust nvcc

我在Windows 10上遇到一种情况,其中相同的代码或者是用CUDA 9.2后端编译(使用nvcccl.exe一起编译)还是使用OpenMP后端编译的(使用g++提供了编译) (MinGW),则返回不同的数值结果。 CUDA是正确的,而OpenMP却有一些损坏的样本。

现在,我无法确定正在发生的事情,也无法在网络上找到任何类似的情况,但是我敢肯定,这是因为我在做一些愚蠢的事情。

我现在正在尝试生成一个不错的隔离代码,但是请问,是否有任何菜鸟错误会导致这种错误?

1 个答案:

答案 0 :(得分:1)

最后,问题是我的函子具有内部变量,这些变量导致OpenMP中的数据竞争,而没有导致CUDA中的数据竞争。真可惜。