Simulation Backends¶
The tensor-only Manager runtime exposes mujoco, mjwarp, genesis, newton,
motrix, superdex, the scoped Drake owner, and the explicit external-worker
Isaac owners described below. User commands select one with --sim, which routes
to the matching task owner YAML; do not switch a run by overriding
training.sim_backend alone.
Runtime Prerequisites¶
Any run using
--sim mujoco, MuJoCo playback, or a MuJoCo-only debugging tool requires themujocoextra and its pinnedmjbatchruntime.MJWarp requires the
mjwarpextra, NVIDIA CUDA, and on multi-GPU hosts an explicit process-device topology.Genesis requires the
genesisextra and the validated Linux x86_64 GPU path.Newton requires the
newtonextra and an NVIDIA CUDA device; the current tensor-native support scope is SACg1_walk_flatand FlashSACg1_motion_tracking.Motrix requires the
motrixextra and provides a CPU-authoritative packed HOST_BRIDGE; the current canonical support scope is SACg1_walk_flatand FlashSACg1_motion_tracking.SuperDex requires the
superdexextra on CPython 3.12/3.13 Linux x86_64 and provides a CPU-authoritative packed HOST_BRIDGE; the current scope is the configured Go2 research owner.Drake requires the locally built DrakeUni batch extension. Its scoped PPO
go2_joystick_flatowner uses CPU physics and the packed HOST_BRIDGE lifecycle; floating-root and reset-randomization events remain disabled until the backend contract supports them.IsaacGym and IsaacSim require isolated Python 3.8 and Python 3.11 workers, respectively, plus same-GPU CUDA IPC. They are explicit owner selections and never implicit fallback backends.
OS and GPU Support¶
Backend |
Operating system |
GPU |
|---|---|---|
MuJoCo |
Linux / macOS / Windows |
Not required: CPU physics; offline playback can render on CPU |
MJWarp |
Linux (validated path) |
Required: NVIDIA CUDA; a single-GPU host uses the current CUDA device by default |
Genesis |
Linux x86_64 |
Required: NVIDIA GPU and driver; only the |
Newton |
Linux |
Required: NVIDIA CUDA; the selected-reset lane is device-resident |
Motrix |
Linux / macOS / Windows |
CPU-authoritative physics; Torch CUDA buffers are optional |
SuperDex |
Linux x86_64 (CPython 3.12/3.13) |
CPU-authoritative physics; Torch CUDA buffers are optional |
Drake |
Linux x86_64 / Apple Silicon macOS |
CPU-authoritative physics; Torch CUDA buffers are optional |
IsaacGym |
Linux |
Required: external Python 3.8 worker and NVIDIA CUDA |
IsaacSim |
Linux |
Required: external Python 3.11 IsaacLab worker and NVIDIA CUDA |
Backend device requirements are independent of the learner device: MuJoCo can still train with its learner on CUDA, ROCm, MPS, or XPU. See the platform profiles in Installation.
Select A Backend¶
UniLab selects the simulator through the task owner config. For normal usage,
choose the task and backend with --task and --sim; off-policy commands keep
the algorithm in --algo, not in --task.
Quick Choice¶
Need |
Prefer |
|---|---|
Default path or broadest owner coverage |
MuJoCo |
MuJoCo-only tools such as |
MuJoCo |
Device-resident tensor owner |
MJWarp, Genesis, or Newton, when the task support matrix marks the combination supported |
CPU-authoritative packed HOST_BRIDGE |
Motrix; SuperDex or scoped Drake for their configured research owners |
The support matrix is generated from registry, owner YAML, and tests; use it as the current evidence source: Support Matrix.
uv run train --algo ppo --task go2_joystick_flat --sim mujoco
uv run train --algo sac --task g1_motion_tracking --sim mjwarp
Owner YAML locations:
PPO / APPO:
src/unilab/conf/{ppo,appo}/task/<task>/<backend>.yamlOff-policy (SAC / FlashSAC):
src/unilab/conf/<algo>/task/<task>/<backend>.yaml
The selected owner YAML sets training.sim_backend as an identity field.
Playback Differences¶
--render-mode autoexportsplay_video.mp4on MuJoCo paths.--render-mode recordrecords without opening an interactive window.--render-mode viserserves the rollout in a browser-based viser viewer on backends with physics-state playback (MuJoCo and MJWarp).--render-mode nonedisables playback.
uv run eval --algo ppo --task go2_joystick_flat --sim mujoco --load-run -1
Support Evidence¶
Task/backend/entrypoint support is evidence-graded. See Support Matrix for the support matrix entry and links to the generated source data.
The unisim-core boundary¶
UniLab’s physics backends are provided by the independent unisim-core
distribution, with unisim as the Python namespace. For example:
uv sync --extra mujoco
uv run python -c "import unisim; print(unisim.ADAPTER_SPECS)"
unisim has no dependency on UniLab, Hydra, or training components. The scoped
MuJoCo, MJWarp, Genesis, Newton, Motrix, and SuperDex adapters and the temporarily
shelved adapters use one public contract. Missing proprietary SDKs or GPU
workers produce an explicit cold-path diagnostic; no backend silently falls
back to another engine.