搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
CUDA并行编程与性能优化
0.00     定价 ¥ 119.00
图书来源: 浙江图书馆(由浙江新华配书)
此书还可采购15本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787302691396
  • 作      者:
    作者:徐佳宁|责编:王金柱
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2025-06-01
收藏
畅销推荐
内容介绍
本书采用“原理剖析—代码实现—性能调优”的教学设计,通过大量经过验证的代码实例与典型工程案例,帮助读者深入理解并掌握CUDA编程技术。本书分为3部分12章,第1部分介绍CUDA的基本原理与编程模型,涵盖GPU硬件架构、线程模型、内存管理等基础内容,并提供开发环境配置与性能优化的方法,帮助读者快速上手CUDA编程。第2部分介绍高级并行编程技术,深入讲解共享内存优化、线程同步、原子操作等性能调优技巧,并通过案例演示如何提升程序效率。第3部分介绍多GPU协同计算和分布式并行任务的解决方案,通过分子动力学案例演示CUDA在实际科学计算中的应用实践。 本书适用于希望快速上手GPU编程的初学者和开发人员,亦可作为高校开设CUDA编程和并行计算课程的教学用书或参考书。
展开
目录
绪论
一、NVIDIA与GPU的崛起:驱动计算革新的核心力量
二、并行编程的意义:从串行计算到高性能计算的转型
三、CUDA的诞生与发展:统一架构下的并行计算
第1部分 CUDA基础理论与优化方法
第1章 GPU硬件架构与CUDA开发环境配置
1.1 CUDA设备架构详解:流式多处理器、Warp机制与寄存器
1.1.1 SM的线程调度单元与计算核心分析
1.1.2 Warp与线程的并行执行模式与分支处理机制
1.1.3 寄存器分配与线程数的关系对性能的影响
1.1.4 初步演练:基于CUDA的核函数设计
1.2 CUDA工具链剖析:nvcc编译器、CUDA运行时与驱动程序的差异
1.2.1 nvcc编译器的优化选项与目标代码生成分析
1.2.2 CUDA运行时API与驱动API的调用流程与性能对比
1.2.3 不同CUDA版本的驱动兼容性与迁移
1.3 多平台开发环境配置:Windows、Linux与容器化环境的安装与调试
1.3.1 Windows与Linux平台CUDA开发环境的配置与常见问题
1.3.2 使用容器化工具(如Docker)搭建跨平台CUDA开发环境
1.4 使用nvidia-smi进行GPU监控与设置:设备状态查询、温度与功耗优化
1.4.1 查询GPU内存占用、温度与功耗的实时状态信息
1.4.2 动态调整GPU的性能状态与功耗限制
1.4.3 利用脚本自动化监控与批量配置多GPU设备
1.5 本章小结
1.6 思考题
第2章 线程与网格组织
2.1 CUDA线程模型:线程、线程块与网格的硬件绑定
2.1.1 线程块与SM映射关系对并行计算的影响
2.1.2 CUDA线程的生命周期与线程分组的硬件依赖
2.2 多维网格设计:线程索引计算与数据映射案例(矩阵乘法)
2.2.1 多维线程网格的设计方法与索引计算逻辑
2.2.2 基于二维和三维网格的矩阵乘法性能优化
2.3 线程块大小的选择与资源分配:共享内存与寄存器利用率的平衡
2.3.1 如何根据GPU硬件限制选择线程块大小
2.3.2 分析寄存器与共享内存对线程块大小的影响
2.4 动态并行实现:在核函数中启动新的网格
2.4.1 动态并行API调用的性能分析与应用场景
2.4.2 动态网格嵌套的调度与资源分配优化
2.5 Warp机制深度详解与分支发散优化
2.5.1 Warp分支发散的检测与分支规约技术
2.5.2 使用Warp Shuffle指令优化线程间数据交换
2.6 本章小结
2.7 思考题
第3章 内存管理与优化
3.1 CUDA内存层级剖析:全局内存、共享内存、寄存器与局部内存的特性
3.1.1 全局内存与共享内存的访问特性与延迟分析
3.1.2 寄存器分配与局部内存溢出对性能的影响
3.2 全局内存合并访问:矩阵转置性能优化
3.2.1 访存对齐与内存带宽利用率优化技术
3.2.2 基于合并访问的全局内存访问优化案例
3.3 共享内存动态分配:数组归约计算优化实现
3.3.1 动态共享内存分配的机制与对线程块的影响
3.3.2 使用共享内存实现高效归约计算的步骤与优化
3.4 L1、L2缓存行为优化:减少内存访问延迟
3.4.1 缓存配置选项与性能优化
3.4.2 使用缓存命中率分析工具评估访存效率
3.5 本章小结
3.6 思考题
第4章 CUDA程序的框架与数据传输
4.1 核函数设计与线程调度:基于线程索引的数据分片处理
4.1.1 使用线程索引分配数据块与循环展开优化
4.1.2 核函数内存带宽与线程调度的优化实例
4.2 主机与设备之间的数据传输优化:锁页内存与异步传输
4.2.1 使用锁页内存减少数据传输开销的方法
4.2.2 异步数据传输的实现与核函数执行的重叠
4.3 内存分配与释放:Unified Memory、cudaMallocManaged与cudaMemcpy的对比
4.3.1 Unified Memory与传统显式内存分配的对比案例
4.3.2 使用cudaMallocManaged实现跨设备数据共享
4.4 本章小结
4.5 思考题
第5章 常见错误检测与调试工具
5.1 利用CUDA运行时API检测错误:宏定义实现通用错误处理
5.1.1 常见CUDA错误代码及其含义与处理方法
5.1.2 基于宏函数的通用错误检测与日志记录实现
5.2 CUDA-MEMCHECK的使用:定位内存溢出与数据竞争问题
5.2.1 使用CUDA-MEMCHECK工具检测内存越界访问与未初始化变量
5.2.2 数据竞争检测与消除方法的实际案例
5.3 核函数中的线程调试:Warp分支发散的识别与优化
5.3.1 使用printf调试核函数中的线程执行路径
5.3.2 使用Nsight工具分析分支发散和Warp效率
5.4 使用Nsight调试工具分析性能瓶颈
5.4.1 Nsight Compute的热点分析与性能优化步骤
5.4.2 使用Nsight Systems分析异步任务与流的重叠执行
5.4.3 案例:综合使用调试与分析工具优化CUDA程序
5.5 本章小结
5.6
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证