Backend configuration

Overview

The configuration of a backend contains the necessary information to run circuits on the target backend. This includes details on the physical (real system) or logical (simulator) setup of the backend, as well as configurable properties such as the maximum number of experiments that can be executed in a single job. The backend setup, along with the configuration details of control electronics (if any), can be used to assign a version number to a backend.

Backend configuration values

Here we describe a subset of backend configuration values available on IBM Quantum Experience, or from Qiskit.

  • name - The unique name assigned to a specific quantum system or simulator. Backends hosted on the IBM Cloud have names that begin with ibmq_*. All quantum systems are given a city name, e.g., ibmq_johannesburg. This name does not indicate where the actual quantum system is hosted.

  • version - The version number of a backend in the form major.minor.revision. See backend versioning for details on how this number is assigned.

  • n_qubits - The number of qubits in a backend. For real quantum systems, this is the number of physical qubits in the device. For simulators, this number need not be uniquely defined, and instead can depend on the simulation method and/or the amount of memory available.

  • basis_gates - A list of gates that can be natively executed on a backend.

  • coupling_map - A nested list of integer values that indicate those pairs of qubits that support two-qubit gate operations between them. This is also called the device topology or connectivity. Simulators support all-to-all connectivity and will return None for this value. The coupling map is best viewed visually, with qubits represented as circles, and the supported two-qubit gate operations displayed as lines connecting the qubits.

    ../../_images/melbourne_cmap.png
  • max_experiments - The maximum number of quantum circuits that you can submit at one time.

  • max_shots - The maximum number of shots (times) you can execute a single circuit on a backend. The number of shots taken determines the precision of the output probability distribution over repeated executions.

    ../../_images/sampling_error.png

    Distance (in terms of Hellinger distance) for a Bell state run on the IBM Quantum Boeblingen system from the theoretical answer as a function of the number of shots taken. For each value of the shots, the experiment is repeated 100 times.

  • online_date - The date on which the backend first became available on IBM Quantum Experience.

  • local - A flag indicating whether the backend is local to the user or remote.

  • simulator - A flag indicating if the backend is a classical simulator. simulator == False indicates a real quantum system.

  • open_pulse - A flag that determines whether a backend supports pulse inputs.

  • memory - Indicates that the backend supports returning raw counts data.

  • conditional - A flag that indicates that the backend supports execution of quantum gates that are conditioned on the value(s) of a classical register(s).

Viewing backend configuration on IBM Quantum Experience

View backend configuration values in IBM Quantum Experience by selecting a system from the dashboard:

../../_images/system_iqx.png

Viewing backend configuration in Qiskit

In Qiskit, obtain the backend configuration information via:

from qiskit import IBMQ

IBMQ.load_account()

provider = IBMQ.get_provider(group='open', project='main')
backend = provider.get_backend('ibmq_vigo')
backend.configuration()
QasmBackendConfiguration(allow_object_storage=True, allow_q_circuit=False, allow_q_object=True, backend_name='fake_vigo', backend_version='1.0.2', basis_gates=['u1', 'u2', 'u3', 'cx', 'id'], conditional=False, coupling_map=[[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]], credits_required=True, description='5 qubit device Vigo', gates=[GateConfig(id, [], gate id q { U(0,0,0) q; }, [[0], [1], [2], [3], [4]]), GateConfig(u1, ['lambda'], gate u1(lambda) q { U(0,0,lambda) q; }, [[0], [1], [2], [3], [4]]), GateConfig(u2, ['phi', 'lambda'], gate u2(phi,lambda) q { U(pi/2,phi,lambda) q; }, [[0], [1], [2], [3], [4]]), GateConfig(u3, ['theta', 'phi', 'lambda'], gate u3(theta,phi,lambda) q { U(theta,phi,lambda) q; }, [[0], [1], [2], [3], [4]]), GateConfig(cx, [], gate cx q1,q2 { CX q1,q2; }, [[0, 1], [1, 0], [1, 2], [1, 3], [2, 1], [3, 1], [3, 4], [4, 3]])], local=False, max_experiments=75, max_shots=8192, memory=True, n_qubits=5, n_registers=1, online_date='2019-07-03T04:00:00Z', open_pulse=False, quantum_volume=16, sample_name='Giraffe', simulator=False, url='None')

or graphically using:

import qiskit.providers.ibmq.jupyter
IBMQ.load_account()

provider = IBMQ.get_provider(group='open', project='main')
backend = provider.get_backend('ibmq_vigo')
backend
../../_images/system_qiskit.png