90 分钟 42 页 PPT 2 个 C 程序 3 个可视化 HTML
03-gpu-virtualization/
├── README.md
├── syllabus.md / ppt-outline.md / hands-on-exercise.md / homework.md / lab-environment.md
├── code/
│ ├── README.md
│ ├── 01_mymalloc.c # LD_PRELOAD malloc hook 库 (PPT 第 12 + 33 页)
│ └── 02_test_malloc.c # 配额测试程序
└── visuals/
├── ld-preload-flow.html # LD_PRELOAD 拦截流程 6 步动画
├── cuda-stack.html # CUDA 软件栈 — 一次 cudaMalloc 穿越 5 层
└── gpu-sharing-comparison.html # 四种方案对比 — MIG/Time-Slicing/HAMi/MPS
| 可视化 | 用途 | 教学场景 |
|---|---|---|
| LD_PRELOAD 拦截原理可视化 | LD_PRELOAD 拦截流程 6 步动画 | 讲解 HAMi CUDA 拦截机制时打开,点击逐步查看拦截原理 |
| CUDA 软件栈 — 一次 cudaMalloc 调用穿越 5 层 | CUDA 软件栈 5 层架构 + HAMi 拦截点 | 讲解 CUDA 分层架构时打开,追踪一次 cudaMalloc 全路径 |
| GPU 虚拟化方案对比 | 四种方案 — MIG·Time-Slicing·HAMi·MPS | 讲解 GPU 虚拟化方案选型时打开,对比隔离级别与灵活性 |
| 阶段 | 时长 | PPT 页 | 动手 |
|---|---|---|---|
| GPU 虚拟化方案概览 | 20 min | 3-10 | — |
| HAMi CUDA 拦截机制 | 30 min | 11-26 | 第 12 页: LD_PRELOAD malloc hook / 第 33 页: 配额测试 |
| GPU 容器化 Runtime | 20 min | 27-35 | — |
| 动手实验与总结 | 20 min | 36-42 | — |
LD_PRELOAD malloc hook — 用 60 行 C 代码演示 HAMi 的核心原理:
gcc -shared -fPIC 01_mymalloc.c -o libmymalloc.so -ldl
LD_PRELOAD=./libmymalloc.so ls # 每次 malloc 都会被拦截
LD_PRELOAD=./libmymalloc.so ./test_malloc # 配额=100MB,超限拒绝