Run Settings

Overview

Run settings control how a circuit is executed: numerical precision, number of shots, synchronous vs asynchronous execution, performance vs accuracy trade-offs, and optional advanced behavior such as amplitude generation or GPU transfer.

Some options are set when acquiring the backend. Others are passed to backend.run() or to the Sampler/Estimator when using the Qiskit toolkit.

Precision

The SDK supports single and double precision. The default is single.

Core SDK — set at backend acquisition:

backend = provider.get_backend(
    backend="scarlet_quantum_rings",
    precision="double"
)

Core SDK — set at run time:

job = backend.run(
    qc,
    shots=100,
    mode="async",
    precision="double"
)

If precision is set at backend acquisition, it remains fixed until you re-acquire the backend or override it in run().

Shots and execution mode

  • shots — integer > 1. Number of bitstrings sampled.

  • mode"sync" or "async".

When mode="async", the job runs in a background thread and returns immediately.

Example:

job = backend.run(qc, shots=100, mode="async")

Threshold and performance modes

The performance option selects internal execution behavior (efficiency vs accuracy trade-offs).

Available values:

  • "HIGHESTEFFICIENCY"

  • "BALANCEDACCURACY"

  • "HIGHESTACCURACY"

  • "AUTOMATIC"

  • "CUSTOM"

If performance="CUSTOM", you must provide:

  • threshold — integer >= 2

Example:

job = backend.run(
    qc,
    performance="CUSTOM",
    threshold=32
)

Note

Legacy documentation states threshold is > 16. Current behavior supports threshold >= 2. If you encounter examples that use > 16, treat that as a legacy constraint rather than a strict requirement.

Advanced options

The following advanced options are available for run-time configuration.

  • transfer_to_cpu — In GPU mode, set to False to keep operations on the GPU during measurement.

  • generate_amplitude — If enabled, generates amplitudes for measured bitstrings. A file name must be provided via file. Legacy documentation states this is supported only in QrBackendV2.run; if you use it via core backend.run(), validate behavior for your version.

  • file — File path for storing measurements and/or amplitudes (used with generate_amplitude).

  • max_threads — Maximum number of threads during measurement. Legacy documentation states this is supported only in QrBackendV2.run; validate behavior for your version.

Toolkit-only parameters

When using the Quantum Rings toolkit for Qiskit, settings are typically provided via:

  • backend creation, or

  • options / run_options dictionaries for Sampler or Estimator.

Toolkit configuration parameters include:

  • token

  • name

  • backend

  • gpu (GPU id in multi-GPU systems)

See Toolkit for Qiskit.

Job lifecycle helpers

You can monitor job execution using:

from QuantumRingsLib import job_monitor
job_monitor(job)

To reduce output:

job_monitor(job, quiet=True)

To block until completion:

def jobCallback(job_id, state, job):
    pass

job.wait_for_final_state(0, 5, jobCallback)

Refer to the API reference for full signatures.

Potential inconsistencies to review

  • performance option casing appears in multiple forms in legacy examples (uppercase, lowercase, mixed case). Confirm whether casing is significant.

  • Legacy documentation states that generate_amplitude / file / max_threads are supported only in QrBackendV2.run; confirm supported behavior in core backend.run().