Benchmarking suite for Quantum Computers integration into HPC Systems
Project description
QStone
What
An utility to benchmark the quality of an HPC and Quantum Computers integration. The benchmark allows the definition of a set of users for which a set of configurable quantum applications will be randomly selected. Example of currently supported quantum applications: VQE, PyMatching, RB. Users can create custom applications and use them together with the core applications. QStone generates different portable files (.tar.gz), each supporting a different user and a different scheduler (currently supporting: slurm, lsf, bare_metal). During execution of the benchmark, QStone gathers information on each steps of the applications, allowing investigations on bottlenecks and/or resource constraints at the interface between Quantum and HPC. The benchmark under the following (assumptions)[assumptions.md].
Why
Building an appropriate hardware/software infrastructure to support HPCQC requires loads of work. We believe we shoud use a data driven approach in which we measure, fix, measure again with every new version of Quantum Computers, software and HPC hardware.
Where
Currently supported platforms/architectures:
- MacOS: M1/M2 (Sequoia)
- Intel: x86 (Ubuntu)
- PowerPC: Power9 (RedHat)
Tested on Python [3.9-3.12]
How
Installation (local)
We don't currently have a Pypi package, so you will need to install from the repository:
pip install https://github.com/riverlane/QStone.git or
pip install ./QStone or
Expect a python package soon!
For installation on Summit - please refer to the guide summit installation
Execution
Run QStone using Command Line Interface
-
Run the generator command
qstone generate -i conf.json [--atomic/-a]Generates tar.gz files that contains all the scripts to run scheduler for each user. Currently supported schedulers: [baremetal, altair/fnc, slurm/schedmd]. QStone expects an input configuration describing the users to want to generate jobs for as well as the description of the quantum computer you are generating jobs for. The optional
--atomicflag forces the generation of single step jobs, instead of the default repartition in three jobs (pre, run, post).With
config.json:
{
"project_name": "proj_name",
"connector": "NO_LINK",
"qpu_ip_address": "0.0.0.0",
"qpu_port": "55",
"qpu_management": "LOCK",
"timeouts" : {
"http": 5,
"lock": 4
},
"jobs": [
{
"type": "VQE",
"qubit_min": 2,
"qubit_max": 4,
"walltime" : 10,
"nthreads" : 4,
"lsf/jsrun_opt": "-nnodes=4 "
},
{
"type": "RB",
"qubit_min": 2,
"qubit_max": 4,
"walltime" : 10,
"nthreads" : 2,
"slurm/schedmd_opt": "--cpus-per-task=4"
}
],
"users": [
{
"user": "user0",
"weight": 1,
"computations": {
"VQE": 0.05,
"RB": 0.94,
"PyMatching": 0.01
}
}
]
}
For more information on the config.json format refer to config.
- Alternatively call the generator in script:
from qstone.generators import generator
def main():
generator.generate_suite(config="config.json",
num_calls=100,output_folder=".",atomic=False)
if __name__ == "__main__":
main()
-
Run the run command to execute chosen scheduler/workload selecting an optional output folder
qstone run -i scheduler.qstone.tar.gz [-o folder]
The optional -o allows selecting the output folder in which to run the benchmark instance.
-
Alternatively may untar on your machine of choice and run as the selected user.
-
Run the jobs by executing
sh qstone_suite/qstone.sh -
Run the profiling tool to extract metrics of interest.
-
-
Run the profile command providing the initial input configuration and output folder to run profiling tool on run information
qstone profile --cfg conf.json --folder qstone_profile -
Run the profile command providing the initial input configuration and multiple output folders (in case of multi-user run) to run profiling tool on run information
qstone profile --cfg conf.json --folder qstone_profile --folder qstone_profile2
Supported backend connectivities
- Local no-link runner
- gRPC
- Http
- Rigetti
Examples
- Getting started notebook
- How to add a new type of computation
- How to create a simple gateway
### Contributing
Guidance on how to contribute
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.0.3.tar.gz.
File metadata
- Download URL: qstone-0.0.3.tar.gz
- Upload date:
- Size: 28.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f4314775da7e5544b3fadd0a2e76fff71f3e32a908825da79cd89f5222e13f8
|
|
| MD5 |
880c3d3d052ce0b42e7d417789c743dd
|
|
| BLAKE2b-256 |
8d236c262f02c2086f3dbd2cff28352f88b9c346a01adca7ca8ae78e7d496109
|
Provenance
The following attestation bundles were made for qstone-0.0.3.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.0.3.tar.gz -
Subject digest:
2f4314775da7e5544b3fadd0a2e76fff71f3e32a908825da79cd89f5222e13f8 - Sigstore transparency entry: 152318783
- Sigstore integration time:
-
Permalink:
riverlane/QStone@5b5cded6eca20d74696d2fa9c72553dd4beb67e0 -
Branch / Tag:
refs/tags/v0.0.3 - Owner: https://github.com/riverlane
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@5b5cded6eca20d74696d2fa9c72553dd4beb67e0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file qstone-0.0.3-py3-none-any.whl.
File metadata
- Download URL: qstone-0.0.3-py3-none-any.whl
- Upload date:
- Size: 39.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7b6da2310a862d6ada861c875fc2a63524db5e2b6731c281127bbfa093d0146
|
|
| MD5 |
ae900ed1fd6b920652703417911263df
|
|
| BLAKE2b-256 |
c8af97268f2b8fe5472017f9132b6148bde0c924c260c46010897c05e01a9a5d
|
Provenance
The following attestation bundles were made for qstone-0.0.3-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.0.3-py3-none-any.whl -
Subject digest:
c7b6da2310a862d6ada861c875fc2a63524db5e2b6731c281127bbfa093d0146 - Sigstore transparency entry: 152318784
- Sigstore integration time:
-
Permalink:
riverlane/QStone@5b5cded6eca20d74696d2fa9c72553dd4beb67e0 -
Branch / Tag:
refs/tags/v0.0.3 - Owner: https://github.com/riverlane
-
Access:
internal
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yaml@5b5cded6eca20d74696d2fa9c72553dd4beb67e0 -
Trigger Event:
push
-
Statement type: