第1章 基于任務的程序設計 1
1.1 使用共享內存的多核系統(tǒng) 2
1.1.1 共享內存多核系統(tǒng)與分布式內存系統(tǒng)之間的區(qū)別 3
1.1.2 并行程序設計和多核程序設計 4
1.2 理解硬件線程和軟件線程 5
1.3 理解Amdahl法則 8
1.4 考慮Gustafson法則 11
1.5 使用輕量級并發(fā)模型 14
1.6 創(chuàng)建成功的基于任務的設計 15
1.6.1 以并發(fā)的思想指導設計 16
1.6.2 理解交錯并發(fā)、并發(fā)和并行之間的區(qū)別 17
1.6.3 并行化任務 18
1.6.4 盡量減少臨界區(qū) 18
1.6.5 理解多核并行程序的設計原則 19
1.7 為NUMA架構和更高的可擴展性做好準備 20
1.8 判斷是否適合并行化 24
1.9 小結 25
第2章 命令式數(shù)據(jù)并行 27
2.1 加載并行任務 27
2.1.1 System.Threading.Tasks.
Parallel類 29
2.1.2 Parallel.Invoke 30
2.2 將串行代碼轉換為并行代碼 37
2.2.1 檢測可并行化的熱點 37
2.2.2 測量并行執(zhí)行的加速效果 40
2.2.3 理解并發(fā)執(zhí)行 42
2.3 循環(huán)并行化 43