用途:当使用 NVIDIA Warp 的代码出现编译时间或启动时间过长时,用该技能定位并减少编译开销。核心思路是 Warp 按模块(而非单个 kernel)编译,模块身份由活跃 kernel 与函数集合、模块选项、CUDA block_dim、泛型实例共同决定,冷启动成本约等于触及的不同模块身份数量乘以每个模块的规模。
主要能力:提供 scripts/warp_compile_probe.py 探针,用 measure 子命令在隔离子进程中测量冷/热编译与启动,例如 python scripts/warp_compile_probe.py measure --samples 3 --json baseline.json -- <命令>;再用 compare 对比基线与候选结果。探针为每个样本创建私有 WARP_CACHE_PATH、WARP_CACHE_ROOT、CUDA_CACHE_PATH,并记录模块身份、哈希、设备、块维度及重复构建情况。
使用方式:先测量真实等待的命令并确认瓶颈确为编译;再依据探针输出诊断,如一个模块名多个哈希(身份抖动)、多个 block_dim(整模块重复编译)、每 kernel 一个哈希模块等。修复手段包括在模块创建或首次加载前设置选项、按生命周期与选项集划分模块边界、减少源码重复,必要时重叠独立 CUDA 构建。修改选项后需确认模块哈希变化。
适用场景:Warp 应用的冷启动优化、编辑-运行循环加速、库与测试的编译开销分析。
限制:每个冷样本必须隔离 Warp 与 CUDA 缓存;当加载可能指向 CPU(含 device=None 与混合设备列表)时须保持 max_workers <= 1,否则并发 CPU 首次加载可能丢失 kernel。测量结果依赖 CPU、GPU、驱动、工具链与 Warp 版本,机制可迁移但数值不可迁移。不得为声称收益而删除或合并 kernel,需保留启动顺序、维度、dtype、设备、梯度、数值模式与公开 API。具体收益数值与更多机制细节暂未提供。