水木
水木
发布于 2024-09-14 / 26 阅读
0

并行计算与高性能计算

链接: https://pan.baidu.com/s/13qtY6R8-G1ancxC9rsLxyQ?pwd=q47i 提取码: q47i


出版社: 清华大学出版社
ISBN:9787302607373
版次:1
商品编码:13261511
品牌:清华大学
包装:平装
开本:16开
出版时间:2022-06-01
用纸:胶版纸
产品特色

编辑推荐

  编写可扩展的、快速、强大、节能的程序,才适合处理大量数据。使用并行编程,可将数据处理任务分布在多个CPU上完成,从而从根本上提高性能。只需要稍加学习,读者就可以创建速度和效率的软件。

  《并行计算与高性能计算》将讲述用于提高代码运行效率的技术。你将学习评估硬件架构,学会使用OpenMP和MPI等行业标准工具,将掌握用于高性能计算的数据结构和算法,并学习手持设备的节能技术。你甚至可在一组GPU上运行大规模海啸仿真程序。




内容简介

主要内容

●规划新的并行项目

●了解CPU和GPU架构上的差异

●找到性能不佳的内核和循环

●使用批处理调度来管理应用程序




作者简介

Robert Robey在洛斯阿拉莫斯国家实验室工作,30多年来一直活跃在并行计算领域。Yuliana Zamora目前是芝加哥大学的博士生及Siebel学者,曾在许多国家会议上讲授现代硬件编程技术。

目录

第Ⅰ部分 并行计算介绍

第1 章 为什么使用并行计算 3

1.1 为什么要学习并行计算 5

1.2 并行计算的基本定律 9

1.3 并行计算如何工作 12

1.4 对并行方法进行分类 24

1.5 并行策略 25

1.6 并行加速与比较加速:两种不同的衡量标准 26

1.7 你将在本书中学到哪些内容 27

1.8 本章小结 28

第2 章 规划并行化 29

2.1 处理新项目:准备工作 30

2.2 概要分析:探测系统功能和应用程序性能之间的差距 42

2.3 计划:成功的基础 42

2.4 实施 44

2.5 提交:高质量的打包过程 45

2.6 进一步探索 46

2.7 本章小结 46

第3 章 性能极限与分析 49

3.1 了解应用程序的潜在性能限制 49

3.2 了解硬件性能:基准测试 52

3.3 描述你的应用程序:分析 59

3.4 进一步探索 71

3.5 本章小结 71

第4 章 数据设计和性能模型 73

4.1 数据结构与性能:面向数据的设计 74

4.2 缓存未命中的3C:强制、容量与冲突 86

4.3 简单性能模型:案例研究 90

4.4 高级性能模型 98

4.5 网络消息 101

4.6 进一步探索 103

4.7 本章小结 104

第5 章 并行算法与模式 105

5.1 并行计算应用的算法分析 105

5.2 性能模型与算法复杂性 106

5.3 什么是并行算法 109

5.4 什么是哈希函数 110

5.5 空间哈希:一种高并行度算法 111

5.6 prefix sum(扫描)模式及其在并行计算中的重要性 132

5.7 并行全局和:解决关联性问题 135

5.8 并行算法研究的未来 141

5.9 进一步探索 141

5.10 本章小结 142

第II 部分 CPU:并行的主力第6 章 向量化:免费的flop 145

6.1 向量及单指令多数据流(SIMD)概要 145

6.2 向量化的硬件趋势 146

6.3 向量化方法 147

6.4 实现更好向量化的编程风格 163

6.5 与编译器向量化相关的编译器标志 164

6.6 使用OpenMP SIMD 指令实现更好的移植性 170

6.7 进一步探索 172

6.8 本章小结 173

第7 章 使用OpenMP 实现并行计算 175

7.1 OpenMP 介绍 175

7.2 典型的OpenMP 用例:循环级OpenMP、高级OpenMP 和MPI +OpenMP 183

7.3 标准循环级OpenMP 示例 185

7.4 OpenMP 中变量范围对结果准确性的重要性 193

7.5 函数级OpenMP:使整个函数实现线程并行 194

7.6 使用高级OpenMP 改进并行可伸缩性 196

7.7 使用OpenMP 混合线程及向量化 201

7.8 使用OpenMP 的高级示例 204

7.9 线程工具对健壮程序的重要性 210

7.10 基于任务的支持算法示例 213

7.11 进一步探索 214

7.12 本章小结 215

第8 章 MPI:并行骨干 217

8.1 MPI 程序基础 217

8.2 用于进程间通信的发送和接收命令 221

8.3 聚合通信:MPI 的强大组件 227

8.4 数据并行示例 236

8.5 使用高级MPI 功能来简化代码和启用优化 245

8.6 通过联合使用MPI 和OpenMP实现极高的可扩展性 257

8.7 进一步探索 259

8.8 本章小结 261

第III 部分 GPU:加速应用程序运行

第9 章 GPU 架构及概念 265

9.1 作为加速计算平台的CPU-GPU系统 266

9.2 GPU 和线程引擎 268

9.3 GPU 内存空间的特点 272

9.4 PCI 总线:CPU 与GPU 之间的数据传输桥梁 278

9.5 多GPU 平台和MPI 284

9.6 GPU 加速平台的潜在收益 286

9.7 何时使用GPU 292

9.8 进一步探索 292

9.9 本章小结 293

第10 章 GPU 编程模型 295

10.1 GPU 编程抽象:通用框架 296

10.2 GPU 编程模型的代码结构 302

10.3 优化GPU 资源利用 306

10.4 约减模式需要跨工作组进行同步 309

10.5 通过队列(流)进行异步计算 310

10.6 为GPU 定制并行化应用程序的策略 311

10.7 进一步探索 312

10.8 本章小结 314

第11 章 基于指令的GPU 编程 315

11.1 为GPU 实现应用编译指令和pragma 的过程 316

11.2 OpenACC:在GPU 上运行的最简单方法 317

11.2.1 编译OpenACC 代码 319

11.2.2 OpenACC 中用于加速计算的并行计算区域 320

11.2.3 使用指令减少CPU 和GPU之间的数据移动 325

11.2.4 优化GPU kernel 329

11.2.5 stream triad 性能结果的总结 334

11.2.6 高级OpenACC 技术 335

11.3 OpenMP:加速器领域的重量级选手 337

11.3.1 编译OpenMP 代码 337

11.3.2 使用OpenMP 在GPU 上生成并行工作 339

11.3.3 使用OpenMP 创建数据区域来控制到GPU 的数据移动 342

11.3.4 为GPU 优化OpenMP 346

11.3.5 用于GPU 的高级OpenMP 350

11.4 进一步探索 353

11.4.1 扩展阅读 353

11.4.2 练习 354

11.5 本章小结 35