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

Cuda 使用OpenMP后端编译时,推力代码返回不同的结果,cuda,mingw,openmp,thrust,nvcc,Cuda,Mingw,Openmp,Thrust,Nvcc,我在Windows 10上遇到过这样一种情况:使用CUDA 9.2后端编译的相同代码(使用nvcc和cl.exe)或使用OpenMP后端编译的相同代码(使用MinGW提供的g++)返回不同的数值结果。 CUDA 1是正确的,而OpenMP有一些损坏的样本 现在我无法说出发生了什么,也无法在网上找到任何类似的情况,但我确信这是因为我做了一些愚蠢的事情 我现在正试图生成一个像样的独立代码,但是,请问,有没有新手犯的错误会导致这样的错误?最后,问题是我的函子有内部变量导致OpenMP中的数据争用,而不

我在Windows 10上遇到过这样一种情况:使用CUDA 9.2后端编译的相同代码(使用
nvcc
cl.exe
)或使用OpenMP后端编译的相同代码(使用MinGW提供的
g++
)返回不同的数值结果。 CUDA 1是正确的,而OpenMP有一些损坏的样本

现在我无法说出发生了什么,也无法在网上找到任何类似的情况,但我确信这是因为我做了一些愚蠢的事情


我现在正试图生成一个像样的独立代码,但是,请问,有没有新手犯的错误会导致这样的错误?

最后,问题是我的函子有内部变量导致OpenMP中的数据争用,而不是CUDA中的数据争用。我真丢脸