gpt4 book ai didi

cuda - 带 float 的总和缩减内核的精度

转载 作者:行者123 更新时间:2023-12-02 08:42:45 24 4
gpt4 key购买 nike

我正在创建一个调用 Nvidia 的 Sum Reduction 内核 (reduction6) 的例程,但是当我比较 CPU 和 GPU 之间的结果时得到一个错误,该错误随着向量大小的增加而增加,因此:

CPU 和 GPU 的减少都是 float

Size: 1024  (Blocks : 1,  Threads : 512)
Reduction on CPU: 508.1255188
Reduction on GPU: 508.1254883
Error: 6.0059137e-06

Size: 16384 (Blocks : 8, Threads : 1024)
Reduction on CPU: 4971.3193359
Reduction on GPU: 4971.3217773
Error: 4.9109825e-05

Size: 131072 (Blocks : 64, Threads : 1024)
Reduction on CPU: 49986.6718750
Reduction on GPU: 49986.8203125
Error: 2.9695415e-04

Size: 1048576 (Blocks : 512, Threads : 1024)
Reduction on CPU: 500003.7500000
Reduction on GPU: 500006.8125000
Error: 6.1249541e-04

知道这个错误吗?谢谢。

最佳答案

Floating point addition is not necessarily associative .

这意味着当您更改浮点求和的运算顺序时,您可能会得到不同的结果。根据定义并行求和会改变求和的运算顺序。

float 求和的方法有很多种,每种方法对于不同的输入分布都有准确度优势。 Here's a decent survey .

给定顺序的顺序求和很少是最准确的求和方法,因此如果您要与之比较,不要指望它能与典型的并行归约中使用的基于树的求和相媲美。

关于cuda - 带 float 的总和缩减内核的精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com