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

✨ Extract QDMI multi-program Client and bundled-device support

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

@burgholzer is already working on this.

Since Sep 4, 2026.

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

Description

🤖 AI text below 🤖

Elevator pitch

Provide the native job API once so SDK batching can progress without inheriting compiler or execution-capability changes.

Current state

The low-level multi-program contract has been extracted from #2226 into #2373 targeting v4.1. Payload descriptors, compiler integration, and SDK consumers remain separate. The draft passes local native, Python, minimum-dependency, stub, and lint checks; hosted CI and review remain gates.

Work and decisions

  • Use the enum-based QDMI #509 contract. Preserve existing single-program entry points as one-element submissions.
  • Add ordered text and byte-program submission, one shared optional shot setting, and indexed results in the Client/bindings.
  • Update the bundled driver and devices, exports, generated stubs, examples, and installation consumers required by that ABI.
  • Preserve byte-exact payloads, optional shots, result ordering, and current job lifetime/cancellation behavior.
  • Keep capability descriptors, compiler target models, SDK dynamic-control work, and replaceable-driver changes out of this PR.

Dependencies and release boundary

Parent: ✨ Adopt native multi-program QDMI jobs across Core and SDK plugins. Contract: https://github.com/Munich-Quantum-Software-Stack/QDMI/pull/509. Extraction source: #2226. Implementation: #2373.

Acceptance and validation

  • Tests cover one/many/zero programs, unsupported cardinality, invalid index, mutation-after-set ownership, failed-set rollback, and aggregate terminal states.
  • Binary payloads retain embedded NUL bytes; optional shots are not replaced with invented values.
  • Retrieval and failure behavior match the standard and do not claim unavailable partial results.
  • Run focused C++/Python QDMI tests, supported/minimum sessions, generated stubs, uvx nox -s lint, and uvx nox -s cpp-lint.

Non-goals

SDK grouping policies; provider-specific batch emulation; new format descriptors or QDMI driver replacement.

Provider validation

Pair the low-level consumer in #2373 with provider evidence through #2359. A test provider validates the Client contract, but it does not establish aggregate-job support in a production provider. Preserve unsupported-cardinality behavior and the concurrent single-program path.

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.