Performance Benchmarks

KELab benchmarks run headless on an NVIDIA GeForce RTX 4090 and Intel Core i7-13700K with 4096 environments. FPS counts environment control steps.

KangEngine revision: cef3dd2.

Simulation and Training Throughput

Task

Framework

Environments

Environment Step FPS

Step + Inference FPS

Step + Inference + Train FPS

Cartpole

KELab

4096

1,153,317

914,046

527,070

Cartpole

IsaacLab v2.3.2 (local)

4096

978,112

794,296

491,239

G1 Rough

KELab

4096

104,009

95,889

84,954

G1 Rough

IsaacLab v2.3.2 (local)

4096

85,039

85,122

76,552

  • Cartpole: RL-Games, 50 training iterations.

  • G1 Rough: RSL-RL 5.4.2, 50 training iterations; environment-only FPS is measured separately over 100 steps with random actions.

  • Following IsaacLab v2.3.2 benchmark scripts, values are arithmetic means of native per-iteration FPS (per-step FPS for non-RL), with no warm-up exclusion or added CUDA synchronization. Inference includes rollout collection.

  • Local IsaacLab runs use the fresh pinned reference environment on the same GPU/CPU, with matching seed 42 and run lengths. These are single runs; Torch/Python versions and simulation implementations differ between frameworks.

For reference, IsaacLab v2.3.2 publishes the following RTX 4090 results with a Ryzen 9 7950X CPU. CPU and measurement settings differ from the local runs. Its published table does not specify the training iteration count; the local measurement length is given above.

IsaacLab Environment

Environments

Environment Step FPS

Step + Inference FPS

Step + Inference + Train FPS

Isaac-Cartpole-Direct-v0

4096

1,100,000

910,000

510,000

Isaac-Velocity-Rough-G1-v0

4096

94,000

88,000

82,000

Humanoid Training Time

RL-Games, 4096 environments × 32 rollout steps × 500 iterations: 65,536,000 environment steps on RTX 4090.

RL Library

KELab — Torch (s)

KELab — Warp base (s)

IsaacLab v2.3.2 Published Time (s)

RL-Games

193.80

176.65

201

Both KELab compute backends were measured on 2026-09-09 with Torch compilation disabled. Times are script-reported training durations. The IsaacLab reference matches GPU model and step count; other system and task settings may differ.

G1 Rough: 4000-Iteration Training

Both frameworks ran locally with RSL-RL 5.4.2, matching PPO settings, seed 42, and 4096 environments × 24 rollout steps × 4000 iterations: 393,216,000 environment steps. KELab uses the reference USD robot with 37 DOFs, three convex hulls and implicit PD.

Metric

KELab

IsaacLab v2.3.2

Rollout collection time (s)

3,514.75

3,927.76

PPO update time (s)

452.50

445.07

Total measured training time (s)

3,967.25

4,372.83

Full-run training FPS

99,116

89,923

Final mean episode reward

29.72

26.75

Final mean episode length (s)

19.69

19.71

Training FPS is total steps divided by summed collection and update times, excluding initialization and checkpoint saving. Reward and episode length are averages over the final 50 iterations. Results are from one seed; Python, Torch and physics backends differ between frameworks.

Benchmark Commands

The KELab repository also provides scripts/benchmarks/isaaclab_reference/ with pinned dependencies and standalone IsaacLab v2.3.2 train/play commands. Its README describes a fresh conda setup using Isaac Sim 5.1.0 and RSL-RL 5.4.2.

Run from the KELab repository:

# Cartpole throughput during RL-Games training
python scripts/benchmarks/benchmark_rl_games.py \
  --task Cartpole-Direct-v0 --num_envs 4096 --max_iterations 50 \
  --output logs/benchmarks/cartpole.json

# G1 rollout and training throughput
python scripts/benchmarks/benchmark_rsl_rl.py \
  --task G1-Velocity-Rough-v0 --num_envs 4096 --max_iterations 50 \
  --output logs/benchmarks/g1_training.json

# G1 environment-only throughput
python scripts/benchmarks/benchmark_env.py \
  --task G1-Velocity-Rough-v0 --num_envs 4096 --num_frames 100 \
  --output logs/benchmarks/g1_env.json

# Humanoid training time
python scripts/rl_games/train.py --task Humanoid-v0 \
  --num_envs 4096 --device cuda:0 --compute_backend torch \
  --max_iterations 500

# Humanoid training time — Warp base
python scripts/rl_games/train.py --task Humanoid-v0 \
  --num_envs 4096 --device cuda:0 --compute_backend warp \
  --max_iterations 500

# G1 Rough training
python scripts/rsl_rl/train.py --task G1-Velocity-Rough-v0 \
  --num_envs 4096 --device cuda:0 --seed 42 --max_iterations 4000