二、假設可以平行執行兩個 10 × 20 整數矩陣的相加,接著還要循序執行 20 次整數的相加。使用 20 個處理器的時候,相對於只使用一個處理器, 可以得到多大的增速(speedup)?(20 分)
詳解 (共 2 筆)
詳解
增速(Speedup)可以用來衡量使用多處理器相對於單一處理器時的性能提升程度。增速的計算公式為:
Speedup=執行時間(單一處理器)執行時間(多個處理器)Speedup=執行時間(多個處理器)執行時間(單一處理器)
假設每次整數相加的操作所需時間相同。對於10×20矩陣相加,共有200次整數相加操作。如果這200次操作可以在20個處理器上平行執行,那麼理論上這部分的操作時間會減少到單處理器時間的1/20。然而,由於這200次操作之後還要循序執行20次整數相加,這部分的時間不會因為增加處理器數量而改變。
計算單一處理器的執行時間:
- 對於10×20矩陣相加:200個操作時間
- 循序執行20次相加:20個操作時間
- 總共:220個操作時間
計算20個處理器的執行時間:
- 矩陣相加:200個操作在20個處理器上平行執行,所需時間為200 / 20 = 10個操作時間
- 循序執行20次相加:20個操作時間(與處理器數量無關)
- 總共:30個操作時間
計算增速:
Speedup=22030Speedup=30220
Speedup=7.33Speedup=7.33
因此,使用20個處理器相對於使用一個處理器,可以得到大約7.33倍的增速。
詳解
400