簡體   English   中英

帶浮點數的求和減少精度

[英]Precision in Sum reduction kernel with floats

我正在創建一個例程,該例程調用Nvidia的Sum Reduction內核(reduction6),但是當我比較CPU和GPU之間的結果時,得到的錯誤隨着向量大小的增加而增加,因此:

CPU和GPU的減少都是浮動的

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

對這個錯誤有任何想法嗎?,謝謝。

浮點加法不一定是關聯的

這意味着,當您更改浮點求和的運算順序時,可能會得到不同的結果。 通過定義並行化求和會更改求和的操作順序。

浮點數求和有很多方法,每種方法對於不同的輸入分布都具有准確性。 這是一個不錯的調查

給定順序的順序求和很少是最准確的求和方法,因此,如果要與之進行比較,則不要期望它與典型並行歸約中使用的基於樹的求和相比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM