ai-infra-course

模块2 高级:GPU 内存管理 — 课堂动手题

题目:CPU↔GPU 带宽测试

题目描述

使用 01_dma_bandwidth.py 测量 pageable (malloc) vs pinned (cudaMallocHost) 内存的 CPU↔GPU 传输带宽,验证 pinned memory 的加速效果。

预计时间

5 分钟


Step 1: 运行带宽测试

cd code/
python3 01_dma_bandwidth.py

Step 2: 观察输出

实测环境: 8×H100 80GB HBM3, PCIe Gen5 x16

 Size   Dir    Pageable      Pinned     Ratio
------------------------------------------------
 0.5GB  H2D     17.0 GB/s   54.7 GB/s    3.2x
 1.0GB  H2D     21.3 GB/s   54.8 GB/s    2.6x
 2.0GB  H2D     21.4 GB/s   54.8 GB/s    2.6x
 4.0GB  H2D     21.4 GB/s   54.9 GB/s    2.6x
 0.5GB  D2H     14.6 GB/s   46.8 GB/s    3.2x
 1.0GB  D2H     16.7 GB/s   47.0 GB/s    2.8x

Pinned H2D ~55 GB/s(DMA 直传,86% PCIe 效率),Pageable ~21 GB/s(CPU 页表遍历瓶颈)。D2H 比 H2D 更慢 — CPU 端接收开销更大。

Step 3: 分析结果


讲解要点

1. 为什么 pinned 比 pageable 快?

2. 为什么 pageable 带宽不随 PCIe 升级?

3. Pinned memory 的代价