本课程旨在系统培养具备GPU并行计算能力的专业人才,使学员掌握从GPU架构原理到高性能算法实现的完整技能栈。课程融合理论讲解与动手实践,通过完全配置的云端GPU实验环境,让学员在真实的开发场景中学习CUDA编程、性能优化和并行算法设计。课程内容涵盖GPU硬件架构、CUDA编程模型、内存层次结构、并行算法模式、性能分析工具及多GPU编程等核心模块,帮助学员将现有的CPU应用程序迁移到GPU平台,获得显著的性能加速。
理解GPU硬件架构与并行计算模型,掌握线程层次结构与执行模型
掌握CUDA编程语言(C++/Python)的核心语法与编程模型
能够编写、编译和调试基本的GPU加速程序
熟练运用CUDA库(cuBLAS、cuFFT等)加速常见计算任务
掌握内存优化技术,包括全局内存合并访问、共享内存使用
学会使用Nsight Systems等性能分析工具识别和消除性能瓶颈
理解并发CUDA流和异步执行机制,实现计算与数据传输重叠
掌握多GPU编程基础和分布式并行计算初步
具备将实际应用移植到GPU平台的工程能力
通过课程考核获得NVIDIA DLI官方培训证书
软件开发工程师、高性能计算工程师、算法工程师
希望将应用迁移到GPU平台的科研人员和程序员
对并行计算和GPU编程感兴趣的学生和研究人员
需要利用GPU加速AI/数据分析工作流的数据科学家
企业技术团队中希望提升加速计算能力的骨干成员
预备知识:
基本的C/C++或Python编程能力,熟悉变量、循环、函数和数组操作
了解NumPy使用(针对Python课程)
Linux基本命令行操作经验
无需前期CUDA编程经验
GPU加速计算概述:从图形处理到通用计算的发展历程
GPU硬件架构:流多处理器、CUDA核心、内存层次结构
CPU与GPU的异构计算模型:主机与设备、数据传输
并行计算基础:数据并行、任务并行、加速比与阿姆达尔定律
CUDA编程模型概述:内核函数、线程层次、执行配置
动手实验:第一个CUDA程序(向量加法)
CUDA开发环境搭建:编译器、工具链、云端实验环境配置
内核函数编写与启动:__global__声明、执行配置语法
线程层次结构:网格、线程块、线程的索引计算
内置变量:threadIdx、blockIdx、blockDim、gridDim
主机与设备内存管理:cudaMalloc、cudaMemcpy、cudaFree
错误处理机制:检查CUDA运行时错误
矩阵乘法实现(基础版):理解线程到数据的映射
动手实验:实现矩阵乘法的GPU版本
Numba CUDA简介:Python中的GPU编程
@cuda.jit装饰器与内核函数编写
使用几行代码加速NumPy ufuncs
CUDA Python中的线程层次配置
动手实验:加速线性代数程序的Python实现
CUDA内存层次结构:全局内存、共享内存、寄存器、本地内存
全局内存合并访问:内存事务合并原理与实践
共享内存应用:线程块内数据共享、存储体冲突避免
常量内存与纹理内存:只读数据的优化存储
内存分配策略:固定内存、零拷贝内存、统一内存
动手实验:利用共享内存优化矩阵乘法
动手实验:内存访问模式分析及优化
并行规约算法:树形规约、线程发散优化
并行扫描(前缀和)算法:Kogge-Stone与Brent-Kung
并行排序:基数排序、双调排序
直方图计算:原子操作与共享内存原子
并行模式库:CUB原语使用
动手实验:实现高性能并行规约
cuBLAS线性代数库:矩阵运算加速
cuFFT快速傅里叶变换库
cuRAND随机数生成库
Thrust模板库:STL风格的GPU算法
cuSPARSE稀疏矩阵运算库
动手实验:使用cuBLAS加速矩阵运算
NVIDIA Nsight Systems:系统级性能分析
NVIDIA Nsight Compute:内核级性能剖析
性能瓶颈识别:计算边界、内存边界、延迟隐藏
CUDA事件API:精确计时方法
调试工具:cuda-gdb、计算错误检查
动手实验:使用Nsight分析优化CUDA代码
CUDA流概念:默认流与非默认流
数据传输与内核执行重叠:双缓冲技术
流优先级与流回调
事件同步与依赖管理
多流并发:最大化GPU利用率
动手实验:实现计算与传输重叠
多GPU系统架构:PCIe、NVLink、NVSwitch
多GPU编程模型:设备选择、点对点访问
基于MPI的多GPU编程
NCCL通信库:多GPU集体通信
NVSHMEM共享内存编程模型
动手实验:多GPU矩阵乘法实现
项目选题:从CPU应用移植到GPU平台
性能目标设定与基准测试
并行化策略设计与实现
迭代优化:内存访问优化、流并发、库替换
最终性能评估与报告编写
项目展示与评审