How to Use NVIDIA Warp and MjWarp to Accelerate Robotics Simulation and Learning Workflows
NVIDIA introduces MuJoCo Warp (MJWarp), a GPU-accelerated physics engine for robotics simulation, enabling parallel execution of up to 2,048 environments to improve throughput for reinforcement learning workflows.
Classic MuJoCo offers fast CPU-based robot simulation but struggles to scale beyond single-world execution as workloads grow, limiting parallel sampling across cores. GPU acceleration addresses this by enabling large batches of independent simulation worlds to run simultaneously, with data kept close to the device. MuJoCo Warp (MJWarp), built on NVIDIA Warp, adapts compatible MuJoCo models for GPU-scale simulation, allowing one call to mjw.step to advance hundreds or thousands of parallel environments at once.
NVIDIA Warp is a Python framework for writing high-performance, GPU-accelerated kernels that compile to CPU or CUDA execution. Developers author statically typed kernels in Python while using ordinary Python for configuration and orchestration. Warp kernels are differentiable, enabling adjoint-based backpropagation for custom physics and geometry workflows, and support deterministic execution modes for reproducible simulation results in validation tests.
MJWarp organizes work differently from MuJoCo by placing a batch of independent simulation states on NVIDIA GPUs, prioritizing aggregate throughput over single-world latency. This approach benefits reinforcement learning and large-scale sampling, where collecting experience across many parallel worlds is critical. The migration process involves tuning memory and work parameters, such as contact and constraint buffer sizes, using tools like mjwarp-testspeed and mjwarp-viewer to optimize performance without altering task behavior.
The SO-101 follower arm scene, defined in MJCF with a 44 mm cube task, serves as a validation example for MJWarp. Success criteria include a horizontal center error of xy_err ≤ 0.015 m and vertical separation of 0.035 m ≤ dz ≤ 0.055 m between cube centers after settling. The workflow ensures simulation and control rates match, with a physics timestep of 0.002 seconds at 50 control frames per second and 10 physics substeps per frame, to maintain parity between CPU and GPU backends.