带宽CUDA C Best Practices Guide Ch9性能指标理论带宽Theoretical Bandwidth文档用 Tesla V100 举例公式是理论带宽 内存时钟频率(Hz) × 总线位宽(bytes) × 2双倍速率V1000.877×10⁹ × (4096/8) × 2 ÷ 10⁹ 898 GB/s这是硬件物理上限你的 kernel 永远无法超过这个值。有效带宽Effective Bandwidth有效带宽 (读字节数 Br 写字节数 Bw) ÷ 10⁹ ÷ 时间(s)内存利用率 有效带宽 / 理论带宽这个比值是衡量内存优化效果最直接的数字。比值低说明内存访问模式有问题。矩阵乘法有效带宽计算公式对于矩阵运算CA×BC A \times BCA×B其中A∈RM×KA \in \mathbb{R}^{M \times K}A∈RM×K,B∈RK×NB \in \mathbb{R}^{K \times N}B∈RK×N其有效带宽计算如下1. 核心公式BWeffective(M×KK×NM×N)×sizeof(type)109×Time(s)BW_{effective} \frac{(M \times K K \times N M \times N) \times \text{sizeof(type)}}{10^9 \times \text{Time}(s)}BWeffective​109×Time(s)(M×KK×NM×N)×sizeof(type)​2. 参数说明符号含义备注M,K,NM, K, NM,K,N矩阵维度AAA为M×KM \times KM×K,BBB为K×NK \times NK×N,CCC为M×NM \times NM×Nsizeof(type)\text{sizeof(type)}sizeof(type)数据类型大小float为 4 字节,half/FP16为 2 字节Time\text{Time}Time算子执行耗时单位秒 (s)10910^9109单位转换系数将 Byte/s 转换为 GB/s3. 计算示例 (2048×20482048 \times 20482048×2048, Float32)假设MKN2048MKN2048MKN2048数据类型为float32(4 bytes)实测耗时1ms1\text{ms}1ms(0.001s0.001\text{s}0.001s):读取 A B:2048×2048×4×233,554,4322048 \times 2048 \times 4 \times 2 33,554,4322048×2048×4×233,554,432Bytes写入 C:2048×2048×416,777,2162048 \times 2048 \times 4 16,777,2162048×2048×416,777,216Bytes总访存量:50,331,64850,331,64850,331,648Bytes (≈50.3\approx 50.3≈50.3MB)代入公式BWeffective50,331,648109×0.00150.33 GB/sBW_{effective} \frac{50,331,648}{10^9 \times 0.001} 50.33 \text{ GB/s}BWeffective​109×0.00150,331,648​50.33GB/s注意矩阵乘法的理论计算强度极高O(N)O(N)O(N)级别因此其性能通常受限于GFLOPS计算受限而非带宽。在 A100/H100 等卡上GEMM 的有效带宽通常远低于显卡的理论峰值带宽。GFLOPSGFLOPS(Giga Floating Point Operations Per Second)例如矩阵乘法 C A × B其中 A 是 M×KB 是 K×NC 的每个元素需要 K 次乘法 K 次加法 2K 次浮点运算C 共有 M×N 个元素总浮点运算量 2 × M × N × K 次GFLOPS 浮点运算次数 / 时间(s) / 1e9带宽利用率和OPS对比维度有效带宽 (Bandwidth)GFLOPS全称Effective BandwidthGiga Floating-point Operations Per Second衡量目标内存/显存的吞吐能力计算核心 (ALU/CUDA Core)的吞吐能力单位GB/s (每秒十亿字节)GFLOPS (每秒十亿次浮点运算)关注点数据搬运的速度物流数据加工的速度生产性能瓶颈访存受限 (Memory Bound)计算受限 (Compute Bound)典型算子Matrix Copy, ReLU, Element-wise AddMatrix Multiplication (GEMM), Convolution优化核心减少合并访存、提升缓存命中率提高运算单元利用率、利用 Tensor Core核心逻辑如果你的算法主要是“搬运工”如Matrix Copy请盯着有效带宽看。如果你的算法主要是“加工厂”如GEMM请盯着GFLOPS看。性能评价的金标准Roofline Model (顶峰模型)todo