沐曦异构并行计算软件栈——MXMACA C/C++程序设计高级教程
定 价:128 元
丛书名:沐曦GPU技术系列丛书
- 作者:龚春叶
- 出版时间:2026/3/1
- ISBN:9787121522994
- 出 版 社:电子工业出版社
- 中图法分类:TP311.11
- 页码:288
- 纸张:
- 版次:01
- 开本:16开
-
商品库位:
本书全面介绍了异构并行计算和 GPU 编程的基础知识与高级应用。龚春叶博士、杨建博士和段勃博士凭借 20 多年的三维图形与高性能计算领域的研究与实践经验,为读者展现了 GPU 编程的深层原理和实践技巧。本书从异构并行计算的基本概念讲起,逐步深入到复杂的高级主题,构建了一个系统全面的知识结构。内容覆盖了从基础理论到实际应用,从编程模型到内存管理,再到性能优化等多个层面。书中不仅详尽阐述了MXMACA C/C++编程语言的特性和应用,还通过丰富的示例代码,展示了在沐曦高性能 GPU 平台上开发计算加速应用程序的全过程。无论是在校大学生、教师,还是对异构并行计算感兴趣的研究者和行业开发者,都能从这本书中获得实用的指导。它不仅适合作为高校教材和自学参考书,也适合作为工程师和科研人员的案头手册。在算力成为推动科技和产业发展关键因素的今天,本书的出版恰逢其时。它不仅为读者提供了深入学习GPU 编程和异构并行计算的途径,也为科学计算、大数据分析、人工智能等领域的专业人士提供了宝贵的资源。跟随三位作者的引导,读者将能够探索并利用异构并行计算的强大能力,开启计算加速的新篇章。
龚春叶,博士,长期从事高性能计算研究,负责并行应用软件研制。获湖南省和天津市科技进步一等奖等奖项,获授权专利30余项,发表高质量论文100余篇。带领团队突破大规模图计算等关键技术,荣登湖南省十大科技新闻榜首。在提升国产高性能计算机应用生态、推动我国高性能计算技术发展等方面发挥了重要作用。杨建,浙江大学博士,沐曦联合创始人、CTO兼首席软件架构师,三维图形与高性能计算生态专家,拥有多项发明专利,具有超过20年的GPU软件研发经验。杨建博士曾任职于华为海思和AMD,曾任华为海思GPU首席架构师,是AMD大中华区首位华人科学家。段勃,博士,中国科学院计算技术研究所高性能中心高级工程师,兼任中科计算技术西部研究院副院长,主要从事高性能计算的产业应用研究。
目 录
第1章 GPU并行计算导论 1
1.1 基本概念 1
1.1.1 CPU、GPU与众核 1
1.1.2 串行计算和并行计算 2
1.1.3 CPU进程、线程 2
1.1.4 GPU线程、线程束、线程块和核函数 3
1.1.5 GPU全局存储和共享存储 3
1.1.6 全局动态内存的对齐访问和合并访问 4
1.1.7 同构系统和异构系统 4
1.1.8 共享内存架构和分布式内存架构 4
1.1.9 共享存储架构和分布式存储架构 5
1.1.10 MPI和OpenMP 6
1.1.11 CUDA、MXMACA和OpenCL 6
1.1.12 科学计算与智能计算 7
1.2 并行计算体系架构 7
1.3 GPU简介 9
1.4 GPU第一波浪潮:可视化计算 10
1.5 GPU第二波浪潮:科学计算 12
1.6 GPU第三波浪潮:虚拟货币 12
1.7 GPU第四波浪潮:人工智能 13
1.8 MXMACA并行编程模型 14
1.9 后摩尔时代的挑战及机遇 15
1.10 本章小结 18
第2章 并行归约算法实现及优化 19
2.1 背景介绍 19
2.1.1 归约及应用场景 19
2.1.2 相关研究 20
2.1.3 并行归约设计思路 21
2.1.4 并行归约朴素实现:相邻配对 22
2.2 并行归约优化 24
2.2.1 优化一:消除线程束分化 24
2.2.2 优化二:消除Bank冲突 25
2.2.3 优化三:加载时计算 27
2.2.4 优化四:循环展开 27
2.2.5 优化五:完全循环展开 29
2.2.6 优化六:单线程多次加法 29
2.3 本章小结 31
第3章 基础算法优化 33
3.1 CPU、GPU计时函数 33
3.2 BLAS axpy优化 34
3.2.1 axpy实现方案一 35
3.2.2 axpy实现方案二 35
3.2.3 axpy实现方案三 36
3.2.4 测试结果 37
3.3 随机数生成器优化 37
3.3.1 随机数生成器 38
3.3.2 随机数生成器测试结果 40
3.3.3 典型应用:计算Pi 41
3.4 前缀求和优化 46
3.4.1 背景 46
3.4.2 基本实现 47
3.4.3 ScanPostKernel优化 49
3.4.4 ScanSegSumKernel优化 50
3.4.5 BlellochScan优化 52
3.5 本章小结 55
第4章 GEMM优化 56
4.1 矩阵乘法的性能建模与优化 56
4.2 矩阵乘法的问题描述 58
4.2.1 问题的数学描述 59
4.2.2 BLAS:基础线性代数子程序库与SGEMM详解 60
4.2.3 内存布局 60
4.2.4 BLAS接口的设计 61
4.2.5 为什么需要深入理解GEMM 62
4.3 简单矩阵乘法:三重循环 62
4.3.1 从CPU到GPU的思维转变 63
4.3.2 GPU并行化思路 63
4.3.3 MACA实现解析 63
4.3.4 内核启动配置与线程组织 65
4.3.5 性能分析 65
4.4 内存聚合(Memory Coalescing) 65
4.4.1 内存聚合—GPU内存访问的“团购”模式 66
4.4.2 优化实战—重新设计线程映射 67
4.4.3 一种巧妙的方案 67
4.5 分块矩阵乘法与屋檐模型 68
4.5.1 屋檐模型:性能的“天花板” 68
4.5.2 屋檐模型与性能诊断 69
4.5.3 分块矩阵乘法提高计算访存比 70
4.6 层次化分块矩阵乘法与层次化屋檐模型 73
4.6.1 新的瓶颈:共享内存带宽 73
4.6.2 层次化屋檐模型 73
4.6.3 矩阵乘法优化的“最后一公里”:线程级分块 74
4.7 内积还是外积?交给编译器优化 76
4.7.1 内积与外积的较量 76
4.7.2 理想与现实的差距 76
4.7.3 启示与思考 77
4.8 深入理解GPU共享内存冲突与优化方案 77
4.8.1 理解GPU共享内存的组织方式 77
4.8.2 哪里会产生Bank冲突 78
4.8.3 如何解决这个问题 78
4.8.4 如何选择优化方案 80
4.9 本章小结 80
第5章 FFT算法优化 81
5.1 背景介绍 81
5.2 国内外相关研究 85
5.3 基本实现方式 86
5.3.1 基于Cooley-Tukey算法的CPU实现 86
5.3.2 基于Cooley-Tukey算法的GPU实现 87
5.4 性能优化 91
5.4.1 蝶形变换优化 91
5.4.2 访存优化 95
5.5 本章小结 98
第6章 Laplace方程求解优化 99
6.1 Laplace方程推导及求解 99
6.1.1 Laplace方程的推导 99
6.1.2 三类边界条件 100
6.1.3 Laplace方程的数值求解 101
6.2 热传导Laplace方程求解CPU版本实现 102
6.3 热传导Laplace方程求解GPU版本实现 103
6.3.1 算法并行化—红黑排序 103
6.3.2 GPU版本实现 106
6.4 GPU版本优化—合并访存优化 110
6.5 GPU版本优化—残差共享内存优化 111
6.6 GPU版本优化—原子操作指令优化 115
6.7 本章小结 117
第7章 加/解密算法优化 118
7.1 背景介绍 118
7.2 国内外研究现状 120
7.3 AES加密算法优化 121
7.3.1 AES加密算法简介 121
7.3.2 AES加密算法的CPU版本实现 123
7.3.3 AES加密算法的GPU版本实现及优化 129
7.3.4 实验结果与测试 133
7.4 MD5加/解密算法的实现与优化 133
7.4.1 MD5加密算法简介 133
7.4.2 MD5加密算法的CPU版本实现 137
7.4.3 MD5解密算法的CPU版本实现 139
7.4.4 MD5解密算法的GPU版本实现及优化 142
7.4.5 测试结果 145
7.5 SHA-256加密算法的实现与优化 145
7.5.1 SHA-256加密算法简介 145
7.5.2 SHA-256加密算法的CPU版本实现 148
7.5.3 SHA-256加密算法的GPU版本实现及优化 151
7.5.4 测试结果 155
7.6 本章小结 155
第8章 MXMACA程序优化 157
8.1 人工智能、机器学习和深度学习 157
8.2 人工智能历史 159
8.2.1 前智能时代(1955年及以前) 159
8.2.2 人工智能第一波浪潮(1956—1973年) 160
8.2.3 人工智能第二波浪潮(1980—1987年) 161
8.2.4 人工智能第三波浪潮(1993—2011年) 162
8.2.5 人工智能第四波浪潮(2012年至今) 164
8.3 Darknet及典型深度学习模型YOLO 166
8.4 图像矩阵列转换 167
8.5 BLAS:基础线性代数子程序库 170
8.6 池化 172
8.7 批量归一化 175
8.8 激活 177
8.9 卷积 179
8.10 测试结果 181
8.11 本章小结 182
第9章 粒子输运模拟优化 183
9.1 背景介绍 183
9.2 理论基础 185
9.3 三维确定性结构化网格粒子输运模拟优化 186
9.3.1 异构协同并行算法 190
9.3.2 基本的线程级并行扫描 190
9.3.3 源项计算 191
9.3.4 Sn递归方程求解 192
9.3.5 其他过程 194
9.3.6 并行度分析及并行模型映射 196
9.3.7 测试结果 196
9.4 二维确定性非结构化网格粒子输运模拟优化 197
9.4.1 预扫描算法 198
9.4.2 非结构化网格通量扫描并行度分析 201
9.4.3 并行通量扫描及模型映射 202
9.4.4 性能优化 204
9.4.5 测试结果 204
9.5 本章小结 205
第10章 稀疏线性系统求解优化 207
10.1 背景介绍 207
10.2 国内外研究现状 207
10.3 SPMV算法优化 209
10.3.1 SPMV简介 209
10.3.2 稀疏矩阵存储格式 210
10.3.3 CPU版本SPMV算法实现 212
10.3.4 GPU版本SPMV算法实现 213
10.3.5 测试结果 217
10.4 CG算法优化 219
10.4.1 CG算法基本过程 219
10.4.2 CG算法CPU版本 220
10.4.3 CG算法GPU版本 222
10.4.4 测试结果 227
10.5 本章小结 228
第11章 高性能图计算优化 229
11.1 背景介绍 229
11.1.1 大数据时代图计算 229
11.1.2 图计算框架 230
11.2 国内外研究现状 231
11.2.1 基于CPU的图计算框架 231
11.2.2 基于GPU的图计算框架 236
11.2.3 总结 236
11.3 基于稀疏矩阵乘法的图计算框架设计及优化 237
11.3.1 图的定义及存储结构 237
11.3.2 框架设计 238
11.3.3 性能优化策略 241
11.4 算法应用与测试 246
11.4.1 算法应用 247
11.4.2 测试结果 248
11.5 本章小结 249
参考文献 251
附录A MXMACA编程相关术语 253
附录B MXMACA编程丛书相关缩略语 255