用途:诊断并修复可微分 Warp 程序中的梯度错误。凡是经 Warp 内核训练、优化、校准或拟合的工作流都依赖 wp.Tape 梯度,出现训练发散、NaN、损失停滞、拟合偏差或大规模失败时,应优先怀疑梯度。
主要能力:先缩小复现(减少粒子、步数、迭代,必要时用 CPU),保持内核数量、taping 模式与缓冲复用结构不变;开启 wp.config.verify_autograd_array_access = True 捕获写后读覆盖警告;用 wp.autograd.gradcheck 做端到端有限差分对比,得到误差特征;按特征表排序假设,再用 gradcheck_tape 逐内核定位;最小化修复后用同一 FD 工具复验,并重跑覆盖追踪。
使用方式:需用户脚本可运行可修改,并参考随附 references 文件。注意 Warp 版本,1.17 起多项验证行为有变。修复后必须用原程序本身验证,不能只验证诊断脚本中的重实现。
适用场景:梯度为零、爆炸、NaN/inf、差固定倍数、随步数变差、逐窗口 FD 通过但全窗口失败等。
限制:覆盖追踪需活动 tape,看不到 Warp 结构体内的数组,且禁用内核缓存;gradcheck 不接受结构体输入,旧版不恢复被改数组;gradcheck_tape 对内核间覆盖盲区,并跳过 enable_backward=False 的内核;*=//= 警告仅在 wp.LOG_DEBUG 代码生成时出现;Warp 无内置梯度检查点,长时内存压力需应用层实现,可参考 warp/examples/optim/example_fluid_checkpoint.py。非光滑点 FD 无法裁决有效次梯度。