考慮double
數字的排序(升序)數組。爲了數值穩定性,數組應該總結起來,就好像從開始到結束迭代它一樣,將總和累加到一些變量中。AVX2中排序數組的高效穩定和
如何使用AVX2高效地進行矢量化?
我已經研究過這種方法Fastest way to do horizontal vector sum with AVX instructions,但它似乎相當棘手的它擴展到一個數組(可能需要一些鴻溝&治之的方法),同時通過確保小的數字相加保持浮點精度然後再將它們添加到更大的數字中。
說明1:我認爲應該可以,例如,總結前4項,然後將它們添加到下4項的總和中,等等。我願意交易一些穩定的表現。但我更喜歡一種不會完全破壞穩定性的方法。
說明性2:由於陣列位於L3緩存(但不在L1/L2緩存中,因爲陣列中的塊由不同線程填充),因此內存不應該成爲瓶頸。我不想求助於卡漢求和,因爲我認爲這確實是重要的操作次數,而卡漢求和會增加大約4次。
不按升序求和殺死每個房間並行?由於FP算術不是聯想性的,而且您正在明確談論數字穩定性,所以我相信您需要從第一個項目到最後一個項目的序列總和。不是我的DV btw。 –
@MargaretBloom,我已經更新了這個問題並加以澄清。 –
嗯,如果你願意交易一些穩定性,那麼一個簡單的並行總和的作品,不是嗎?你總結了d [0] + d [4] + d [8] + ..,d [1] + d [5] + d [9] + ...等等 – geza