Skip to main content

Benchmarking suite for Quantum Computers integration into HPC Systems

Project description

QStone

A utility to benchmark the quality of HPC and Quantum Computer integration.

Overview

QStone allows you to define a set of users for which configurable quantum applications will be randomly selected and executed. The benchmark generates different portable files (.tar.gz), each supporting different users and schedulers.

Currently supported quantum applications:

  • VQE (Variational Quantum Eigensolver)
  • PyMatching
  • RB (Randomized Benchmarking)
  • QBC (Quantum Benchmarking Circuit)

Key features:

  • Support for custom applications alongside core applications
  • Multi-scheduler support (SLURM, LSF, bare metal)
  • Detailed performance metrics collection
  • Bottleneck and resource constraint analysis at the quantum-HPC interface

The benchmark operates under specific assumptions.

Why QStone?

Building appropriate hardware/software infrastructure for HPCQC requires significant effort. QStone enables a data-driven approach where you can measure performance, implement fixes, and measure again with every new version of quantum computers, software, and HPC hardware.

Supported Platforms

Platform Architecture OS
Apple Silicon M1-M4 macOS
Intel x86_64 Ubuntu
IBM Power Power9 RedHat

Python versions: 3.10 - 3.12

Installation

Basic Installation

pip install QStone

Full Installation with MPI Support

First, install OpenMPI:

# Ubuntu/Debian
sudo apt install openmpi-bin openmpi-common libopenmpi-dev

# RedHat/CentOS/Fedora  
sudo yum install openmpi openmpi-devel

# macOS
brew install openmpi

Then install QStone with MPI support:

pip install QStone[mpi]

Usage

1. Generate Benchmark Suite

qstone generate -i config.json [--atomic/-a] [--scheduler/-s "slurm"/"jsrun"/"bare_metal"]

Options:

  • --atomic / -a: Generate single-step jobs instead of three-phase jobs (pre/run/post)
  • --scheduler / -s: Select output scheduler (default: bare_metal)

Supported schedulers: bare metal, Altair/FNC, SLURM/SchedMD

2. Execute Benchmark

qstone run -i scheduler.qstone.tar.gz [-o output_folder]

Alternative: Extract the tar.gz file and run manually:

tar -xzf scheduler.qstone.tar.gz
cd qstone_suite
sh qstone.sh

3. Profile Results

Single user:

qstone profile --cfg config.json --folder qstone_profile

Multiple users:

qstone profile --cfg config.json --folder qstone_profile --folder qstone_profile2

Configuration

Sample Configuration File

Create a config.json file with the following structure:

{
  "environment": { 
    "project_name": "my_quantum_project",
    "scheduling_mode": "LOCK",
    "job_count": 5,
    "qpu": {
      "mode": "RANDOM"
    },
    "connectivity": {
      "mode": "NO_LINK",
      "qpu": {
        "ip_address": "0.0.0.0",
        "port": 55
      }
    },
    "timeouts": {
      "http": 5,
      "lock": 4
    } 
  },
  "jobs": [
    {
      "type": "VQE",
      "qubits": [4, 6],
      "num_shots": [100, 200],
      "walltime": 10,
      "nthreads": 4,
      "app_logging_level": 2 
    },
    {
      "type": "RB",
      "qubits": [2],
      "num_shots": [100],
      "walltime": 10,
      "nthreads": 2
    },
    {
      "type": "QBC",
      "qubits": [4],
      "num_shots": [32],
      "walltime": 20,
      "nthreads": 2
    }
  ],
  "users": [
    {
      "user": "user0",
      "computations": {
        "VQE": 0.05,
        "RB": 0.94,
        "PyMatching": 0.01
      }
    }
  ]
}

For detailed configuration options, refer to the JSON schema.

Note: Only SLURM currently supports the high-performance "SCHEDULER" mode with lowest latency. See SLURM documentation for more details.

Programmatic Usage

from qstone.generators import generator

def main():
    generator.generate_suite(
        config="config.json",
        job_count=100, 
        output_folder=".", 
        atomic=False, 
        scheduler="bare_metal"
    )

if __name__ == "__main__":
    main()

Supported Backend Connectivities

  • Local no-link runner - For testing without quantum hardware
  • gRPC - High-performance remote procedure calls
  • HTTP/REST - Standard web-based communication
  • Rigetti - Native Rigetti quantum computer integration

Examples and Resources

Contributing

License

License


For questions, issues, or feature requests, please visit our GitHub repository or open an issue.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qstone-0.4.0.tar.gz (36.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qstone-0.4.0-py3-none-any.whl (48.0 kB view details)

Uploaded Python 3

File details

Details for the file qstone-0.4.0.tar.gz.

File metadata

  • Download URL: qstone-0.4.0.tar.gz
  • Upload date:
  • Size: 36.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for qstone-0.4.0.tar.gz
Algorithm Hash digest
SHA256 e86f931af9d683a767f9f1eacba998fdcfa1c92ed931056762d89990fda98ce6
MD5 cbc44381b2102fb084961dae2264019b
BLAKE2b-256 d3cc5ac76bbbded221aafca229e8802346a390368689da2a0d58f1c7ee341930

See more details on using hashes here.

Provenance

The following attestation bundles were made for qstone-0.4.0.tar.gz:

Publisher: publish.yaml on riverlane/QStone

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qstone-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: qstone-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 48.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for qstone-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8e7fdbe3c8714f3b496aae17459827a02b1847bd8940d4362770cca7aaca22fe
MD5 d6136942cf517b8cf3c7fc5a09c8cae7
BLAKE2b-256 58ee4f175b70275fa6c1552caf6cd53b87f7bb7e3f6dffab6bed023421acb2e5

See more details on using hashes here.

Provenance

The following attestation bundles were made for qstone-0.4.0-py3-none-any.whl:

Publisher: publish.yaml on riverlane/QStone

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page