Skip to main content

Benchmarks and characterization on IQM quantum processors

Project description

IQM Benchmarks

IQM Benchmarks is a suite of Quantum Characterization, Verification, and Validation (QCVV) tools for quantum computing. It is designed to be a comprehensive tool for benchmarking quantum hardware. The suite is designed to be modular, allowing users to easily add new benchmarks and customize existing ones. The suite is designed to be easy to use, with a simple API that allows users to run benchmarks with a single command.

Below is a list of the benchmarks currently available in the suite:

The project is split into different benchmarks, all sharing the Benchmark class or the legacy BenchmarkBase class. Each individual benchmark takes as an argument their own BenchmarkConfigurationBase class. All the (legacy) benchmarks executed at once are wrapped by the BenchmarkExperiment class, which handles dependencies among the benchmarks, storing the results, producing the plots...

Installation (latest release)

uv is highly recommended for practical Python environment and package management. With uv installed in your system, start a terminal in your machine and create a new Python environment

uv venv --python=3.11

Note: refer to uv's documentation if there are problems setting up a Python environment.

After the command has run, read the output and make sure to use the prompt to activate the environment. Then, you can install the latest release of the IQM Benchmarks by running:

uv pip install iqm-benchmarks

Optional dependencies

Optional dependencies like compressive gate set tomography and jupyter notebooks can be installed as follows:

uv pip install "iqm-benchmarks[mgst,examples]"

Current optional dependencies are:

  • examples: Jupyter notebooks
  • mgst: Compressive gate set tomography
  • test: Code testing and Linting
  • docs: Documentation building
  • cicd: CICD tools

Characterize Physical Hardware

The IQM Benchmarks suite is designed to be used with real quantum hardware. To use the suite, you will need to have access to a quantum computer. The suite is designed to work with both IQM Resonance (IQM's quantum cloud service) and on-prem devices, but can be easily adapted to work with other quantum computing platforms.

To use the suite with IQM Resonance, you will need to set up an account and obtain an API token. You can then set the IQM_TOKEN environment variable to your API token. The suite will automatically use this token to authenticate with IQM Resonance.

import os
os.environ["IQM_TOKEN"] = "your_token"

Using a Jupyter notebook or Python script

You can easily set up one or more benchmarks by defining a configuration for them. For example, for Randomized, Interleaved and Mirror Benchmarking, or Quantum Volume:

from iqm.benchmarks.randomized_benchmarking.interleaved_rb.interleaved_rb \
    import InterleavedRBConfiguration
from iqm.benchmarks.randomized_benchmarking.mirror_rb.mirror_rb \
    import MirrorRBConfiguration
from iqm.benchmarks.quantum_volume.quantum_volume \
    import QuantumVolumeConfiguration

EXAMPLE_IRB = InterleavedRBConfiguration(
    qubits_array=[[3,4],[8,9]],
    sequence_lengths=[2**(m+1)-1 for m in range(7)],
    num_circuit_samples=30,
    shots=2**10,
    calset_id=None,
    parallel_execution=True,
    interleaved_gate = "iSwapGate",
    interleaved_gate_params = None,
    simultaneous_fit = ["amplitude", "offset"],
)

EXAMPLE_MRB = MirrorRBConfiguration(
    qubits_array=[[0,1],
                  [0,1,3,4],
                  [0,1,3,4,8,9],
                  [0,1,3,4,8,9,13,14],
                  [0,1,3,4,8,9,13,14,17,18]],
    depths_array=[[2**m for m in range(9)],
                  [2**m for m in range(8)],
                  [2**m for m in range(7)],
                  [2**m for m in range(6)],
                  [2**m for m in range(5)]],
    num_circuit_samples=10,
    num_pauli_samples=5,
    shots=2**8,
    two_qubit_gate_ensemble={"CZGate": 0.7, "iSwapGate": 0.3},
    density_2q_gates=0.25,
    calset_id=None,
)

EXAMPLE_QV = QuantumVolumeConfiguration(
    num_circuits=800,
    shots=2**8,
    calset_id=None,
    num_sigmas=2,
    choose_qubits_routine="custom",
    custom_qubits_array=[[0,1,2,3], [0,1,3,4]],
    qiskit_optim_level=3,
    optimize_sqg=True,
    max_circuits_per_batch=500,
    max_gates_per_batch=60_000, # Will be used if it renders a smaller 
    # max batch size than max_circuits_per_batch
    rem=True,
    mit_shots=1_000,
)

In order to execute them, you must specify a backend:

  • for IQM Resonance this can be given as a simple string, such as "garnet" (together with your IQM Token environment variable)
  • and for an on-prem device and IQM Resonance this can be defined using the URL of the quantum computer.

Also, you need to reference the benchmark configuration you want to run:

from iqm.benchmarks.randomized_benchmarking.mirror_rb.mirror_rb import *
# import os
# os.environ["IQM_TOKEN"] = "your_token"

backend = IQMProvider("https://example-station.qc.iqm.fi/cocos/").get_backend()

EXAMPLE_EXPERIMENT = MirrorRandomizedBenchmarking(backend, EXAMPLE_MRB)
EXAMPLE_EXPERIMENT.run()

Full examples on how to run benchmarks and analyze the results can be found in the examples folder.

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

iqm_benchmarks-2.59.2.tar.gz (415.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iqm_benchmarks-2.59.2-py3-none-any.whl (229.3 kB view details)

Uploaded Python 3

File details

Details for the file iqm_benchmarks-2.59.2.tar.gz.

File metadata

  • Download URL: iqm_benchmarks-2.59.2.tar.gz
  • Upload date:
  • Size: 415.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for iqm_benchmarks-2.59.2.tar.gz
Algorithm Hash digest
SHA256 5ce8a927f365405b04fe2dc4d85401db626cf0560e51a39693e8748b1e6dc223
MD5 2906d06db1bbdad29edf876c45add119
BLAKE2b-256 27fc0cfd8c1a5c39611e5f77ea168b073298b62b39e408236b2260ba01f7f095

See more details on using hashes here.

File details

Details for the file iqm_benchmarks-2.59.2-py3-none-any.whl.

File metadata

  • Download URL: iqm_benchmarks-2.59.2-py3-none-any.whl
  • Upload date:
  • Size: 229.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for iqm_benchmarks-2.59.2-py3-none-any.whl
Algorithm Hash digest
SHA256 3bf3da5262c2dc747880d69960c85df1ff50ac80f20eae06b31d7ccdd8b6340d
MD5 f789435b5156170aa690532b8986e9e5
BLAKE2b-256 d299535608d636c5468af399fbacdeba7a443a587ba7cb6a8c8efce181bc07a5

See more details on using hashes here.

Supported by

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