VIP20
本课程属于:013-GPU调度 AI算力与GPU工程 · 共 20 门相关课程,组合学习更完整。
查看所属VIP全部课程 →
← 返回所属目录 咨询 / 购买

CUDA显存管理实战课

📚 共计 30 章节
01
CUDA内存模型全景
全局内存、共享内存、寄存器、本地内存、常量内存、纹理内存的层级结构与访问延迟对比。
层级延迟
02
cudaMalloc与cudaFree
显存分配与释放的最佳实践,避免内存泄漏与碎片化。
分配释放
03
cudaMemcpy详解
同步与异步传输、HostToDevice、DeviceToHost、DeviceToDevice模式。
传输异步
04
统一内存(Unified Memory)
cudaMallocManaged的使用、页面错误与迁移机制、性能陷阱。
统一内存页面错误
05
流(Stream)与并发
创建流、多流并发执行、流同步、默认流与阻塞行为。
并发同步
06
事件(Event)与计时
cudaEventCreate、cudaEventRecord、cudaEventSynchronize,精确测量内核执行时间。
计时性能
07
固定内存(Pinned Memory)
cudaHostAlloc的使用、DMA传输加速、过度使用导致系统性能下降。
固定内存DMA
08
零拷贝内存(Zero-Copy Memory)
cudaHostAllocMapped映射、适用于集成GPU与离散GPU的场景。
零拷贝映射
09
共享内存(Shared Memory)基础
__shared__声明、静态分配、bank conflict的成因与避免。
共享内存bank冲突
10
共享内存动态分配
extern __shared__、通过内核参数指定大小、灵活应对不同数据规模。
动态分配灵活
11
共享内存与同步
__syncthreads()、线程块内同步、死锁风险与volatile关键字。
同步死锁
12
寄存器优化
寄存器溢出(register spilling)的检测、使用__launch_bounds__限制线程数。
寄存器溢出
13
常量内存(Constant Memory)
__constant__声明、cudaMemcpyToSymbol、只读缓存加速。
常量内存只读
14
纹理内存(Texture Memory)
纹理对象创建、纹理拾取(tex1D/tex2D)、适用于空间局部性访问。
纹理局部性
15
内存合并访问(Memory Coalescing)
全局内存合并条件、对齐与步长对带宽的影响。
合并访问带宽
16
内存对齐(Memory Alignment)
cudaMalloc返回地址对齐、结构体对齐与填充(padding)。
对齐填充
17
内存池(Memory Pool)
cudaMemPoolCreate、池化管理显存、减少分配开销。
内存池池化
18
显存泄漏检测
cuda-memcheck、compute-sanitizer工具使用、常见泄漏模式。
泄漏检测工具
19
显存带宽测试
编写带宽测试内核、使用nvprof/Nsight Compute分析实际带宽。
带宽分析
20
双缓冲(Double Buffering)
使用两个缓冲区重叠数据传输与计算,隐藏延迟。
双缓冲隐藏延迟
21
分页锁定内存与流结合
使用cudaStreamAttachMemAsync优化统一内存传输。
分页锁定流
22
多GPU显存管理
cudaSetDevice、点对点(P2P)访问、cudaMemcpyPeer。
多GPUP2P
23
显存碎片化
碎片产生原因、使用cudaMallocAsync与流序分配缓解碎片。
碎片化流序分配
24
CUDA图形互操作(CUDA-GL Interop)
cudaGraphicsGLRegisterBuffer、共享显存与渲染。
图形互操作渲染
25
CUDA与CUDA Graph
捕获内核与内存操作序列、图重放减少启动开销。
CUDA Graph启动开销
26
MPS(Multi-Process Service)
多进程共享GPU上下文、显存隔离与性能提升。
MPS多进程
27
NCCL中的显存管理
NCCL通信缓冲区分配、环形/树形算法对显存的需求。
NCCL通信
28
显存错误处理
cudaError_t检查、out of memory恢复策略、优雅降级。
错误处理OOM
29
显存性能分析工具
Nsight Systems内存轨迹、nvidia-smi监控、可视化显存使用。
分析工具可视化
30
综合实战:矩阵乘法优化
从全局内存到共享内存分块,再到流水线隐藏延迟。
实战矩阵乘法