QPU Interfaces

QPU Interfaces

QPU Interfaces are the last step between Composer and real quantum hardware. Each supported vendor has its own worker service. The worker takes a batch of circuits from Composer, compiles it for the target device, submits it through the vendor’s SDK, waits for the device to finish, and posts counts back. Users never call the workers directly. They pick a QPU system in Divi or the dashboard, and Composer routes the job.

Supported vendors

Vendor Worker What it does
IBM Quantum IBM Transpiles against the device’s live calibration and avoids dead qubits. Optionally searches many layout and routing seeds and scores them on gate error, readout error, and idle decoherence. Runs everything inside one Qiskit Runtime batch. Supports dynamical decoupling, twirling, fractional gates, and M3 readout mitigation.
IQM IQM Transpiles to IQM’s native gates with an optional seed search, splits large shot counts into device-sized batches, and supports M3 readout mitigation.
AWS Braket Braket Converts circuits through OpenQASM 3 and submits them as a Braket batch to the device configured for the deployment.

An interface for IQCC is in development.

How a worker handles a job

  flowchart LR
    C["Composer orchestrator"] -->|"one message per device:<br/>circuit refs, shots, credentials"| Q[("Vendor queue")]
    Q --> W["Vendor worker"]
    W -->|"fetch compressed circuits"| S[("Object storage")]
    W -->|"compile + submit"| V{{"Vendor QPU"}}
    V --> W
    W -->|"counts / failure reason"| C
  1. Receive. The worker pulls a message from its vendor queue. The message lists the circuits (stored as compressed, already-packed circuits), their shots, and the job’s vendor credentials and device options.
  2. Claim. It records the message’s idempotency key before touching hardware, so a redelivered message can never run twice on a QPU and be billed twice.
  3. Compile and submit. It transpiles for the device and submits through the vendor SDK. Long runs keep the message hidden from other workers and protect the worker from scale-in.
  4. Report. Counts are posted back to Composer, which unpacks and aggregates them. If a job can never succeed (bad options, a rejected account, an unavailable device, an unsupported feature), the worker reports the reason and Composer fails the whole job straight away.

Cancellation sets a flag that workers check between stages. For IBM it also cancels Runtime jobs that are already submitted. Dry-run connections exercise the whole path without calling the vendor.

Credentials

QPU systems are registered per user or organisation with that organisation’s own vendor credentials (bring your own token), and hardware time is billed by the vendor. In Dedicato, Qoro can also manage vendor access. Credentials are stored encrypted, travel with each job, and are never configured globally on a worker. Each vendor’s tunable options (optimisation level, layout, mitigation, and others) are published as a schema, which drives the dashboard forms and Divi’s DeviceConfig.

Adding a vendor

A new vendor needs a worker built on the shared queue-worker base (compile, submit, report), a vendor-options schema, and a queue that Composer can route to. Everything upstream (scheduling, packing, billing, cancellation) is shared.