《高性能计算并行编程技术 MPI并行程序设计》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:都志辉编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2001
  • ISBN:7302045666
  • 页数:336 页
图书介绍:本书介绍目前最常见的并行程序——MPI并行程序设计方法,它适合高等院校计算机专业高年级本科生、非计算机专业研究生作为教材和教学参考书,也适合广大的并行计算(高性能计算)用户作为自学参考书。具有FORTRAN语言和C语言编程经验的人员都可以阅读并掌握本书的内容。书中首先介绍了并行程序设计基础,提供给读者进行并行程序设计所需要的基本知识;然后介绍MPI的基本功能,从简单的例子入手,告诉读者MPI程序设计的基本过程和框架,这一部分是具有C或FOR-TRAN串行程序设计经验的人员很容易理解和接受的;接下来介绍MPI程序设计的高级特征,这是已经掌握了MPI基本程序设计的人员进一步编写简洁高效的MPI程序、使用各种高级和复杂的MPI功能所需要的;最后一部分介绍了MPI的最新发展和扩充MPI-2,其中包括三个部分,动态进程管理、远程存储访问和并行文件读写。本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用,并附以大量的图表和示例性程序,对程序的关键部分给出了讲解或注释。读者若能将例子和对MPI调用的讲解结合起来学习,会取得更好的效果。本书的目的,不仅是教给读者如何去编写从简单到复杂的MP

第一部分 并行程序设计基础 3

第1章 并行计算机 3

1.1 并行计算机的分类 3

1.1.1 指令与数据 3

1.1.2 存储方式 4

1.2 物理问题在并行机上的求解 5

1.3 小结 6

第2章 并行编程模型与并行语言 7

2.1 并行编程模型 7

2.2 并行语言 8

2.3 小结 9

第3章 并行算法 10

3.1 并行算法分类 10

3.2 并行算法的设计 11

3.3 小结 12

第二部分 基本的MPI并行程序设计 15

第4章 MPI简介 15

4.1 什么是MPI 15

4.2 MPI的目的 16

4.3 MPI的产生 16

4.4 MPI的语言绑定 17

4.5 目前主要的MPI实现 17

4.6 小结 18

第5章 第一个MPI程序 19

5.1 MPI实现“Hello World!” 19

5.1.1 用FORTRAN 77+MPI实现 19

5.1.2 用C+MPI实现 21

5.2 MPI程序的一些惯例 24

5.3 小结 24

第6章 六个接口构成的MPI子集 25

6.1 子集介绍 25

6.1.1 MPI调用的参数说明 25

6.1.2 MPI初始化 27

6.1.3 MPI结束 27

6.1.4 当前进程标识 27

6.1.5 通信域包含的进程数 28

6.1.6 消息发送 28

6.1.7 消息接收 29

6.1.8 返回状态status 29

6.1.9 一个简单的发送和接收的例子 30

6.2 MPI预定义数据类型 31

6.3 MPI数据类型匹配和数据转换 32

6.3.1 MPI类型匹配规则 32

6.3.2 数据转换 34

6.4 MPI消息 35

6.4.1 MPI消息的组成 35

6.4.2 任意源和任意标识 36

6.4.3 MPI通信域 37

6.5 小结 37

第7章 简单的MPI程序示例 38

7.1 用MPI实现计时功能 38

7.2 获取机器的名字和MPI版本号 40

7.3 是否初始化及错误退出 41

7.4 数据接力传送 43

7.5 任意进程间相互问候 45

7.6 任意源和任意标识的使用 47

7.7 编写安全的MPI程序 49

7.8 小结 51

第8章 MPI并行程序的两种基本模式 52

8.1 对等模式的MPI程序设计 52

8.1.1 问题描述——Jacobi迭代 52

8.1.2 用MPI程序实现Jacobi迭代 53

8.1.3 用捆绑发送接收实现Jacobi迭代 56

8.1.4 引入虚拟进程后Jacobi迭代的实现 61

8.2 主从模式的MPI程序设计 63

8.2.1 矩阵向量乘 63

8.2.2 主进程打印各从进程的消息 66

8.3 小结 69

第9章 不同通信模式MPI并行程序的设计 70

9.1 标准通信模式 70

9.2 缓存通信模式 71

9.3 同步通信模式 75

9.4 就绪通信模式 77

9.5 小结 80

第10章 MPICH的安装与MPI程序的运行 81

10.1 Linux环境下的MPICH 81

10.1.1 安装 81

10.1.2 主要目录介绍 82

10.1.3 编译命令 83

10.1.4 执行步骤 83

10.1.5 放权 84

10.1.6 运行命令和配置文件 84

10.1.7 其他可执行命令 88

10.2 Windows NT环境下的MPICH 88

10.2.1 安装 88

10.2.2 编译 89

10.2.3 配置和运行 89

10.2.4 小结 92

第11章 常见错误 93

11.1 程序设计中的错误 93

11.2 运行时的错误 95

11.3 小结 95

第三部分 高级MPI并行程序设计 99

第12章 非阻塞通信MPI程序设计 99

12.1 阻塞通信 99

12.2 非阻塞通信简介 100

12.3 非阻塞标准发送和接收 102

12.4 非阻塞通信与其他三种通信模式的组合 104

12.5 非阻塞通信的完成 105

12.5.1 单个非阻塞通信的完成 105

12.5.2 多个非阻塞通信的完成 106

12.6 非阻塞通信对象 109

12.6.1 非阻塞通信的取消 109

12.6.2 非阻塞通信对象的释放 110

12.7 消息到达的检查 111

12.8 非阻塞通信有序接收的语义约束 114

12.9 用非阻塞通信来实现Jacobi迭代 114

12.10 重复非阻塞通信 117

12.11 用重复非阻塞通信来实现Jacobi迭代 121

12.12 小结 124

第13章 组通信MPI程序设计 125

13.1 组通信概述 125

13.1.1 组通信的消息通信功能 125

13.1.2 组通信的同步功能 126

13.1.3 组通信的计算功能 127

13.2 广播 127

13.3 收集 128

13.4 散发 131

13.5 组收集 133

13.6 全互换 136

13.7 同步 139

13.8 归约 140

13.9 MPI预定义的归约操作 141

13.10 求π值 142

13.11 组归约 144

13.12 归约并散发 145

13.13 扫描 146

13.14 不同类型归约操作的简单对比 147

13.15 不正确的组通信方式 148

13.16 MINLOC和MAXLOC 150

13.17 用户自定义归约操作 152

13.18 小结 154

第14章 具有不连续数据发送的MPI程序设计 155

14.1 派生数据类型 155

14.2 新数据类型的定义 156

14.2.1 连续复制的类型生成 156

14.2.2 向量数据类型的生成 157

14.2.3 索引数据类型的生成 159

14.2.4 结构数据类型的生成 161

14.2.5 新类型递交和释放 163

14.3 地址函数 164

14.4 与数据类型有关的调用 165

14.5 下界标记类型和上界标记类型 167

14.6 打包与解包 169

14.7 小结 174

第15章 MPI的进程组和通信域 175

15.1 简介 175

15.2 进程组的管理 176

15.3 通信域的管理 180

15.4 组间通信域 183

15.5 属性信息 186

15.6 小结 191

第16章 具有虚拟进程拓扑的MPI程序设计 192

16.1 虚拟拓扑简介 192

16.2 笛卡儿拓扑 193

16.3 图拓扑 198

16.4 再看Jacobi迭代的例子 200

16.5 小结 204

第17章 MPI对错误的处理 205

17.1 与错误处理有关的调用 205

17.2 小结 207

第18章 MPI函数调用原型列表与简单解释 208

18.1 MPI-1与C语言的接口 208

18.2 MPI-1与FORTRAN语言的接口 217

18.3 MPI-2与C语言的接口 229

18.4 MPI-2与FORTRAN语言的接口 240

18.5 小结 257

第四部分 MPI的最新发展MPI-2 261

第19章 动态进程管理 261

19.1 组间通信域 261

19.2 动态创建新的MPI进程 263

19.3 独立进程间的通信 265

19.4 基于socket的通信 268

19.5 小结 268

第20章 远程存储访问 269

20.1 简介 269

20.2 窗口的创建与窗口操作 270

20.2.1 创建窗口 270

20.2.2 向窗口写 271

20.2.3 从窗口读 272

20.2.4 对窗口数据的运算 273

20.3 窗口同步管理 274

20.3.1 栅栏方式 275

20.3.2 握手方式 275

20.3.3 锁方式 277

20.4 小结 279

第21章 并行I/O 280

21.1 概述 280

21.2 并行文件管理的基本操作 282

21.3 显式偏移的并行文件读写 285

21.3.1 阻塞方式 285

21.3.2 非阻塞方式 287

21.3.3 两步非阻塞组调用 289

21.4 多视口的并行文件并行读写 291

21.4.1 文件视口与指针 291

21.4.2 阻塞方式的视口读写 295

21.4.3 非阻塞方式的视口读写 297

21.4.4 两步非阻塞视口组调用方式 298

21.5 共享文件读写 300

21.5.1 阻塞共享文件读写 300

21.5.2 非阻塞共享文件读写 302

21.5.3 两步非阻塞共享文件组读写 303

21.6 分布式数组文件的存取 307

21.7 小结 310

网上资源 311

参考文献 312

英汉术语对照表 314

MPI调用索引 316

程序索引 321

图索引 323

表索引 326

附录1 MPI常量列表 327

附录2 MPICH 1.2.1函数列表 332