Skip to content

✨ Add binary-safe QDMI program handling to FoMaC - #1957

Merged
burgholzer merged 10 commits into
mainfrom
agent/core-cudaq-qdmi-integration
Jul 29, 2026
Merged

✨ Add binary-safe QDMI program handling to FoMaC#1957
burgholzer merged 10 commits into
mainfrom
agent/core-cudaq-qdmi-integration

Conversation

@burgholzer

@burgholzer burgholzer commented Jul 27, 2026

Copy link
Copy Markdown
Member

🤖 AI text below 🤖

Summary

  • add exact-byte FoMaC submission and retrieval for binary QDMI programs while preserving null-terminated text handling
  • expose the complete standard QDMI program-format enum in Python and enforce text/binary representation contracts
  • let embedding projects reuse an existing spdlog::spdlog target when adding MQT Core as a subdirectory
  • exercise textual QASM and real QIR bitcode paths through the DDSIM QDMI device

Context

This is an independent prerequisite for the QDMI integration in NVIDIA/cuda-quantum#4882. It does not depend on #1912 and can merge separately. Stable-ID device registration and selective provider composition remain part of #1912. QIR support is provided unconditionally by MQT Core following #1953; this PR does not add feature or capability negotiation.

Validation

  • release configure and focused build with LLVM/MLIR 22.1.3
  • 172 native FoMaC tests
  • 47 DDSIM QDMI device tests, including QIR string and binary profiles
  • 178 focused Python FoMaC tests
  • focused parent-provided spdlog::spdlog CMake configure test
  • full repository lint
  • warning-as-error documentation build

Preserve exact byte payloads for binary QDMI programs while retaining null-terminated text submission. Expose byte submission and retrieval in Python and exercise a real QIR module through DDSIM.

Assisted-by: GPT-5.6 via Codex
Allow DDSIM's QIR JIT to reuse a parent LLVM/MLIR installation without building MQT Core's compiler dialects. Reuse parent-provided spdlog targets, export capability properties, and verify the configuration with a nested consumer build.

Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
Assisted-by: GPT-5.6 via Codex
@codecov

codecov Bot commented Jul 27, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 94.73684% with 2 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/fomac/FoMaC.cpp 93.5% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Assisted-by: GPT-5.6 via Codex
@mergify mergify Bot added the conflict label Jul 29, 2026
Integrate unconditional LLVM/MLIR and QIR support from #1953, remove obsolete QIR capability negotiation, and keep the embedded QDMI consumer test hermetic by reusing the parent FetchContent sources.

Assisted-by: GPT-5.6 via Codex
@mergify mergify Bot removed the conflict label Jul 29, 2026
@burgholzer burgholzer self-assigned this Jul 29, 2026
@burgholzer burgholzer added enhancement Improvement of existing feature QDMI Anything related to QDMI labels Jul 29, 2026
@burgholzer burgholzer added this to the QDMI Support milestone Jul 29, 2026
Remove the FoMaC compatibility property and replace the standalone QDMI consumer matrix with one focused configure test for a parent-provided spdlog target.

Assisted-by: GPT-5.6 via Codex
@burgholzer burgholzer changed the title ✨ Improve FoMaC and embedded QDMI integration ✨ Add binary-safe QDMI program handling to FoMaC Jul 29, 2026
Drop the dedicated imported-spdlog configure fixture and its registration.

Assisted-by: GPT-5.6 via Codex
@burgholzer
burgholzer marked this pull request as ready for review July 29, 2026 18:08
@burgholzer
burgholzer enabled auto-merge (squash) July 29, 2026 18:08
@mergify mergify Bot added the conflict label Jul 29, 2026
Signed-off-by: Lukas Burgholzer <burgholzer@me.com>
@burgholzer
burgholzer disabled auto-merge July 29, 2026 20:20
@burgholzer
burgholzer merged commit d5ae60e into main Jul 29, 2026
2 of 5 checks passed
@burgholzer
burgholzer deleted the agent/core-cudaq-qdmi-integration branch July 29, 2026 20:21
@mergify mergify Bot removed the conflict label Jul 29, 2026
burgholzer added a commit that referenced this pull request Jul 30, 2026
🤖 *AI text below* 🤖

## Description

Backport selected changes from `main` to the maintained `v3.x` branch in
preparation for MQT Core 3.8.0.

The commits are kept separate by upstream change wherever practical. The
series includes:

- configurable QDMI device discovery and stable-ID registration from
#1912
- binary-safe FoMaC/QDMI program handling from #1957
- CMake subproject composability and individually selectable bundled
QDMI devices from the current #1965 head
(`cdc740398e472c19b585cf6dbd7d41de053d84a6`)
- optional QIR support for the DDSIM QDMI device and the associated QIR
runtime improvements
- native RCCX support and the bottom-up DD construction path
- Python CI performance improvements from #1944
- template synchronization through #1964, agent/contributor guide
updates, dependency and pre-commit updates, and related maintenance

## v3 compatibility

This backport deliberately preserves the v3 architecture:

- LLVM/MLIR remains optional and continues to use LLVM/MLIR 21.
- QIR support is available behind the existing MLIR-dependent feature
flags.
- The mandatory LLVM/MLIR 22 transition from #1953 and
compiler-collection changes that depend on the v4 MLIR/QCO redesign are
not included.
- #1965 is adapted to retain optional MLIR and the v3 documentation
roles while preserving its CMake and QDMI behavior.

## Validation

- configured and built the complete non-MLIR library
- configured the MLIR build against LLVM/MLIR 21.1.8
- built and ran focused DD, FoMaC, QDMI driver/registry/device, and QIR
tests
- verified 435 #1965-affected C++ test cases, with two expected device
capability skips
- configured MQT Core as an embedded CMake subproject with all bundled
devices disabled by default
- configured an embedded build with only the DDSIM QDMI device enabled
- built and ran the device-free registry suite: 11 tests passed
- focused Python FoMaC suite: 181 passed, two expected non-MLIR skips
- regenerated Python stubs without a diff
- complete lint, lockfile validation, commit-signature audit, and `git
diff --check` passed

The pre-existing v3 test configuration still requires `llc` even when
MLIR is disabled. The non-MLIR library build itself succeeds; MLIR/QIR
validation used LLVM/MLIR 21.

## Checklist

- [x] The pull request only contains commits that are focused and
relevant to this change.
- [x] I have added appropriate tests that cover the new/changed
functionality.
- [x] I have updated the documentation to reflect these changes.
- [x] I have added entries to the changelog for any noteworthy
additions, changes, fixes, or removals.
- [x] I have added migration instructions to the upgrade guide (if
needed).
- [x] The changes follow the project's style guidelines and introduce no
new warnings.
- [x] The changes are fully tested and pass the CI checks.
- [x] I have reviewed my own code changes.

**If PR contains AI-assisted content:**

- [x] Any agent that created, edited, or submitted GitHub content was
explicitly authorized for that scope, as required by our AI Usage
Guidelines.
- [x] Every agent-authored or agent-edited public text body begins with
the visible disclosure `🤖 *AI text below* 🤖` (titles are exempt).
- [x] I have disclosed AI assistance in the PR description.
- [x] I confirm that I have personally reviewed and understood all
AI-generated content, and accept full responsibility for it.

---------

Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Signed-off-by: Lukas Burgholzer <burgholzer@me.com>
Signed-off-by: Roberto Turrado Camblor <rturrado@gmail.com>
Signed-off-by: rturrado <rturrado@gmail.com>
Co-authored-by: mqt-app[bot] <219534693+mqt-app[bot]@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com>
Co-authored-by: simon1hofmann <119581649+simon1hofmann@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Roberto Turrado Camblor <rturrado@gmail.com>
Co-authored-by: Yannick Stade <100073938+ystade@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Improvement of existing feature QDMI Anything related to QDMI

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant