求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。

OpenMP核心技術指南檢視原始碼討論檢視歷史

事實揭露 揭密真相
前往: 導覽搜尋

來自 孔夫子網 的圖片

OpenMP核心技術指南》,馬特森 著,出版社: 機械工業出版社。

機械工業出版社成立於1950年,是建國後國家設立的第一家科技出版社,前身為科學技術出版社,1952年更名為機械工業出版社[1]。機械工業出版社(以下簡稱機工社)由機械工業信息研究院作為主辦單位,目前隸屬於國務院國資委[2]

內容簡介

OpenMP日益增加的複雜性使其學習門檻不斷升高,本書回歸OpenMP zui初的設計哲學,提煉出大多數程序員常用的21項核心知識——稱為OpenMP「通用核心」,為零基礎讀者搭建了從通用核心到OpenMP多線程編程的高效學習階梯。本書由OpenMP技術專家撰寫,內容涵蓋並行計算的核心設計模式、共享工作循環構造、OpenMP數據環境、OpenMP任務和OpenMP內存模型等內容,採用編程驅動的方式,藉助複雜性逐漸提高的實例來逐步引入新概念。此外,本書wangzhanompcore.com為讀者免費提供各類代碼示例和練習題。

目錄

譯者序

序言

前言

  • 一部分 做好學習OpenMP的準備
  • 1章 並行計算 2

1.1 並行計算的基本概念 2

1.2 並發性的興起 4

1.3 並行硬件 5

1.3.1 多處理器系統 5

1.3.2 圖形處理單元 8

1.3.3 分布式內存集群 10

1.4 多處理器計算機的並行軟件 10

  • 2章 性能語言 13

2.1 基礎:FLOPS、加速比和並行效率 13

2.2 阿姆達爾定律 16

2.3 並行開銷 17

2.4 強擴展與弱擴展 19

2.5 負載均衡 19

2.6 用roofline模型理解硬件 21

第3章 什麼是OpenMP 23

3.1 OpenMP的歷史 23

3.2 通用核心 25

3.3 OpenMP的主要組件 26

  • 二部分 OpenMP通用核心

第4章 線程和OpenMP編程模型 31

4.1 OpenMP概述 31

4.2 OpenMP 程序的結構 31

4.3 線程和fork-join模式 34

4.4 使用線程 38

4.4.1 SPMD設計模式 39

4.4.2 偽共享 43

4.4.3 同步 45

4.5 結束語 49

第5章 並行化循環 50

5.1 共享工作循環構造 51

5.2 組合式並行共享工作循環構造 53

5.3 歸約 54

5.4 循環調度 56

5.4.1 靜態調度 56

5.4.2 動態調度 57

5.4.3 選擇一個調度 59

5.5 隱式柵欄和nowait子句 61

5.6 帶有並行循環共享工作的Pi程序 63

5.7 一種循環級並行策略 64

5.8 結束語 66

第6章 OpenMP數據環境 67

6.1 缺省存儲屬性 68

6.2 修改存儲屬性 70

6.2.1 shared子句 70

6.2.2 private子句 72

6.2.3 firstprivate子句 73

6.2.4 default子句 74

6.3 數據環境的例子 74

6.3.1 數據作用域測試 75

6.3.2 曼德勃羅集的面積 76

6.3.3 重新審視Pi循環的例子 79

6.4 數組和指針 80

6.5 結束語 81

第7章 OpenMP任務 83

7.1 任務的必要性 83

7.2 顯式任務 86

7.3 *一個例子:薛定諤程序 87

7.4 single構造 88

7.5 使用任務 89

7.5.1 什麼時候任務完成 90

7.6 任務的數據環境 91

7.6.1 任務的缺省數據作用域 91

7.6.2 利用任務重新審視鍊表程序 93

7.7 利用任務的基礎設計模式 93

7.7.1 分而治之模式 95

7.8 結束語 99

第8章 OpenMP內存模型 100

8.1 重新審視內存層次結構 101

8.2 OpenMP通用核心內存模型 103

8.3 使用共享內存 106

8.4 結束語 108

第9章 通用核心回顧 110

9.1 管理線程 111

9.2 共享工作構造 111

9.3 組合式並行共享工作循環構造 113

9.4 OpenMP任務 113

9.5 同步和內存一致性模型 114

9.6 數據環境子句 115

9.7 歸約子句 116

9.8 環境變量和運行時庫例程 117

第三部分 超越通用核心

  • 10章 超越通用核心的多線程 121

10.1 用於OpenMP通用核心構造的附加子句 121

10.1.1 並行構造 122

10.1.2 共享工作循環構造 124

10.1.3 任務構造 129

10.2 通用核心中缺失的多線程功能 133

10.2.1 threadprivate 133

10.2.2 master 135

10.2.3 atomic 136

10.2.4 OMP_STACKSIZE 137

10.2.5 運行時庫例程 138

10.3 結束語 140

  • 11章 同步和OpenMP內存模型 141

11.1 內存一致性模型 142

11.2 成對同步 146

11.3 鎖以及如何使用它 151

11.4 C++內存模型和OpenMP 153

11.5 結束語 156

  • 12章 超越OpenMP通用核心的硬件 157

12.1 非統一內存訪問系統 158

12.1.1 在NUMA系統上工作 159

12.1.2 嵌套並行構造 168

12.1.3 檢查線程親和力 171

12.1.4 小結:線程親和力和數據局部性 173

12.2 SIMD 173

12.3 設備構造 180

12.4 結束語 184

  • 13章 繼續OpenMP的學習 186

13.1 來自ARB的程序員資源 186

13.2 如何閱讀OpenMP規範 188

13.2.1 帶有所有正式術語的OpenMP 188

13.3 OpenMP規範的結構 191

13.4 結束語 193

術語表 194

參考文獻