基本信息
原書名:Multi-core Programming:Increasing Performance through Software Multi- threading作者:(孟加拉)Shameem Akhter (美)Jason Roberts [作譯者介紹]
譯者:李寶峰富弘毅李韜
出版社:電子工業出版社
ISBN:9787121038716
上架時間:2007-4-2
出版日期:2007 年3月
開本:16開
頁碼:351
版次:1-1
內容簡介
軟體開發人員不能再單靠提高時鐘頻率的方式來加速單執行緒應用程式的性能了,現在他們必須學會如何在多執行緒環境下設計應用程式,只有這樣他們才能更具競爭力。多核體系結構在單個處理器內封裝了兩個或更多的處理器“執行核”(或者說計算引擎),只要軟體設計合理,就能夠支持多個軟體執行緒的完全並行執行。超執行緒技術為在單個核上執行多個執行緒提供了途徑。.本書旨在幫助軟體開發人員編寫面向intel多核體系結構的高性能多執行緒代碼,同時避免發生一些多執行緒應用程式中常見的並行程式設計問題。.
·並行程式設計和多執行緒基礎
·利用執行緒api進行程式設計
·openmp:可移植的並行方案
·常見並行程式設計問題的解決方法
·多執行緒應用程式的調試和測試
·多執行緒軟體開發工具...
目錄
第1章 多核體系結構概述. 11.1 促成軟體並發的因素 2
1.2 並行計算平台 5
1.2.1 微處理器中的並行計算 7
1.2.2 超執行緒技術與多核體系結構的聯繫與區別 9
1.2.3 單核與多核平台上的多執行緒技術對比 11
1.3 “性能”解析 14
1.3.1 amdahl定律 14
1.3.2 gustafson定律:增長式回報 18
1.4 本章要點 19
第2章 多執行緒技術概述 21
2.1 執行緒的定義 22
2.2 執行緒的層次 22
2.2.1 作業系統之上的執行緒 23
2.2.2 作業系統內部的執行緒 26
2.2.3 硬體上的執行緒 30
2.3 執行緒創建之後的相關行為 31
2.4 應用程式設計模型與多執行緒技術 32
2.5 虛擬環境:虛擬機和虛擬平台 33
2.5.1 運行時虛擬化 33
.2.5.2 系統虛擬化 33
2.6 本章要點 36
第3章 並行程式設計的基本概念 37
3.1 多執行緒設計 37
3.1.1 任務分解 38
3.1.2 數據分解 39
3.1.3 數據流分解 40
3.1.4 各種分解方式的比較 41
3.2 並行程式設計人員面臨的挑戰 42
3.3 並行程式設計模式 43
3.4 誤差擴散問題:一個具有啟發意義的例子 45
3.4.1 誤差擴散算法分析 48
3.4.2 一種並行誤差擴散算法 48
3.4.3 其他並行誤差擴散算法 50
3.5 本章要點 52
第4章 多執行緒和並行程式設計結構 53
4.1 同步 53
4.2 臨界段 55
4.3 死鎖 56
4.4 同步原語 58
4.4.1 信號量 58
4.4.2 鎖 61
4.4.3 條件變數 64
4.5 訊息 66
4.6 流控制相關的概念 69
4.6.1 柵欄 69
4.6.2 柵障 69
4.7 與實現相關的多執行緒特徵 70
4.8 本章要點 71
第5章 執行緒api 72
5.1 微軟windows的執行緒api 72
5.1.1 win32/mfc執行緒api 72
5.2 微軟.net框架的執行緒api 107
5.2.1 創建執行緒 107
5.2.2 管理執行緒 111
5.2.3 執行緒池 113
5.2.4 執行緒同步 119
5.3 posix執行緒 122
5.3.1 創建執行緒 123
5.3.2 管理執行緒 125
5.3.3 執行緒同步 126
5.3.4 激發 128
5.3.5 編譯與連結 137
5.4 本章要點 137
第6章 openmp:一種可移植的多執行緒解決方案 139
6.1 將循環多執行緒化所面臨的挑戰 141
6.1.1 循環疊代相關 141
6.1.2 數據競爭 144
6.1.3 管理共享數據和私有數據.. 145
6.1.4 循環調度與分塊 147
6.1.5 有效地使用歸約 151
6.2 降低執行緒開銷 154
6.2.1 任務分配區 156
6.3 提高程式性能的設計方法 157
6.3.1 使用barrier和nowait 157
6.3.2 單執行緒和多執行緒交錯執行 159
6.3.3 數據的copy-in和copy-out 160
6.3.4 保護共享變數的更新操作 162
6.3.5 intel openmp任務佇列擴展 165
6.4 openmp庫函式 167
6.5 openmp環境變數 169
6.6 編譯 169
6.7 調試 171
6.8 性能 173
6.9 本章要點 175
第7章 常見並行程式設計問題的解決方法 176
7.1 執行緒過多 176
7.2 數據競爭、死鎖和活鎖 179
7.2.1 死鎖 182
7.3 競爭激烈的鎖 185
7.3.1 優先權倒置 186
7.3.2 鎖競爭激烈的解決方法 187
7.4 非阻塞算法 190
7.4.1 aba問題 192
7.4.2 cache塊桌球現象 194
7.4.3 存儲空間回收問題 194
7.4.4 一些建議 195
7.5 執行緒安全函式和庫 196
7.6 存儲問題 197
7.6.1 頻寬 197
7.6.2 cache的利用 198
7.6.3 存儲競爭 201
7.7 cache相關的問題 204
7.7.1 偽共享 204
7.7.2 存儲一致性 208
7.7.3 當前的ia-32體系結構 209
7.7.4 itanium體系結構 211
7.7.5 高級語言 214
7.8 避免ia-32上的流水線停頓 215
7.9 面向高性能的數據組織 216
7.10 本章要點 217
第8章 多執行緒調試技術 219
8.1 通用調試技術 219
8.1.1 在設計時考慮調試 220
8.1.2 使用trace緩衝擴展應用程式 222
8.2 windows多執行緒程式的調試 228
8.2.1 threads視窗 229
8.2.2 跟蹤點 229
8.2.3 斷點過濾 230
8.2.4 執行緒命名 231
8.2.5 綜合討論 232
8.3 使用gdb進行多執行緒調試 236
8.3.1 執行緒創建通告 237
8.3.2 獲取應用程式中所有執行緒的列表 237
8.3.3 設定執行緒相關的斷點 238
8.3.4 執行緒間切換 239
8.3.5 向一組執行緒傳送命令 240
8.4 本章要點 240
第9章 單核處理器基礎 242
9.1 處理器體系結構基礎知識 242
9.2 超標量結構與epic結構的對比 249
9.3 本章要點 250
第10章 面向intel多核處理器的多執行緒技術 251
10.1 基於硬體的多執行緒技術 251
10.1.1 intel處理器內的多執行緒技術 255
10.2 超執行緒技術 256
10.2.1 多處理器技術與超執行緒技術之間的區別 258
10.2.2 超執行緒體系結構 258
10.3 多核處理器 261
10.3.1 多核體系結構知識 261
10.3.2 多處理器與多核處理器的對比 264
10.3.3 itanium體系結構下的多核處理器 265
10.4 多個處理器之間的互動 269
10.4.1 處理器間通信與多執行緒程式設計 269
10.5 功耗 271
10.5.1 功耗公式 272
10.5.2 降低功耗 273
10.6 多核處理器體系結構未來發展趨勢 274
10.7 本章要點 276
第11章 intel軟體開發產品 278
11.1 概述 278
11.1.1 調研 279
11.1.2 創建/表達 279
11.1.3 調試 280
11.1.4 最佳化 280
11.2 intel執行緒檢測器 280
11.2.1 intel執行緒檢測器的使用 282
11.2.2 使用提示 283
11.2.3 使用intel執行緒檢測器檢查openmp代碼 285
11.3 intel編譯器 285
11.3.1 openmp 285
11.3.2 軟體推測預計算 291
11.3.3 編譯器最佳化和cache最佳化 292
11.4 intel調試器 293
11.5 intel庫 294
11.5.1 intel數學核心函式館 294
11.5.2 intel集成式高性能原函式 295
11.5.3 使用並行庫時的一些並行程式問題 296
11.5.4 未來發展趨勢 297
11.5.5 intel執行緒構建模組 297
11.6 intel vtunetm性能分析器 297
11.6.1 尋找熱點 298
11.6.2 使用調用圖來發現可採用多執行緒實現的地方 299
11.6.3 檢查負載平衡 300
11.7 intel執行緒直方統計器 301
11.8 mpi程式設計 302
11.8.1 intel對mpi的支持 303
11.9 本章要點... 306