前綴和 (Prefix Sum / Scan) 與 Work Efficiency 練習題 (Practice - Scan Foundations and the Kogge-Stone Algorithm)



Question 1 - Inclusive vs Exclusive Scan [recall]

情境/題目:給定加法 operator 與輸入 [3 1 7 0 4 1 6 3],分別寫出 inclusive scan 與 exclusive scan 的輸出,並說明兩者差別與 exclusive 第 0 個元素的值。

Question 2 - Sequential Baseline 的 Work [recall]

情境/題目:循序 inclusive scan 對 N 個元素做多少次加法?其計算複雜度為何?為什麼這個數字在分析平行 scan 時很重要?

Question 3 - Naïve 平行 Scan 為何不可行 [recall]

情境/題目:若讓每個 thread 對自己的輸出位置獨立做一棵 reduction(累加 x₀…x_i),其總運算量與最長路徑步數各是多少?為何幾乎沒有 speedup?

Question 4 - Kogge-Stone 不變量 [recall]

情境/題目:Kogge-Stone 是 in-place 演算法,在陣列 XY 上反覆演進。請寫出「經過 k 次 iteration 後 XY[i] 內容」的不變量,並說明 stride 序列與總 iteration 數。

Question 5 - Write-After-Read Race 與 temp 變數 [recall]

情境/題目:Kogge-Stone kernel 為何在迴圈內需要一個 register temp 與「第二個」__syncthreads()?這個 race 與 Chapter 9 直方圖的 race 有何不同,能否用 atomic 解決?

Question 6 - Kogge-Stone 的 Work 與複雜度 [recall]

情境/題目:推導 Kogge-Stone kernel(單一 block)的總加法次數公式,並給出其複雜度。N=512 時大約比 sequential 多做幾倍工?

Question 7 - Brent-Kung 兩階段與操作數 [recall]

情境/題目:Brent-Kung scan 由哪兩個階段組成?各做多少次加法?合計總操作數與複雜度為何?為何稱為 data-scalable?

Question 8 - Single-Pass 的 Adjacent Synchronization [recall]

情境/題目:Single-pass (domino) scan 用 adjacent synchronization 在相鄰 block 間傳遞 partial sum。請列出用到的關鍵元件,並說明 __threadfence() 為何不可省略。

Question 9 - 手算 Kogge-Stone [application]

情境/題目:對陣列 [4 6 7 1 2 8 5 2] 執行平行 inclusive Kogge-Stone scan,寫出每個 step(stride=1,2,4)之後的中間陣列狀態(Exercise 1)。

Question 10 - 把 Inclusive Kernel 改成 Exclusive [application]

情境/題目:要把 Fig. 11.3 的 Kogge-Stone inclusive kernel 改成 exclusive scan,只需修改載入 XY 的那幾行。請寫出修改方式,並說明迭代邏輯是否要改。

Question 11 - 三階段 Coarsening 的步數估算 [application]

情境/題目:三階段 coarsened scan(Phase 2 用 Kogge-Stone),N=1024 元素、T=64 threads、P=32 execution units。寫出三個 phase 的 work 公式並估算總步數;和單純 Kogge-Stone 的 320 步比較。

Question 12 - Kogge-Stone vs Brent-Kung 的速度權衡 [analysis]

情境/題目:Brent-Kung 的 work-efficiency 比 Kogge-Stone 高(O(N) vs O(N log N)),但「更有效率」是否就一定「更快」?分別在「執行資源無限 (P≥N)」與「資源有限 (P 小)」兩種情況下比較,並用 1024 元素、32 execution units 的數字佐證。

Question 13 - 三-Kernel Segmented vs Single-Pass Domino [analysis]

情境/題目:對任意長度輸入,三-kernel hierarchical scan 與 single-pass (domino) scan 都能算出全域結果。請從 global memory traffic 與「延遲能否與運算重疊」的角度比較兩者效能差異,並指出 single-pass 為何不需 grid-wide barrier、又有什麼新風險。