网站首页 软件下载 游戏下载 翻译软件 电子书下载 电影下载 电视剧下载 教程攻略
书名 | 并行编程原理与程序设计 |
分类 | 教育考试-考试-计算机类 |
作者 | 何兵寿,宋鹏,刘颖 |
出版社 | 科学出版社 |
下载 | ![]() |
简介 | 内容推荐 本书主要介绍目前最常用的几种并行程序设计思路与方法,主要内容包括并行计算基础、OpenMP并行程序设计简介、MPI并行程序设计、CUDA并行程序设计及求解声波方程的并行程序五个部分。其中OpenMP对应共享内存的CPU并行编程,MPI对应消息传递的CPU并行编程,CUDA对应GPU编程。因此,通过对本书的学习,可以掌握目前最常用的几种并行编程方法。本书适合高年级本科生、理工科计算机及非计算机类专业研究生作为教材或教学参考书,也适合广大的并行程序设计方法学习者作为参考书使用。本书主要以C语言作为宿主语言,凡具有初步的C语言基础的读者可以通过学习和练习掌握本书内容。 目录 前言 第一篇 并行计算基础 第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 共享存储器 376 19.6.4 全局存储器 377 19.6.5 常数存储器 380 19.6.6 纹理存储器 382 19.7 CUDA通信机制 387 19.7.1 Block内通信与同步机制 387 19.7.2 同步函数 389 19.7.3 Volatile关键字 393 19.7.4 ATOM操作 394 19.7.5 VOTE操作 395 第20章 CUDA程序优化 396 20.1 任务划分 396 20.2 Grid和block维度设计 397 20.3 存储器访问优化 400 20.3.1 全局存储器访问优化 400 20.3.2 共享存储器访问优化 402 20.3.3 使用纹理存储器和常数存储器加速 405 20.4 异步并行执行 405 20.4.1 简单异步函数使用 405 20.4.2 基于流的异步并行 406 第21章 CUDA与多设备集群 409 21.1 CUDA的设备控制 409 21.2 多设备并行 410 21.2.1 CUDA与MPI 411 21.2.2 CUDA与OpenMP 413 第五篇 求解声波方程的并行程序 第22章 声波方程有限差分正演模拟的并行实现 419 22.1 声波方程有限差分模拟算法 419 22.1.1 声波方程及差分格式 419 22.1.2 吸收边界条件 420 22.1.3 震源设置方法 422 22.1.4 二维声波方程正演模拟的实现步骤 423 22.2 声波方程有限差分模拟的串行程序 425 22.3 声波方程有限差分模拟的OpenMP程序 434 22.4 声波方程有限差分模拟的MPI程序 445 22.5 声波方程有限差分模拟的CUDA程序 455 22.6 声波方程有限差分模拟的MPI+CUDA程序 465 参考文献 478 |
随便看 |
|
霍普软件下载网电子书栏目提供海量电子书在线免费阅读及下载。