munich-quantum-toolkit / munich-quantum-toolkit/core

✨ Use native QDMI multi-program jobs in Qiskit workflows

Open
#2,363 0 comments 0 reactions 1 assignee View on GitHub

@burgholzer is already working on this.

Since Sep 4, 2026.

feature python QDMI
Dominant language
C++
Stars
133
Forks
73
Avg merge
17h 34m
Merged PRs (30d)
261

Description

🤖 AI text below 🤖

Elevator pitch

Qiskit circuits and primitive workloads should use provider-native batches when supported, with stable result ordering and a reliable concurrent single-program fallback.

Current state

python/mqt/core/plugins/qiskit/backend.py currently serializes each circuit and calls submit_job separately; the job wrapper represents multiple individual handles.

Work and decisions

  • Consume the low-level multi-program API once available. Validate and serialize inputs before submission.
  • Group only programs sharing the format and job-level options/shot setting. Preserve original circuit and primitive result ordering.
  • Probe supported cardinality without submitting paid work. Fall back only for unsupported batching, not after authentication failures or ambiguous submission errors.
  • Decode indexed results and adapt the existing job wrapper rather than inventing a second SDK job hierarchy.
  • Cover backend.run, SamplerV2, and EstimatorV2 paths that use the adapter.

Dependencies and release boundary

Parent: ✨ Adopt native multi-program QDMI jobs across Core and SDK plugins. Requires ✨ Extract QDMI multi-program Client and bundled-device support. Coordinate with provider children; do not wait for payload metadata.

Acceptance and validation

  • Deterministic fake-device tests cover native batches, single-program fallback, mixed options, indexed results, cancel/wait/failure, and output order.
  • Both primitives return the same shapes and values as the fallback.
  • No retry causes duplicate remote submissions after an uncertain failure.
  • Run focused Qiskit tests and supported/minimum Python sessions plus full lint.

Non-goals

Implicit transpilation; changing payload capability semantics; new provider dependencies; batching heterogeneous jobs into a contract that only accepts homogeneous lists.

Provider compatibility evidence

Contribute an end-to-end example to #2359 using the matching provider implementation. Verify ordered SDK results and lifecycle behavior for both supported native batches and concurrent single-program fallback. Do not infer aggregate support from a provider SDK's batch convenience API.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.