NVIDIA Warp and MJWarp Scale MuJoCo Robot Simulation to 2,048 GPU Worlds
NVIDIA shows how Warp and MJWarp scale an SO-101 MuJoCo task to 2,048 GPU worlds, with parity checks, buffer sizing and valid benchmarking for robot learning.
Summary
NVIDIA’s September 23, 2026 guide moves a compatible MuJoCo SO-101 pick-and-place scene from CPU execution to 2,048 parallel MJWarp environments on NVIDIA GPUs. Warp provides JIT-compiled Python kernels for CPU or CUDA, SIMT execution, autodiff, CUDA Graphs, deterministic modes since Warp 1.15, and PyTorch or JAX interoperability. MJWarp retains MJCF models while batching device-resident states for aggregate reinforcement-learning throughput rather than necessarily reducing single-world latency.
The baseline runs 600 control frames at 50 Hz, with 10 physics substeps and a 0.002-second timestep. The SO-101 stacks one 44 mm, 0.08 kg cube on another; success requires horizontal center error no greater than 0.015 m and vertical separation from 0.035 m to 0.055 m. Migration starts with one-world parity, then scales to 2,048 worlds without per-step PCIe transfers. SO-101 starts with nconmax=128 and njmax=300, while optional reBot settings use 256 and 500.
Valid benchmarking requires warm-up, CUDA synchronization, tight contact and constraint capacities, overflow checks, and reporting both world-steps per second and milliseconds per batched step. The example uses 10 warm-up and 200 measured graph replays, while a scaling script tests 1, 64, 1,024, 2,048, and 8,192 worlds over 100 steps. No performance result is supplied, and the companion repository instructions require confirmation of an accessible URL plus pinned dependencies and assets. The guide does not train a policy; upcoming Newton and Isaac Lab installments will add SolverMuJoCo integration, assets, sensors, managers, and training loops.
Positives
- 2,048 parallel MJWarp environments demonstrate how one compatible SO-101 MJCF scene can become a GPU-scale simulation batch.
- Warp 1.15 adds optional deterministic GPU execution for reproducible simulation, validation, and regression testing.
- CUDA Graph capture reduces repeated dispatch overhead by replaying MJWarp steps against existing model and data buffers.
- PyTorch, JAX, and DLPack-compatible interoperability can keep simulation and learning data on the device.
- One-world parity checks preserve the CPU task’s 50 Hz controller, 10 substeps, 0.002-second timestep, and measurable stacking criteria.
Risks & concerns
- No measured throughput or speedup is published, so users must benchmark their own scenes, settings, and NVIDIA hardware.
- Contact or constraint overflow can invalidate trajectories and benchmarks while execution continues with only a warning.
- Per-substep .numpy() reads synchronize the GPU and copy state to the CPU, making the parity path unsuitable for throughput testing.
- MJWarp accepts only compatible MuJoCo models, with mjw.put_model raising errors for unsupported features.
- The companion repository instructions remain blocked pending confirmation of an accessible URL and pinned dependency and asset versions.