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