Repository navigation
G1 纯物理吞吐对比:Metal、ROCm、CUDA、MJWarp 与 Newton #2517
TATP-233
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
G1 纯物理吞吐对比:Metal、ROCm、CUDA、MJWarp 与 Newton
我们在三台机器上,使用相同的
g1_walk_flat人形场景,对 Genesis、MJWarp、Newton、mjbatch 和 MotrixSim 进行了纯物理吞吐测试。Genesis 1.3.3 已分别通过gs.metal、gs.amdgpu和gs.cuda完成真实物理步进;MJWarp 与 Newton 则在 NVIDIA CUDA 上完成补充测试。关联 PR:#2518。
测试口径
src/unilab/assets/robots/g1/scene_flat.xmlstandkeyframe,并持续保持 keyframe 中的控制目标nstep=20,预热 2 次,正式测量 3 次并取平均batch_size * nstep / mean_elapsed_secnjmax=256、nconmax=256,每个 20 步计时块结束后同步一次SolverMuJoCo的 Newton 求解器和implicitfast;njmax=512、nconmax=320,每个 20 步计时块结束后同步一次各引擎的数值行为并不完全相同。MotrixSim 会忽略 MJCF 的
integrator字段,使用引擎默认积分器和 UniSim 生产配置max_iterations=3。以下结果是引擎吞吐对比,不代表数值等价,也不构成新的生产支持声明。Apple M5 Ultra:Genesis Metal
CPU:Apple M5 Ultra,36 核。GPU:80 核 Apple GPU,后端
gs.metal。单位:物理步/秒。
Apple M5 Max 本机复测
CPU:Apple M5 Max,18 核(6 Super + 12 Performance)。GPU:40 核 Apple GPU,128 GB 统一内存,后端
gs.metal。复测使用与上表相同的模型、keyframe、批量和计时口径;CPU 后端使用 18 个有效线程。单位:物理步/秒。
本机版本:Genesis 1.3.3、MuJoCo/MJWarp 系列依赖中的 MuJoCo 3.11.0、mjbatch-uni 0.2.5、motrixsim-core 0.10.1。运行 macOS 26.6.2。在 PR #2518 的隔离 worktree 中,
tests/benchmark/test_g1_physics_throughput_benchmark.py结果为 13 passed;随后完整基准命令成功完成并生成results.json与两张曲线图。AMD MI300X:Genesis ROCm
CPU:Intel Xeon Platinum 8568Y+,160 个有效核。GPU:单张 AMD Instinct MI300X VF,后端
gs.amdgpu,PyTorch 2.14.0+rocm7.2。单位:物理步/秒。
该服务器为共享环境,CPU 测量会受到当时其他任务负载的影响。
NVIDIA RTX 4090:Genesis CUDA、MJWarp 与 Newton
CPU:AMD Ryzen 9 9950X3D2,16 个有效核。GPU:单张 NVIDIA GeForce RTX 4090。Genesis 使用
gs.cuda,PyTorch 2.14.0+cu130;MJWarp 和 Newton 使用 CUDA eager kernels。单位:物理步/秒。
在本轮 RTX 4090 测试中,MJWarp 的总物理吞吐最高;8192 环境下 MJWarp 约为 178.61 万物理步/秒,Newton 约为 168.23 万物理步/秒,Genesis CUDA 约为 98.21 万物理步/秒。
复现方式
统一 benchmark 会在 Apple Silicon 上选择 Metal,在 Linux HIP 环境选择 AMDGPU,在其他 Linux NVIDIA 环境选择 CUDA。原来的三后端默认矩阵保持不变;MJWarp 和 Newton 可显式选择。以下命令用于在 NVIDIA CUDA 机器上一次运行全部五个后端:
Linux 下可用
CUDA_VISIBLE_DEVICES=0固定单卡;ROCm 同时设置HIP_VISIBLE_DEVICES=0和ROCR_VISIBLE_DEVICES=0。每次运行都会在
scripts/benchmark/outputs/physics_step/下保存均值、标准差、最小/最大耗时、总吞吐、单环境吞吐、依赖版本、设备信息、JSON 和曲线。本基准直接调用各原生引擎,不表示 UniLab Genesis adapter 已扩展支持 Metal 或 ROCm。
All reactions