我想使用 CUDA 在 GPU 中实现一个算法。同时我用C++写了一个CPU版本来验证GPU版本的结果。但是我log()
在 CPU 和 GPU 中使用时遇到了麻烦。一个非常简单的算法(在 CPU 和 GPU 上都使用)如下所示:
float U;
float R = U * log(U);
Run Code Online (Sandbox Code Playgroud)
但是,当我比较 CPU 端的结果时,我发现有很多结果(1843161 中的 459883)具有很小的差异(最大差异为 0.5)。部分结果如下所示:
U -- R (CPU side) -- R (GPU side) -- R using Python (U * math.log(U))
86312.0 -- 980998.375000 -- 980998.3125 -- 980998.3627440572
67405.0 -- 749440.750000 -- 749440.812500 -- 749440.7721980268
49652.0 -- 536876.875000 -- 536876.812500 -- 536876.8452369706
32261.0 -- 334921.250000 -- 334921.281250 -- 334921.2605240216
24232.0 -- 244632.437500 -- 244632.453125 -- 244632.4440747978 …
Run Code Online (Sandbox Code Playgroud)