高性能科學與工程計算

高性能科學與工程計算

《高性能科學與工程計算》是2014年機械工業出版社出版的圖書,作者是Georg Hager Gerhard Wellein。

基本介紹

  • 中文名:高性能科學與工程計算
  • 作者:(德)Georg Hager Gerhard Wellein
  • ISBN:978-7-111-46652-9
  • 定價:69.0
  • 出版社:機械工業出版社
  • 出版時間:2014-07-08
  • 開本:16開
  • 字數:281千字
內容簡介,目錄,

內容簡介

本書從工程實踐的角度介紹了高性能計算的相關知識。主要內容包括現代處理器的體系結構、為讀者理解當前體系結構和代碼中的性能潛力和局限提供了堅實的理論基礎。接下來討論了高性能計算中的關鍵問題,包括串列最佳化、並行、OpenMP、MPI、混合程式設計技術。作者根據自身的研究也提出了一些前沿問題的解決方案,如編寫有效的C++代碼、GPU編程等

目錄

出版者的話
譯者序
前言
縮略詞
第1章 當代處理器  1
1.1 存儲程式的計算機體系結構  1
1.2 基於高速快取的通用微處理器體系結構  2
1.2.1 性能指標和基準測試  2
1.2.2 電晶體:摩爾定律  5
1.2.3 流水線  6
1.2.4 超標量  10
1.2.5 SIMD  10
1.3 存儲層次  11
1.3.1 高速快取  11
1.3.2 高速快取映射  13
1.3.3 預取  15
1.4 多核處理器  17
1.5 多執行緒處理器  19
1.6 向量處理器  20
1.6.1 設計原理  21
1.6.2 最高性能估計  22
1.6.3 程式設計  23
習題  25
第2章 串列代碼基本最佳化技術  26
2.1 標量剖析  26
2.1.1 基於函式和代碼行的程式剖析  26
2.1.2 硬體性能計數器  29
2.1.3 手工代碼插入  32
2.2 最佳化常識  32
2.2.1 少做工作  32
2.2.2 避免耗時運算  32
2.2.3 縮減工作集  33
2.3 小方法,大改進  33
2.3.1 消除常用子表達式  33
2.3.2 避免分支  34
2.3.3 使用SIMD指令集  34
2.4 編譯器作用  36
2.4.1 通用最佳化選項  37
2.4.2 內聯  37
2.4.3 別名  37
2.4.4 計算準確性  38
2.4.5 暫存器最佳化  39
2.4.6 利用編譯日誌  39
2.5 C++最佳化  40
2.5.1 臨時變數  40
2.5.2 動態記憶體管理  42
2.5.3 循環與疊代器  43
習題  43
第3章 數據訪存最佳化  45
3.1 平衡分析與lightspeed評估  45
3.1.1 基於頻寬的性能建模  45
3.1.2 STREAM 基準測試  47
3.2 存儲順序  49
3.3 案例分析:Jacobi算法  50
3.4 案例分析:稠密矩陣轉置  53
3.5 算法分類和訪存最佳化  56
3.5.1 O(N)/O(N)  56
3.5.2 O(N2)/O(N2)  57
3.5.3 O(N3)/O(N2)  60
3.6 案例分析:稀疏矩陣向量乘  61
3.6.1 稀疏矩陣的存儲機制  62
3.6.2 JDS sMVM最佳化  64
習題  66
第4章 並行計算機  68
4.1 並行計算模式分類  69
4.2 共享存儲計算機  69
4.2.1 cache一致性  69
4.2.2 UMA  71
4.2.3 ccNUMA  71
4.3 分散式存儲計算機  73
4.4 混合型系統  74
4.5 網路  75
4.5.1 網路的基本性能特徵  75
4.5.2 匯流排  78
4.5.3 交換網路和胖樹網路  79
4.5.4 Mesh 網路  81
4.5.5 混合網路  82
習題  82
第5章 並行性基礎  83
5.1 為什麼並行化  83
5.2 並行性  83
5.2.1 數據並行性  84
5.2.2 功能並行性  86
5.3 並行擴展性  87
5.3.1 限制並行執行的因素  87
5.3.2 可擴展性指標  88
5.3.3 簡單可擴展性定律  89
5.3.4 並行效率  90
5.3.5 串列性能與強可擴展性  91
5.3.6 改進的性能模型  92
5.3.7 選擇正確的擴展性基準  94
5.3.8 案例分析:低速處理器計算機能否變得更快  95
5.3.9 負載不均衡  98
習題  101
第6章 使用OpenMP進行共享存儲並行編程  103
6.1 OpenMP簡介  103
6.1.1 並行執行  103
6.1.2 數據作用域  105
6.1.3 循環的OpenMP工作共享  106
6.1.4 同步  107
6.1.5 歸約  108
6.1.6 循環調度  109
6.1.7 任務  110
6.1.8 其他方面  111
6.2 案例分析:OpenMP並行實現Jacobi算法  112
6.3 高級OpenMP:波前並行化  114
習題  116
第7章 高效OpenMP編程  119
7.1 OpenMP程式性能分析  119
7.2 性能缺陷  120
7.2.1 減輕Open MP共享區開銷  121
7.2.2 決定短循環的OpenMP開銷  126
7.2.3 串列化  128
7.2.4 偽共享  129
7.3 案例分析:並行稀疏矩陣向量乘  130
習題  133
第8章 ccNUMA體系結構的局部性最佳化  134
8.1 ccNUMA的局部訪問  134
8.1.1 首次訪問方式分配頁面  135
8.1.2 通過其他方式的局部性訪問  137
8.2 案例分析:稀疏MVM的ccNUMA最佳化  138
8.3 頁面布局缺陷  139
8.3.1 非NUMA友好的OpenMP調度  139
8.3.2 檔案系統高速快取  140
8.4 C++中的ccNUMA問題  142
8.4.1 對象數組  142
8.4.2 標準模板庫  144
習題  146
第9章 使用MPI進行分散式存儲並行記憶體編程  147
9.1 訊息傳遞  147
9.2 MPI簡介  148
9.2.1 一個簡單例子  148
9.2.2 訊息和點對點通信  150
9.2.3 集合通信  154
9.2.4 非阻塞點對點通信  157
9.2.5 虛擬拓撲  160
9.3 實例:Jacobi解法器的MPI並行  162
9.3.1 MPI實現  162
9.3.2 性能特徵  167
習題  170
第10章 高效MPI編程  171
10.1 MPI性能工具  171
10.2 通信參數  174
10.3 同步、串列化和競爭  174
10.3.1 隱式串列化和同步  174
10.3.2 競爭  176
10.4 降低通信開銷  177
10.4.1 最最佳化區域分解  177
10.4.2 聚合訊息  180
10.4.3 非阻塞與異步通信  181
10.4.4 集合通信  183
10.5 理解節點內點對點通信  184
習題  189
第11章 MPI與OpenMP混合編程  190
11.1 基本MPI/OpenMP混合編程模型  190
11.1.1 向量模式實現  191
11.1.2 任務模式實現  191
11.1.3 案例分析:混合Jacobi解法器  192
11.2?MPI執行緒互動分類  193
11.3 混合分解及映射  195
11.3.1 每個節點一個MPI進程  195
11.3.2 每個插槽一個MPI進程  196
11.3.3 每個插槽多個MPI進程  196
11.4 混合編程的優勢和劣勢  197
11.4.1 改善的收斂速度  197
11.4.2 共享高速快取中的數據重用  197
11.4.3 利用額外級別的並行性  198
11.4.4 重疊MPI通信和計算  198
11.4.5 減少MPI開銷  198
11.4.6 多級別開銷  198
11.4.7 向量模式下批量同步通信  198
附錄A 多核環境中的拓撲和親緣性  199
A.1?拓撲  200
A.2?執行緒和進程分布  201
A.2.1?外部親緣性工具  201
A.2.2?程式控制親緣性  203
A.3?非頁面首次訪問分配策略  204
附錄B 習題解答  206
參考文獻  221

相關詞條

熱門詞條

聯絡我們