Skip to main content

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.

Metadata

Release files for qstone 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for qstone 0.4.1
File Size Uploaded Provenance
qstone-0.4.1.tar.gz 36.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for qstone 0.4.1
File Interpreter ABI Platform
qstone-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 84.3 kB

Release files / qstone-0.4.1.tar.gz

Download URL qstone-0.4.1.tar.gz
Size 36.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2d3da6ec529979cf2391edbd18d36011414450e8745ce1616277fcb59cfb89b5
BLAKE2b-256 checksum
How to use checksums
be5112a2d5fc94a4a816410c8b64aae7ab7017280bf757a05d5195aae9ebde0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 25, 2025.

Transparency log

Release files / qstone-0.4.1-py3-none-any.whl

Download URL qstone-0.4.1-py3-none-any.whl
Size 48.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d10f369eb4a7ed0155e7cde9bed69b3660a1d559a45a896ac76608d36bb32177
BLAKE2b-256 checksum
How to use checksums
f7906f3b28acd1309776dff91a9a52eafc34dd7485025e34eb09d6b040900f45
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 25, 2025.

Transparency log

Security for qstone 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for qstone-0.4.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 25, 2025.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page