《大规模并行处理器程序设计 原书第4版-胡文美》[78M]百度网盘|pdf下载|亲测有效
《大规模并行处理器程序设计 原书第4版-胡文美》[78M]百度网盘|pdf下载|亲测有效
《大规模并行处理器程序设计 原书第4版-胡文美》[78M]百度网盘|pdf下载|亲测有效

大规模并行处理器程序设计 原书第4版-胡文美 pdf下载

isbn:9787111772767
出版社 机械工业出版社
出版年 2025-05-01
页数 390页
ISBN 9787111772767
装帧 精装
评分 8.8(豆瓣)
限时特惠 00:00:00
活动结束后恢复原价
纸质书参考价 ¥23
电子版限时价 ¥5.99 省 18 元

选择版本

不满意全额退款
发货失败双倍赔偿
邮箱即时发送

内容简介

本篇主要提供大规模并行处理器程序设计 原书第4版-胡文美电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com




本书内容简洁、直观、实用,强调计算思维能力和并行编程技巧。本书主要分为四个部分:第 一部分介绍异构并行计算编程的基础概念,包括数据并行化、GPU架构、CUDA编程及程序性能优化方法等内容;第二部分介绍并行模式,包括卷积、模板、并行直方图、归约、前缀和、归并等内容;第三部分介绍高级模式及应用,包括排序、稀疏矩阵计算、图遍历、深度学习、迭代式磁共振成像重建、静电势能图和计算思维等内容;第四部分介绍高级编程实践,包括异构计算集群编程、CUDA动态并行化等内容。本书不仅适合高等院校计算机相关专业的学生学习,也适合并行计算领域的技术人员参考。





目  录

Programming Massively Parallel Processors: A Hands-on Approach, Fourth Edition

译者序

推荐序

前言

致谢

第1章 引言 1

1.1 异构并行计算 2

1.2 为什么需要速度与并行性 5

1.3 加快实际应用的速度 6

1.4 并行编程中的挑战 7

1.5 相关的并行编程接口 8

1.6 本书的总体目标 9

1.7 本书的章节安排 10

参考文献 12

第一部分 基本概念

第2章 异构数据并行计算 14

2.1 数据并行性 14

2.2 CUDA C程序结构 16

2.3 向量加法核 17

2.4 设备全局存储和数据传输 19

2.5 核函数和线程 22

2.6 调用核函数 25

2.7 编译 27

2.8 总结 27

2.8.1 函数声明 27

2.8.2 内核调用和网格启动 27

2.8.3 内置(预定义)变量 28

2.8.4 运行时应用程序编程接口 28

练习 28

参考文献 30

第3章 多维网格和数据 31

3.1 多维网格组织 31

3.2 将线程映射到多维数据 33

3.3 图像模糊:更复杂的内核 38

3.4 矩阵乘法 41

3.5 总结 44

练习 44

第4章 计算架构和调度 46

4.1 现代GPU架构 46

4.2 块调度 47

4.3 同步和透明可扩展性 47

4.4 线程束和SIMD硬件 49

4.5 控制发散 53

4.6 线程束调度和延迟容忍 55

4.7 资源划分和占用率 56

4.8 查询设备属性 58

4.9 总结 60

练习 60

参考文献 61

第5章 内存架构和数据局部性 62

5.1 内存访问效率的重要性 62

5.2 CUDA内存类型 64

5.3 利用平铺减少内存流量 68

5.4 平铺的矩阵乘法内核 70

5.5 边界检查 74

5.6 内存使用对占用率的影响 76

5.7 总结 78

练习 78

第6章 性能方面的考虑 81

6.1 内存合并 81

6.2 隐藏内存延迟 87

6.3 线程粗化 91

6.4 优化清单 93

6.5 了解计算瓶颈 96

6.6 总结 96

练习 96

参考文献 97

第二部分 并行模式

第7章 卷积:常量内存和缓存 100

7.1 背景 100

7.2 并行卷积:一种基本算法 103

7.3 常量内存和缓存:概念与实例 105

7.4 边缘单元平铺卷积 108

7.5 使用边缘单元缓存的平铺卷积 111

7.6 总结 113

练习 113

第8章 模板 115

8.1 背景 115

8.2 并行模板:基本算法 118

8.3 用于模板扫描的共享内存平铺 119

8.4 线程粗化 121

8.5 寄存器平铺 123

8.6 总结 125

练习 125

第9章 并行直方图:原子操作和

私有化 126

9.1 背景 126

9.2 原子操作与基本直方图内核 128

9.3 原子操作的延迟和吞吐量 131

9.4 私有化 132

9.5 粗化 134

9.6 聚合 137

9.7 总结 138

练习 138

参考文献 139

第10章 归约和最小化发散 140

10.1 背景 140

10.2 归约树 141

10.3 一个简单的归约内核 143

10.4 最小化控制发散 145

10.5 最小化内存发散 148

10.6 最小化全局内存访问 149

10.7 对任意输入长度进行分层归约 150

10.8 利用线程粗化减少开销 152

10.9 总结 154

练习 154

第11章 前缀和(扫描):并行算法的工作效率 156

11.1 背景 156

11.2 基于Kogge-Stone算法的并行

扫描 158

11.3 关于速度与工作效率的考虑 162

11.4 基于Brent-Kung算法的并行

扫描 163

11.5 利用粗化提高工作效率 167

11.6 任意长度输入的分段并行扫描 168

11.7 利用单次扫描提高内存访问

效率 171

11.8 总结 172

练习 173

参考文献 173

第12章 归并:动态输入数据

识别 175

12.1 背景 175

12.2 串行归并算法 176

12.3 并行化方法 177

12.4 共秩函数的实现 178

12.5 基本并行归并内核 182

12.6 用于改进内存合并的平铺归并

内核 183

12.7 循环缓冲区归并内核 187

12.8 用于归并的线程粗化 192

12.9 总结 192

练习 193

参考文献 193

第三部分 高级模式及应用

第13章 排序 196

13.1 背景 196

13.2 基数排序 197

13.3 并行基数排序 198

13.4 内存合并优化 200

13.5 基值的选择 202

13.6 利用线程粗化改善合并 204

13.7 并行归并排序 205

13.8 其他并行排序方法 205

13.9 总结 206

练习 207

参考文献 207

第14章 稀疏矩阵计算 208

14.1 背景 208

14.2 具有COO格式的简单SpMV

内核 209

14.3 利用CSR格式分组非零行 211

14.4 利用ELL格式改善内存合并 213

14.5 利用混合ELL-COO格式调节

填充 216

14.6 利用JDS格式减少控制发散 217

14.7 总结 219

练习 219

参考文献 220

第15章 图遍历 221

15.1 背景 221

15.2 广度优先搜索 223

15.3 以顶点为中心的广度优先搜索

并行化 225

15.4 以边为中心的广度优先搜索

并行化 228

15.5 利用边界提高效率 230

15.6 利用私有化减少争用 232

15.7 其他优化 233

15.7.1 减少启动开销 233

15.7.2 优化负载均衡 234

15.7.3 进一步的挑战 234

15.8 总结 235

练习 235

参考文献 236

第16章 深度学习 237

16.1 背景 237

16.1.1 多层分类器 239

16.1.2 训练模型 241

16.2 卷积神经网络 244

16.2.1 卷积神经网络推理 245

16.2.2 卷积神经网络反向传播 248

16.3 卷积层:CUDA推理内核 252

16.4 卷积层的GEMM表示 254

16.5 CUDNN库 258

16.6 总结 259

练习 260

参考文献 260

第17章 迭代式磁共振成像重建 261

17.1 背景 261

17.2 迭代式重建 263

17.3 计算FHD 264

17.3.1 第1步:确定核函数的

并行结构 265

17.3.2 第2步:克服内存带宽

限制 269

17.3.3 第3步:使用硬件三角

函数 273

17.3.4 第4步:实验性能调优 275

17.4 总结 275

练习 275

参考文献 276

第18章 静电势能图 277

18.1 背景 277

18.2 核函数设计:分散法与聚集法 278

18.3 线程粗化 281

18.4 内存合并 283

18.5 用于数据尺寸可扩展性的截断

分箱 284

18.6 总结 288

练习 288

参考文献 288

第19章 并行编程与计算思维 289

19.1 并行计算的目标 289

19.2  算法选择 291

19.3 问题分解 293

19.4 计算思维 295

19.5 总结 296

参考文献 296

第四部分 高级实践

第20章 异构计算集群编程:

CUDA流 298

20.1 背景 298

20.2 一个运行示例 298

20.3 MPI基础 300

20.4 点对点通信的MPI 302

20.5 计算与通信的重叠 307

20.6 MPI集体通信接口 313

20.7 CUDA感知的MPI 313

20.8 总结 313

练习 314

参考文献 314

第21章 CUDA动态并行性 315

21.1 背景 315

21.2 动态并行性概述 316

21.3 示例:贝塞尔曲线 318

21.3.1 线性贝塞尔曲线 319

21.3.2 二次贝塞尔曲线 319

21.3.3 贝塞尔曲线计算(不使用

动态并行性) 319

21.3.4 贝塞尔曲线计算(使用动态

并行性) 320

21.4 递归示例:四叉树 321

21.5 重要注意事项 326

21.5.1 内存和数据可见性 326

21.5.2 待处理启动池配置 327

21.5.3 流 327

21.5.4 嵌套深度 328

21.6 总结 328

练习 328

参考文献 329

附录 四叉树示例的支持代码 329

第22章 高级实践与未来演变 332

22.1 主机/设备交互模型 332

22.1.1 零拷贝内存及统一虚拟

地址空间 333

22.1.2 大型虚拟和物理地址空间 334

22.1.3 统一内存 334

22.1.4 虚拟地址空间控制 336

22.2 内核执行控制 336

22.2.1 核函数中的函数调用 336

22.2.2 核函数中的异常处理 337

22.2.3 多个网格的同时执行 337

22.2.4 硬件队列和动态并行性 337

22.2.5 可中断的网格 337

22.2.6 合作内核 338

22.3 内存带宽和计算吞吐量 338

22.3.1 双精度速度 338

22.3.2 更好的控制流效率 338

22.3.3 可配置缓存和暂存内存 338

22.3.4 增强的原子操作 339

22.3.5 增强的全局内存访问 339

22.4 编程环境 339

22.4.1 统一设备内存空间 339

22.4.2 使用关键路径分析进行性能

分析 340

22.5 展望未来 341

参考文献 341

第23章 结论与展望 342

23.1 目标回顾 342

23.2 未来展望 343

附录 数值方面的考虑 345