005-【CMU15-418】【并行計算架構(gòu)和編程】【中英字幕】【W(wǎng)ork Di

1. 今天的課程主題是并行編程,重點講解如何平衡工作負載和減少通信開銷。
2. 靜態(tài)分配是一種將工作在處理器上預先分配好的方法,運行時開銷較低。
3. 動態(tài)分配是一種在程序運行時根據(jù)需要動態(tài)分配工作的方法,適用于任務(wù)執(zhí)行時間不可預測的情況。
4. 半靜態(tài)分配是一種折中的方法,通過在一定時間段內(nèi)靜態(tài)分配工作,然后重新評估和重新分配工作來平衡工作負載。
5. 并行編程是一個迭代的過程,需要通過測量和優(yōu)化來不斷改進性能。
6. 通過同時檢查多個質(zhì)數(shù),可以提高代碼的運行速度。
7. 動態(tài)調(diào)度任務(wù)時,需要在任務(wù)大小和負載平衡之間找到一個平衡點。
8. 動態(tài)調(diào)度任務(wù)時,可以根據(jù)需要調(diào)整每次獲取的任務(wù)數(shù)量。
9. 動態(tài)調(diào)度任務(wù)時,可以使用分布式工作隊列來減少通信和爭用開銷。
10. 在任務(wù)隊列中,任務(wù)之間的獨立性可以提高并行性能。
11. 在并行計算中,可以使用循環(huán)或遞歸函數(shù)來處理大量的數(shù)據(jù)。
12. Cilk Plus是一種語言,可以將并行性暴露給語言,并使用Cilk spawn和Cilk sync來實現(xiàn)并行計算。
13. Cilk spawn表示可以并行執(zhí)行的任務(wù),而Cilk sync表示需要等待所有并行任務(wù)完成。
14. Cilk Plus的運行時系統(tǒng)會為每個硬件線程創(chuàng)建一個軟件線程,而不是創(chuàng)建實際的線程。
15. 在Cilk Plus中,通過將任務(wù)放入任務(wù)隊列來實現(xiàn)并行計算,而不是創(chuàng)建線程。
16. 在多線程編程中,可以使用隊列來實現(xiàn)任務(wù)的調(diào)度和執(zhí)行。
17. 在任務(wù)執(zhí)行過程中,可以通過隊列的方式將任務(wù)分配給不同的線程進行并行執(zhí)行。
18. 在任務(wù)執(zhí)行過程中,可以選擇先執(zhí)行子任務(wù)還是后執(zhí)行子任務(wù),兩種方式都可以實現(xiàn)并行執(zhí)行。
19. 在任務(wù)執(zhí)行過程中,可以通過隊列的方式將任務(wù)分配給其他線程進行執(zhí)行,以實現(xiàn)任務(wù)的并行執(zhí)行。
20. 在任務(wù)執(zhí)行過程中,可以選擇使用貪婪策略或阻塞策略來確定哪個線程繼續(xù)執(zhí)行任務(wù)。
21. Cilk通過貪婪策略來提高性能。
22. Cilk使用延續(xù)竊取和貪婪滾動死沉來管理并行性。
23. 在并行計算中,我們需要權(quán)衡任務(wù)數(shù)量的多少。
24. Cilk實現(xiàn)了延續(xù)竊取和貪婪滾動死沉來解決這個問題。
25. 以上是今天的內(nèi)容總結(jié)。