关于我们
书单推荐
新书推荐
|
|
定 价:269 元
丛书名:海底科学与技术丛书
- 作者:何兵寿,宋鹏,刘颖
- 出版时间:2021/9/1
- ISBN:9787030694829
- 出 版 社:科学出版社
- 中图法分类:TP311.11
- 页码:
- 纸张:胶版纸
- 版次:
- 开本:16开
《并行编程原理与程序设计》主要介绍目前常用的几种并行程序设计思路与方法,主要内容包括并行计算基础、OpenMP并行程序设计简介、MPI并行程序设计、CUDA并行程序设计及求解声波方程的并行程序五个部分。其中OpenMP对应共享内存的CPU并行编程,MPI对应消息传递的CPU并行编程,CUDA对应GPU编程。因此,通过对《并行编程原理与程序设计》的学习,可以掌握目前常用的几种并行编程方法。
更多科学出版社服务,请扫码获取。
目录 前言 篇 并行计算基础 第1章 并行计算机硬件基础 3 1.1 并行计算 3 1.1.1 并行计算的概念 3 1.1.2 并行计算与计算科学 3 1.1.3 当代科学与工程问题的计算需求 4 1.2 并行计算机硬件简介 4 1.2.1 并行计算机的发展历史 4 1.2.2 并行计算机的分类 8 1.2.3 并行计算机的体系结构 9 1.3 当代并行计算机系统简介 14 1.3.1 共享存储多处理机系统 15 1.3.2 分布存储多处理机系统 15 1.3.3 集群系统 17 1.4 并行计算机的一些基本性能指标 24 1.4.1 CPU和存储器的某些性能指标 24 1.4.2 通信开销 25 1.4.3 机器的成本、价格与性价比 26 第2章 并行程序设计基础 28 2.1 并行算法的基础知识 28 2.1.1 并行算法领域的一些基本概念 28 2.1.2 并行程序开发策略与并行算法的描述方法 30 2.1.3 并行算法中的同步与通信 31 2.2 并行程序设计模型 32 2.2.1 计算的样本程序 32 2.2.2 数据并行模型 33 2.2.3 消息传递模型 34 2.2.4 共享变量模型 36 2.3 并行程序设计方法 38 2.3.1 PCAM并行程序设计思路 38 2.3.2 并行编程语言 41 第二篇 OpenMP并行程序设计简介 第3章 OpenMP介绍 55 3.1 什么是OpenMP 55 3.2 共享内存式并行计算 55 3.3 OpenMP的发展历程 56 3.4 Windows平台下OpenMP环境搭建 56 第4章 OpenMP指令结构 59 4.1 编译指导语句的一般形式 59 4.2 主要指令 60 4.3 主要子句 61 4.4 常用库函数 62 第5章 OpenMP常用指令的用法 63 5.1 数据管理 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 常用库函数 87 5.4.1 运行时库函数 87 5.4.2 锁管理 88 5.4.3 环境变量 90 第6章 OpenMP实例 91 6.1 循环实例 91 6.2 并行程序的优化 93 6.2.1 临界区实现 93 6.2.2 原子操作实现 95 6.2.3 归约实现 95 6.3 快速排序并行算法 96 第三篇 MPI并行程序设计 第7章 MPI编程基础 103 7.1 MPI简介 103 7.1.1 MPI的含义 103 7.1.2 MPI的目标 103 7.1.3 MPI的产生 103 7.1.4 MPI的语言绑定 104 7.1.5 目前MPI的主要实现 104 7.2 一个简单的MPI程序 105 7.2.1 MPI实现的Hello World! 105 7.2.2 MPI程序的框架结构 109 7.2.3 MPI程序的一些惯例 109 7.3 6个基本函数组成的MPI子集 109 7.3.1 子集介绍 109 7.3.2 MPI预定义的数据类型 114 7.3.3 MPI数据类型匹配 115 7.3.4 MPI消息 117 7.4 简单的MPI程序示例 118 7.4.1 求二维数据中各元素值的值 119 7.4.2 用MPI实现计时功能 121 7.4.3 获取机器名字与MPI版本号 123 7.4.4 是否初始化及错误退出 124 7.4.5 环形消息传递 125 7.4.6 所有进程相互问候 126 7.4.7 任意源和任意标识的使用 128 7.4.8 编写安全的MPI程序 129 第8章 MPI的安装与并行编程环境的设置 132 8.1 Linux环境下的MPICH2安装与设置 132 8.2 Windows环境下MPICH2的安装与设置 133 8.2.1 安装 133 8.2.2 编译运行C MPI程序 134 8.2.3 编译运行Fortran MPI程序 138 第9章 对等模式与主从模式的MPI程序设计 141 9.1 对等模式MPI程序设计 141 9.1.1 问题描述雅可比迭代 141 9.1.2 用MPI程序实现雅可比迭代 142 9.1.3 采用捆绑发送接收实现雅可比迭代 146 9.1.4 引入虚拟进程后雅可比迭代的实现 151 9.2 主从模式MPI程序设计 155 9.2.1 矩阵向量乘 155 9.2.2 主进程打印各从进程的消息 159 第10章 MPI的四种通信模式 162 10.1 标准通信模式 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 非阻塞标准发送与接收 173 11.3 非阻塞通信与其他三种通信模式的结合 174 11.4 非阻塞通信的完成与检测 175 11.4.1 单个非阻塞通信的完成与检测 175 11.4.2 多个非阻塞通信的完成与检测 176 11.5 非阻塞通信对象 178 11.5.1 非阻塞通信的取消 179 11.5.2 非阻塞通信对象的释放 180 11.5.3 消息到达的检查 181 11.5.4 用非阻塞通信来实现雅可比迭代 182 11.6 重复非阻塞通信 185 第12章 MPI的组通信调用 190 12.1 组通信概述 190 12.2 组通信的通信功能 191 12.2.1 广播 191 12.2.2 收集 192 12.2.3 散发 196 12.2.4 组收集 199 12.2.5 全互换 201 12.3 组通信的同步功能 204 12.4 组通信的计算功能 205 12.4.1 归约 205 12.4.2 MPI的内置归约算符 206 12.4.3 程序举例 207 12.4.4 组归约 209 12.4.5 归约并散发 211 12.4.6 扫描 212 12.4.7 不同类型归约操作的对比 213 12.4.8 MINLOC和MAXLOC 215 12.4.9 用户自定义的归约操作 216 第13章 MPI的派生数据类型 220 13.1 类型图 220 13.2 新数据类型的定义 221 13.2.1 MPI提供的数据类型生成器 221 13.2.2 新类型递交和释放 226 13.2.3 地址函数 227 13.2.4 与数据类型有关的调用 228 13.2.5 下界类型和上界类型 231 13.3 例题 232 13.4 打包与解包 236 第14章 MPI的进程组和通信域 239 14.1 简介 239 14.2 进程组和通信域的管理 239 14.2.1 MPI的进程组管理接口 240 14.2.2 通信域的管理 245 14.3 组间通信域 250 第15章 MPI扩展 255 15.1 MPI的动态进程管理 255 15.1.1 组间通信域 255 15.1.2 动态进程的创建 257 15.1.3 独立进程间的通信 260 15.1.4 基于socket的通信 263 15.2 MPI的远程存储访问 263 15.2.1 窗口创建与窗口操作 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函数调用原型与简单解释 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并行程序设计 第17章 GPU简介 339 17.1 NVIDIA GPU发展简介 339 17.2 GPU硬件架构 340 17.2.1 图形显卡概览 340 17.2.2 PCI-E总线 341 17.2.3 显存 342 17.2.4 GPU芯片 343 17.3 基于GPU的程序开发 344 17.3.1 传统GPU开发 344 17.3.2 CUDA开发 344 第18章 CUDA安装与编译 346 18.1 CUDA函数库与CUDA C 语言 346 18.1.1 CUDA API和函数库 346 18.1.2 CUDA C 语言 347 18.1.3 CUDA C 拓展限定符语法 348 18.2 CUDA的安装与配置 351 18.2.1 开发环境 351 18.2.2 安装平台 354 18.2.3 CUDA安装与配置 355 18.3 CUDA编译与驱动 357 18.3.1 Emu调试 357 18.3.2 编译相关 358 18.3.3 错误处理 359 18.3.4 计算模式 359 第19章 CUDA编程基础 360 19.1 主机与设备 360 19.2 核函数的定义与调用 362 19.3 设备中的空间管理与数据传输 363 19.4 线程结构 365 19.5 硬件映射 370 19.5.1 计算单元 370 19.5.2 Warp 372 19.5.3 执行模型 372 19.6 存储器类型 373 19.6.1 寄存器 374 19.6.2 局部存储器 375 19.6.3 共享存储器 3
|