2015-09-28 67 views
2

看起來有可能只減少奇數個元素。例如,它需要總結數字。當我有偶數個元素的,這將是這樣的:減少元素的奇數個CUDA

1 2 3 4 
1+2 
3+3 
6+4 

但是做什麼,當我有,例如1 2 3 4 5?最後一次迭代是三個元素6 + 4 + 5的總和還是什麼?我看到了同樣的問題here,但找不到答案。

回答

4

並行減少將第一添加元素對:

1 1+3 4+6 
2 2+4 
3 
4 

你的具有奇數個元件的示例將典型地被實現爲:

1 1+4 5+3 8+7 
2 2+5 7+0 
3 3+0 
4 0+0 
5 
0 
0 
0 

也就是說,通常是平行減少將與2組冪的線程一起工作,並且最多一個線程塊(最後一個)將具有少於完整的數據處理。處理這個問題的通常方法是將數據填充到線程塊大小。如果你學習cuda parallel reduction示例代碼,你會發現這個例子。

+0

非常感謝! – user3856196