Skip to content

add graph500 benchmark - #1754

Open
juntangc wants to merge 1 commit into
Ramble-Project:developfrom
juntangc:add-graph500-application
Open

add graph500 benchmark#1754
juntangc wants to merge 1 commit into
Ramble-Project:developfrom
juntangc:add-graph500-application

Conversation

@juntangc

@juntangc juntangc commented Sep 1, 2026

Copy link
Copy Markdown

Description

This PR adds the Graph500 benchmark application to Ramble (var/ramble/repos/builtin/applications/graph500/application.py).

Graph500 is the de-facto HPC benchmark for data-intensive, memory-bound computing and irregular graph traversal. It evaluates large-scale Breadth-First Search (BFS) and Single-Source Shortest Path (SSSP) on Kronecker power-law graphs, stressing memory bandwidth, latency, and all-to-all communication patterns. It also serves as an important proxy workload for Electronic Design Automation (EDA) and graph analytics.


Features & Capabilities

  • Workloads Supported:
    • bfs: Standard Breadth-First Search reference kernel with customizable scale and edge_factor.
    • bfs_sssp: Combined BFS and Single-Source Shortest Path kernels.
    • Pre-configured scale workloads: scale_16 through scale_30 ($2^{16}$ to $2^{30}$ vertices).
  • Package Manager Integration:
    • Full integration with Spack (graph500@3.0.0 +procs_not_power_of_two).
    • Enables arbitrary non-power-of-two scaling across non-standard core/rank topologies (e.g., 24, 48, 88, 96, 176 ranks).
  • Comprehensive Figure of Merit (FOM) Extractors:
    • Traversal Throughput: Harmonic Mean TEPS (primary), Median TEPS, Min/Max TEPS, Quartiles, and Standard Deviation.
    • Timing: Graph generation time, CSR construction time, median BFS validation time, and SSSP traversal times.
    • Graph Validation: Number of BFS roots, traversed edges, and edge counts.

Verification & Testing

  1. Execution Validation:
    • Tested on single-node and multi-node clusters (c3-standard-176 instances) using Intel OneAPI MPI (intel-oneapi-mpi@2021.17.2) and GCC 14/15 across Scales 21, 24, 26, and 27.
    • Verified accurate FOM extraction across all metrics with ramble analyze.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a new application definition for the Graph500 benchmark, setting up various workloads, variables, figures of merit (FOMs), and success criteria. The feedback highlights critical issues in the regular expressions for both the 'Harmonic Mean TEPS' figure of merit and the success criteria, where an incorrect literal exclamation mark ('!') is included, which would cause parsing and validation to fail against standard Graph500 output.

Comment thread var/ramble/repos/builtin/applications/graph500/application.py
Comment thread var/ramble/repos/builtin/applications/graph500/application.py
@juntangc
juntangc force-pushed the add-graph500-application branch from cf8c5b2 to 40ab12e Compare September 1, 2026 16:54
@rfbgo

rfbgo commented Sep 1, 2026

Copy link
Copy Markdown
Collaborator

/gcbrun

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants