Day 27 · CUDA 执行模型:kernel、grid、block、warp、stream 与 launch 开销
一个 kernel 是怎么被切成几千个 block 撒到 SM 上跑的,warp 为什么是 32,stream 为什么是有序队列,以及每次 launch 都要付的那笔固定税有多大。把 Day 11 在 timeline 上看到的 gap 追到它的物理来源,顺手给 M5 的 Triton 铺好路。
一个 kernel 是怎么被切成几千个 block 撒到 SM 上跑的,warp 为什么是 32,stream 为什么是有序队列,以及每次 launch 都要付的那笔固定税有多大。把 Day 11 在 timeline 上看到的 gap 追到它的物理来源,顺手给 M5 的 Triton 铺好路。
CPU 把 kernel 扔进队列就往下走,GPU 在后面慢慢干。不加 synchronize,perf_counter 测到的是「派活的时间」,不是「干完活的时间」,能差几个数量级。今天把这件事画成时间线,对比两种正确的计时法,把 Day 7 的计时代码改成以后一年都用的最终版。