Available IBM Quantum simulators
This page gives details about the IBM Quantum cloud-based simulators. For information about the Qiskit built-in simulator, see the Python-based simulators page in the API reference. You can also use the Qiskit reference primitives for local statevector simulation.
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 ( ), 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.
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")