Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

qstone

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

qstone

Benchmarking suite for Quantum Computers integration into HPC Systems

  • 0.2.0
  • PyPI
  • Socket score

Maintainers
1

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.

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

pip install QStone

Execution

Run QStone using Command Line Interface

  • Run the generator command

    qstone generate -i conf.json [--atomic/-a] [--scheduler/-s "slurm"/"jsrun"/"bare_metal"]

    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 --atomic flag forces the generation of single step jobs, instead of the default repartition in three jobs (pre, run, post). The -s flag allows selecting the output scheduler, default is bare_metal.

    With config.json:

{
  "environment": { 
     "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 the associated json schema. Among the other things, the config file allows setting different polling/querying/scheduling policies for handling shared access to the QPU. Only SLURM currently supports the high-performance (lowest-latency) "SCHEDULER" mode" please refer to SLURM for more information.

  • 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, scheduler="bare_metal")

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

Contributing

Guidance on how to contribute and change logs

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc