-
Notifications
You must be signed in to change notification settings - Fork 138
Description
As the JIT compiler (specifically tiered compilation) has reached a stable state, the current benchmarking setup in rv32emu needs to be modernized to reflect our architectural improvements and to utilize contemporary hardware for performance evaluation.
Currently, our benchmarking process is somewhat fragmented, and the performance figures in the README.md are based on aging hardware (eMag). This issue proposes a comprehensive update to our benchmarking infrastructure.
Proposed Changes
1. Centralized Benchmark Management
Introduce tests/bench.py to consolidate the execution and data collection for existing benchmarks like Dhrystone and CoreMark.
- Goal: Create a unified interface for running benchmarks, which will simplify the integration of future test suites (e.g., SPEC CPU or other embedded benchmarks).
- Action: Refactor current scripts to utilize this centralized Python wrapper.
2. Incorporate JIT (T1C/T2C) into Performance Metrics
Previously, our benchmarking focused primarily on the interpreter. Since tiered compilation (T1C and T2C) is now stable, it is essential to include these execution modes in our standard performance reports.
- Goal: Track the performance gains provided by the JIT compiler and monitor for potential regressions.
- Action: Update the benchmarking scripts to support multiple execution modes (Interpreter, T1C, T2C).
3. Update Hardware Targets
The current eMag-based results are outdated. We should transition to modern ARM64/AArch64 platforms to better reflect real-world performance on contemporary edge and desktop hardware.
- Targets: NVIDIA Jetson Orin and Apple Silicon (M1/M2/M3).
- Action: Re-run all benchmarks on these platforms and update the
README.mdwith the new performance data.
4. Update Continuous Benchmarking
The Continuous Benchmarking (CB) pipeline needs to be expanded to include JIT results.
- Goal: Ensure every commit's impact on JIT performance is visible.
- Action: Modify the CI/CD workflow to upload JIT-specific benchmark data to the tracking dashboard.
Todo List
- Implement
tests/bench.pyand migrate Dhrystone/CoreMark (Unify benchmark scripts with improved robustness #688) - Add support for tiered compilation (T1C/T2C) in the benchmark suite
- Perform benchmarking on NVIDIA Jetson Orin and Apple Silicon
- Update
README.mdwith the latest performance tables and environment details - Integrate JIT metrics into the GitHub Actions continuous benchmarking workflow