Clifford Randomized Benchmarking (CRB)#

%load_ext autoreload
%autoreload 2

Set IQM Token if using Resonance.#

# import os
# from iqm.qiskit_iqm import IQMProvider
#
# token = ""
# os.environ["IQM_TOKEN"] = token
# quantum_computer = "" # provide actual quantum computer name. i.e. "emerald", "garnet", "sirius"
# iqm_server_url = "https://resonance.iqm.tech/" # provide actual IQM server URL
# os.environ["IQM_SERVER_URL"] = iqm_server_url
#
# provider = IQMProvider(iqm_server_url, quantum_computer=quantum_computer)
# backend = provider.get_backend()

Alternatively choose (or define) a simulator backend#

#backend = "fakeadonis"
backend = "fakeapollo"

Randomized Benchmarking Configuration#

NB: Clifford RB is executed by default with Interleaved RB !

from iqm.benchmarks.randomized_benchmarking.clifford_rb.clifford_rb import *
EXAMPLE_CRB = CliffordRBConfiguration(
    qubits_array=[[0,1],[3,4]],#,[8,9],[13,14],[17,18],[5,6],[10,11],[15,16]],
    sequence_lengths=[2**(m+1)-1 for m in range(6)],
    num_circuit_samples=25,
    shots=2**8,
    parallel_execution=False,
    max_circuits_per_batch=100,
)

Run the experiment#

benchmark_clifford_rb = CliffordRandomizedBenchmarking(backend, EXAMPLE_CRB)
run_clifford_rb = benchmark_clifford_rb.run()

Perform the analysis#

result_clifford_rb = benchmark_clifford_rb.analyze()
run_clifford_rb.dataset.attrs
result_clifford_rb.observations
for plot in result_clifford_rb.plots.values():
    display(plot)