《MPI并行程序设计实例教程》PDF下载

  • 购买积分:14 如何计算积分?
  • 作  者:张武生,薛巍,李建江,郑纬民编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302186472
  • 页数:431 页
图书介绍:本书旨在通过实例全面介绍MPI并行程序开发库的使用方法、程序设计技巧等方面的内容,力争完整讨论MPI规范所定义的各种特征。

第1章 MPI并行环境及编程模型 1

1.1 MPICH2环境及安装和测试 1

1.1.1 编译及安装 2

1.1.2 配置及验证 2

1.1.3 应用程序的编译、链接 4

1.1.4 运行及调试 4

1.1.5 MPD中的安全问题 9

1.2 MPI环境编程模型 9

1.2.1 并行系统介绍 10

1.2.2 并行编程模式 11

1.2.3 MPI程序工作模式 12

1.3 MPI消息传递通信的基本概念 13

1.3.1 消息 13

1.3.2 缓冲区 14

1.3.3 通信子 14

1.3.4 进程号和进程组 14

1.3.5 通信协议 14

1.3.6 隐形对象 15

第2章 点到点通信 17

2.1 阻塞通信 18

2.1.1 标准通信模式 18

2.1.2 缓冲通信模式 20

2.1.3 就绪通信模式 36

2.1.4 同步通信模式 39

2.1.5 小结 40

2.2 非阻塞通信 42

2.2.1 通信结束测试 44

2.2.2 非重复的非阻塞通信 48

2.2.3 可重复的非阻塞通信 66

2.2.4 Probe和Cancel 101

2.3 组合发送接收 106

2.3.1 MPI_Send,MPI_Recv?MPI_Sendrecv 109

2.3.2 MPI_Bsend?MPI_Sendrecv 110

2.3.3 MPI_Rsend?MPI_Sendrecv 111

2.3.4 MPI_Ssend?MPI_Sendrecv 113

2.3.5 MPI_Isend?MPI_Sendrecv 113

2.3.6 MPI_Ibsend?MPI_Sendrecv 114

2.3.7 MPI_Irsend?MPI_Sendrecv 116

2.3.8 MPI_Issend,MPI_Irecv?MPI_Sendrecv 117

2.3.9 MPI_Send_init?MPI_Sendrecv 118

2.3.10 MPI_Bsend_init?MPI_Sendrecv 118

2.3.11 MPI_Rsend_init?MPI_Sendrecv 119

2.3.12 MPI_Ssend_init,MPI_Recv_init?MPI_Sendrecv 120

2.4 点到点通信总结 121

2.4.1 关于预防死锁 121

2.4.2 关于阻塞与非阻塞、同步与异步 126

2.4.3 关于操作的执行顺序及“公平性” 127

第3章 组与通信子 128

3.1 简介 128

3.2 组管理API 131

3.2.1 组的构建及取消 131

3.2.2 访问组的相关信息和属性 132

3.3 通信子管理 132

3.3.1 创建与取消 132

3.3.2 访问通信子信息 133

3.4 组间通信 140

3.4.1 访问函数 140

3.4.2 构造和取消函数 140

3.5 属性 144

3.5.1 创建及释放属性操作 144

3.5.2 访问属性操作 145

3.5.3 设置及删除属性操作 145

3.5.4 命名通信子对象 149

3.6 错误处理 150

3.7 组及通信子的小结 150

第4章 集合通信 152

4.1 1?N 152

4.1.1 MPI_Bcast 152

4.1.2 MPI_Scatter/MPI_Scatterv 157

4.2 N?1 161

4.2.1 MPI_Gather/MPI_Gatherv 161

4.2.2 MPI_Reduce 165

4.3 N?N 171

4.3.1 MPI_Allgather/MPI_Allgatherv 171

4.3.2 MPI_Allreduce 175

4.3.3 MPI_Reduce_scatter 178

4.3.4 MPI_Alltoall/MPI_Alltoallv/MPI_Alltoallw 181

4.3.5 MPI_Scan/MPI_Exscan 192

4.4 同步操作——MPI_Barrier 195

第5章 数据类型 196

5.1 类型图 196

5.2 与数据类型相关的API函数 196

5.2.1 创建 196

5.2.2 访问 221

5.2.3 注册与取消 223

5.3 数据类型在通信函数缓冲区的构成 224

5.4 数据类型的属性 224

5.4.1 属性创建与释放 224

5.4.2 属性操作 225

5.4.3 复制数据类型 225

5.4.4 类型属性举例 225

5.4.5 数据类型命名 228

5.5 数据类型的析构 231

5.5.1 获取创建数据类型MPI函数所使用参数数量信息 231

5.5.2 获取创建数据类型MPI函数所使用实际参数信息 233

5.5.3 示例 236

5.6 打包/解包 242

第6章 进程拓扑 246

6.1 简介 246

6.2 API 246

6.2.1 虚拟拓扑构造函数 246

6.2.2 访问函数 248

6.2.3 笛卡儿坐标变换函数 250

6.2.4 笛卡儿结构划分函数 250

6.2.5 拓扑结构管理底层函数 251

6.3 实例 252

6.3.1 拓扑结构的创建与访问 252

6.3.2 利用虚拟拓扑管理进程间通信 256

第7章 动态进程管理 258

7.1 MPI-2进程模型 258

7.1.1 进程启动 258

7.1.2 运行时环境 258

7.2 进程管理API 259

7.2.1 启动单进程并通信 259

7.2.2 启动多进程并建立通信 261

7.2.3 预留的属性关键字 262

7.3 建立通信联系 262

7.3.1 名字、地址及端口 262

7.3.2 服务端程序 263

7.3.3 客户端程序 263

7.3.4 名字发布 264

7.3.5 预留关键字 265

7.4 其他功能 265

7.4.1 全局大小 265

7.4.2 单一MPI_Init 265

7.4.3 MPI_APPNUM 265

7.4.4 释放连接 266

7.4.5 建立MPI通信的其他方法 267

7.5 示例 267

第8章 单向通信/远端内存访问 273

8.1 简介 273

8.1.1 工作模式 273

8.1.2 实现机制 274

8.2 初始化 274

8.2.1 创建/释放窗口对象 274

8.2.2 窗口属性 275

8.3 通信操作 275

8.3.1 Put 276

8.3.2 Get 277

8.3.3 Accumulate 277

8.4 同步操作 278

8.4.1 Fence 279

8.4.2 Start/Complete,Post/Wait,Test 282

8.4.3 Lock/Unlock 288

8.4.4 语义 292

8.5 安全分析 294

8.6 窗口属性 295

8.6.1 窗口属性API 295

8.6.2 举例 296

8.6.3 命名窗口对象 298

8.7 错误处理 299

8.8 示例 300

第9章 并行I/O 302

9.1 并行文件基本概念与数据类型 302

9.1.1 简介 302

9.1.2 定义 302

9.2 文件操作 304

9.2.1 打开 304

9.2.2 关闭 305

9.2.3 删除 306

9.2.4 修改大小 307

9.2.5 查看文件大小 308

9.2.6 预申请空间 308

9.2.7 查看文件参数 309

9.2.8 文件相关的Info对象 311

9.3 文件视图 313

9.3.1 设置文件视图 313

9.3.2 获取文件视图 315

9.4 访问文件数据 317

9.4.1 文件访问函数 318

9.4.2 使用显式偏移地址访问数据 319

9.4.3 使用独立的文件指针访问数据 334

9.4.4 使用共享文件指针访问数据 348

9.4.5 文件一致性 362

9.5 文件的互操作性 371

9.5.1 文件互操作所使用的数据类型 372

9.5.2 外部数据表示external32 373

9.5.3 定制数据表示 374

9.6 I/O相关的错误处理 376

9.6.1 错误类 377

9.6.2 示例 377

9.7 综合示例 379

9.7.1 利用双缓冲区、分步集合操作实现计算与I/O并行 379

9.7.2 子数组 382

9.7.3 分布式数组 386

9.8 总结 391

9.8.1 高性能I/O的几种访问模式 391

9.8.2 高性能I/O优化措施 392

第10章 MPI与外部环境的信息交互 394

10.1 Info对象 394

10.1.1 创建、复制、删除与释放 394

10.1.2 访问 394

10.1.3 示例 395

10.2 通用化请求 397

10.2.1 创建并注册通用请求 397

10.2.2 应用程序通知MPI环境通用请求操作完成 398

10.2.3 示例 398

10.3 MPI-2对Status对象的改进 403

10.4 错误处理接口 404

10.4.1 添加新的错误类 404

10.4.2 为错误类设置关联错误码 404

10.4.3 为错误类设置关联字符串 404

10.4.4 通信子对象的错误处理函数 404

10.4.5 窗口对象的错误处理函数 405

10.4.6 文件的错误处理函数 405

10.4.7 示例 405

10.5 多线程 409

10.5.1 多线程环境的一些基本要求 409

10.5.2 支持多线程的初始化 410

10.5.3 示例 411

第11章 MPE 418

11.1 Profiling 418

11.2 日志 418

11.2.1 简介 418

11.2.2 日志工具 419

11.2.3 链接与使用 420

11.3 图形 425

11.3.1 实时动画 425

11.3.2 链接与使用 425

参考文献 431