關(guān)于我們
書單推薦
新書推薦
|
|
定 價(jià):269 元
叢書名:海底科學(xué)與技術(shù)叢書
- 作者:何兵壽,宋鵬,劉穎
- 出版時(shí)間:2021/9/1
- ISBN:9787030694829
- 出 版 社:科學(xué)出版社
- 中圖法分類:TP311.11
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
《并行編程原理與程序設(shè)計(jì)》主要介紹目前常用的幾種并行程序設(shè)計(jì)思路與方法,主要內(nèi)容包括并行計(jì)算基礎(chǔ)、OpenMP并行程序設(shè)計(jì)簡介、MPI并行程序設(shè)計(jì)、CUDA并行程序設(shè)計(jì)及求解聲波方程的并行程序五個(gè)部分。其中OpenMP對(duì)應(yīng)共享內(nèi)存的CPU并行編程,MPI對(duì)應(yīng)消息傳遞的CPU并行編程,CUDA對(duì)應(yīng)GPU編程。因此,通過對(duì)《并行編程原理與程序設(shè)計(jì)》的學(xué)習(xí),可以掌握目前常用的幾種并行編程方法。
更多科學(xué)出版社服務(wù),請(qǐng)掃碼獲取。
目錄 前言 篇 并行計(jì)算基礎(chǔ) 第1章 并行計(jì)算機(jī)硬件基礎(chǔ) 3 1.1 并行計(jì)算 3 1.1.1 并行計(jì)算的概念 3 1.1.2 并行計(jì)算與計(jì)算科學(xué) 3 1.1.3 當(dāng)代科學(xué)與工程問題的計(jì)算需求 4 1.2 并行計(jì)算機(jī)硬件簡介 4 1.2.1 并行計(jì)算機(jī)的發(fā)展歷史 4 1.2.2 并行計(jì)算機(jī)的分類 8 1.2.3 并行計(jì)算機(jī)的體系結(jié)構(gòu) 9 1.3 當(dāng)代并行計(jì)算機(jī)系統(tǒng)簡介 14 1.3.1 共享存儲(chǔ)多處理機(jī)系統(tǒng) 15 1.3.2 分布存儲(chǔ)多處理機(jī)系統(tǒng) 15 1.3.3 集群系統(tǒng) 17 1.4 并行計(jì)算機(jī)的一些基本性能指標(biāo) 24 1.4.1 CPU和存儲(chǔ)器的某些性能指標(biāo) 24 1.4.2 通信開銷 25 1.4.3 機(jī)器的成本、價(jià)格與性價(jià)比 26 第2章 并行程序設(shè)計(jì)基礎(chǔ) 28 2.1 并行算法的基礎(chǔ)知識(shí) 28 2.1.1 并行算法領(lǐng)域的一些基本概念 28 2.1.2 并行程序開發(fā)策略與并行算法的描述方法 30 2.1.3 并行算法中的同步與通信 31 2.2 并行程序設(shè)計(jì)模型 32 2.2.1 計(jì)算的樣本程序 32 2.2.2 數(shù)據(jù)并行模型 33 2.2.3 消息傳遞模型 34 2.2.4 共享變量模型 36 2.3 并行程序設(shè)計(jì)方法 38 2.3.1 PCAM并行程序設(shè)計(jì)思路 38 2.3.2 并行編程語言 41 第二篇 OpenMP并行程序設(shè)計(jì)簡介 第3章 OpenMP介紹 55 3.1 什么是OpenMP 55 3.2 共享內(nèi)存式并行計(jì)算 55 3.3 OpenMP的發(fā)展歷程 56 3.4 Windows平臺(tái)下OpenMP環(huán)境搭建 56 第4章 OpenMP指令結(jié)構(gòu) 59 4.1 編譯指導(dǎo)語句的一般形式 59 4.2 主要指令 60 4.3 主要子句 61 4.4 常用庫函數(shù) 62 第5章 OpenMP常用指令的用法 63 5.1 數(shù)據(jù)管理 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 常用庫函數(shù) 87 5.4.1 運(yùn)行時(shí)庫函數(shù) 87 5.4.2 鎖管理 88 5.4.3 環(huán)境變量 90 第6章 OpenMP實(shí)例 91 6.1 循環(huán)實(shí)例 91 6.2 并行程序的優(yōu)化 93 6.2.1 臨界區(qū)實(shí)現(xiàn) 93 6.2.2 原子操作實(shí)現(xiàn) 95 6.2.3 歸約實(shí)現(xiàn) 95 6.3 快速排序并行算法 96 第三篇 MPI并行程序設(shè)計(jì) 第7章 MPI編程基礎(chǔ) 103 7.1 MPI簡介 103 7.1.1 MPI的含義 103 7.1.2 MPI的目標(biāo) 103 7.1.3 MPI的產(chǎn)生 103 7.1.4 MPI的語言綁定 104 7.1.5 目前MPI的主要實(shí)現(xiàn) 104 7.2 一個(gè)簡單的MPI程序 105 7.2.1 MPI實(shí)現(xiàn)的Hello World! 105 7.2.2 MPI程序的框架結(jié)構(gòu) 109 7.2.3 MPI程序的一些慣例 109 7.3 6個(gè)基本函數(shù)組成的MPI子集 109 7.3.1 子集介紹 109 7.3.2 MPI預(yù)定義的數(shù)據(jù)類型 114 7.3.3 MPI數(shù)據(jù)類型匹配 115 7.3.4 MPI消息 117 7.4 簡單的MPI程序示例 118 7.4.1 求二維數(shù)據(jù)中各元素值的值 119 7.4.2 用MPI實(shí)現(xiàn)計(jì)時(shí)功能 121 7.4.3 獲取機(jī)器名字與MPI版本號(hào) 123 7.4.4 是否初始化及錯(cuò)誤退出 124 7.4.5 環(huán)形消息傳遞 125 7.4.6 所有進(jìn)程相互問候 126 7.4.7 任意源和任意標(biāo)識(shí)的使用 128 7.4.8 編寫安全的MPI程序 129 第8章 MPI的安裝與并行編程環(huán)境的設(shè)置 132 8.1 Linux環(huán)境下的MPICH2安裝與設(shè)置 132 8.2 Windows環(huán)境下MPICH2的安裝與設(shè)置 133 8.2.1 安裝 133 8.2.2 編譯運(yùn)行C MPI程序 134 8.2.3 編譯運(yùn)行Fortran MPI程序 138 第9章 對(duì)等模式與主從模式的MPI程序設(shè)計(jì) 141 9.1 對(duì)等模式MPI程序設(shè)計(jì) 141 9.1.1 問題描述雅可比迭代 141 9.1.2 用MPI程序?qū)崿F(xiàn)雅可比迭代 142 9.1.3 采用捆綁發(fā)送接收實(shí)現(xiàn)雅可比迭代 146 9.1.4 引入虛擬進(jìn)程后雅可比迭代的實(shí)現(xiàn) 151 9.2 主從模式MPI程序設(shè)計(jì) 155 9.2.1 矩陣向量乘 155 9.2.2 主進(jìn)程打印各從進(jìn)程的消息 159 第10章 MPI的四種通信模式 162 10.1 標(biāo)準(zhǔn)通信模式 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 非阻塞標(biāo)準(zhǔn)發(fā)送與接收 173 11.3 非阻塞通信與其他三種通信模式的結(jié)合 174 11.4 非阻塞通信的完成與檢測 175 11.4.1 單個(gè)非阻塞通信的完成與檢測 175 11.4.2 多個(gè)非阻塞通信的完成與檢測 176 11.5 非阻塞通信對(duì)象 178 11.5.1 非阻塞通信的取消 179 11.5.2 非阻塞通信對(duì)象的釋放 180 11.5.3 消息到達(dá)的檢查 181 11.5.4 用非阻塞通信來實(shí)現(xiàn)雅可比迭代 182 11.6 重復(fù)非阻塞通信 185 第12章 MPI的組通信調(diào)用 190 12.1 組通信概述 190 12.2 組通信的通信功能 191 12.2.1 廣播 191 12.2.2 收集 192 12.2.3 散發(fā) 196 12.2.4 組收集 199 12.2.5 全互換 201 12.3 組通信的同步功能 204 12.4 組通信的計(jì)算功能 205 12.4.1 歸約 205 12.4.2 MPI的內(nèi)置歸約算符 206 12.4.3 程序舉例 207 12.4.4 組歸約 209 12.4.5 歸約并散發(fā) 211 12.4.6 掃描 212 12.4.7 不同類型歸約操作的對(duì)比 213 12.4.8 MINLOC和MAXLOC 215 12.4.9 用戶自定義的歸約操作 216 第13章 MPI的派生數(shù)據(jù)類型 220 13.1 類型圖 220 13.2 新數(shù)據(jù)類型的定義 221 13.2.1 MPI提供的數(shù)據(jù)類型生成器 221 13.2.2 新類型遞交和釋放 226 13.2.3 地址函數(shù) 227 13.2.4 與數(shù)據(jù)類型有關(guān)的調(diào)用 228 13.2.5 下界類型和上界類型 231 13.3 例題 232 13.4 打包與解包 236 第14章 MPI的進(jìn)程組和通信域 239 14.1 簡介 239 14.2 進(jìn)程組和通信域的管理 239 14.2.1 MPI的進(jìn)程組管理接口 240 14.2.2 通信域的管理 245 14.3 組間通信域 250 第15章 MPI擴(kuò)展 255 15.1 MPI的動(dòng)態(tài)進(jìn)程管理 255 15.1.1 組間通信域 255 15.1.2 動(dòng)態(tài)進(jìn)程的創(chuàng)建 257 15.1.3 獨(dú)立進(jìn)程間的通信 260 15.1.4 基于socket的通信 263 15.2 MPI的遠(yuǎn)程存儲(chǔ)訪問 263 15.2.1 窗口創(chuàng)建與窗口操作 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函數(shù)調(diào)用原型與簡單解釋 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并行程序設(shè)計(jì) 第17章 GPU簡介 339 17.1 NVIDIA GPU發(fā)展簡介 339 17.2 GPU硬件架構(gòu) 340 17.2.1 圖形顯卡概覽 340 17.2.2 PCI-E總線 341 17.2.3 顯存 342 17.2.4 GPU芯片 343 17.3 基于GPU的程序開發(fā) 344 17.3.1 傳統(tǒng)GPU開發(fā) 344 17.3.2 CUDA開發(fā) 344 第18章 CUDA安裝與編譯 346 18.1 CUDA函數(shù)庫與CUDA C 語言 346 18.1.1 CUDA API和函數(shù)庫 346 18.1.2 CUDA C 語言 347 18.1.3 CUDA C 拓展限定符語法 348 18.2 CUDA的安裝與配置 351 18.2.1 開發(fā)環(huán)境 351 18.2.2 安裝平臺(tái) 354 18.2.3 CUDA安裝與配置 355 18.3 CUDA編譯與驅(qū)動(dòng) 357 18.3.1 Emu調(diào)試 357 18.3.2 編譯相關(guān) 358 18.3.3 錯(cuò)誤處理 359 18.3.4 計(jì)算模式 359 第19章 CUDA編程基礎(chǔ) 360 19.1 主機(jī)與設(shè)備 360 19.2 核函數(shù)的定義與調(diào)用 362 19.3 設(shè)備中的空間管理與數(shù)據(jù)傳輸 363 19.4 線程結(jié)構(gòu) 365 19.5 硬件映射 370 19.5.1 計(jì)算單元 370 19.5.2 Warp 372 19.5.3 執(zhí)行模型 372 19.6 存儲(chǔ)器類型 373 19.6.1 寄存器 374 19.6.2 局部存儲(chǔ)器 375 19.6.3 共享存儲(chǔ)器 3
|