基本介紹
- 書名:高性能並行珠璣:多核和眾核編程方法
- 作者:[美]詹姆斯·賴因德斯(James Reinders)、 吉姆·傑弗斯(Jim Jeffers)等
- ISBN:978-7-111-58080-5
- 定價:119元
- 出版時間:2017-10
- 開本:16開
- 叢書名:計算機科學叢書
內容簡介,目錄,
內容簡介
本書將使為Intel Xeon Phi產品開發高層並行性(包括最優編程)更加簡單。Intel Xeon和Intel Xeon Phi系列之間的通用編程方法對整個科學和工程領域都是有利的,相同的程式可以實現多核和眾核的並行可擴展性和向量化。
—— 選自推薦序,Sverre Jarp, CERN
本書展示了如何藉助同種編程方法來利用處理器和協處理器上的並行性,展示了如何有效地利用配備Intel Xeon Phi協處理器和Intel Xeon處理器或者其他多核處理器的系統的能力。本書包括多個行業和領域(如化學、工程以及環境科學)中成功的編程示例。每一章都包括所使用的編程技巧的詳細講解,並且展示了在Intel Xeon Phi協處理器和多核處理器上的高性能結果。這些示例不僅展示了這些高性能系統的特徵,還給出了利用這些新型異構系統間並行性的方法。
—— 選自推薦序,Sverre Jarp, CERN
本書展示了如何藉助同種編程方法來利用處理器和協處理器上的並行性,展示了如何有效地利用配備Intel Xeon Phi協處理器和Intel Xeon處理器或者其他多核處理器的系統的能力。本書包括多個行業和領域(如化學、工程以及環境科學)中成功的編程示例。每一章都包括所使用的編程技巧的詳細講解,並且展示了在Intel Xeon Phi協處理器和多核處理器上的高性能結果。這些示例不僅展示了這些高性能系統的特徵,還給出了利用這些新型異構系統間並行性的方法。
目錄
出版者的話
譯者序
推薦序
前 言
作者簡介
第1章 引言 1
1.1 學習成功經驗 1
1.2 代碼現代化 1
1.3 並發算法現代化 1
1.4 向量化和數據局部性現代化 2
1.5 理解功耗使用 2
1.6 ISPC和OpenCL 2
1.7 Intel Xeon Phi協處理器特性 2
1.8 眾核和新異構系統 2
1.9 書名中沒有Xeon Phi與新異構架構編程 3
1.10 眾核的未來 3
1.11 下載 3
1.12 更多信息 4
第2章 從正確到正確&高效:Godunov
格式的Hydro2D案例學習 5
2.1 現代計算機上的科學計算 5
2.1.1 現代計算環境 6
2.1.2 CEA的Hydro2D 6
2.2 衝擊流體動力學的一種數值方法 7
2.2.1 歐拉方程 7
2.2.2 Godunov方法 7
2.2.3 哪裡需要最佳化 9
2.3 現代計算機架構的特徵 9
2.3.1 面向性能的架構 9
2.3.2 編程工具和運行時 10
2.3.3 計算環境 11
2.4 通向高性能的路 11
2.4.1 運行Hydro2D 11
2.4.2 Hydro2D的結構 12
2.4.3 最佳化 15
2.4.4 記憶體使用 16
2.4.5 執行緒級並行 17
2.4.6 算術效率和指令級並行 24
2.4.7 數據級並行 26
2.5 總結 32
2.5.1 協處理器與處理器 32
2.5.2 水漲船高 32
2.5.3 性能策略 33
2.6 更多信息 34
第3章 HBM上的SIMD與並發最佳化 36
3.1 應用程式:HIROMB-BOOS-MODEL 36
3.2 關鍵套用:DMI 36
3.3 HBM執行配置檔案 37
3.4 HBM最佳化綜述 38
3.5 數據結構:準確定位位置 38
3.6 HBM上的執行緒並行 41
3.7 數據並行:SIMD向量化 45
3.7.1 零散的可最佳化部分 46
3.7.2 過早抽象是萬惡之源 48
3.8 結果 50
3.9 詳情分析 51
3.10 處理器與協處理器可擴展性對比 52
3.11 CONTIGUOUS屬性 53
3.12 總結 54
3.13 參考文獻 54
3.14 更多信息 55
第4章 流體動力學方程最佳化 56
4.1 開始 56
4.2 1.0版本:基礎版本 57
4.3 2.0版本:執行緒盒 59
4.4 3.0版本:棧記憶體 63
4.5 4.0版本:分塊 63
4.6 5.0版本:向量化 64
4.7 Intel Xeon Phi協處理器上的運行結果 68
4.8 總結 69
4.9 更多信息 70
第5章 分階段準同步柵欄 71
5.1 如何改善代碼 74
5.2 如何進一步改善代碼 74
5.3 超執行緒方陣 74
5.4 關於該方案哪些地方不是最優的 75
5.5 超執行緒方陣編碼 76
5.5.1 如何確定核心間兄弟執行緒和核心內HT執行緒 77
5.5.2 超執行緒方陣手動分區方法 77
5.5.3 吸取教訓 79
5.6 回到工作 80
5.7 數據對齊 81
5.7.1 儘可能使用對齊的數據 81
5.7.2 冗餘未必是件壞事 81
5.8 深入討論分階段準同步柵欄 84
5.9 如何節省時間 86
5.10 幾個留給讀者的最佳化思考 90
5.11 類似Xeon Phi協處理器的Xeon主機性能最佳化 91
5.12 總結 92
5.13 更多信息 92
第6章 故障樹表達式並行求解 93
6.1 動機和背景 93
6.1.1 表達式 93
6.1.2 表達式選擇:故障樹 93
6.1.3 程式實例中的故障樹:基本模擬 93
6.2 實例實現 94
6.3 其他因素 101
6.4 總結 101
6.5 更多信息 101
第7章 深度學習的數值最佳化 102
7.1 擬合目標函式 102
7.2 目標函式與主成分分析 105
7.3 軟體及樣例數據 106
7.4 訓練數據 109
7.5 運行時間 109
7.6 擴展結果 111
7.7 總結 111
7.8 更多信息 112
第8章 最佳化聚集/分散模式 113
8.1 聚集/分散在Intel架構下的說明 114
8.2 聚集/分散模式在分子動力學中的套用 115
8.3 最佳化聚集/分散模式 117
8.3.1 提高時間和空間的局部性 117
8.3.2 選擇一種適當的數據布局:AoS與SoA 118
8.3.3 AoS和SoA之間的動態轉換 119
8.3.4 分攤聚集/分散和轉換的開銷 122
8.4 總結 123
8.5 更多信息 123
第9章 N體問題直接法的眾核實現 125
9.1 N體模擬 125
9.2 初始解決方案 125
9.3 理論極限 126
9.4 降低開銷和對齊數據 128
9.5 最佳化存儲層次 131
9.6 改進分塊 133
9.7 主機端的最佳化 135
9.8 總結 136
9.9 更多信息 136
第10章 N體方法 137
10.1 快速N體方法和直接N體核心 137
10.2 N體方法的套用 138
10.3 直接N體代碼 138
10.4 性能結果 141
10.5 總結 142
10.6 更多信息 142
第11章 使用OpenMP 4.0實現動態負載均衡 144
11.1 最大化硬體利用率 144
11.2 N體核心 146
11.3 卸載版本 149
11.4 第一個處理器與協處理器協作版本 150
11.5 多協處理器版本 152
11.6 更多信息 155
第12章 並發核心卸載 156
12.1 設定上下文 156
12.1.1 粒子動力學 156
12.1.2 本章結構 157
12.2 協處理器上的並發核心 158
12.2.1 協處理器設備劃分和執行緒關聯 158
12.2.2 並發數據傳輸 163
12.3 在PD中使用並發核心卸載進行作用力計算 166
12.3.1 使用牛頓第三定律並行評估作用力 166
12.3.2 實現作用力並發計算 167
12.3.3 性能評估:之前與之後 171
12.4 總結 173
12.5 更多信息 174
第13章 MPI和異構計算 175
13.1 現代集群中的MPI 175
13.2 MPI任務地點 176
13.3 DAPL提供者的選擇 180
13.3.1 第一個提供者OFA-V2-MLX4_0-1U 180
13.3.2 第二個提供者ofa-v2-scif0以及對節點內部結構的影響 180
13.3.3 最後一個提供者 181
13.3.4 混合程式的可擴展性 182
13.3.5 負載均衡 184
13.3.6 任務和執行緒映射 184
13.4 總結 185
13.5 致謝 185
13.6 更多信息 185
第14章 Intel Xeon Phi協處理器功耗分析 186
14.1 功耗分析 186
14.2 用軟體測量功耗和溫度 187
14.2.1 創建功耗和溫度監控腳本 188
14.2.2 使用micsmc工具創建功耗和溫度記錄器 189
14.2.3 使用IPMI進行功耗分析 190
14.3 基於硬體的功耗分析方法 192
14.4 總結 196
14.5 更多信息 196
第15章 集成Intel Xeon Phi協處理器至集群環境 197
15.1 早期探索 197
15.2 Beacon系統的歷史 197
15.3 Beacon系統的架構 198
15.3.1 硬體環境 198
15.3.2 軟體環境 198
15.4 Intel MPSS安裝步驟 199
15.4.1 系統準備 199
15.4.2 安裝Intel MPSS棧 200
15.4.3 生成和定製配置檔案 201
15.4.4 MPSS升級 204
15.5 建立資源和工作負載管理器 204
15.5.1 TORQUE 204
15.5.2 序言程式 205
15.5.3 尾聲程式 206
15.5.4 TORQUE/協處理器集成 207
15.5.5 Moab 207
15.5.6 提高網路局部性 207
15.5.7 Moab/協處理器集成 207
15.6 健康檢查和監控 208
15.7 常用命令腳本化 209
15.8 用戶軟體環境 210
15.9 今後的方向 211
15.10 總結 212
15.11 致謝 212
15.12 更多信息 212
第16章 在Intel Xeon Phi協處理器上支持集群檔案系統 214
16.1 網路配置概念和目標 214
16.1.1 網路選項概覽 215
16.1.2 設定集群啟用協處理器的步驟 216
16.2 協處理器檔案系統支持 217
16.2.1 支持NFS 217
16.2.2 支持Lustre檔案系統 218
16.2.3 支持Fraunhofer BeeGFS檔案系統 219
16.2.4 支持Panasas PanFS檔案系統 220
16.2.5 集群檔案系統的選擇 220
16.3 總結 220
16.4 更多信息 221
第17章 NWChem:大規模量子化學仿真 222
17.1 引言 222
17.2 回顧單執行緒CC形式 222
17.3 NWChem軟體架構 225
17.3.1 全局數組 225
17.3.2 張量收縮引擎 226
17.4 設計卸載解決方案 226
17.5 卸載架構 229
17.6 核心最佳化 230
17.7 性能評估 232
17.8 總結 233
17.9 致謝 235
17.10 更多信息 235
第18章 大規模多系統上的高效嵌套並行 238
18.1 動機 238
18.2 基準測試 238
18.3 基線基準測試 239
18.4 流水線方法——Flat_arena類 240
18.5 Intel TBB用戶管理任務調度平台 241
18.6 分層方法——Hierarchical_arena類 243
18.7 性能評估 243
18.8 對NUMA架構的影響 245
18.9 總結 246
18.10 更多信息 246
第19章 Black-Scholes定價的性能最佳化 248
19.1 金融市場模型基礎及Black-Scholes公式 248
19.1.1 金融市場數學模型 248
19.1.2 歐式期權和公平價格概念 249
19.1.3 Black-Scholes公式 250
19.1.4 期權定價 250
19.1.5 測試平台架構 250
19.2 案例研究 251
19.2.1 初始版本——檢驗正確性 251
19.2.2 參照版本——選擇合適的數據結構 251
19.2.3 參照版本——不要混合使用數據類型 252
19.2.4 循環向量化 253
19.2.5 使用快速數學函式:erff()與cdfnormf() 255
19.2.6 代碼等價變換 256
19.2.7 數組對齊 257
19.2.8 儘可能降低精度 258
19.2.9 並行工作 259
19.2.10 使用熱身 260
19.2.11 使用Intel Xeon Phi協處理器實現輕鬆移植 261
19.2.12 使用Intel Xeon Phi協處理器實現並行工作 261
19.2.13 使用Intel Xeon Phi協處理器和流存儲 262
19.3 總結 263
19.4 更多信息 264
第20章 使用Intel COI庫傳輸數據 265
20.1 使用Intel COI庫的第一步 265
20.2 COI緩衝區種類和傳輸性能 266
20.3 應用程式 269
20.4 總結 270
20.5 更多信息 270
第21章 高性能光線追蹤 271
21.1 背景 272
21.2 向量化的光線遍歷 272
21.3 Embree光線追蹤核心 273
21.4 在應用程式中使用Embree 274
21.5 性能 276
21.6 總結 277
21.7 更多信息 278
第22章 OpenCL程式的可移植性能 279
22.1 兩難的困境 279
22.2 OpenCL簡介 280
22.3 OpenCL示例:矩陣乘 282
22.4 OpenCL與Intel Xeon Phi協處理器 285
22.5 性能評估 285
22.6 案例研究:分子對接算法 287
22.7 性能評估:性能可移植性 289
22.8 相關工作 291
22.9 總結 291
22.10 更多信息 291
第23章 套用到Stencil計算中的特性提取和最佳化方法 292
23.1 引言 292
23.2 性能評估 293
23.2.1 測試平台的AI 293
23.2.2 核心的AI 294
23.3 標準最佳化 296
23.3.1 自動套用調試 301
23.3.2 自動調試工具 304
23.3.3 結果 305
23.4 總結 305
23.5 更多信息 307
第24章 剖析指導最佳化 308
24.1 計算機科學中的矩陣轉置 308
24.2 工具和方法 309
24.3 串列:初始的就地轉置實現 310
24.4 並行:使用OpenMP增加並行度 313
24.5 分塊:提高數據局部性 315
24.6 規範化:多版本微核心 319
24.7 預組織:釋放更多的並行性 322
24.8 總結 326
24.9 更多信息 327
第25章 基於ITAC的異構MPI套用最佳化 328
25.1 亞式期權定價 328
25.2 套用設計 329
25.3 異構集群中的同步 330
25.4 通過ITAC尋找性能瓶頸 331
25.5 建立ITAC 331
25.6 非均衡的MPI運行 332
25.7 手動負載均衡 335
25.8 動態老闆-工人負載均衡 337
25.9 結論 339
25.10 更多信息 340
第26章 集群上可擴展OOC解法器 341
26.1 引言 341
26.2 基於ScaLAPACK的OOC分解算法 342
26.2.1 核內分解 342
26.2.2 OOC分解 343
26.3 從NVIDIA GPU移植到Intel Xeon Phi協處理器 344
26.4 數值結果 346
26.5 結論和展望 350
26.6 致謝 350
26.7 更多信息 350
第27章 稀疏矩陣向量乘:並行化和向量化 352
27.1 引言 352
27.2 稀疏矩陣數據結構 353
27.2.1 壓縮後的數據結構 354
27.2.2 分塊 356
27.3 並行SpMV乘法 356
27.3.1 部分分散式並行SpMV 356
27.3.2 完全分散式並行SpMV 357
27.4 Intel Xeon Phi協處理器的向量化 358
27.5 評估 362
27.5.1 Intel Xeon Phi協處理器 363
27.5.2 Intel Xeon處理器 365
27.5.3 性能比較 366
27.6 總結 366
27.7 致謝 367
27.8 更多信息 367
第28章 基於Morton排序的性能最佳化 368
28.1 通過數據重排提高快取局部性 368
28.2 性能改進 368
28.3 矩陣轉置 369
28.4 矩陣乘法 373
28.5 總結 377
28.6 更多信息 378
譯者序
推薦序
前 言
作者簡介
第1章 引言 1
1.1 學習成功經驗 1
1.2 代碼現代化 1
1.3 並發算法現代化 1
1.4 向量化和數據局部性現代化 2
1.5 理解功耗使用 2
1.6 ISPC和OpenCL 2
1.7 Intel Xeon Phi協處理器特性 2
1.8 眾核和新異構系統 2
1.9 書名中沒有Xeon Phi與新異構架構編程 3
1.10 眾核的未來 3
1.11 下載 3
1.12 更多信息 4
第2章 從正確到正確&高效:Godunov
格式的Hydro2D案例學習 5
2.1 現代計算機上的科學計算 5
2.1.1 現代計算環境 6
2.1.2 CEA的Hydro2D 6
2.2 衝擊流體動力學的一種數值方法 7
2.2.1 歐拉方程 7
2.2.2 Godunov方法 7
2.2.3 哪裡需要最佳化 9
2.3 現代計算機架構的特徵 9
2.3.1 面向性能的架構 9
2.3.2 編程工具和運行時 10
2.3.3 計算環境 11
2.4 通向高性能的路 11
2.4.1 運行Hydro2D 11
2.4.2 Hydro2D的結構 12
2.4.3 最佳化 15
2.4.4 記憶體使用 16
2.4.5 執行緒級並行 17
2.4.6 算術效率和指令級並行 24
2.4.7 數據級並行 26
2.5 總結 32
2.5.1 協處理器與處理器 32
2.5.2 水漲船高 32
2.5.3 性能策略 33
2.6 更多信息 34
第3章 HBM上的SIMD與並發最佳化 36
3.1 應用程式:HIROMB-BOOS-MODEL 36
3.2 關鍵套用:DMI 36
3.3 HBM執行配置檔案 37
3.4 HBM最佳化綜述 38
3.5 數據結構:準確定位位置 38
3.6 HBM上的執行緒並行 41
3.7 數據並行:SIMD向量化 45
3.7.1 零散的可最佳化部分 46
3.7.2 過早抽象是萬惡之源 48
3.8 結果 50
3.9 詳情分析 51
3.10 處理器與協處理器可擴展性對比 52
3.11 CONTIGUOUS屬性 53
3.12 總結 54
3.13 參考文獻 54
3.14 更多信息 55
第4章 流體動力學方程最佳化 56
4.1 開始 56
4.2 1.0版本:基礎版本 57
4.3 2.0版本:執行緒盒 59
4.4 3.0版本:棧記憶體 63
4.5 4.0版本:分塊 63
4.6 5.0版本:向量化 64
4.7 Intel Xeon Phi協處理器上的運行結果 68
4.8 總結 69
4.9 更多信息 70
第5章 分階段準同步柵欄 71
5.1 如何改善代碼 74
5.2 如何進一步改善代碼 74
5.3 超執行緒方陣 74
5.4 關於該方案哪些地方不是最優的 75
5.5 超執行緒方陣編碼 76
5.5.1 如何確定核心間兄弟執行緒和核心內HT執行緒 77
5.5.2 超執行緒方陣手動分區方法 77
5.5.3 吸取教訓 79
5.6 回到工作 80
5.7 數據對齊 81
5.7.1 儘可能使用對齊的數據 81
5.7.2 冗餘未必是件壞事 81
5.8 深入討論分階段準同步柵欄 84
5.9 如何節省時間 86
5.10 幾個留給讀者的最佳化思考 90
5.11 類似Xeon Phi協處理器的Xeon主機性能最佳化 91
5.12 總結 92
5.13 更多信息 92
第6章 故障樹表達式並行求解 93
6.1 動機和背景 93
6.1.1 表達式 93
6.1.2 表達式選擇:故障樹 93
6.1.3 程式實例中的故障樹:基本模擬 93
6.2 實例實現 94
6.3 其他因素 101
6.4 總結 101
6.5 更多信息 101
第7章 深度學習的數值最佳化 102
7.1 擬合目標函式 102
7.2 目標函式與主成分分析 105
7.3 軟體及樣例數據 106
7.4 訓練數據 109
7.5 運行時間 109
7.6 擴展結果 111
7.7 總結 111
7.8 更多信息 112
第8章 最佳化聚集/分散模式 113
8.1 聚集/分散在Intel架構下的說明 114
8.2 聚集/分散模式在分子動力學中的套用 115
8.3 最佳化聚集/分散模式 117
8.3.1 提高時間和空間的局部性 117
8.3.2 選擇一種適當的數據布局:AoS與SoA 118
8.3.3 AoS和SoA之間的動態轉換 119
8.3.4 分攤聚集/分散和轉換的開銷 122
8.4 總結 123
8.5 更多信息 123
第9章 N體問題直接法的眾核實現 125
9.1 N體模擬 125
9.2 初始解決方案 125
9.3 理論極限 126
9.4 降低開銷和對齊數據 128
9.5 最佳化存儲層次 131
9.6 改進分塊 133
9.7 主機端的最佳化 135
9.8 總結 136
9.9 更多信息 136
第10章 N體方法 137
10.1 快速N體方法和直接N體核心 137
10.2 N體方法的套用 138
10.3 直接N體代碼 138
10.4 性能結果 141
10.5 總結 142
10.6 更多信息 142
第11章 使用OpenMP 4.0實現動態負載均衡 144
11.1 最大化硬體利用率 144
11.2 N體核心 146
11.3 卸載版本 149
11.4 第一個處理器與協處理器協作版本 150
11.5 多協處理器版本 152
11.6 更多信息 155
第12章 並發核心卸載 156
12.1 設定上下文 156
12.1.1 粒子動力學 156
12.1.2 本章結構 157
12.2 協處理器上的並發核心 158
12.2.1 協處理器設備劃分和執行緒關聯 158
12.2.2 並發數據傳輸 163
12.3 在PD中使用並發核心卸載進行作用力計算 166
12.3.1 使用牛頓第三定律並行評估作用力 166
12.3.2 實現作用力並發計算 167
12.3.3 性能評估:之前與之後 171
12.4 總結 173
12.5 更多信息 174
第13章 MPI和異構計算 175
13.1 現代集群中的MPI 175
13.2 MPI任務地點 176
13.3 DAPL提供者的選擇 180
13.3.1 第一個提供者OFA-V2-MLX4_0-1U 180
13.3.2 第二個提供者ofa-v2-scif0以及對節點內部結構的影響 180
13.3.3 最後一個提供者 181
13.3.4 混合程式的可擴展性 182
13.3.5 負載均衡 184
13.3.6 任務和執行緒映射 184
13.4 總結 185
13.5 致謝 185
13.6 更多信息 185
第14章 Intel Xeon Phi協處理器功耗分析 186
14.1 功耗分析 186
14.2 用軟體測量功耗和溫度 187
14.2.1 創建功耗和溫度監控腳本 188
14.2.2 使用micsmc工具創建功耗和溫度記錄器 189
14.2.3 使用IPMI進行功耗分析 190
14.3 基於硬體的功耗分析方法 192
14.4 總結 196
14.5 更多信息 196
第15章 集成Intel Xeon Phi協處理器至集群環境 197
15.1 早期探索 197
15.2 Beacon系統的歷史 197
15.3 Beacon系統的架構 198
15.3.1 硬體環境 198
15.3.2 軟體環境 198
15.4 Intel MPSS安裝步驟 199
15.4.1 系統準備 199
15.4.2 安裝Intel MPSS棧 200
15.4.3 生成和定製配置檔案 201
15.4.4 MPSS升級 204
15.5 建立資源和工作負載管理器 204
15.5.1 TORQUE 204
15.5.2 序言程式 205
15.5.3 尾聲程式 206
15.5.4 TORQUE/協處理器集成 207
15.5.5 Moab 207
15.5.6 提高網路局部性 207
15.5.7 Moab/協處理器集成 207
15.6 健康檢查和監控 208
15.7 常用命令腳本化 209
15.8 用戶軟體環境 210
15.9 今後的方向 211
15.10 總結 212
15.11 致謝 212
15.12 更多信息 212
第16章 在Intel Xeon Phi協處理器上支持集群檔案系統 214
16.1 網路配置概念和目標 214
16.1.1 網路選項概覽 215
16.1.2 設定集群啟用協處理器的步驟 216
16.2 協處理器檔案系統支持 217
16.2.1 支持NFS 217
16.2.2 支持Lustre檔案系統 218
16.2.3 支持Fraunhofer BeeGFS檔案系統 219
16.2.4 支持Panasas PanFS檔案系統 220
16.2.5 集群檔案系統的選擇 220
16.3 總結 220
16.4 更多信息 221
第17章 NWChem:大規模量子化學仿真 222
17.1 引言 222
17.2 回顧單執行緒CC形式 222
17.3 NWChem軟體架構 225
17.3.1 全局數組 225
17.3.2 張量收縮引擎 226
17.4 設計卸載解決方案 226
17.5 卸載架構 229
17.6 核心最佳化 230
17.7 性能評估 232
17.8 總結 233
17.9 致謝 235
17.10 更多信息 235
第18章 大規模多系統上的高效嵌套並行 238
18.1 動機 238
18.2 基準測試 238
18.3 基線基準測試 239
18.4 流水線方法——Flat_arena類 240
18.5 Intel TBB用戶管理任務調度平台 241
18.6 分層方法——Hierarchical_arena類 243
18.7 性能評估 243
18.8 對NUMA架構的影響 245
18.9 總結 246
18.10 更多信息 246
第19章 Black-Scholes定價的性能最佳化 248
19.1 金融市場模型基礎及Black-Scholes公式 248
19.1.1 金融市場數學模型 248
19.1.2 歐式期權和公平價格概念 249
19.1.3 Black-Scholes公式 250
19.1.4 期權定價 250
19.1.5 測試平台架構 250
19.2 案例研究 251
19.2.1 初始版本——檢驗正確性 251
19.2.2 參照版本——選擇合適的數據結構 251
19.2.3 參照版本——不要混合使用數據類型 252
19.2.4 循環向量化 253
19.2.5 使用快速數學函式:erff()與cdfnormf() 255
19.2.6 代碼等價變換 256
19.2.7 數組對齊 257
19.2.8 儘可能降低精度 258
19.2.9 並行工作 259
19.2.10 使用熱身 260
19.2.11 使用Intel Xeon Phi協處理器實現輕鬆移植 261
19.2.12 使用Intel Xeon Phi協處理器實現並行工作 261
19.2.13 使用Intel Xeon Phi協處理器和流存儲 262
19.3 總結 263
19.4 更多信息 264
第20章 使用Intel COI庫傳輸數據 265
20.1 使用Intel COI庫的第一步 265
20.2 COI緩衝區種類和傳輸性能 266
20.3 應用程式 269
20.4 總結 270
20.5 更多信息 270
第21章 高性能光線追蹤 271
21.1 背景 272
21.2 向量化的光線遍歷 272
21.3 Embree光線追蹤核心 273
21.4 在應用程式中使用Embree 274
21.5 性能 276
21.6 總結 277
21.7 更多信息 278
第22章 OpenCL程式的可移植性能 279
22.1 兩難的困境 279
22.2 OpenCL簡介 280
22.3 OpenCL示例:矩陣乘 282
22.4 OpenCL與Intel Xeon Phi協處理器 285
22.5 性能評估 285
22.6 案例研究:分子對接算法 287
22.7 性能評估:性能可移植性 289
22.8 相關工作 291
22.9 總結 291
22.10 更多信息 291
第23章 套用到Stencil計算中的特性提取和最佳化方法 292
23.1 引言 292
23.2 性能評估 293
23.2.1 測試平台的AI 293
23.2.2 核心的AI 294
23.3 標準最佳化 296
23.3.1 自動套用調試 301
23.3.2 自動調試工具 304
23.3.3 結果 305
23.4 總結 305
23.5 更多信息 307
第24章 剖析指導最佳化 308
24.1 計算機科學中的矩陣轉置 308
24.2 工具和方法 309
24.3 串列:初始的就地轉置實現 310
24.4 並行:使用OpenMP增加並行度 313
24.5 分塊:提高數據局部性 315
24.6 規範化:多版本微核心 319
24.7 預組織:釋放更多的並行性 322
24.8 總結 326
24.9 更多信息 327
第25章 基於ITAC的異構MPI套用最佳化 328
25.1 亞式期權定價 328
25.2 套用設計 329
25.3 異構集群中的同步 330
25.4 通過ITAC尋找性能瓶頸 331
25.5 建立ITAC 331
25.6 非均衡的MPI運行 332
25.7 手動負載均衡 335
25.8 動態老闆-工人負載均衡 337
25.9 結論 339
25.10 更多信息 340
第26章 集群上可擴展OOC解法器 341
26.1 引言 341
26.2 基於ScaLAPACK的OOC分解算法 342
26.2.1 核內分解 342
26.2.2 OOC分解 343
26.3 從NVIDIA GPU移植到Intel Xeon Phi協處理器 344
26.4 數值結果 346
26.5 結論和展望 350
26.6 致謝 350
26.7 更多信息 350
第27章 稀疏矩陣向量乘:並行化和向量化 352
27.1 引言 352
27.2 稀疏矩陣數據結構 353
27.2.1 壓縮後的數據結構 354
27.2.2 分塊 356
27.3 並行SpMV乘法 356
27.3.1 部分分散式並行SpMV 356
27.3.2 完全分散式並行SpMV 357
27.4 Intel Xeon Phi協處理器的向量化 358
27.5 評估 362
27.5.1 Intel Xeon Phi協處理器 363
27.5.2 Intel Xeon處理器 365
27.5.3 性能比較 366
27.6 總結 366
27.7 致謝 367
27.8 更多信息 367
第28章 基於Morton排序的性能最佳化 368
28.1 通過數據重排提高快取局部性 368
28.2 性能改進 368
28.3 矩陣轉置 369
28.4 矩陣乘法 373
28.5 總結 377
28.6 更多信息 378