本書是普通高等院校十四五計算類專業(yè)系列教材之一,對并行計算的理論知識和并行程序設(shè)計方法進(jìn)行了系統(tǒng)的論述,包括并行計算基本概念、并行計算機基礎(chǔ)、并行計算模型、并行算法設(shè)計基礎(chǔ)、并行計算性能評測、OpenMP多線程并行程序設(shè)計、MPI消息傳遞并行程序設(shè)計、Java多線程并行程序設(shè)計、Python并行程序設(shè)計、大數(shù)據(jù)分布式計算等內(nèi)容。
本書集作者多年的教學(xué)經(jīng)驗編寫而成,在論述并行計算理論知識的基礎(chǔ)上,特別注重并行程序設(shè)計的實踐方法及實用性。書中含有大量精心設(shè)計并調(diào)試通過的程序?qū)嵗,以方便讀者參考。
本書適合作為普通高等院校計算機科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)以及計算機類相關(guān)專業(yè)本科生和研究生的教材,也可作為社會培訓(xùn)教材或軟件開發(fā)人員的參考書。
本書突出實用性,將復(fù)雜的理論融于具體的實例和程序中。書中的實例經(jīng)過精心設(shè)計挑選,程序代碼已認(rèn)真調(diào)試,可以直接運行,為讀者理解和使用提供了方便。
劉其成,男,博士研究生,煙臺大學(xué)計算機與控制工程學(xué)院教授,碩士生導(dǎo)師。專業(yè)方向為計算機應(yīng)用。主授課程:軟件設(shè)計與體系結(jié)構(gòu)、Java面向?qū)ο蟪绦蛟O(shè)計、并行計算技術(shù)等。主編《軟件設(shè)計與體系結(jié)構(gòu)》、《軟件體系結(jié)構(gòu)與設(shè)計實用教程》、《并行計算與程序設(shè)計》、《Java程序設(shè)計基礎(chǔ)》等多本教材。主持山東省自然科學(xué)基金、山東省教育廳科技計劃項目。作為主要成員參與國家自然科學(xué)基金、山東省科技發(fā)展計劃、山東省本科教學(xué)改革研究重點項目。發(fā)表學(xué)術(shù)論文幾十篇,其中多篇被SCI/EI收錄。獲山東高等學(xué)校優(yōu)秀科研成果獎三等獎。
第1章 概述 11.1 實例11.1.1 求和11.1.2 泡茶問題21.1.3 圖書館新書上架21.1.4 天氣預(yù)報31.1.5 HPCC計劃31.1.6 教務(wù)管理系統(tǒng)31.1.7 地球物理石油勘探數(shù)據(jù)處理系統(tǒng)41.2 并行計算基礎(chǔ)知識51.2.1 并行計算的重要性51.2.2 并行計算的定義、并行計算機系統(tǒng)及軟件61.2.3 并行計算的應(yīng)用分類61.2.4 并行設(shè)計的方法71.2.5 應(yīng)用系統(tǒng)的并行性81.2.6 并行計算的研究內(nèi)容81.3 并行程序設(shè)計策略和模型91.3.1 并行程序設(shè)計策略91.3.2 并行程序設(shè)計模型91.4 相關(guān)概念101.4.1 順序、并發(fā)與并行101.4.2 進(jìn)程和線程111.4.3 一些基本概念12習(xí)題13第2章 并行計算機基礎(chǔ) 14 2.1 并行計算機體系結(jié)構(gòu)142.1.1 結(jié)點152.1.2 互聯(lián)網(wǎng)絡(luò)152.1.3 并行計算機訪存模型192.2 并行計算機的分類202.2.1 并行計算機的控制結(jié)構(gòu)202.2.2 地址空間212.2.3 并行計算機系統(tǒng)結(jié)構(gòu)模型212.3 多核技術(shù)282.3.1 多核芯片282.3.2 片上多核處理器體系結(jié)構(gòu)282.3.3 超線程技術(shù)292.3.4 基于多核的軟件開發(fā)302.3.5 虛擬化技術(shù)302.4 GPU技術(shù)302.4.1 簡介302.4.2 GPU與并行計算31習(xí)題32第3章 并行計算模型 33 3.1 并行計算模型概述333.1.1 串行計算模型與并行計算模型333.1.2 并行計算模型與并行算法333.1.3 并行計算模型與并行系統(tǒng)中其他模型的關(guān)系343.2 PRAM模型343.2.1 基本PRAM模型343.2.2 實例353.3 BSP模型363.3.1 BSP模型原理363.3.2 實例373.4 LogP模型383.4.1 LogP模型原理383.4.2 實例383.5 并行計算模型比較393.5.1 PRAM模型和LogP模型的比較393.5.2 BSP模型和LogP模型的比較39習(xí)題40第4章 并行算法設(shè)計基礎(chǔ) 41 4.1 并行算法設(shè)計方法414.1.1 基本方法414.1.2 實例424.2 并行算法設(shè)計過程444.2.1 PCAM設(shè)計方法學(xué)454.2.2 劃分454.2.3 通信474.2.4 組合494.2.5 映射514.3 并行算法設(shè)計技術(shù)524.4 求和問題的并行算法設(shè)計53習(xí)題54第5章 并行計算性能評測 55 5.1 基本概念555.1.1 運行時間555.1.2 問題規(guī)模565.1.3 額外開銷函數(shù)565.2 并行系統(tǒng)的性能分析585.2.1 加速比585.2.2 效率625.2.3 開銷635.2.4 粒度和數(shù)據(jù)映射對性能的影響635.2.5 實例645.3 并行系統(tǒng)的可擴展性度量645.3.1 可擴展性645.3.2 度量指標(biāo)665.3.3 實例68習(xí)題69第6章 OpenMP多線程并行程序設(shè)計 70 6.1 OpenMP編程基礎(chǔ)706.1.1 OpenMP多線程編程模型706.1.2 OpenMP程序結(jié)構(gòu)716.1.3 使用Microsoft Visual Studio.NET編寫OpenMP程序726.2 編譯指導(dǎo)語句736.2.1 并行域結(jié)構(gòu)parallel指令746.2.2 共享任務(wù)結(jié)構(gòu)756.2.3 同步結(jié)構(gòu)826.2.4 數(shù)據(jù)處理子句876.3 運行時庫函數(shù)966.3.1 基本函數(shù)966.3.2 運行時庫函數(shù)的互斥鎖支持976.4 環(huán)境變量996.5 實例996.5.1 求和996.5.2 數(shù)值積分1036.6 OpenMP多線程程序性能分析1086.6.1 并行額外開銷1086.6.2 線程同步帶來的開銷1106.6.3 負(fù)載均衡1116.6.4 OpenMP中的任務(wù)調(diào)度113習(xí)題119第7章 MPI消息傳遞并行程序設(shè)計 121 7.1 消息傳遞接口1217.1.1 簡介1217.1.2 MPI程序特點1217.2 典型MPI實現(xiàn)MPICH 1237.2.1 簡介1237.2.2 MPICH的安裝和配置1237.3 MPI編程基礎(chǔ)1277.3.1 簡單的MPI程序示例1277.3.2 MPI程序的4個基本函數(shù)1287.3.3 統(tǒng)計時間1287.3.4 錯誤管理1287.4 MPI的點對點通信1297.4.1 點對點通信的例子1297.4.2 MPI_Send()函數(shù)1307.4.3 MPI_Recv()函數(shù)1307.4.4 消息管理七要素1317.4.5 非阻塞通信1337.5 MPI群集通信1337.5.1 一對多群集通信函數(shù)1337.5.2 多對一群集通信函數(shù)1347.5.3 多對多群集通信函數(shù)1357.5.4 同步函數(shù)1367.6 實例1377.6.1 求和1377.6.2 數(shù)值積分138習(xí)題139第8章 Java多線程并行程序設(shè)計 140 8.1 線程1408.1.1 基本概念1408.1.2 線程的狀態(tài)與生命周期1418.1.3 線程調(diào)度與優(yōu)先級1428.2 Runnable接口與Thread類1428.2.1 Runnable接口1428.2.2 Thread類1428.3 多線程的實現(xiàn)1448.3.1 創(chuàng)建Thread類的子類1448.3.2 實現(xiàn)Runnable接口1478.3.3 兩種方法的比較1478.4 線程的同步與死鎖1508.4.1 線程同步1508.4.2 線程死鎖1568.5 實例1568.5.1 求和1568.5.2 數(shù)值積分159習(xí)題161第9章 Python并行程序設(shè)計 162 9.1 Python多線程1629.2 Python多進(jìn)程并行程序設(shè)計1639.2.1 Process類實現(xiàn)并行1639.2.2 Python多進(jìn)程的通信1659.2.3 Python多進(jìn)程的數(shù)據(jù)共享1679.2.4 進(jìn)程間同步1699.2.5 進(jìn)程池1699.2.6 實例1719.3 Python GPU并行程序設(shè)計1749.3.1 概述1749.3.2 常用函數(shù)1759.3.3 神經(jīng)網(wǎng)絡(luò)概述1799.3.4 實例181習(xí)題183第10章 大數(shù)據(jù)分布式計算 184 10.1 Hadoop分布式計算平臺18410.2 MapReduce分布式并行編程模型18510.2.1 MapReduce模型簡介18510.2.2 MapReduce工作流程18610.2.3 WordCount分析18810.2.4 MapReduce實例18910.3 Spark分布式計算框架19310.3.1 并行程序設(shè)計策略19310.3.2 Spark RDD基本操作19510.3.3 Spark應(yīng)用程序?qū)嵗?96習(xí)題197參考文獻(xiàn) 198