Skip to content

Modernize benchmarking infrastructure and hardware targets #689

@jserv

Description

@jserv

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.md with 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.py and 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.md with the latest performance tables and environment details
  • Integrate JIT metrics into the GitHub Actions continuous benchmarking workflow

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions