注册 登录 进入教材巡展
#
  • #

出版时间:2020-06

出版社:机械工业出版社

以下为《并行程序设计:概念与实践》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 机械工业出版社
  • 9787111656661
  • 1版
  • 319646
  • 47229675-5
  • 平装
  • 16开
  • 2020-06
  • 552
  • 368
  • 工学
  • 软件工程
  • 计算机类
  • 本科
内容简介

本书由德国约翰内斯·古腾堡大学并行和分布式架构团队撰写,对并行编程的高级主题进行了深入讨论,除了涵盖基础概念外,还讲授了共享内存和分布式内存体系结构的实用编程技巧。作者提供了一套进行自动代码评估的开源系统,可方便地访问并行计算资源,这也使得本书特别适合于课堂教学。

目录
译者序

前言

致谢

第1章 绪论 1

11 一个有趣的例子及其分析 2

12 并行计算基础 10

121 分布式内存系统 10

122 共享内存系统 11

123 并行程序设计需考虑的因素 13

13 HPC动态和排名 15

14 附加练习 17

第2章 理论背景 19

21 PRAM 20

211 PRAM变体 21

212 PRAM上的并行前缀计算 22

213 PRAM上稀疏数组的压缩算法 24

22 网络拓扑 25

23 Amdahl定律和Gustafson定律 29

24 Foster的并行算法设计方法学 34

25 附加练习 37

参考文献 40

第3章 现代体系结构 41

31 存储层次 42

311 冯·诺依曼瓶颈 42

312 高速缓冲存储器 43

313 缓存算法 44

314 优化缓存访问 45

315 高速缓存一致性 48

316 虚假共享 50

317 并发多线程技术和预取技术 50

318 展望 51

32 并行性的层次 51

321 Flynn分类法 51

322 SIMD概念 53

323 通用微处理器上的向量化 54

324 结构体数组和数组结构体 57

325 展望 63

33 附加练习 63

参考文献 67

第4章 C++多线程编程 68

41 多线程编程简介 69

411 多线程编程和多进程编程的区别 69

412 派生和并入线程 69

413 我们的第一个多线程程序 71

42 处理返回值 73

421 传统方法 74

422 使用promise和future的现代方法 75

423 异步方式 80

43 基于静态分发的调度机制 82

431 串行程序 83

432 线程的区块分发 87

433 线程的循环分发 90

434 虚假共享 91

435 线程的块循环分发 93

44 处理负载不平衡 95

441 静态调度 99

442 动态块循环分发 101

45 用条件变量通知线程 104

451 为一个睡觉的学生建模 105

452 使用条件变量 107

453 使用future和promise单发同步 108

46 隐式可数集合上的并行化 110

461 隐式可数集合 111

462 线程池用例 112

463 一个简单线程池的实现 114

47 附加练习 119

参考文献 121

第5章 高级C++11多线程编程 122

51 无锁编程 122

511 原子计数 123

512 非基本原子数据类型 124

513 利用比较交换以原子方式并行化最大值归约 126

514 任意原子操作 129

515 ABA问题 132

52 工作共享线程池 133

521 工作共享线程池的用例 133

522 工作共享的实现 135

53 并行图搜索 137

531 二元背包问题 138

532 串行实现 139

533 并行实现 144

54 展望 146

55 附加练习 148

参考文献 149

第6章 OpenMP 150

61 OpenMP简介 151

611 OpenMP简史 151

612 基础 151

62 parallel for制导语句 153

621 向量加法 154

622 变量共享和私有化 157

623 矩阵向量乘法 160

63 基本的并行归约 162

631 最近邻分类 162

632 手写数字数据集MNIST 163

633 完全配对距离计算的理论视角 164

634 完全配对计算的实现 165

635 并行标签预测 168

636 性能评测 169

64 不平衡循环调度 171

641 对称性引起的负载失衡 172

642 内积计算实现 173

643 性能评测 174

65 高级归约 175

651 MNIST数据集上的SOFTMAX回归分类器 175

652 定制归约操作符 183

653 OpenMP高级归约 187

66 任务并行 189

661 树遍历 190

662 循环中生成任务 193

67 SIMD向量化 193

671 数据依赖 195

672 向量化感知函数 196

68 展望 196

69 附加练习 197

参考文献 202

第7章 统一计算设备架构 203

71 CUDA简介 204

72 支持CUDA的GPU硬件架构 206

721 主机与设备之间的互连 206

722 显存和峰值宽度 207

723 计算资源的组织 207

73 内存访问模式 211

731 均值名人脸的计算 212

732 计算中心化的数据矩阵 218

733 计算协方差矩阵 221

734 计算特征脸 229

74 内存层次结构 232

741 问题简介 233

742 串行DTW的线性内存算法 237

743 线性内存DTW的一个初始CUDA移植 243

744 共享内存中的波前松弛 248

745 并发调度和bank冲突 253

746 纹理内存和常量内存 254

75 优化准则 257

76 附加练习 258

参考文献 259

第8章 高级CUDA编程 261

81 warp内联函数和原子操作 261

811 分段并行归约 262

812 全局并行归约 265

813 任意原子操作 267

814 展望 269

82 利用多块GPU和流 269

821 牛顿迭代 269

822 利用多块GPU 272

823 通信和计算交叉 274

824 多块GPU上的流式计算 278

83 展望 280

831 统一内存 280

832 动态并行性 281

833 协作组 281

834 张量核心 281

835 GPU集群上的分布式计算 282

84 附加练习 282

参考文献 284

第9章 MPI 286

91 MPI简介 286

92 基本概念 288

93 点到点通信 289

94 非阻塞通信 292

9
Baidu
map