📘 CUDA · TensorRT
内存管理 & 整合实战
🔥 30章
⚡ 性能调优
🧩 端到端案例
01
CUDA内存模型全景:全局内存、共享内存、寄存器、本地内存、常量内存、纹理内存的层次结构与访问延迟对比。
↗
02
全局内存访问优化:合并访问(Coalesced Access)原理、对齐要求、内存事务大小对带宽的影响。
↗
03
共享内存详解:Bank Conflict的产生机制、解决策略、动态与静态共享内存分配。
↗
04
寄存器与本地内存:寄存器溢出(Register Spilling)的检测与避免、本地内存的陷阱。
↗
05
常量内存与纹理内存:常量内存的广播机制、纹理内存的缓存特性与适用场景。
↗
06
CUDA流(Stream)与并发执行:流的概念、默认流与非默认流、流同步、流回调。
↗
07
异步内存传输:cudaMemcpyAsync的使用、双缓冲(Double Buffering)技术、计算与传输重叠。
↗
08
统一内存(Unified Memory):UM的页错误机制、内存迁移优化、cudaMallocManaged的注意事项。
↗
09
内存池(Memory Pool):cudaMemPool的创建与管理、池化分配的优势、多流共享内存池。
↗
10
CUDA事件(Event)与性能测量:事件创建与销毁、时间测量、流内与流间事件同步。
↗
11
CUDA Graph:图捕获与重放、静态图优化、动态图与内存管理的结合。
↗
12
NVIDIA Nsight Systems性能分析:时间线视图、内存操作追踪、带宽瓶颈定位。
↗
13
NVIDIA Nsight Compute性能分析:Kernel分析、内存指令统计、Roofline模型应用。
↗
14
TensorRT概述:TensorRT的定位、推理优化原理(层融合、精度校准、内核自动调优)。
↗
15
TensorRT模型构建:从ONNX导出、使用Python API构建网络、网络层配置。
↗
16
TensorRT Builder配置:工作空间(Workspace)设置、精度模式(FP32/FP16/INT8)、动态形状(Dynamic Shapes)。
↗
17
TensorRT Engine序列化与反序列化:Engine的保存与加载、跨平台部署的注意事项。
↗
18
TensorRT Runtime推理:Context创建、输入输出绑定、异步推理接口。
↗
19
TensorRT INT8量化:校准集准备、校准器(Calibrator)实现、量化敏感层分析。
↗
20
TensorRT动态形状处理:优化配置文件(Optimization Profile)、形状张量(Shape Tensor)的使用。
↗
21
TensorRT插件(Plugin)开发:自定义层的实现、插件注册与序列化、与CUDA内核的集成。
↗
22
TensorRT与CUDA流整合:多流推理、流优先级设置、避免流同步开销。
↗
23
TensorRT内存管理策略:IExecutionContext中的内部内存、输入输出张量内存的分配与复用。
↗
24
TensorRT与统一内存结合:UM在TensorRT中的使用限制、显存不足时的降级策略。
↗
25
TensorRT多上下文(Multi-Context)管理:多模型并行推理、上下文切换开销优化。
↗
26
TensorRT与NCCL整合:多GPU推理、集合通信原语、数据并行与模型并行。
↗
27
TensorRT性能调优:使用trtexec工具、自动调优参数、Benchmark结果分析。
↗
28
TensorRT与深度学习框架整合:PyTorch-TensorRT集成、TF-TRT集成、ONNX Runtime-TensorRT。
↗
29
端到端案例:BERT模型部署:从PyTorch导出ONNX、TensorRT优化、内存与延迟优化实战。
↗
30
端到端案例:YOLOv8模型部署:预处理与后处理CUDA内核编写、TensorRT推理管线、内存复用策略。
↗