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
For questions, issues, or feature requests, please visit our GitHub repository or open an issue.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qstone-0.4.1.tar.gz.
File metadata
- Download URL: qstone-0.4.1.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d3da6ec529979cf2391edbd18d36011414450e8745ce1616277fcb59cfb89b5
|
|
| MD5 |
cb5221b0b873fc9ff87fda1aac5ff10d
|
|
| BLAKE2b-256 |
be5112a2d5fc94a4a816410c8b64aae7ab7017280bf757a05d5195aae9ebde0b
|
Provenance
The following attestation bundles were made for qstone-0.4.1.tar.gz:
Publisher:
publish.yaml on riverlane/QStone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qstone-0.4.1.tar.gz -
Subject digest:
2d3da6ec529979cf2391edbd18d36011414450e8745ce1616277fcb59cfb89b5 - Sigstore transparency entry: 312273228
- Sigstore integration time:
-
Permalink:
riverlane/QStone@468c55703a96d16e64df7e08d1a744879a26e46e -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/riverlane
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@468c55703a96d16e64df7e08d1a744879a26e46e -
Trigger Event:
push
-
Statement type:
File details
Details for the file qstone-0.4.1-py3-none-any.whl.
File metadata
- Download URL: qstone-0.4.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d10f369eb4a7ed0155e7cde9bed69b3660a1d559a45a896ac76608d36bb32177
|
|
| MD5 |
f4ba0115ae9ef95734ed5187621faab4
|
|
| BLAKE2b-256 |
f7906f3b28acd1309776dff91a9a52eafc34dd7485025e34eb09d6b040900f45
|
Provenance
The following attestation bundles were made for qstone-0.4.1-py3-none-any.whl:
Publisher:
publish.yaml on riverlane/QStone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qstone-0.4.1-py3-none-any.whl -
Subject digest:
d10f369eb4a7ed0155e7cde9bed69b3660a1d559a45a896ac76608d36bb32177 - Sigstore transparency entry: 312273241
- Sigstore integration time:
-
Permalink:
riverlane/QStone@468c55703a96d16e64df7e08d1a744879a26e46e -
Branch / Tag:
refs/tags/v0.4.1 - Owner: https://github.com/riverlane
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@468c55703a96d16e64df7e08d1a744879a26e46e -
Trigger Event:
push
-
Statement type: