什么是异构计算
CPU与GPU架构差异
为什么需要异构计算
应用场景
NVIDIA架构演进
流多处理器SM
CUDA核心
内存层次结构
Warp与线程束
NVIDIA驱动安装
CUDA Toolkit安装
cuDNN配置
VS/Nsight配置
验证安装
主机与设备
Kernel函数
线程层次结构
Hello World实战
cudaMalloc
cudaMemcpy
cudaFree
统一内存
内存分配最佳实践
一维/二维/三维索引
线程块大小选择
Occupancy优化
并行归约原理
树形归约实现
Warp Shuffle优化
避免Bank Conflict
__shared__关键字
__syncthreads()
共享内存布局
动态共享内存分配
__constant__使用场景
纹理内存缓存特性
只读缓存__ldg
CUDA流概念
默认流与非默认流
流同步
多流并发执行
重叠计算与数据传输
cudaEvent_t创建/销毁
cudaEventRecord
cudaEventSynchronize
计算带宽与FLOPS
cudaError_t
cudaGetLastError
cudaPeekAtLastError
错误检查宏封装
调试技巧
Nsight Systems时间线
Nsight Compute内核分析
Occupancy分析
瓶颈定位
朴素矩阵乘法
全局内存合并访问
Tiling分块策略
共享内存优化
Bank Conflict消除
向量化加载int4/float4
双缓冲技术
寄存器优化
im2col算法
直接卷积实现
共享内存卷积优化
Winograd算法简介
cuBLAS句柄创建
cublasSgemm/Dgemm
与自定义Kernel对比
最佳实践
cuFFT计划创建
一维/二维FFT
批量FFT
cuFFT回调函数
Thrust向量与迭代器
sort/reduce/transform
与原始CUDA互操作
性能对比
cudaSetDevice
多GPU数据传输
点对点通信P2P
多GPU归约
CPU多线程+GPU加速
任务划分策略
数据依赖处理
实战案例
MPI初始化
分布式GPU通信
NCCL库简介
多节点大规模训练
CUDA Graph概念
图捕获与实例化
图更新
图执行性能优势
动态并行机制
嵌套Kernel启动
递归Kernel
使用场景与限制
Tensor Core架构
WMMA API使用
混合精度训练FP16/BF16
cuBLASLt
atomicAdd/atomicCAS
全局内存原子操作
共享内存原子操作
锁自由编程
__shfl_sync
__ballot_sync
__match_all_sync
Warp级归约
合并访问原则
对齐要求
L1/L2缓存利用
只读缓存
预取指令
稀疏矩阵存储CSR/COO
稀疏矩阵向量乘法SpMV
cuSPARSE库
图像读取与预处理
GPU加速滤波
边缘检测
性能调优与部署