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

✨ Use native QDMI multi-program jobs in PennyLane workflows

Open
#2,364 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

PennyLane produces batches through broadcasting, measurement grouping, differentiation, and shot vectors. Native batching should improve these workflows without undoing concurrent single-program execution.

Current state

python/mqt/core/plugins/pennylane/device.py maps preprocessed tapes to jobs. #2349 submits individual jobs before waiting and preserves ordered results and best-effort cleanup.

Work and decisions

  • Build on the latest concurrent execution path, not the older sequential code in #2226.
  • Use native multi-program jobs only for compatible format, shot, and job-option groups.
  • Restore tape, measurement-group, broadcast, and shot-vector order after indexed decoding.
  • Keep concurrent single-program submission as the unsupported-batch fallback.
  • Preserve counters, batch timing, error propagation, interruption handling, and best-effort cancellation without masking the original error.

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. Preserve #2349 and any successor fixes.

Acceptance and validation

  • Tests compare native and fallback results for ordinary tapes, broadcasts, non-commuting groups, parameter-shift batches, and shot vectors.
  • Failure and KeyboardInterrupt cleanup preserves the first error and attempts cancellation of submitted work.
  • Unsupported batching does not regress asynchronous overlap.
  • Run focused PennyLane/DDSIM tests, supported/minimum sessions, and full lint.

Non-goals

Requiring the MQT compiler for batching; payload capability design; changing supported gate decomposition or sampling semantics.

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.