Available IBM Quantum simulators
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 ( ), 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")
Qiskit built-in simulator, see the Python-based simulators API reference.
Next steps
- Learn about simulators built into Qiskit in the Python-based simulators API reference.
- Discover available systems in the System information topic.