並行編程原理與程式設計

並行編程原理與程式設計

《並行編程原理與程式設計》是2021年科學出版社出版的圖書。

基本介紹

  • 中文名:並行編程原理與程式設計
  • 作者:何兵壽,宋鵬,劉穎
  • 類別:程式設計
  • 出版社:科學出版社
  • 出版時間:2021年
  • 開本:16 開
  • 裝幀:精裝
  • ISBN:9787030694829
內容簡介,圖書目錄,

內容簡介

《並行編程原理與程式設計》主要介紹目前常用的幾種並行程式設計思路與方法,主要內容包括並行計算基礎、OpenMP並行程式設計簡介、MPI並行程式設計、CUDA並行程式設計及求解聲波方程的並行程式五個部分。其中OpenMP對應共享記憶體的CPU並行編程,MPI對應訊息傳遞的CPU並行編程,CUDA對應GPU編程。因此,通過對《並行編程原理與程式設計》的學習,可以掌握目前常用的幾種並行編程方法。

圖書目錄

目錄
前言
篇 並行計算基礎
第1章 並行計算機硬體基礎 3
1.1 並行計算 3
1.1.1 並行計算的概念 3
1.1.2 並行計算與計算科學 3
1.1.3 當代科學與工程問題的計算需求 4
1.2 並行計算機硬體簡介 4
1.2.1 並行計算機的發展歷史 4
1.2.2 並行計算機的分類 8
1.2.3 並行計算機的體系結構 9
1.3 當代並行計算機系統簡介 14
1.3.1 共享存儲多處理機系統 15
1.3.2 分布存儲多處理機系統 15
1.3.3 集群系統 17
1.4 並行計算機的一些基本性能指標 24
1.4.1 CPU和存儲器的某些性能指標 24
1.4.2 通信開銷 25
1.4.3 機器的成本、價格與性價比 26
第2章 並行程式設計基礎 28
2.1 並行算法的基礎知識 28
2.1.1 並行算法領域的一些基本概念 28
2.1.2 並行程式開發策略與並行算法的描述方法 30
2.1.3 並行算法中的同步與通信 31
2.2 並行程式設計模型 32
2.2.1 計算π的樣本程式 32
2.2.2 數據並行模型 33
2.2.3 訊息傳遞模型 34
2.2.4 共享變數模型 36
2.3 並行程式設計方法 38
2.3.1 PCAM並行程式設計思路 38
2.3.2 並行程式語言 41
第二篇 OpenMP並行程式設計簡介
第3章 OpenMP介紹 55
3.1 什麼是OpenMP 55
3.2 共享記憶體式並行計算 55
3.3 OpenMP的發展歷程 56
3.4 Windows平台下OpenMP環境搭建 56
第4章 OpenMP指令結構 59
4.1 編譯指導語句的一般形式 59
4.2 主要指令 60
4.3 主要子句 61
4.4 常用庫函式 62
第5章 OpenMP常用指令的用法 63
5.1 數據管理 63
5.1.1 Private子句 63
5.1.2 Firstprivate/Lastprivate子句 64
5.1.3 Shared子句 65
5.1.4 Default子句 66
5.1.5 Threadprivate子句 67
5.1.6 Copyin、copyprivate子句 68
5.1.7 Reduction子句 69
5.2 並行控制 70
5.2.1 Parallel指令 70
5.2.2 For指令 75
5.2.3 Schedule子句 76
5.2.4 Sections指令 80
5.2.5 Single指令 82
5.3 同步管理 82
5.3.1 Critical指令 83
5.3.2 Atomic指令 84
5.3.3 Barrier指令 85
5.3.4 Ordered指令 86
5.3.5 Master指令 86
5.3.6 Flush指令 87
5.4 常用庫函式 87
5.4.1 運行時庫函式 87
5.4.2 鎖管理 88
5.4.3 環境變數 90
第6章 OpenMP實例 91
6.1 循環實例 91
6.2 並行程式的最佳化 93
6.2.1 臨界區實現 93
6.2.2 原子操作實現 95
6.2.3 歸約實現 95
6.3 快速排序並行算法 96
第三篇 MPI並行程式設計
第7章 MPI編程基礎 103
7.1 MPI簡介 103
7.1.1 MPI的含義 103
7.1.2 MPI的目標 103
7.1.3 MPI的產生 103
7.1.4 MPI的語言綁定 104
7.1.5 目前MPI的主要實現 104
7.2 一個簡單的MPI程式 105
7.2.1 MPI實現的“Hello World!” 105
7.2.2 MPI程式的框架結構 109
7.2.3 MPI程式的一些慣例 109
7.3 6個基本函式組成的MPI子集 109
7.3.1 子集介紹 109
7.3.2 MPI預定義的數據類型 114
7.3.3 MPI數據類型匹配 115
7.3.4 MPI訊息 117
7.4 簡單的MPI程式示例 118
7.4.1 求二維數據中各元素值的值 119
7.4.2 用MPI實現計時功能 121
7.4.3 獲取機器名字與MPI版本號 123
7.4.4 是否初始化及錯誤退出 124
7.4.5 環形訊息傳遞 125
7.4.6 所有進程相互問候 126
7.4.7 任意源和任意標識的使用 128
7.4.8 編寫安全的MPI程式 129
第8章 MPI的安裝與並行編程環境的設定 132
8.1 Linux環境下的MPICH2安裝與設定 132
8.2 Windows環境下MPICH2的安裝與設定 133
8.2.1 安裝 133
8.2.2 編譯運行C MPI程式 134
8.2.3 編譯運行Fortran MPI程式 138
第9章 對等模式與主從模式的MPI程式設計 141
9.1 對等模式MPI程式設計 141
9.1.1 問題描述——雅可比疊代 141
9.1.2 用MPI程式實現雅可比疊代 142
9.1.3 採用捆綁傳送接收實現雅可比疊代 146
9.1.4 引入虛擬進程後雅可比疊代的實現 151
9.2 主從模式MPI程式設計 155
9.2.1 矩陣向量乘 155
9.2.2 主進程列印各從進程的訊息 159
第10章 MPI的四種通信模式 162
10.1 標準通信模式 162
10.2 快取通信模式 163
10.3 同步通信模式 165
10.4 就緒通信模式 167
第11章 MPI的非阻塞通信 170
11.1 非阻塞通信簡介 170
11.1.1 阻塞通信 170
11.1.2 非阻塞通信 171
11.2 非阻塞標準傳送與接收 173
11.3 非阻塞通信與其他三種通信模式的結合 174
11.4 非阻塞通信的完成與檢測 175
11.4.1 單個非阻塞通信的完成與檢測 175
11.4.2 多個非阻塞通信的完成與檢測 176
11.5 非阻塞通信對象 178
11.5.1 非阻塞通信的取消 179
11.5.2 非阻塞通信對象的釋放 180
11.5.3 訊息到達的檢查 181
11.5.4 用非阻塞通信來實現雅可比疊代 182
11.6 重複非阻塞通信 185
第12章 MPI的組通信調用 190
12.1 組通信概述 190
12.2 組通信的通信功能 191
12.2.1 廣播 191
12.2.2 收集 192
12.2.3 散發 196
12.2.4 組收集 199
12.2.5 全互換 201
12.3 組通信的同步功能 204
12.4 組通信的計算功能 205
12.4.1 歸約 205
12.4.2 MPI的內置歸約算符 206
12.4.3 程式舉例 207
12.4.4 組歸約 209
12.4.5 歸約並散發 211
12.4.6 掃描 212
12.4.7 不同類型歸約操作的對比 213
12.4.8 MINLOC和MAXLOC 215
12.4.9 用戶自定義的歸約操作 216
第13章 MPI的派生數據類型 220
13.1 類型圖 220
13.2 新數據類型的定義 221
13.2.1 MPI提供的數據類型生成器 221
13.2.2 新類型遞交和釋放 226
13.2.3 地址函式 227
13.2.4 與數據類型有關的調用 228
13.2.5 下界類型和上界類型 231
13.3 例題 232
13.4 打包與解包 236
第14章 MPI的進程組和通信域 239
14.1 簡介 239
14.2 進程組和通信域的管理 239
14.2.1 MPI的進程組管理接口 240
14.2.2 通信域的管理 245
14.3 組間通信域 250
第15章 MPI擴展 255
15.1 MPI的動態進程管理 255
15.1.1 組間通信域 255
15.1.2 動態進程的創建 257
15.1.3 獨立進程間的通信 260
15.1.4 基於socket的通信 263
15.2 MPI的遠程存儲訪問 263
15.2.1 視窗創建與視窗操作 264
15.2.2 視窗同步管理 267
15.3 並行I/O 275
15.3.1 並行檔案管理的基本操作 276
15.3.2 顯式指定偏移量的並行檔案讀寫 279
15.3.3 多視口的並行檔案並行讀寫 283
15.3.4 已分享檔案指針讀寫 291
第16章 MPI函式調用原型與簡單解釋 297
16.1 MPI-1與C語言的接口 297
16.2 MPI-1與Fortran語言的接口 305
16.3 MPI-2與C語言的接口 314
16.4 MPI-2與Fortran語言的接口 324
第四篇 CUDA並行程式設計
第17章 GPU簡介 339
17.1 NVIDIA GPU發展簡介 339
17.2 GPU硬體架構 340
17.2.1 圖形顯示卡概覽 340
17.2.2 PCI-E匯流排 341
17.2.3 顯存 342
17.2.4 GPU晶片 343
17.3 基於GPU的程式開發 344
17.3.1 傳統GPU開發 344
17.3.2 CUDA開發 344
第18章 CUDA安裝與編譯 346
18.1 CUDA函式館與CUDA C 語言 346
18.1.1 CUDA API和函式館 346
18.1.2 CUDA C 語言 347
18.1.3 CUDA C 拓展限定符語法 348
18.2 CUDA的安裝與配置 351
18.2.1 開發環境 351
18.2.2 安裝平台 354
18.2.3 CUDA安裝與配置 355
18.3 CUDA編譯與驅動 357
18.3.1 Emu調試 357
18.3.2 編譯相關 358
18.3.3 錯誤處理 359
18.3.4 計算模式 359
第19章 CUDA編程基礎 360
19.1 主機與設備 360
19.2 核函式的定義與調用 362
19.3 設備中的空間管理與數據傳輸 363
19.4 執行緒結構 365
19.5 硬體映射 370
19.5.1 計算單元 370
19.5.2 Warp 372
19.5.3 執行模型 372
19.6 存儲器類型 373
19.6.1 暫存器 374
19.6.2 局部存儲器 375
19.6.3 共享存儲器 3

相關詞條

熱門詞條

聯絡我們