cuda並行縮減(例如如何對數組求和)


備註

並行約簡算法通常是指組合元素陣列,產生單個結果的算法。屬於此類別的典型問題是:

  • 總結數組中的所有元素
  • 在數組中找到最大值

通常,並行縮減可以應用於任何二元關聯運算符 ,即(A*B)*C = A*(B*C) 。使用這樣的運算符*,並行縮減算法重複地成對地對數組參數進行分組。每對與其他對並行計算,一步將整個陣列大小減半。重複該過程直到僅存在單個元素。

如果運算符是可交換的 (即A*B = B*A ),除了是關聯的,算法可以以不同的模式配對。從理論的角度來看,它沒有任何區別,但在實踐中它提供了更好的內存訪問模式:

並非所有關聯運算符都是可交換的 - 例如採用矩陣乘法。

並行縮減(例如如何對數組求和) 相關例子