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.
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 ()
Tested on Python 3.8, 3.10, 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
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.
With
config.json
:
{
"project_name": "proj_name",
"connector": "NO_LINK",
"qpu_ip_address": "0.0.0.0",
"qpu_port": "55",
"qpu_management": "LOCK",
"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=".")
if __name__ == "__main__":
main()
-
Run the run command to execute chosen scheduler
qstone run -i scheduler.qstone.tar.gz
-
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
Supported network topologies
- Local no-link runner
- gRPC
- Http
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
File details
Details for the file qstone-0.0.2.tar.gz
.
File metadata
- Download URL: qstone-0.0.2.tar.gz
- Upload date:
- Size: 26.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 | 415dd972a942de68000454d3662c651686ef5eb3612c97241fb28430225aa85c |
|
MD5 | ac1bf01608a692544b51d709ee8c8870 |
|
BLAKE2b-256 | 60572e07f6419791380398f43f6e940fe346a39b58ee162861ef330423bd4428 |
File details
Details for the file qstone-0.0.2-py3-none-any.whl
.
File metadata
- Download URL: qstone-0.0.2-py3-none-any.whl
- Upload date:
- Size: 39.4 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 | 0eb09a43ced3181b992653151e2413b72584b5e198acfc29a817a3b606060b18 |
|
MD5 | 689840c383f29f16b34cdcabadf610bf |
|
BLAKE2b-256 | 335fd939222f338b4294fe586abcdcf4e35301573ba765b1887eabf3f4d8b26b |