Skip to main contentIBM Quantum Documentation

Available IBM Quantum simulators

Important

IBM Quantum™ will retire its cloud simulators on 15 May 2024. Instead, you can use local simulators through Qiskit Runtime primitives, Qiskit Aer primitives, or Qiskit reference primitives. See Migrate to local simulators for full details.

IBM Quantum features a collection of high-performance simulators for prototyping quantum circuits and algorithms.

To view available simulators, on the upper right corner of the screen, click the Application switcher ( Application switcher icon ), select Compute resources to view the Compute resources page,(opens in a new tab) then click All simulators.

The following simulation methods support a maximum of 300 circuits and 8192 shots per job. Find more information on each simulator below, including its type, a description, the number of qubits it simulates, whether it includes noise modeling, a list of supported gates, and how to call it using Qiskit Runtime. The simulator_statevector is a good default choice since it is a general-purpose solution method.

Simulator timeout limit

To prevent the simulators from processing jobs that would otherwise not finish processing in a reasonable amount of time, jobs sent to the simulators are limited to run times under 10,000 seconds (~2.75 hours).


Statevector simulator

Type: Schrödinger wavefunction

Name: simulator_statevector

Simulates a quantum circuit by computing the wavefunction of the qubit’s statevector as gates and instructions are applied. Supports general noise modeling.

Qubits: 32

Noise modeling: Yes

Supported gates / instructions

['u1', 'u2', 'u3', 'u', 'p', 'r', 'rx', 'ry', 'rz', 'id',
'x', 'y', 'z', 'h', 's', 'sdg', 'sx', 't', 'tdg', 'swap',
'cx', 'cy', 'cz', 'csx', 'cp', 'cu1', 'cu2', 'cu3', 'rxx',
'ryy', 'rzz', 'rzx', 'ccx', 'cswap', 'mcx', 'mcy', 'mcz',
'mcsx', 'mcp', 'mcu1', 'mcu2', 'mcu3', 'mcrx', 'mcry',
'mcrz', 'mcr', 'mcswap', 'unitary', 'diagonal',
'multiplexer', 'initialize', 'kraus', 'roerror', 'delay']

Code example

from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.get_backend("simulator_statevector")

Stabilizer simulator

Type: Clifford

Name: simulator_stabilizer

An efficient simulator of Clifford circuits. Can simulate noisy evolution if the noise operators are also Clifford gates.

Qubits: 5000

Noise modeling: Yes (Clifford only)

Supported gates / instructions

['cx', 'cy', 'cz', 'id', 'x', 'y', 'z', 'h',
's', 'sdg', 'sx', 'swap', 'delay', 'roerror']

Code example

from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.get_backend("simulator_stabilizer")

Extended stabilizer simulator

Type: Extended Clifford (e.g., Clifford+T)

Name: simulator_extended_stabilizer

Approximates the action of a quantum circuit using a ranked-stabilizer decomposition. The number of non-Clifford gates determines the number of stabilizer terms.

Qubits: 63

Noise modeling: No

Supported gates / instructions

['u0', 'u1', 'cx', 'cz', 'id', 'x', 'y', 'z', 'h',
't', 'tdg', 's', 'sdg', 'sx', 'swap', 'p', 'ccx', 'ccz',
'delay', 'roerror']

Code example

from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.get_backend("simulator_extended_stabilizer")

MPS simulator

Type: Matrix Product State

Name: simulator_mps

A tensor-network simulator that uses a Matrix Product State (MPS) representation for states. This representation is often more efficient for states with weak entanglement.

Qubits: 100

Noise modeling: No

Supported gates / instructions

['unitary', 't', 'tdg', 'id', 'cp', 'u1', 'u2', 'u3', 'u',
'cx', 'cz', 'x', 'y', 'z', 'h', 's', 'sdg', 'sx', 'swap',
'p', 'ccx', 'delay', 'roerror']

Code example

from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.get_backend("simulator_mps")

QASM simulator

Type: General, context-aware

Name: ibmq_qasm_simulator

A general-purpose simulator for simulating quantum circuits both ideally and subject to noise modeling. The simulation method is automatically selected based on the input circuits and parameters.

Qubits: 32

Noise modeling: Yes

Supported gates / instructions

['u1', 'u2', 'u3', 'u', 'p', 'r', 'rx', 'ry', 'rz', 'id',
'x', 'y', 'z', 'h', 's', 'sdg', 'sx', 't', 'tdg', 'swap',
'cx', 'cy', 'cz', 'csx', 'cp', 'cu1', 'cu2', 'cu3', 'rxx',
'ryy', 'rzz', 'rzx', 'ccx', 'cswap', 'mcx', 'mcy', 'mcz',
'mcsx', 'mcp', 'mcu1', 'mcu2', 'mcu3', 'mcrx', 'mcry',
'mcrz', 'mcr', 'mcswap', 'unitary', 'diagonal',
'multiplexer', 'initialize', 'kraus', 'roerror', 'delay']

Code example

from qiskit_ibm_runtime import QiskitRuntimeService
service = QiskitRuntimeService()
backend = service.get_backend("ibmq_qasm_simulator")

Qiskit built-in simulator, see the Python-based simulators API reference.


Next steps

Recommendations
Was this page helpful?
Report a bug or request content on GitHub.