我在Windows 10上遇到一种情况,其中相同的代码或者是用CUDA 9.2后端编译(使用nvcc
和cl.exe
一起编译)还是使用OpenMP后端编译的(使用g++
提供了编译) (MinGW),则返回不同的数值结果。
CUDA是正确的,而OpenMP却有一些损坏的样本。
现在,我无法确定正在发生的事情,也无法在网络上找到任何类似的情况,但是我敢肯定,这是因为我在做一些愚蠢的事情。
我现在正在尝试生成一个不错的隔离代码,但是请问,是否有任何菜鸟错误会导致这种错误?
答案 0 :(得分:1)
最后,问题是我的函子具有内部变量,这些变量导致OpenMP中的数据竞争,而没有导致CUDA中的数据竞争。真可惜。