NVIDIA Warp 文档#
Warp 是一个 Python 框架,用于编写高性能的模拟和图形代码。 Warp 接受常规的 Python 函数,并通过 JIT 编译将它们编译为高效的内核代码,这些代码可以在 CPU 或 GPU 上运行。
Warp 专为 空间计算 设计,并配备了一组丰富的原语,可以轻松编写用于物理模拟、感知、机器人和几何处理的程序。此外,Warp 内核是可微分的,可以与 PyTorch、JAX 和 Paddle 等框架一起用作机器学习管道的一部分。
以下是使用 Warp 实现的一些模拟示例

快速入门#
安装 Warp 最简单的方法是从 PyPI
$ pip install warp-lang
您还可以使用 `pip install warp-lang[extras]`
安装其他依赖项,用于运行示例和 USD 相关功能。
PyPI 上托管的二进制文件目前是使用 CUDA 12 运行时构建的,因此需要最低版本的 CUDA 驱动程序 525.60.13(Linux x86-64)或 528.33(Windows x86-64)。
如果需要在具有较旧 CUDA 驱动程序的系统上获得 GPU 支持,您可以从源代码构建 Warp,或者安装使用 CUDA 11.8 运行时构建的 wheels,如 Nightly Builds 中所述。
基本示例#
下面给出了一个计算随机 3D 向量长度的第一个程序示例
import warp as wp
import numpy as np
num_points = 1024
@wp.kernel
def length(points: wp.array(dtype=wp.vec3),
lengths: wp.array(dtype=float)):
# thread index
tid = wp.tid()
# compute distance of each point from origin
lengths[tid] = wp.length(points[tid])
# allocate an array of 3d points
points = wp.array(np.random.rand(num_points, 3), dtype=wp.vec3)
lengths = wp.zeros(num_points, dtype=float)
# launch kernel
wp.launch(kernel=length,
dim=len(points),
inputs=[points, lengths])
print(lengths)
更多示例#
warp/examples 目录位于 Github 存储库中,包含许多在子目录下分类的脚本,这些脚本展示了如何使用 Warp API 实现各种模拟方法。 大多数示例将生成包含当前工作目录中时间采样动画的 USD 文件。 在运行示例之前,用户应确保已使用以下命令安装 usd-core
、matplotlib
和 pyglet
包
pip install warp-lang[extras]
也可以使用以下命令手动安装这些依赖项
pip install usd-core matplotlib pyglet
可以从命令行运行示例,如下所示
python -m warp.examples.<example_subdir>.<example>
大多数示例可以在 CPU 或支持 CUDA 的设备上运行,但少数示例需要支持 CUDA 的设备。 这些在示例脚本的顶部标记。
USD 文件可以在 NVIDIA Omniverse、Pixar 的 UsdView 和 Blender 中查看或渲染。 请注意,不建议在 macOS 中使用“预览”,因为它对时间采样动画的支持有限。
内置的单元测试可以从命令行运行,如下所示
python -m warp.tests
warp/examples/core#
warp/examples/fem#
warp/examples/optim#
warp/examples/sim#
warp/examples/tile#
Omniverse#
Warp 的 Omniverse 扩展可在 Omniverse Kit 或 USD Composer 中的扩展注册表中找到。 omni.warp.core
扩展将 Warp 安装到 Omniverse 应用程序的 Python 环境中,这允许用户在其脚本和节点中导入该模块。 omni.warp
扩展提供了一系列 OmniGraph 节点和示例场景,演示了 Warp 在 OmniGraph 中的使用。 启用 omni.warp
扩展会自动启用 omni.warp.core
扩展。
请参阅 Omniverse Warp 文档,了解有关如何在 Omniverse 中使用 Warp 的更多详细信息。
了解更多#
请参阅以下资源以获取有关 Warp 的更多背景信息
Warp 中的底层技术已用于 NVIDIA 的许多研究项目,包括以下出版物
使用并行可微模拟加速策略学习 - Xu, J., Makoviychuk, V., Narang, Y., Ramos, F., Matusik, W., Garg, A., & Macklin, M. (2022)
DiSECt:用于机器人切割的可微模拟器 - Heiden, E., Macklin, M., Narang, Y., Fox, D., Garg, A., & Ramos, F (2021)
gradSim:用于系统识别和视觉运动控制的可微模拟 - Murthy, J. Krishna, Miles Macklin, Florian Golemo, Vikram Voleti, Linda Petrini, Martin Weiss, Breandan Considine 等人。 (2021)
支持#
可以在 GitHub Issues 上提出问题、疑问和功能请求。
Warp 团队还会监控公共 Omniverse Discord 服务器上的 #warp 论坛,快来与我们聊天吧!
对于不适合在 GitHub Issues 或 Discord 上提出的问题,请发送电子邮件至 warp-python@nvidia.com。
版本控制#
版本采用 X.Y.Z 格式,类似于 Python 本身
X 的增量保留用于对项目进行重大返工,从而导致破坏性不兼容(或达到 1.0 里程碑)。
Y 的增量用于包含一组新功能的常规版本。
Z 的增量用于错误修复。 原则上,没有新功能。 如果为 0 或不相关,则可以省略。
如果记录良好且逐渐引入,则这类似于 语义版本控制 的次要版本。
请注意,在 0.11.0 之前,此模式并未得到严格遵守。
许可证#
Warp 是根据 Apache License 2.0 版提供的。 有关完整的许可证文本,请参阅 LICENSE.md。
贡献#
欢迎社区的贡献和拉取请求。 有关贡献 Warp 开发的更多信息,请参阅 贡献指南。
引用#
如果您在您的研究中使用 Warp,请使用以下引用
@misc{warp2022,
title= {Warp: A High-performance Python Framework for GPU Simulation and Graphics},
author = {Miles Macklin},
month = {March},
year = {2022},
note= {NVIDIA GPU Technology Conference (GTC)},
howpublished = {\url{https://github.com/nvidia/warp}}
}
完整目录#
用户指南
- 安装
- 基础
- 设备
- 可微性
- 泛型
- 分块
- 互操作性
- 配置
- 调试
- 限制
- 贡献指南
- 常见问题解答
- 更新日志
- 1.7.1 - 2025-04-30
- 1.7.0 - 2025-03-30
- 1.6.2 - 2025-03-07
- 1.6.1 - 2025-03-03
- 1.6.0 - 2025-02-03
- 1.5.1 - 2025-01-02
- 1.5.0 - 2024-12-02
- 1.4.2 - 2024-11-13
- 1.4.1 - 2024-10-15
- 1.4.0 - 2024-10-01
- 1.3.3 - 2024-09-04
- 1.3.2 - 2024-08-30
- 1.3.1 - 2024-07-27
- 1.3.0 - 2024-07-25
- 1.2.2 - 2024-07-04
- 1.2.2 - 2024-07-04
- 1.2.1 - 2024-06-14
- 1.2.0 - 2024-06-06
- 1.1.1 - 2024-05-24
- 1.1.0 - 2024-05-09
- 1.0.3 - 2024-04-17
- 1.0.2 - 2024-03-22
- 1.0.1 - 2024-03-15
- 1.0.0 - 2024-03-07
- 0.15.1 - 2024-03-05
- 0.15.0 - 2024-03-04
- 0.14.0 - 2024-02-19
- 0.13.1 - 2024-02-22
- 0.13.0 - 2024-02-16
- 0.12.0 - 2024-02-05
- 0.11.0 - 2024-01-23
- 1.0.0-beta.7 - 2024-01-23
- 1.0.0-beta.6 - 2024-01-10
- 1.0.0-beta.5 - 2023-11-22
- 1.0.0-beta.4 - 2023-11-01
- 1.0.0-beta.3 - 2023-10-19
- 1.0.0-beta.2 - 2023-09-01
- 1.0.0-beta.1 - 2023-08-29
- 0.10.1 - 2023-07-25
- 0.10.0 - 2023-07-05
- 0.9.0 - 2023-06-01
- 0.8.2 - 2023-04-21
- 0.8.1 - 2023-04-13
- 0.8.0 - 2023-04-05
- 0.7.2 - 2023-02-15
- 0.7.1 - 2023-02-14
- 0.7.0 - 2023-02-13
- 0.6.3 - 2023-01-31
- 0.6.2 - 2023-01-19
- 0.6.1 - 2022-12-05
- 0.6.0 - 2022-11-28
- 0.5.1 - 2022-11-01
- 0.5.0 - 2022-10-31
- 0.4.3 - 2022-09-20
- 0.4.2 - 2022-09-07
- 0.4.1 - 2022-08-30
- 0.4.0 - 2022-08-09
- 0.3.2 - 2022-07-19
- 0.3.1 - 2022-07-12
- 0.3.0 - 2022-07-08
- 0.2.3 - 2022-06-13
- 0.2.2 - 2022-05-30
- 0.2.1 - 2022-05-11
- 0.2.0 - 2022-05-02
- 0.1.25 - 2022-03-20
- 0.1.24 - 2022-03-03
- 0.1.23 - 2022-02-17
- 0.1.22 - 2022-02-14
- 0.1.21 - 2022-01-19
- 0.1.20 - 2021-11-02
- 0.1.19 - 2021-10-15
- 0.1.18 - 2021-10-08
- 0.1.17 - 2021-09-30
- 0.1.16 - 2021-09-06
- 0.1.15 - 2021-09-03
- 0.1.14 - 2021-08-09
- 0.1.13 - 2021-07-29
- 0.1.12 - 2021-07-29
- 0.1.11 - 2021-07-28
- 0.1.10 - 2021-07-28
- 0.1.9 - 2021-07-21
- 0.1.8 - 2021-07-14
- 0.1.7 - 2021-07-05
- 0.1.6 - 2021-06-14
- 0.1.5 - 2021-06-14
- 0.1.4 - 2021-06-10
- 0.1.3 - 2021-06-09
- 0.1.2 - 2021-06-03
- 0.1.1 - 2021-05-18
- 0.1.0 - 2021-05-17
高级主题
核心参考
模拟参考