一句话定位

Warp 是 NVIDIA(主创 Miles Macklin)在 GTC Digital Spring 2022(2022-03)公开发布的开源 Python 框架:把普通 Python 函数 JIT 编译成 CUDA kernel(GPU)或原生 C++(CPU/x86)代码,同时能生成反向模式伴随(adjoint)kernel 做可微分仿真,让开发者用 Python 的生产力写出接近手写 CUDA/C++ 性能的物理仿真、机器人与图形学程序。它不是训练出来的模型,而是**仿真基础设施(sim-infra)**的编译器+运行时层,是 newton-physics-engine、NVIDIA Isaac 系列以及大量学术界自定义并行机器人仿真器的底层计算基座。

背景与定位

2020 年代初,机器人 / 具身智能训练面临的核心瓶颈是仿真吞吐与 sim-to-real 差距:真机采数据代价高、有风险;而传统 CPU 物理引擎(如经典 MuJoCo/Bullet)并行度低,喂不满大规模强化学习所需的并行环境数。同时期 PyTorch/JAX 这类张量编程框架虽然好写微分,但仿真代码里常见的稀疏 scatter/gather、分支逻辑、逐粒子/逐接触点操作,用张量算子表达效率低、代码别扭。Warp 的定位正是填补这道”Python 生产力 vs. CUDA 性能”的空隙:像 difftaichi(Taichi 的可微分编程分支,2019)一样采用”Python 写 kernel、编译到 GPU、内置自动微分”的编程模型,但 Warp 是 NVIDIA 自家的实现,深度绑定 CUDA 生态与 Omniverse。

按 Macklin 在 GTC 2022 报告摘要中的原话,Warp 的目标应用有三类:为 Omniverse/视觉特效构建实时仿真器、为机器学习流水线(PyTorch/JAX 训练、设计优化、参数估计)构建可微分仿真器、以及几何/图形学处理(光线投射、mesh 查询等)。Warp 早于其 2022 年公开发布已在 NVIDIA 内部使用——PUBLICATIONS.md 记录的最早一篇引用文献 DiSECt(Heiden, Macklin 等, 2021-05)即由 Warp 作者合著,说明它先作内部工具打磨,再开源。此后 Warp 成为 NVIDIA 仿真栈的通用计算层:2025 年 NVIDIA + Google DeepMind + Disney Research 联合发布的 newton-physics-engine 明确”扩展并接管”了 Warp 内置的 warp.sim 模块(该模块现已弃用,能力迁入 Newton);NVIDIA Isaac Lab(isaac-lab-orbit)、Isaac Gym(isaac-gym)等机器人学习框架,以及 genesis-physics-enginemujoco-playground 等同期/后续仿真系统,均与 Warp 所在的”GPU 原生 + 可微分”路线同属一个技术谱系。

模型架构

Warp 不含神经网络权重;其”架构”是编译器 + kernel 语言 + 运行时库的软件栈。以下按官方现版本文档(Warp 1.15.0,2026-07-16 抓取)与 2022 发布态(CHANGELOG v0.1.2x 系列、GTC 2022 摘要)分别标注,避免把后续版本的能力误算作 2022 首发内容。

核心执行模型:用户写普通 Python 函数并加 @wp.kernel 装饰器;Warp 的编译器解析该函数的 Python AST,做 source-to-source 转译,生成 CUDA C++(GPU 路径)或原生 C++(CPU/x86 路径)代码,再分别用 NVRTC / 主机编译器编译为可执行 kernel 并缓存到磁盘(CHANGELOG 0.1.3 提到”improve kernel cache start up times”)。wp.launch(kernel, dim=N, inputs=[...]) 把 kernel 派发到 N 维线程网格上执行,kernel 内用 wp.tid() 取当前线程索引——与手写 CUDA 相同的 SIMT / 逐元素一线程编程模型,但用 Python 书写。

可微分编程:对每个前向 kernel,Warp 可额外生成反向模式(adjoint)kernel(源码变换式自动微分,而非基于 tape 的追踪式),配合 wp.Tape() 记录多 kernel 组成的可微分流水线,把梯度回传进 PyTorch/JAX 的训练循环(warp.autograd 模块),用于设计优化、控制器/物理参数的基于梯度学习、系统辨识。

Tile-based programming(后续版本加入,非 2022 首发):一组线程协作在共享内存的数据 tile 上做运算,使 kernel 能调用 Tensor Core 做矩阵乘法/傅里叶变换(wp.tile_* 系列 API),并显式控制数据在 global/shared/register 内存间的搬运。

内置几何/空间数据结构:GPU 稠密/稀疏数组(wp.array);带 BVH 加速查询的三角网格(raycast、最近点、AABB 查询);基于 NanoVDB 的稀疏体素(wp.Volume,2022-03-03 的 v0.1.24 加入);空间哈希网格做近邻查询与基于 PCG 的伪随机数生成器(均为 v0.1.21,2022-01-19 加入);程序化噪声 wp.noise/pnoise/curlnoise(v0.1.23,2022-02-17 加入)。

warp.sim(2022 年模块,现已弃用并入 Newton):由 Warp kernel 搭建的内置物理求解器——支持刚体关节(含 universal/compound 关节类型)、DEM 颗粒材料、变分欧拉积分器 + 带接触缓存的非线性摩擦模型;Macklin 的 GTC 摘要称可用”几百行 Python”搭出布料、FEM、刚体的可微分仿真器。

稀疏线性代数(wp.sparse,后续版本加入):BSR/CSR 稀疏矩阵格式,配合预条件共轭梯度(CG)、GMRES 等 GPU 迭代求解器。

FEM 工具箱(wp.fem,后续版本加入):定义域上的积分、组装稀疏线性系统、支持多种网格类型与高阶函数空间,用于扩散、弹性、流体流动等偏微分方程的自定义离散化。

互操作性:与 PyTorch 的零拷贝互操作通过 __cuda_array_interface__ 协议实现(v0.1.24,2022-03-03 加入);现版本另支持 DLPack、NumPy、CuPy/Numba、JAX、Paddle。

CUDA Graph 支持wp.capture_begin/end/launch() 录制并重放整段仿真步的 CUDA graph 以降低调度开销(v0.1.2,2021-06-03 加入),并支持对 Tape 前向/反向传播的 graph capture(v0.1.25,2022-03-20)。

配置数字(一手披露):现版本要求 Python 3.10+;2022-03-20 发布的 v0.1.25 新增对 Python 3.8.x / 3.9.x 的支持;2022-03-03 的 v0.1.24 升级到 CUDA 11.3;运行平台覆盖 Windows/Linux(x86-64、ARMv8)与 macOS(仅 Apple Silicon CPU 路径);GPU 需 CUDA-capable 且驱动版本满足最低要求(README 原话:“minimum GeForce GTX 9xx”,即 Maxwell 架构起);许可证 Apache-2.0。

数据

Warp 是编译器 + 运行时框架,不是训练出来的模型,没有训练语料/权重这个维度。与”数据”最接近的对应物:

  • 示例场景库:当前仓库 warp/examples 按四个子目录组织共 32 个示例脚本(README/文档快照,2026-07-16)——core(13 个:dem、fluid、graph_capture、marching_cubes、mesh、nvdb、raycast、raymarch、sample_mesh、sph、torch、wave、fft_poisson_navier_stokes_2d)、fem(12 个:diffusion_3d、mixed_elasticity、apic_fluid、streamlines、distortion_energy、taylor_green、kelvin_helmholtz、magnetostatics、adaptive_grid、nonconforming_contact、darcy_ls_optimization、elastic_shape_optimization)、optim(4 个:diffray、fluid_checkpoint、particle_repulsion、navier_stokes_perturbation)、tile(3 个:tile_mlp、tile_nbody、tile_mcgp)。这些是覆盖仿真/几何/优化/tile 编程的演示脚本,不是训练数据集。
  • 无 sim-vs-real、无动作标注、无 co-training 语料:这些概念不适用于本工作——数据维度对 Warp 而言是空。

训练方法

Warp 本身不训练模型;对应”方法”的是它的代码生成(code-gen)与自动微分流水线

  • JIT 编译流水线:Python 函数 AST → Warp 内部类型系统/IR → 生成 CUDA C++(GPU)或 C++(CPU)源码 → 用 NVRTC(GPU)或主机编译器(CPU)编译 → 磁盘缓存已编译 kernel,供后续调用复用。
  • 自动微分:为每个前向 kernel 并行生成反向模式源码变换式 adjoint kernel(不是运行时追踪),通过 wp.Tape() 组合多 kernel 的前向/反向序列,实现跨多个 kernel 调用的端到端梯度传播;可配合 CUDA graph capture(v0.1.25 起)把整段 tape 的前向+反向录制为一次可重放的 graph,降低重复调用的 launch 开销。
  • 关键超参:不适用(这是编译器/运行时,无损失函数或学习率等训练超参)。

Infra(训练 / 推理工程)

Warp 本身不是被训练出来的模型,没有”GPU 数量 / GPU-hours”这类训练算力概念;以下是其运行时对硬件/软件的一手披露要求:

  • 硬件要求:CUDA-capable NVIDIA GPU,驱动需满足最低版本(README 原话 “minimum GeForce GTX 9xx”,即 Maxwell 架构起);CPU 路径支持 x86-64 与 ARMv8(含 Apple Silicon macOS,仅 CPU)。
  • 软件要求:现版本 Python 3.10+;2022-03 发布态额外支持 Python 3.8/3.9;2022-03 CUDA 版本为 11.3(现版本已升级,具体当前 CUDA 版本要求未在本次抓取材料中逐项列出 → 未披露)。
  • 并行/精度:并行策略即 GPU SIMT 线程网格(wp.launch(dim=N)),支持 CUDA graph 录制回放降低调度开销;具体默认数值精度(fp32/fp64 混用策略)未在一手材料中给出统一披露 → 未披露。
  • 推理 FPS / 控制频率 / 边缘硬件:作为通用编译器框架,Warp 自身不发布单一 FPS/控制 Hz 数字;README Quick Start 示例演示的是”一百万粒子重力仿真”教学代码,非性能基准 → 未披露具体吞吐数字。
  • 许可:Apache License 2.0(含随构建下载的第三方 NVIDIA libmathdx,另受 NVIDIA 软件许可约束)。

评测 benchmark

Warp 自身的一手材料(README、文档、GTC 2022 摘要、CITATION.cff)没有发布横向 benchmark 表。可确认的定性/间接证据:

  • GTC 2022 摘要与产品页仅以定性表述宣称”simulation performance on par with native CUDA code”(性能与原生 CUDA 代码相当),未给出具体测速数字或对比基线。
  • PUBLICATIONS.md 记录的下游论文里,“Accelerated Policy Learning with Parallel Differentiable Simulation”(J. Xu 等,含 Warp 作者 M. Macklin,2022-04,arXiv:2204.07137)以 Warp 为可微分仿真后端做并行策略学习——但该论文自身的速度/样本效率数字属于下游研究工作,不算 Warp 本身发布的一手 benchmark,此处不代入引用。
  • 后续下游系统(如 newton-physics-engine 引用的 MuJoCo-Warp “>70x”/“100x” 加速数字)同样是下游项目基于 Warp 构建的求解器测出的相对加速,非 Warp 框架自身发布的基准,已记录在 newton-physics-engine 页面,不在此重复归属。
  • 结论:Warp 本工作层面无自有量化 benchmark 表,评测维度以”无”如实标注。

创新点与影响

  • Python-kernel-JIT + 内置可微分的仿真编程范式:与 difftaichi 同期开创的”Python 写 kernel、JIT 到 GPU、自动生成反向 kernel”路线,相对张量编程(PyTorch/JAX 直接表达仿真)在稀疏 scatter/gather、分支逻辑、细粒度线程控制上更贴合仿真代码的天然结构,同时保留 Python 的开发效率。
  • 成为事实上的开源仿真计算底座:PUBLICATIONS.md 统计(2026-07-16 抓取)显示已有 122 篇学术论文(2021-2026)引用/使用 Warp,覆盖机器人步态与跑酷、可微分设计、布料/FEM/MPM 仿真、sim-to-real、Gaussian-splatting 数字孪生等方向。
  • 直接支撑 NVIDIA 后续仿真系统:2025 年发布的 newton-physics-engine(NVIDIA + Google DeepMind + Disney Research,Linux Foundation 托管)正式取代并扩展 Warp 的 warp.sim 模块作为其物理核心;NVIDIA Isaac Lab / Omniverse 等机器人 RL 训练栈也以 Warp 为底层 kernel 引擎。
  • 自陈局限(按本页覆盖的一手材料):2022-03 公开发布时功能仍在快速扩张——tile-based programming(Tensor Core 支持)、wp.fem 有限元工具箱、wp.sparse 稀疏线性代数模块均是 2022 年之后的版本陆续加入,并非 2022 首发内容;框架本身不发布量化性能基准表,其”与原生 CUDA 相当”的性能声明缺乏可验证的第三方对比数字。

原始链接

一手源存档(sources/)

  • warp—github-readme — NVIDIA/warp README 全文(sources/embodied/2022/warp—github-readme.md)
  • warp—product-page — NVIDIA developer.nvidia.com/warp-python 产品页(sources/embodied/2022/warp—product-page.md)
  • warp—docs-overview — 官方文档首页/示例画廊/模块目录(sources/embodied/2022/warp—docs-overview.md)
  • warp—gtc2022-abstract — GTC Digital Spring 2022 报告摘要原文(sources/embodied/2022/warp—gtc2022-abstract.md)
  • warp—changelog-and-citation — CITATION.cff 全文 + 2021-05~2022-03 CHANGELOG 早期历史节选(sources/embodied/2022/warp—changelog-and-citation.md)
  • warp—publications-excerpt — PUBLICATIONS.md 引用文献列表节选与总计(sources/embodied/2022/warp—publications-excerpt.md)