内容简介 · · · · · ·
CUDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构可充分发挥GPU的强大计算功能,颇受广大开发者拥趸。本书以并行编程实践者视角,展示了全面、快速提升CUDA程序效能的途径。从并行机制到CUDA开发环境搭建,从GPU高性能计算相关硬件知识到并行计算和CUDA编程技巧,从核心概念到多个热点技术和高级主题,无所不包。本书侧重于CUDA实践应用,特别在CUDA程序优化上下足了工夫,例如发挥多GPU效力。难能可贵的是,作者结合多年实践经验,精心总结出开发者在使用CUDA过程中易犯的错误和有效的规避方法。
本书亮点:
全面介绍并行机制和CUDA编程,即便没有CUDA编程经验也能够轻松掌握;
细致指导,以帮助读者优化CUDA应用程序;
以实用技术演示如何在并行程序中管理内存、线程、算法和各种资源;
涵盖英...
CUDA是一种专门为提高并行程序开发效率而设计的计算架构。在构建高性能应用程序时,CUDA架构可充分发挥GPU的强大计算功能,颇受广大开发者拥趸。本书以并行编程实践者视角,展示了全面、快速提升CUDA程序效能的途径。从并行机制到CUDA开发环境搭建,从GPU高性能计算相关硬件知识到并行计算和CUDA编程技巧,从核心概念到多个热点技术和高级主题,无所不包。本书侧重于CUDA实践应用,特别在CUDA程序优化上下足了工夫,例如发挥多GPU效力。难能可贵的是,作者结合多年实践经验,精心总结出开发者在使用CUDA过程中易犯的错误和有效的规避方法。
本书亮点:
全面介绍并行机制和CUDA编程,即便没有CUDA编程经验也能够轻松掌握;
细致指导,以帮助读者优化CUDA应用程序;
以实用技术演示如何在并行程序中管理内存、线程、算法和各种资源;
涵盖英伟达硬件上三大操作系统的CUDA开发;
每章附有练习,方便检验读者的掌握程度或为课堂提供讨论要点。
作者简介 · · · · · ·
【作者简介】
Shane Cook CUDA开发者社区技术总监,有20余年行业经验。当认识到异构系统以及CUDA对于已有串行和并行编程技术的革命性冲击时,创立了CUDA开发者社区(欧洲的咨询公司,专门帮助企业重构代码以充分利用GPU硬件的威力)。他专注于高性能软件开发、GPU利用、嵌入式系统,并参与了多个C语言编程标准的建设,包括广泛应用于汽车软件行业的汽车工业软件MISRA Safer C。他常为德国汽车行业、国防承包行业、北电网络以及福特汽车公司等机构或蓝筹股公司提供专业咨询服务和软件定制开发。
【译者简介】
苏统华 博士,英伟达中国首批CUDA官方认证工程师,主要研究领域包括大规模并行计算、模式识别、物联网智能信息处理、智能媒体交互与计算等。2013年,其所开发的CUDA识别算法,在文档分析和识别国际会议(ICDAR’ 2013)上获得手写汉字...
【作者简介】
Shane Cook CUDA开发者社区技术总监,有20余年行业经验。当认识到异构系统以及CUDA对于已有串行和并行编程技术的革命性冲击时,创立了CUDA开发者社区(欧洲的咨询公司,专门帮助企业重构代码以充分利用GPU硬件的威力)。他专注于高性能软件开发、GPU利用、嵌入式系统,并参与了多个C语言编程标准的建设,包括广泛应用于汽车软件行业的汽车工业软件MISRA Safer C。他常为德国汽车行业、国防承包行业、北电网络以及福特汽车公司等机构或蓝筹股公司提供专业咨询服务和软件定制开发。
【译者简介】
苏统华 博士,英伟达中国首批CUDA官方认证工程师,主要研究领域包括大规模并行计算、模式识别、物联网智能信息处理、智能媒体交互与计算等。2013年,其所开发的CUDA识别算法,在文档分析和识别国际会议(ICDAR’ 2013)上获得手写汉字识别竞赛的双料冠军。另外,他在手写汉字识别领域建立了里程碑式的工作,论文他引300余次;他所建立的HIT-MW库,为全世界100多家科研院所采用;目前负责国家自然科学基金项目2项。著有英文专著《Chinese Handwriting Recognition: An Algorithmic Perspective》(德国施普林格出版社),CUDA相关译作2本(机械工业出版社)。现任哈尔滨工业大学软件学院高级讲师、硕士生导师。
【技术审校】
马培军 教授、博士生导师、哈尔滨工业大学软件学院院长。20余年行业经验,实践经验十分丰富。曾游学日本,获日本琦玉大学计算机应用专业硕士和博士学位,并在日本佳能集团工作多年。主要研究方向包括:航天软件工程、智能信息处理与信息融合、图像处理与识别、嵌入式系统仿真等。其主持或参加完成多项国家自然科学基金、国家863项目、国防基础科研和国际合作项目,获省部级二等奖2项,软件著作权3项,申请发明专利2项,在国内外期刊和会议上发表论文100余篇。现任哈尔滨工业大学计算机科学与技术学院航天软件工程研究中心主任、中国宇航学会计算机应用专业委员会委员、日本计算机服务公司IT教育顾问。
【推荐阅读】
GPU高性能编程CUDA实战
高性能CUDA应用设计与开发
并行程序设计导论
并行程序设计原理
大规模并行处理器程序设计(英文版)
目录 · · · · · ·
译者序
前言
第1章 超级计算简史
1.1 简介
1.2 冯·诺依曼计算机架构
1.3 克雷
1.4 连接机
1.5 Cell处理器
1.6 多点计算
1.7 早期的GPGPU编程
1.8 单核解决方案的消亡
1.9 英伟达和CUDA
1.10 GPU硬件
1.11 CUDA的替代选择
1.11.1 OpenCL
1.11.2 DirectCompute
1.11.3 CPU的替代选择
1.11.4 编译指令和库
1.12 本章小结
第2章 使用GPU理解并行计算
2.1 简介
2.2 传统的串行代码
2.3 串行/并行问题
2.4 并发性
2.5 并行处理的类型
2.5.1 基于任务的并行处理
2.5.2 基于数据的并行处理
2.6 弗林分类法
2.7 常用的并行模式
2.7.1 基于循环的模式
2.7.2 派生/汇集模式
2.7.3 分条/分块
2.7.4 分而治之
2.8 本章小结
第3章 CUDA硬件概述
3.1 PC架构
3.2 GPU硬件结构
3.3 CPU与GPU
3.4 GPU计算能力
3.4.1 计算能力1.0
3.4.2 计算能力1.1
3.4.3 计算能力1.2
3.4.4 计算能力1.3
3.4.5 计算能力2.0
3.4.6 计算能力2.1
第4章 CUDA环境搭建
4.1 简介
4.2 在Windows下安装软件开发工具包
4.3 VisualStudio
4.3.1 工程
4.3.2 64位用户
4.3.3 创建工程
4.4 Linux
4.5 Mac
4.6 安装调试器
4.7 编译模型
4.8 错误处理
4.9 本章小结
第5章 线程网格、线程块以及线程
5.1 简介
5.2 线程
5.2.1 问题分解
5.2.2 CPU与GPU的不同
5.2.3 任务执行模式
5.2.4 GPU线程
5.2.5 硬件初窥
5.2.6 CUDA内核
5.3 线程块
5.4 线程网格
5.4.1 跨幅与偏移
5.4.2 X与Y方向的线程索引
5.5 线程束
5.5.1 分支
5.5.2 GPU的利用率
5.6 线程块的调度
5.7 一个实例——统计直方图
5.8 本章小结
第6章 CUDA内存处理
6.1 简介
6.2 高速缓存
6.3 寄存器的用法
6.4 共享内存
6.4.1 使用共享内存排序
6.4.2 基数排序
6.4.3 合并列表
6.4.4 并行合并
6.4.5 并行归约
6.4.6 混合算法
6.4.7 不同GPU上的共享内存
6.4.8 共享内存小结
6.5 常量内存
6.5.1 常量内存高速缓存
6.5.2 常量内存广播机制
6.5.3 运行时进行常量内存更新
6.6 全局内存
6.6.1 记分牌
6.6.2 全局内存排序
6.6.3 样本排序
6.7 纹理内存
6.7.1 纹理缓存
6.7.2 基于硬件的内存获取操作
6.7.3 使用纹理的限制
6.8 本章小结
第7章 CUDA实践之道
7.1 简介
7.2 串行编码与并行编码
7.2.1 CPU与GPU的设计目标
7.2.2 CPU与GPU上的最佳算法对比
7.3 数据集处理
7.4 性能分析
7.5 一个使用AES的示例
7.5.1 算法
7.5.2 AES的串行实现
7.5.3 初始内核函数
7.5.4 内核函数性能
7.5.5 传输性能
7.5.6 单个执行流版本
7.5.7 如何与CPU比较
7.5.8 考虑在其他GPU上运行
7.5.9 使用多个流
7.5.10 AES总结
7.6 本章小结
第8章 多CPU和多GPU解决方案
8.1 简介
8.2 局部性
8.3 多CPU系统
8.4 多GPU系统
8.5 多GPU算法
8.6 按需选用GPU
8.7 单节点系统
8.8 流
8.9 多节点系统
8.10 本章小结
第9章 应用程序性能优化
9.1 策略1:并行/串行在GPU/CPU上的问题分解
9.1.1 分析问题
9.1.2 时间
9.1.3 问题分解
9.1.4 依赖性
9.1.5 数据集大小
9.1.6 分辨率
9.1.7 识别瓶颈
9.1.8 CPU和GPU的任务分组
9.1.9 本节小结
9.2 策略2:内存因素
9.2.1 内存带宽
9.2.2 限制的来源
9.2.3 内存组织
9.2.4 内存访问以计算比率
9.2.5 循环融合和内核融合
9.2.6 共享内存和高速缓存的使用
9.2.7 本节小结
9.3 策略3:传输
9.3.1 锁页内存
9.3.2 零复制内存
9.3.3 带宽限制
9.3.4 GPU计时
9.3.5 重叠GPU传输
9.3.6 本节小结
9.4 策略4:线程使用、计算和分支
9.4.1 线程内存模式
9.4.2 非活动线程
9.4.3 算术运算密度
9.4.4 一些常见的编译器优化
9.4.5 分支
9.4.6 理解底层汇编代码
9.4.7 寄存器的使用
9.4.8 本节小结
9.5 策略5:算法
9.5.1 排序
9.5.2 归约
9.5.3 本节小结
9.6 策略6:资源竞争
9.6.1 识别瓶颈
9.6.2 解析瓶颈
9.6.3 本节小结
9.7 策略7:自调优应用程序
9.7.1 识别硬件
9.7.2 设备的利用
9.7.3 性能采样
9.7.4 本节小结
9.8 本章小结
第10章 函数库和SDK
10.1 简介
10.2 函数库
10.2.1 函数库通用规范
10.2.2 NPP
10.2.3 Thrust
10.2.4 CuRAND
10.2.5 CuBLAS库
10.3 CUDA运算SDK
10.3.1 设备查询
10.3.2 带宽测试
10.3.3 SimpleP2P
10.3.4 asyncAPI和cudaOpenMP
10.3.5 对齐类型
10.4 基于指令的编程
10.5 编写自己的内核
10.6 本章小结
第11章 规划GPU硬件系统
11.1 简介
11.2 CPU处理器
11.3 GPU设备
11.3.1 大容量内存的支持
11.3.2 ECC内存的支持
11.3.3 Tesla计算集群驱动程序
11.3.4 更高双精度数学运算
11.3.5 大内存总线带宽
11.3.6 系统管理中断
11.3.7 状态指示灯
11.4 PCI-E总线
11.5 GeForce板卡
11.6 CPU内存
11.7 风冷
11.8 液冷
11.9 机箱与主板
11.10 大容量存储
11.10.1 主板上的输入/输出接口
11.10.2 专用RAID控制器
11.10.3 HDSL
11.10.4 大容量存储需求
11.10.5 联网
11.11 电源选择
11.12 操作系统
11.12.1 Windows
11.12.2 Linux
11.1 3 本章小结
第12章 常见问题、原因及解决方案
12.1 简介
12.2 CUDA指令错误
12.2.1 CUDA错误处理
12.2.2 内核启动和边界检查
12.2.3 无效的设备操作
12.2.4 volatile限定符
12.2.5 计算能力依赖函数
12.2.6 设备函数、全局函数和主机函数
12.2.7 内核中的流
12.3 并行编程问题
12.3.1 竞争冒险
12.3.2 同步
12.3.3 原子操作
12.4 算法问题
12.4.1 对比测试
12.4.2 内存泄漏
12.4.3 耗时的内核程序
12.5 查找并避免错误
12.5.1 你的GPU程序有多少错误
12.5.2 分而治之
12.5.3 断言和防御型编程
12.5.4 调试级别和打印
12.5.5 版本控制
12.6 为未来的GPU进行开发
12.6.1 开普勒架构
12.6.2 思考
12.7 后续学习资源
12.7.1 介绍
12.7.2 在线课程
12.7.3 教学课程
12.7.4 书籍
12.7.5 英伟达CUDA资格认证
12.8 本章小结
……
· · · · · · (收起)
丛书信息
· · · · · ·
喜欢读"CUDA并行程序设计:GPU编程指南"的人也喜欢 · · · · · ·
- 高性能CUDA应用设计与开发 7.8
- GPU高性能编程CUDA实战 7.9
- 计算机网络 8.6
- OpenCL异构计算 7.5
- C++性能优化指南 7.6
- 计算机图形学与几何造型导论 8.4
- 现代处理器设计 9.5
- 算法分析导论 7.8
CUDA并行程序设计:GPU编程指南的书评 · · · · · · ( 全部 2 条 )
> 更多书评 2篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部2 )
-
Morgan Kaufmann (2012)暂无评分 3人读过
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有172人想读,手里有一本闲着?
订阅关于CUDA并行程序设计:GPU编程指南的评论:
feed: rss 2.0
2 有用 不精分枉少年 2017-02-07 11:40:33
计算机系统底子不好必须得刷一遍CSAPP才能读这本书。而且就算如此,也应该找些其他资料来了解一下GPU。该书对GPU基础的讲解读起来不是很直观。总体而言,全书的亮点和精华还是在于算法。
1 有用 豆友1907570 2017-08-10 22:04:37
挺好的,事无巨细都讲到了,就是有点儿老,基于CUDA4.1,没买的建议买新书
1 有用 候补生ELY 2020-06-03 12:56:57
翻译难理解,讲的多而细,初学者学习gpu建议还是看NVIDIA的官方视频+那本cudy by example,入手了再看这本
1 有用 汪杨 2017-07-25 13:52:30
权威之作,很全面实用
0 有用 Eadren 2018-08-08 15:14:05
翻译的很烂,我看书中序言部分,有学生参与翻译。。这就不得不怀疑,词汇翻译的精准性
0 有用 wang123 2024-03-24 21:39:33 北京
这本书的翻译质量是真的差,语句不通顺就罢了,还有一些术语翻译错误的地方。而且书有点太老了,使用的cuda架构比较古老。
0 有用 轰隆隆盖世群雄 2021-05-10 20:44:01
翻译绝了 各种逻辑错误。
1 有用 候补生ELY 2020-06-03 12:56:57
翻译难理解,讲的多而细,初学者学习gpu建议还是看NVIDIA的官方视频+那本cudy by example,入手了再看这本
1 有用 honpey 2019-09-13 17:08:21
这本书+爱奇艺上Nvidia工程师视频,依稀记得那个学习gpu架构的凌晨,还好结果不错
0 有用 Eadren 2018-08-08 15:14:05
翻译的很烂,我看书中序言部分,有学生参与翻译。。这就不得不怀疑,词汇翻译的精准性