Skip to main content
IBM Quantum Platform

Introduction to options

You can pass options to primitives to customize them to meet your needs. This section focuses on Qiskit Runtime primitive options. While the interface of the primitives' run() method is common across all implementations, their options are not. Consult the corresponding API references for information about the qiskit.primitives and qiskit_aer.primitives options.


Overview

Structure

When calling the primitives, you can pass in options by using an options class or a dictionary. Commonly-used options, such as resilience_level, are at the first level. Other options are grouped into different categories, such as execution. See the Set primitive options section for full details.

Defaults

If you do not specify a value for an option, it is given a special value of Unset and the server default value is used. Thus, the default value will be the same regardless of your code version.

The tables in the Options classes summary section lists the default values.


Set options

Options can be defined before a primitive is constructed and passed to the primitive, which makes a copy of them. This can be done either as a nested dictionary, or by using the options classes. Additionally, after the primitive is constructed, its options can be changed. Use the workflow that works best for your application. See Specify options for full details.


Options classes summary

  • Dynamical decoupling: Options for dynamical decoupling.
  • Environment: Execution environment options, such as the logging level to set and job tags to add.
  • Execution: Primitive execution options, including whether to initialize qubits and the repetition delay.
  • Resilience: Advanced options for configuring error mitigation methods such as measurement error mitigation, ZNE, and PEC.
  • Simulator: Simulator options, such as the basis gates, simulator seed, and coupling map. Applies to local testing mode only.
  • Twirling: Twirling options, such as whether to apply two-qubit gate twirling and the number of shots to run for each random sample.

Available options

The following table documents options from the latest version of qiskit-ibm-runtime. To see older option versions, visit the qiskit-ibm-runtime API reference and select a previous version.

default_shots

The total number of shots to use per circuit per configuration.

Choices: Integer >= 0 Default: None

default_shots API documentation

default_precision

The default precision to use for any PUB or run() call that does not specify one.

Choices: Float > 0 Default: 0.015625 (1 / sqrt(4096))

default_precision API documentation

dynamical_decoupling

Control dynamical decoupling error mitigation settings.

dynamical_decoupling API documentation

dynamical_decoupling.enable

Choices: True, False Default: False

dynamical_decoupling.extra_slack_distribution

Choices: middle, edges Default: middle

dynamical_decoupling.scheduling_method

Choices: asap, alap Default: alap

dynamical_decoupling.sequence_type

Choices: XX, XpXm, XY4 Default: XX

dynamical_decoupling.skip_reset_qubits

Choices: True, False Default: False

environment

environment API documentation

environment.callback

Callable function that receives the Job ID and Job result.

Choices: None Default: None

environment.job_tags

List of tags.

Choices: None Default: None

environment.log_level

Choices: DEBUG, INFO, WARNING, ERROR, CRITICAL Default: WARNING

environment.private

Choices: True, False Default: False

execution

execution API documentation

execution.init_qubits

Whether to reset the qubits to the ground state for each shot.

Choices: True, False Default: True

execution.rep_delay

The delay between a measurement and the subsequent quantum circuit.

Choices: Value in the range supplied by backend.rep_delay_range Default: Given by backend.default_rep_delay

max_execution_time

Choices: Integer number of seconds in the range [1, 10800] Default: 10800 (3 hours)

max_execution_time API documentation

resilience

Advanced resilience options to fine tune the resilience strategy.

resilience API documentation

resilience.layer_noise_learning

Options for learning layer noise.

resilience.layer_noise_learning API documentation

resilience.layer_noise_learning.layer_pair_depths

Choices: list[int] of 2-10 values in the range [0, 200] Default: (0, 1, 2, 4, 16, 32)

resilience.layer_noise_learning.max_layers_to_learn

Choices: None, Integer >= 1 Default: 4

resilience.layer_noise_learning.num_randomizations

Choices: Integer >= 1 Default: 32

resilience.layer_noise_learning.shots_per_randomization

Choices: Integer >= 1 Default: 128

resilience.layer_noise_model

Choices: NoiseLearnerResult, Sequence[LayerError] Default: None

resilience.measure_mitigation

Choices: True, False Default: True

resilience.measure_noise_learning

Options for measurement noise learning.

resilience.measure_noise_learning API documentation

resilience.measure_noise_learning.num_randomizations

Choices: Integer >= 1 Default: 32

resilience.measure_noise_learning.shots_per_randomization

Choices: Integer, auto Default: auto

resilience.measure_noise_learning.pec_mitigation

Choices: True, False Default: False

resilience.measure_noise_learning.pec

Probabilistic error cancellation mitigation options.

resilience.measure_noise_learning.pec API documentation

resilience.measure_noise_learning.pec.max_overhead

Choices: None, Integer >= 1 Default: 100

resilience.measure_noise_learning.pec.max_overhead

Choices: None, Integer >= 1 Default: 100

resilience.measure_noise_learning.pec.noise_gain

Choices: auto, float in the range [0, 1] Default: auto

resilience.measure_noise_learning.zne_mitigation

Choices: True, False Default: False

resilience.measure_noise_learning.zne

Choices: True, False Default: False

resilience.measure_noise_learning.zne API documentation

resilience.measure_noise_learning.zne.amplifier

Choices: gate_folding, gate_folding_front, gate_folding_back, pea Default: gate_folding

resilience.measure_noise_learning.zne.extrapolated_noise_factors

Choices: List of floats Default: [0, *noise_factors]

resilience.measure_noise_learning.zne.extrapolator

Choices: One or more of: exponential, linear, double_exponential, polynomial_degree_(1 <= k <= 7), fallback Default: (exponential, linear)

resilience.measure_noise_learning.zne.noise_factors

Choices: List of floats; each float >= 1 Default: (1, 1.5, 2) for PEA, and (1, 3, 5) otherwise

resilience_level

How much resilience to build against errors. Higher levels generate more accurate results at the expense of longer processing times.

Choices: 0, 1, 2 Default: 1

resilience_level API documentation

seed_estimator

Choices: Integer Default: None

seed_estimator

simulator

Options to pass when simulating a backend

simulator API documentation

simulator.basis_gates

Choices: List of basis gate names to unroll to Default: The set of all basis gates supported by Qiskit Aer simulator

simulator.coupling_map

Choices: List of directed two-qubit interactions Default: Full connectivity

simulator.noise_model

Choices: Qiskit Aer NoiseModel, or its representation Default: None

simulator.seed_simulator

Choices: Integer Default: None

twirling

Twirling options

twirling API documentation

twirling.enable_gates

Choices: True, False Default: False

twirling.enable_measure

Choices: True, False Default: True

twirling.num_randomizations

Choices: auto, Integer >= 1 Default: auto

twirling.shots_per_randomization

Choices: auto, Integer >= 1 Default: auto

twirling.strategy

Choices: active, active-circuit, active-accum, all Default: active-accum

experimental

Experimental options, when available.

experimental.execution_path

Choices: active, active-circuit, active-accum, all Default: None


Feature compatibility

Due to differences in the device compilation process, certain runtime features cannot be used together in a single job. Click the appropriate tab for a list of features that are incompatible with the selected feature:

Incompatible with:

  • Gate-folding ZNE
  • PEA
  • PEC
  • Dynamical decoupling
  • Fractional gates

Other notes:

  • Can be used with gate twirling for non-conditional gates.
  • Dynamic circuits are not supported on all QPUs. Additionally, some dynamic circuit functions have been deprecated. For details, see Classical feedforward and control flow.

Next steps

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