Skip to main content

Benchmarking suite for Quantum Computers integration into HPC Systems

Project description

QStone

image

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

### Contributing

Guidance on how to contribute

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.0.2.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

qstone-0.0.2-py3-none-any.whl (39.4 kB view details)

Uploaded Python 3

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

Hashes for qstone-0.0.2.tar.gz
Algorithm Hash digest
SHA256 415dd972a942de68000454d3662c651686ef5eb3612c97241fb28430225aa85c
MD5 ac1bf01608a692544b51d709ee8c8870
BLAKE2b-256 60572e07f6419791380398f43f6e940fe346a39b58ee162861ef330423bd4428

See more details on using hashes here.

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

Hashes for qstone-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0eb09a43ced3181b992653151e2413b72584b5e198acfc29a817a3b606060b18
MD5 689840c383f29f16b34cdcabadf610bf
BLAKE2b-256 335fd939222f338b4294fe586abcdcf4e35301573ba765b1887eabf3f4d8b26b

See more details on using hashes here.

Supported by

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