我正在執行前綴求和算法,如http://www.cs.cmu.edu/~guyb/papers/Ble93.pdf中所述。我面臨的問題是輸入大小不是2的冪。我使用此前綴和實現並行快速分類的分區。具體來說,我在接下來的掃描階段算法中遇到了問題。並行前綴求和掃描 - 輸入大小不是2的乘方冪
x[n – 1] = 0
for d = log2(n) – 1 down to 0 do
for all k = 0 to n – 1 by 2^(d+1) in parallel do
t = x[k + 2^d – 1]
x[k + 2^d – 1] = x[k + 2^(d+1) – 1]
x[k + 2^(d+1) – 1] = t + x[k + 2^(d+1) – 1]
問題1:在上述算法中,假設n = 10,對於d = 2和k = 8,索引k + 2^d-1> n。 k + 2 ^(d + 1)-1> n也是這種情況。這導致應用程序核心轉儲。我們應該如何處理n不是2的權力?
問題2:對於輸入序列1,1,1,0,0,0,0,0,0,0,1正確的前綴和是1,2,3,3,3,3,3,3 ,3,3,4。考慮我忽略索引大於n的操作。如果我手工計算,我會根據上述文件3,4,5,6,6,6,6,6,0,0,0獲得以下前綴總和。
讓我知道如何處理這些問題。
對於問題一,填充數組爲2的冪,執行操作,然後刪除填充。對於問題2,請仔細閱讀論文,直到您確定自己做的是正確的事情。 – btilly 2014-09-04 04:03:47
您忘記指定語言 – Anton 2014-09-04 09:53:54