Skip to main contentIBM Quantum Documentation

Native gates and operations

Each processor family has a native gate set. By default, the systems in each family only support running the gates and operations in the native gate set. Thus, every gate in the circuit must be translated (by the transpiler) to the elements of this set.

You can view the native gates and operations for a system either with Qiskit or on the IBM Quantum™ Platform Compute resources page.

Basis gates

The terms native gates and basis gates are often used interchangeably. However, you can specify a different set of basis gates to use, while the native gate set never changes. For information about changing the basis gates, see the Represent quantum computers topic.


Find the native gate set for a system

With Qiskit

 
from qiskit_ibm_runtime import QiskitRuntimeService
 
service = QiskitRuntimeService(channel="ibm_quantum")
 
for backend in service.backends():
    config = backend.configuration()
    if "simulator" in config.backend_name:
        continue
    print(f"Backend: {config.backend_name}")
    print(f"    Processor type: {config.processor_type}")
    print(f"    Supported instructions:")
    for instruction in config.supported_instructions:
        print(f"        {instruction}")
    print()

On IBM Quantum Platform

Select any system on the Compute resources(opens in a new tab) tab. The default gates for that system are listed under Details. Note that the non-unitary operations are not listed here; use the method in Qiskit described above to see all native gates and operations for a system.


Tables of gates and operations, by processor family

Heron

NameNotes
CZtwo-qubit gate
RZsingle-qubit gate
SXsingle-qubit gate
Xsingle-qubit gate
IDsingle-qubit gate wait cycle
resetsingle-qubit gate, non-unitary; not the same as the initialization done at the start of a circuit to prepare the all 0's state
if_elsecontrol flow for classical feedforward
for_loopcontrol flow for classical feedforward
switch_casecontrol flow for classical feedforward
measure
delay

Eagle

NameNotes
ECRtwo-qubit gate
RZsingle-qubit gate
SXsingle-qubit gate
Xsingle-qubit gate
IDsingle-qubit gate wait cycle
resetsingle-qubit gate, non-unitary; not the same as the initialization done at the start of a circuit to prepare the all 0's state
if_elsecontrol flow for classical feedforward
for_loopcontrol flow for classical feedforward
switch_casecontrol flow for classical feedforward
measure
delay

Falcon

NameNotes
CXtwo-qubit gate
RZsingle-qubit gate
IDsingle-qubit gate wait cycle
resetsingle-qubit gate, non-unitary; not the same as the initialization done at the start of a circuit to prepare the all 0's state
if_elsecontrol flow for classical feedforward
for_loopcontrol flow for classical feedforward
switch_casecontrol flow for classical feedforward
measure
delay
The init_qubits flag

The init_qubits flag, set as a primitive execution option, controls whether qubits are reset to the zero state at the start of each circuit. Its default value is True, indicating that the qubits should be reset. If False, the qubits will begin in the final state from the previous shot, and you must manually insert resets if you want to reset them to the zero state. If a job consists of multiple circuits, then the shots are executed in a "round-robin" fashion. That is, each circuit will be executed in sequence to obtain one shot from each circuit. This process is then repeated until the requested number of shots has been obtained from all circuits.


Next steps

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