開源專案
NVIDIA/warp avatar
NVIDIA/warp

NVIDIA Warp:把 Python 模擬編譯成 CPU 或 GPU kernel

用於 GPU 加速模擬、機器人和機器學習的 Python 框架。

7,117 個 Star618 個 ForkPythonApache-2.0

秒懂

它是什麼?
NVIDIA Warp 是面向模擬、機器人與機器學習的 Python 框架,提供 JIT 編譯、可微 kernel 和跨平台 wheel。
適合誰用?
Warp 適合研究與工程團隊把 Python 模擬、幾何處理或可微運算搬到 CPU 與 CUDA kernel;不適合需要 macOS Metal 加速或未準備管理 NVIDIA 驅動的環境。先用 `pip install warp-lang` 跑 `@wp.kernel` 粒子範例,再以 `warp/examples` 中的指定腳本核對裝置、輸出和第三方依賴。
可以商用嗎?
可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

NVIDIA Warp 的 Python 核心與執行裝置

Warp 將普通 Python 函式以 JIT 編譯成可在 CPU 或 GPU 執行的 kernel,並提供物理模擬、機器人、幾何處理與機器學習原語。`@wp.kernel`、`wp.tid()` 和 `wp.array` 組成 README 快速入門的基本路徑。這個設計保留 Python 的資料與控制流程,同時把熱點函式交給編譯器處理。

README 將核心描述為可微,並列出 PyTorch、JAX、Paddle 整合;它沒有在短文中承諾特定速度或精度。採用者應把 CPU 與 CUDA 執行結果分開保存,並以同一個粒子輸入比較位置、速度和錯誤。

nvidia-warp 的專案核對紀錄應保留 README 指出的命令、設定鍵、輸入檔案與輸出位置。先在隔離目錄安裝指定依賴,執行專案文件中的第一個可重現範例,再逐項記下標準輸出、錯誤輸出與產物路徑。對 nvidia-warp 而言,這些欄位比倉庫星數更能說明它是否適合現有流程。若文件沒有交代某項行為,紀錄為未說明,不把推測寫成支援承諾。

從一百萬粒子範例開始

README 的快速範例建立 1,000,000 個粒子,以固定亂數種子產生 `wp.vec3` 位置與速度,使用 `gravity_step` 更新引力運動,再透過 `wp.launch` 執行核心。這個範例展示的是 API 形狀,不是通用效能基準。

驗證時可先把 `num_particles` 降低,確認 `wp.kernel` 編譯與 `.numpy()` 讀回,再逐步放大;要同時記錄裝置、Python 版本、驅動程式與記憶體使用。若只在 macOS 執行,README 明確指出其 wheel 支援 CPU 而不支援 Metal 加速。

安裝 wheel 與平台邊界

Warp 要求 Python 3.10 以上,PyPI 套件名稱是 `warp-lang`,範例依賴使用 `pip install warp-lang[examples]`。Windows x86-64 與 Linux wheel 支援 CPU 和 CUDA;Linux 也列出 AArch64,macOS wheel 面向 Apple Silicon 且僅支援 CPU。CUDA 需要相容的 NVIDIA GPU 與驅動程式。

不要把能安裝 wheel 等同於 CUDA 已可用。先執行最小 kernel,再檢查 CUDA 裝置選擇與輸出;nightly、Conda、CUDA 13、原始碼建置和驅動要求應按官方 Installation Guide 處理。

examples 目錄的可核對範圍

`warp/examples` 涵蓋 physics、geometry、optimization 和 tile-based GPU programming。README 提供 `python -m warp.examples.<example_subdir>.<example>` 的執行形式,也提供 `python -m warp.examples.browse` 瀏覽來源。部分範例需要 CUDA,腳本頂部會標示;有些會在目前工作目錄產生 USD 動畫檔。

可用 `example_fluid.py`、`example_mesh.py` 或 `example_torch.py` 作為不同能力的檢查點,分別觀察模擬、幾何與框架整合。README 未保證所有範例在每種平台都可執行,依賴和裝置條件要按個別腳本判斷。

授權與第三方元件

倉庫資料列出 Apache-2.0。README 同時提醒第三方開放原始碼依賴需自行審查;從來源以 `build_lib.py` 建置會下載 NVIDIA libmathdx,而 PyPI 預建套件已將它靜態連結到二進位檔,libmathdx 另受 NVIDIA 軟體授權協議約束。

因此,分發 Warp 本身與分發含第三方二進位的產品不是同一個審查問題。把 `CITATION.cff`、`PUBLICATIONS.md`、FAQ 和 GitHub Issues 納入維護清單,並為 Python、CUDA、PyTorch 或 JAX 的組合保留可重現設定。

適合研究與模擬管線的團隊

Warp 適合需要以 Python 表達 GPU 模擬、可微運算或機器人幾何處理,且能管理 NVIDIA 驅動與裝置差異的團隊。不適合把 macOS Metal 當成 CUDA 替代品,或期待 README 已提供完整效能比較的場景。先用 `pip install warp-lang`、一百萬粒子範例與 `python -m warp.examples.browse` 核對安裝、kernel 編譯和範例入口,再決定是否整合到 PyTorch、JAX 或 Paddle 工作流。

採用前的專案專屬核對 · nvidia warp

若要採用 NVIDIA Warp,先固定 `warp-lang` 版本與 Python 3.10 以上環境,在 CPU 上執行粒子 kernel,再於 CUDA 裝置重跑;比較 `wp.array` 的結果而非只看程序成功退出。接著用 `python -m warp.examples.browse` 和指定範例確認可選依賴,檢查 USD 檔是否寫入目前工作目錄。README 未提供跨 GPU 的效能保證,`libmathdx` 的 NVIDIA 授權也要從來源碼建置與產品分發角度分開審查。

Warp 的 `wp.kernel` 並不等同於任意 Python 函式都能直接搬到 GPU。先把範例中的型別、索引與陣列生命週期逐項固定,遇到不支援語法時保存編譯錯誤。CPU 和 CUDA 的比較應使用相同的 `rng` 種子與 `dt`,並檢查數值是否在可接受範圍,而不是只比較耗時。

對機器學習流程,另以 `example_torch.py` 或官方可微模擬 notebook 確認梯度路徑;README 只宣告與 PyTorch、JAX、Paddle 可整合,未說明每個算子或版本組合。產品化前還要盤點 PyPI wheel、CUDA driver、USD viewer 與 libmathdx 的分發條件,將 Apache-2.0 和 NVIDIA 軟體授權分別交給合規流程審查。

第1項檢查要保留專案名稱、實際命令、檔案路徑、輸入內容、輸出內容與退出碼。先在隔離環境完成一次成功案例,再建立一個缺少依賴或權限不足的失敗案例,觀察工具是否清楚報錯。最後刪除測試產物,確認設定、快取、日志與憑證沒有被意外留下。README 未說明的行為只能列為未知,不能以推測補齊。 nvidia-warp-deep-analysis

第2項檢查要保留專案名稱、實際命令、檔案路徑、輸入內容、輸出內容與退出碼。先在隔離環境完成一次成功案例,再建立一個缺少依賴或權限不足的失敗案例,觀察工具是否清楚報錯。最後刪除測試產物,確認設定、快取、日志與憑證沒有被意外留下。README 未說明的行為只能列為未知,不能以推測補齊。 nvidia-warp-deep-analysis

第3項檢查要保留專案名稱、實際命令、檔案路徑、輸入內容、輸出內容與退出碼。先在隔離環境完成一次成功案例,再建立一個缺少依賴或權限不足的失敗案例,觀察工具是否清楚報錯。最後刪除測試產物,確認設定、快取、日志與憑證沒有被意外留下。README 未說明的行為只能列為未知,不能以推測補齊。 nvidia-warp-deep-analysis

編輯結論

Warp 適合研究與工程團隊把 Python 模擬、幾何處理或可微運算搬到 CPU 與 CUDA kernel;不適合需要 macOS Metal 加速或未準備管理 NVIDIA 驅動的環境。先用 `pip install warp-lang` 跑 `@wp.kernel` 粒子範例,再以 `warp/examples` 中的指定腳本核對裝置、輸出和第三方依賴。 本專案核對項目1應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。 本專案核對項目2應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。 本專案核對項目3應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。 本專案核對項目4應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。 本專案核對項目5應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。 本專案核對項目6應依 README 的實際入口和版本標籤保存輸出,並以專案名稱、命令或檔案路徑標記,避免把未說明的行為當成保證。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記