logo资料库

MPI_并行程序设计中文教程(C++/c/Fortan).pdf

第1页 / 共353页
第2页 / 共353页
第3页 / 共353页
第4页 / 共353页
第5页 / 共353页
第6页 / 共353页
第7页 / 共353页
第8页 / 共353页
资料共353页,剩余部分请下载后查看
高性能计算之并行编程技术 —— MPI并行程序设计 都志辉 编著 李三立 审 陈渝 刘鹏 校 I
内容提要 本书介绍目前最常见的并行程序 —MPI并行程序的设计方法 它适合高校三四年级本科 生 非计算机专业研究生作为教材和教学自学参考书 也适合于广大的并行计算 高性能计 算 用户作为自学参考书使用 对于有FORTRAN和C编程经验的人员 都可以阅读并掌握 本书的内容 首先介绍了并行程序设计的基础 提供给读者进行并行程序设计所需要的基本知识 然 后介绍了MPI的基本功能 从简单的例子入手 告诉读者MPI程序设计的基本过程和框架 这一部分是具有C或/FORTRAN串行程序设计经验的人员很容易理解和接受的 接下来介绍 MPI程序设计的高级特征 是已经掌握了MPI基本程序设计的人员进一步编写简洁 高效的 MPI程序 使用各种高级和复杂的MPI功能所需要的 最后一部分介绍了MPI的最新发展和 扩充MPI-2 主要包括三个部分 动态进程管理 远程存储访问和并行文件读写 本书包括了MPI-1的全部调用和MPI-2的关键扩充部分的调用 并附以大量的图表和示 例性程序 对程序的关键部分给出了讲解或注释 读者若能将例子和对MPI调用的讲解结合 起来学习 会取得更好的效果 本书的目的 不仅是教给读者如何去编写从简单到复杂的MPI并行程序 更重要的是 希望在学习本书之后 在读者以后解决问题的过程中 能够树立并行求解的概念 使并行方 法真正成为广大应用人员和程序开发员手中的重要工具 II
目录 序......................................................................................................................................................................IX 前言................................................................................................................................................................... X 程 序 列 表..........................................................................................................................................................XI 图列表...........................................................................................................................................................XIII 表 格 列 表.......................................................................................................................................................XVI 第 一 部 分 并行程序设计基础 ........................................................................................................................1 第1章 并行计算机......................................................................................................................................2 1.1 并行计算机的分类 ..........................................................................................................................2 1.1.1 指令与数据....................................................................................................................................2 1.1.2 存储方式 .......................................................................................................................................3 1.2 物理问题在并行机上的求解 .........................................................................................................4 1.3 小结 ...................................................................................................................................................5 第2章 并行编程模型与并行语言.............................................................................................................6 2.1 并行编程模型 ..................................................................................................................................6 2.2 并行语言...........................................................................................................................................7 2.3 小结 ...................................................................................................................................................8 第3章 并行算法..........................................................................................................................................9 3.1 并行算法分类 ..................................................................................................................................9 3.2 并行算法的设计..............................................................................................................................9 3.3 小结 ................................................................................................................................................. 11 第 二 部 分 基本的MPI并行程序设计..........................................................................................................12 第4章 MPI简介 .........................................................................................................................................13 4.1 什么是MPI......................................................................................................................................13 4.2 MPI的目的 ......................................................................................................................................13 4.3 MPI的产生 ......................................................................................................................................14 4.4 MPI的语言绑定..............................................................................................................................14 4.5 目前主要的MPI实现.....................................................................................................................15 4.6 小结 .................................................................................................................................................15 第5章 第一个MPI程序.............................................................................................................................16 5.1 MPI实现的 Hello World!” ..........................................................................................................16 5.1.1 用FORTRAN77+MPI实现 ...........................................................................................................16 5.1.2 用C+MPI实现..............................................................................................................................18 5.2 MPI程序的一些惯例......................................................................................................................21 5.3 小结 .................................................................................................................................................22 第6章 六个接口构成的MPI子集............................................................................................................23 6.1 子集介绍.........................................................................................................................................23 6.1.1 MPI调用的参数说明 ....................................................................................................................23 III
6.1.2 MPI初始化 ...................................................................................................................................25 6.1.3 MPI结束.......................................................................................................................................25 6.1.4 当前进程标识..............................................................................................................................25 6.1.5 通信域包含的进程数...................................................................................................................26 6.1.6 消息发送 .....................................................................................................................................26 6.1.7 消息接收 .....................................................................................................................................27 6.1.8 返回状态status.............................................................................................................................27 6.1.9 一个简单的发送和接收的例子....................................................................................................28 6.2 MPI预定义数据类型......................................................................................................................29 6.3 MPI数据类型匹配和数据转换.....................................................................................................30 6.3.1 MPI类型匹配规则........................................................................................................................30 6.3.2 数据转换 .....................................................................................................................................32 6.4 MPI消息...........................................................................................................................................33 6.4.1 MPI消息的组成............................................................................................................................33 6.4.2 任意源和任意标识 ......................................................................................................................34 6.4.3 MPI通信域 ...................................................................................................................................35 6.5 小结 .................................................................................................................................................35 第7章 简单的MPI程序示例 ....................................................................................................................36 7.1 用MPI实现计时功能.....................................................................................................................36 7.2 获取机器的名字和MPI版本号 ....................................................................................................38 7.3 是否初始化及错误退出................................................................................................................39 7.4 数据接力传送 ................................................................................................................................41 7.5 任意进程间相互问候....................................................................................................................43 7.6 任意源和任意标识的使用............................................................................................................46 7.7 编写安全的MPI程序.....................................................................................................................47 7.8 小结 .................................................................................................................................................50 第8章 MPI并行程序的两种基本模式....................................................................................................51 8.1 对等模式的MPI程序设计 ............................................................................................................51 8.1.1 问题描述 — Jacobi迭代 ................................................................................................................51 8.1.2 用MPI程序实现Jacobi迭代..........................................................................................................52 8.1.3 用捆绑发送接收实现Jacobi迭代 .................................................................................................55 8.1.4 引入虚拟进程后Jacobi迭代的实现..............................................................................................60 8.2 主从模式的MPI程序设计 ............................................................................................................62 8.2.1 矩阵向量乘..................................................................................................................................62 8.2.2 主进程打印各从进程的消息 .......................................................................................................65 8.3 小结 .................................................................................................................................................68 第9章 不同通信模式MPI并行程序的设计...........................................................................................69 9.1 标准通信模式 ................................................................................................................................69 9.2 缓存通信模式 ................................................................................................................................70 9.3 同步通信模式 ................................................................................................................................74 9.4 就绪通信模式 ................................................................................................................................76 9.5 小结 .................................................................................................................................................79 第10章 MPICH的安装与MPI程序的运行.............................................................................................80 10.1 Linux环境下的MPICH.................................................................................................................80 IV
10.1.1 安装...........................................................................................................................................80 10.1.2 主要目录介绍............................................................................................................................81 10.1.3 编译命令 ...................................................................................................................................82 10.1.4 执行步骤 ...................................................................................................................................82 10.1.5 放权...........................................................................................................................................83 10.1.6 运行命令和配置文件.................................................................................................................83 10.1.7 其它可执行命令 ........................................................................................................................86 10.2 Windows NT环境下的MPICH .....................................................................................................87 10.2.1 安装...........................................................................................................................................87 10.2.2 编译...........................................................................................................................................87 10.2.3 配置和运行................................................................................................................................88 10.2.4 小结...........................................................................................................................................91 第11章 常见错误 ......................................................................................................................................92 11.1 程序设计中的错误......................................................................................................................92 11.2 运行时的错误...............................................................................................................................93 11.3 小结 ...............................................................................................................................................94 第 三 部 分 高级MPI并行程序设计..............................................................................................................95 第12章 非阻塞通信MPI程序设计..........................................................................................................96 12.1 阻塞通信.......................................................................................................................................96 12.2 非阻塞通信简介..........................................................................................................................97 12.3 非阻塞标准发送和接收..............................................................................................................99 12.4 非阻塞通信与其它三种通信模式的组合 ..............................................................................101 12.5 非阻塞通信的完成....................................................................................................................102 12.5.1 单个非阻塞通信的完成........................................................................................................... 102 12.5.2 多个非阻塞通信的完成........................................................................................................... 104 12.6 非阻塞通信对象........................................................................................................................107 12.6.1 非阻塞通信的取消 .................................................................................................................. 107 12.6.2 非阻塞通信对象的释放........................................................................................................... 109 12.7 消息到达的检查........................................................................................................................110 12.8 非阻塞通信有序接收的语义约束...........................................................................................112 12.9 用非阻塞通信来实现Jacobi迭代 ............................................................................................113 12.10 重复非阻塞通信 ......................................................................................................................116 12.11 用重复非阻塞通信来实现Jacobi迭代 ..................................................................................119 12.12 小结...........................................................................................................................................122 第13章 组通信MPI程序设计................................................................................................................123 13.1 组通信概述 ................................................................................................................................123 13.1.1 组通信的消息通信功能........................................................................................................... 123 13.1.2 组通信的同步功能 .................................................................................................................. 124 13.1.3 组通信的计算功能 .................................................................................................................. 125 13.2 广播.............................................................................................................................................126 13.3 收集.............................................................................................................................................127 13.4 散发.............................................................................................................................................130 13.5 组收集.........................................................................................................................................132 13.6 全互换.........................................................................................................................................135 V
13.7 同步.............................................................................................................................................138 13.8 归约.............................................................................................................................................139 13.9 MPI预定义的归约操作..............................................................................................................141 13.10 求p值.........................................................................................................................................142 13.11 组归约.......................................................................................................................................144 13.12 归约并散发 ..............................................................................................................................145 13.13 扫描...........................................................................................................................................146 13.14 不同类型归约操作的简单对比 .............................................................................................147 13.15 不正确的组通信方式..............................................................................................................149 13.16 MINLOC和MAXLOC................................................................................................................151 13.17 用户自定义归约操作..............................................................................................................153 13.18 小结...........................................................................................................................................155 第14章 具有不连续数据发送的MPI程序设计...................................................................................156 14.1 派生数据类型 ............................................................................................................................156 14.2 新数据类型的定义....................................................................................................................157 14.2.1 连续复制的类型生成............................................................................................................... 157 14.2.2 向量数据类型的生成............................................................................................................... 158 14.2.3 索引数据类型的生成............................................................................................................... 160 14.2.4 结构数据类型的生成............................................................................................................... 163 14.2.5 新类型递交和释放 .................................................................................................................. 164 14.3 地址函数.....................................................................................................................................171 14.4 与数据类型有关的调用............................................................................................................172 14.5 下界标记类型和上界标记类型...............................................................................................175 14.6 打包与解包 ................................................................................................................................177 14.7 小结.............................................................................................................................................181 第15章 MPI的进程组和通信域............................................................................................................182 15.1 简介.............................................................................................................................................182 15.2 进程组的管理 ............................................................................................................................182 15.3 通信域的管理 ............................................................................................................................187 15.4 组间通信域 ................................................................................................................................190 15.5 属性信息.....................................................................................................................................194 15.6 小结.............................................................................................................................................198 第16章 具有虚拟进程拓扑的MPI程序设计.......................................................................................199 16.1 虚拟拓扑简介 ............................................................................................................................199 16.2 笛卡儿拓扑 ................................................................................................................................199 16.3 图拓扑.........................................................................................................................................205 16.4 再看Jacobi迭代的例子.............................................................................................................208 16.5 小结.............................................................................................................................................212 第17章 MPI对错误的处理 ....................................................................................................................213 17.1 与错误处理有关的调用............................................................................................................213 17.2 小结.............................................................................................................................................215 第18章 MPI函数调用原型列表与简单解释.......................................................................................216 18.1 MPI-1与C语言的接口................................................................................................................216 18.2 MPI-1与Fortran语言的接口.....................................................................................................223 VI
18.3 MPI-2与C语言的接口................................................................................................................234 18.4 MPI-2与Fortran语言的接口.....................................................................................................243 18.5 小结.............................................................................................................................................258 第 四 部 分 MPI的最新发展MPI-2 ............................................................................................................259 第19章 动态进程管理............................................................................................................................260 19.1 组间通信域 ................................................................................................................................260 19.2 动态创建新的MPI进程.............................................................................................................262 19.3 独立进程间的通信....................................................................................................................264 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 窗口同步管理 ............................................................................................................................275 20.3.1 栅栏方式 ................................................................................................................................. 275 20.3.2 握手方式 ................................................................................................................................. 276 20.3.3 锁方式 ..................................................................................................................................... 278 20.4 小结.............................................................................................................................................280 第21章 并行I/O.......................................................................................................................................281 21.1 概述.............................................................................................................................................281 21.2 并行文件管理的基本操作 .......................................................................................................282 21.3 显式偏移的并行文件读写 .......................................................................................................286 21.3.1 阻塞方式 ................................................................................................................................. 286 21.3.2 非阻塞方式.............................................................................................................................. 289 21.3.3 两步非阻塞组调用 .................................................................................................................. 291 21.4 多视口的并行文件并行读写 ...................................................................................................293 21.4.1 文件视口与指针 ...................................................................................................................... 294 21.4.2 阻塞方式的视口读写............................................................................................................... 298 21.4.3 非阻塞方式的视口读写........................................................................................................... 300 21.4.4 两步非阻塞视口组调用方式 ................................................................................................... 301 21.5 共享文件读写 ............................................................................................................................303 21.5.1 阻塞共享文件读写 .................................................................................................................. 304 21.5.2 非阻塞共享文件读写............................................................................................................... 306 21.5.3 两步非阻塞共享文件组读写 ................................................................................................... 307 21.6 分布式数组文件的存取............................................................................................................311 21.7 小结.............................................................................................................................................314 网 上 资 源........................................................................................................................................................315 参 考 文 献........................................................................................................................................................316 VII
中 英 文 术 语 对 照...........................................................................................................................................318 本书介绍的MPI调用索引...........................................................................................................................320 附录1 MPI常量列表.............................................................................................................................325 附录2 MPICH 1.2.1 函数列表..........................................................................................................329 VIII
分享到:
收藏