• 并行程序设计 概念与实践
21年品牌 40万+商家 超1.5亿件商品

并行程序设计 概念与实践

全新正版 极速发货

65.92 5.5折 119 全新

库存8件

广东广州
认证卖家担保交易快速发货售后保障

作者(德)贝蒂尔·施密特 等 著 张常有,吴长茂,解庆春 译

出版社机械工业出版社

ISBN9787111656661

出版时间2020-06

装帧平装

开本16开

定价119元

货号1202087954

上书时间2024-12-03

谢岳书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
目录
译者序

前言

致谢

第1章 绪论 1

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

1.2 并行计算基础 10

1.2.1 分布式内存系统 10

1.2.2 共享内存系统 11

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

1.3 HPC动态和排名 15

1.4 附加练习 17

第2章 理论背景 19

2.1 PRAM 20

2.1.1 PRAM变体 21

2.1.2 PRAM上的并行前缀计算 22

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

2.2 网络拓扑 25

2.3 Amdahl定律和Gustafson定律 29

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

2.5 附加练习 37

参考文献 40

第3章 现代体系结构 41

3.1 存储层次 42

3.1.1 冯·诺依曼瓶颈 42

3.1.2 高速缓冲存储器 43

3.1.3 缓存算法 44

3.1.4 优化缓存访问 45

3.1.5 高速缓存一致性 48

3.1.6 虚假共享 50

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

3.1.8 展望 51

3.2 并行性的层次 51

3.2.1 Flynn分类法 51

3.2.2 SIMD概念 53

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

3.2.4 结构体数组和数组结构体 57

3.2.5 展望 63

3.3 附加练习 63

参考文献 67

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

4.1 多线程编程简介 69

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

4.1.2 派生和并入线程 69

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

4.2 处理返回值 73

4.2.1 传统方法 74

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

4.2.3 异步方式 80

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

4.3.1 串行程序 83

4.3.2 线程的区块分发 87

4.3.3 线程的循环分发 90

4.3.4 虚假共享 91

4.3.5 线程的块循环分发 93

4.4 处理负载不平衡 95

4.4.1 静态调度 99

4.4.2 动态块循环分发 101

4.5 用条件变量通知线程 104

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

4.5.2 使用条件变量 107

4.5.3 使用future和promise单发同步 108

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

4.6.1 隐式可数集合 111

4.6.2 线程池用例 112

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

4.7 附加练习 119

参考文献 121

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

5.1 无锁编程 122

5.1.1 原子计数 123

5.1.2 非基本原子数据类型 124

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

5.1.4 任意原子操作 129

5.1.5 ABA问题 132

5.2 工作共享线程池 133

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

5.2.2 工作共享的实现 135

5.3 并行图搜索 137

5.3.1 二元背包问题 138

5.3.2 串行实现 139

5.3.3 并行实现 144

5.4 展望 146

5.5 附加练习 148

参考文献 149

第6章 OpenMP 150

6.1 OpenMP简介 151

6.1.1 OpenMP简史 151

6.1.2 基础 151

6.2 parallel for制导语句 153

6.2.1 向量加法 154

6.2.2 变量共享和私有化 157

6.2.3 矩阵向量乘法 160

6.3 基本的并行归约 162

6.3.1 最近邻分类 162

6.3.2 手写数字数据集MNIST 163

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

6.3.4 完全配对计算的实现 165

6.3.5 并行标签预测 168

6.3.6 性能评测 169

6.4 不平衡循环调度 171

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

6.4.2 内积计算实现 173

6.4.3 性能评测 174

6.5 高级归约 175

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

6.5.2 定制归约操作符 183

6.5.3 OpenMP高级归约 187

6.6 任务并行 189

6.6.1 树遍历 190

6.6.2 循环中生成任务 193

6.7 SIMD向量化 193

6.7.1 数据依赖 195

6.7.2 向量化感知函数 196

6.8 展望 196

6.9 附加练习 197

参考文献 202

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

7.1 CUDA简介 204

7.2 支持CUDA的GPU硬件架构 206

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

7.2.2 显存和峰值宽度 207

7.2.3 计算资源的组织 207

7.3 内存访问模式 211

7.3.1 均值名人脸的计算 212

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

7.3.3 计算协方差矩阵 221

7.3.4 计算特征脸 229

7.4 内存层次结构 232

7.4.1 问题简介 233

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

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

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

7.4.5 并发调度和bank冲突 253

7.4.6 纹理内存和常量内存 254

7.5 优化准则 257

7.6 附加练习 258

参考文献 259

第8章 高级CUDA编程 261

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

8.1.1 分段并行归约 262

8.1.2 全局并行归约 265

8.1.3 任意原子操作 267

8.1.4 展望 269

8.2 利用多块GPU和流 269

8.2.1 牛顿迭代 269

8.2.2 利用多块GPU 272

8.2.3 通信和计算交叉 274

8.2.4 多块GPU上的流式计算 278

8.3 展望 280

8.3.1 统一内存 280

8.3.2 动态并行性 281

8.3.3 协作组 281

8.3.4 张量核心 281

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

8.4 附加练习 282

参考文献 284

第9章 MPI 286

9.1 MPI简介 286

9.2 基本概念 288

9.3 点到点通信 289

9.4 非阻塞通信 292

9.5 集合通信 295

9.6 计算通信重叠 300

9.7 派生数据类型 309

9.8 复杂通信域 315

9.9 展望 322

9.10 附加练习 322

参考文献 327

第10章 统一并行C++ 329

10.1 PGAS和UPC++简介 329

10.2 基本概念 331

10.3 内存亲和性和私有化 332

10.4 全局指针和集合函数 337

10.5 锁 343

10.6 远程函数调用 348

10.7 附加练习 355

参考文献 357

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

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP