小编oil*_*pig的帖子

如何摆脱CUDA和CPU之间对数的不同结果?

我想使用 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)

c++ floating-point cuda

2
推荐指数
1
解决办法
725
查看次数

标签 统计

c++ ×1

cuda ×1

floating-point ×1