Introduction to High Performance Computing for Scientists and Engineers
齣版者的話
譯者序
序
前言
縮略詞
第1章 當代處理器
1.1 存儲程序的計算機體係結構
1.2 基於高速緩存的通用微處理器體係結構
1.2.1 性能指標和基準測試
1.2.2 晶體管:摩爾定律
1.2.3 流水綫
1.2.4 超標量
1.2.5 SIMD
1.3 存儲層次
1.3.1 高速緩存
1.3.2 高速緩存映射
1.3.3 預取
1.4 多核處理器
1.5 多綫程處理器
1.6 嚮量處理器
1.6.1 設計原理
1.6.2 最高性能估計
1.6.3 程序設計
習題
第2章 串行代碼基本優化技術
2.1 標量剖析
2.1.1 基於函數和代碼行的程序剖析
2.1.2 硬件性能計數器
2.1.3 手工代碼插入
2.2 優化常識
2.2.1 少做工作
2.2.2 避免耗時運算
2.2.3 縮減工作集
2.3 小方法,大改進
2.3.1 消除常用子錶達式
2.3.2 避免分支
2.3.3 使用SIMD指令集
2.4 編譯器作用
2.4.1 通用優化選項
2.4.2 內聯
2.4.3 彆名
2.4.4 計算準確性
2.4.5 寄存器優化
2.4.6 利用編譯日誌
2.5 C++優化
2.5.1 臨時變量
2.5.2 動態內存管理
2.5.3 循環與迭代器
習題
第3章 數據訪存優化
3.1 平衡分析與lightspeed評估
3.1.1 基於帶寬的性能建模
3.1.2 STREAM 基準測試
3.2 存儲順序
3.3 案例分析:Jacobi算法
3.4 案例分析:稠密矩陣轉置
3.5 算法分類和訪存優化
3.5.1 O(N)/O(N)
3.5.2 O(N2)/O(N2)
3.5.3 O(N3)/O(N2)
3.6 案例分析:稀疏矩陣嚮量乘
3.6.1 稀疏矩陣的存儲機製
3.6.2 JDS sMVM優化
習題
第4章 並行計算機
4.1 並行計算模式分類
4.2 共享存儲計算機
4.2.1 cache一緻性
4.2.2 UMA
4.2.3 ccNUMA
4.3 分布式存儲計算機
4.4 混閤型係統
4.5 網絡
4.5.1 網絡的基本性能特徵
4.5.2 總綫
4.5.3 交換網絡和胖樹網絡
4.5.4 Mesh 網絡
4.5.5 混閤網絡
習題
第5章 並行性基礎
5.1 為什麼並行化
5.2 並行性
5.2.1 數據並行性
5.2.2 功能並行性
5.3 並行擴展性
5.3.1 限製並行執行的因素
5.3.2 可擴展性指標
5.3.3 簡單可擴展性定律
5.3.4 並行效率
5.3.5 串行性能與強可擴展性
5.3.6 改進的性能模型
5.3.7 選擇正確的擴展性基準
5.3.8 案例分析:低速處理器計算機能否變得更快
5.3.9 負載不均衡
習題
第6章 使用OpenMP進行共享存儲並行編程
6.1 OpenMP簡介
6.1.1 並行執行
6.1.2 數據作用域
6.1.3 循環的OpenMP工作共享
6.1.4 同步
6.1.5 歸約
6.1.6 循環調度
6.1.7 任務
6.1.8 其他方麵
6.2 案例分析:OpenMP並行實現Jacobi算法
6.3 高級OpenMP:波前並行化
習題
第7章 高效OpenMP編程
7.1 OpenMP程序性能分析
7.2 性能缺陷
7.2.1 減輕Open MP共享區開銷
7.2.2 決定短循環的OpenMP開銷
7.2.3 串行化
7.2.4 僞共享
7.3 案例分析:並行稀疏矩陣嚮量乘
習題
第8章 ccNUMA體係結構的局部性優化
8.1 ccNUMA的局部訪問
8.1.1 首次訪問方式分配頁麵
8.1.2 通過其他方式的局部性訪問
8.2 案例分析:稀疏MVM的ccNUMA優化
8.3 頁麵布局缺陷
8.3.1 非NUMA友好的OpenMP調度
8.3.2 文件係統高速緩存
8.4 C++中的ccNUMA問題
8.4.1 對象數組
8.4.2 標準模闆庫
習題
第9章 使用MPI進行分布式存儲並行內存編程
9.1 消息傳遞
9.2 MPI簡介
9.2.1 一個簡單例子
9.2.2 消息和點對點通信
9.2.3 集閤通信
9.2.4 非阻塞點對點通信
9.2.5 虛擬拓撲
9.3 實例:Jacobi解法器的MPI並行
9.3.1 MPI實現
9.3.2 性能特徵
習題
第10章 高效MPI編程
10.1 MPI性能工具
10.2 通信參數
10.3 同步、串行化和競爭
10.3.1 隱式串行化和同步
10.3.2 競爭
10.4 降低通信開銷
10.4.1 最優化區域分解
10.4.2 聚閤消息
10.4.3 非阻塞與異步通信
10.4.4 集閤通信
10.5 理解節點內點對點通信
習題
第11章 MPI與OpenMP混閤編程
11.1 基本MPI/OpenMP混閤編程模型
11.1.1 嚮量模式實現
11.1.2 任務模式實現
11.1.3 案例分析:混閤Jacobi解法器
11.2 MPI綫程交互分類
11.3 混閤分解及映射
11.3.1 每個節點一個MPI進程
11.3.2 每個插槽一個MPI進程
11.3.3 每個插槽多個MPI進程
11.4 混閤編程的優勢和劣勢
11.4.1 改善的收斂速度
11.4.2 共享高速緩存中的數據重用
11.4.3 利用額外級彆的並行性
11.4.4 重疊MPI通信和計算
11.4.5 減少MPI開銷
11.4.6 多級彆開銷
11.4.7 嚮量模式下批量同步通信
附錄A 多核環境中的拓撲和親緣性
A.1 拓撲
A.2 綫程和進程分布
A.2.1 外部親緣性工具
A.2.2 程序控製親緣性
A.3 非頁麵首次訪問分配策略
附錄B 習題解答
參考文獻
· · · · · · (
收起)