Adds local benchmarking tools with increased flexibility#4550
Adds local benchmarking tools with increased flexibility#4550kellyguo11 merged 20 commits intoisaac-sim:developfrom
Conversation
Greptile OverviewGreptile SummaryThis PR introduces a self-contained benchmarking framework that removes the hard dependency on Key additions:
Changes:
Issues found:
Confidence Score: 4/5
Important Files Changed
Sequence DiagramsequenceDiagram
participant User
participant Benchmark as BaseIsaacLabBenchmark
participant Backend as MetricsBackend
participant Recorders as System Recorders
participant Monitor as BenchmarkMonitor
participant Training as RL Training Loop
User->>Benchmark: Initialize(backend_type, output_path)
Benchmark->>Backend: get_instance(backend_type)
Backend-->>Benchmark: Return backend (JSON/Osmo/OmniPerf)
Benchmark->>Recorders: Initialize CPUInfo, GPUInfo, MemoryInfo, VersionInfo
Recorders-->>Benchmark: Recorders ready
alt Blocking RL Training
User->>Monitor: with BenchmarkMonitor(benchmark)
Monitor->>Monitor: Start background thread
loop Training iterations
Training->>Training: runner.learn() [blocking]
Monitor->>Recorders: update_manual_recorders() [async, every 1s]
Recorders->>Recorders: Collect CPU/GPU/Memory stats using Welford algorithm
end
Training-->>Monitor: Training complete
Monitor->>Monitor: Stop background thread
else Non-blocking workflow
User->>Benchmark: update_manual_recorders() [manual calls]
Benchmark->>Recorders: update()
end
User->>Benchmark: add_measurement(phase_name, measurement)
Benchmark->>Benchmark: Store in TestPhase
User->>Benchmark: finalize()
Benchmark->>Recorders: get_data()
Recorders-->>Benchmark: Return measurements & metadata
Benchmark->>Backend: add_metrics(test_phase)
Backend->>Backend: Accumulate phases
Benchmark->>Backend: finalize(output_path, filename)
Backend->>Backend: Write JSON/Osmo/OmniPerf file
Backend-->>User: Results written to file
|
…rting the simulation app.
… attach to the app update callback.
… attach to the app update callback.
e6330fa to
a55f295
Compare
kellyguo11
left a comment
There was a problem hiding this comment.
Looks like some mismatch in names between the recorders and test cases, seeing failures in a couple of tests:
| /workspace/isaaclab/source/isaaclab_physx/test/assets/test_articulation.py | FAILED | 0.00 | -1/0 |
| /workspace/isaaclab/source/isaaclab/test/benchmark/test_benchmark_core.py | FAILED | 0.62 | 14/19 |
| /workspace/isaaclab/source/isaaclab/test/benchmark/test_recorders.py | FAILED | 2.95 | 26/43 |
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Co-authored-by: Kelly Guo <kellyg@nvidia.com> Signed-off-by: Antoine RICHARD <antoiner@nvidia.com>
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Signed-off-by: Kelly Guo <kellyg@nvidia.com>
Description
Introduces a self-contained benchmarking framework that removes the hard dependency on isaacsim.benchmark.services.
Key additions:
Updated:
Type of change
Checklist
pre-commitchecks with./isaaclab.sh --formatconfig/extension.tomlfileCONTRIBUTORS.mdor my name already exists there