♻️ Define target compilation with payload specifications - #2219
Conversation
b53e303 to
c62e088
Compare
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
c62e088 to
ae5b72f
Compare
burgholzer
left a comment
There was a problem hiding this comment.
This one will likely still need a bit of work to iron out the details.
ae5b72f to
b0dd192
Compare
|
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
b0dd192 to
bb0240b
Compare
|
This looks much cleaner now. And should also be ready. |
bb0240b to
28284fa
Compare
|
@simon1hofmann @denialhaag any feedback on this one from your side? |
Going through this now and will provide feedback in around 15min. |
simon1hofmann
left a comment
There was a problem hiding this comment.
Also went through the changes here and they look really clean 👍
cad6aa8 to
9e2339c
Compare
|
🤖 AI text below 🤖 Rebased onto main at
Local validation on the restacked tree: 253 C++ tests passed (compiler, native synthesis, MQT IR), 55 Python compiler tests and six target-specific Qiskit translation tests passed, and the CLI shorthand output assembled successfully with QIR major/minor flags 2/1. Repository lint passed. Full changed-file C++ lint ran, but the local CLion clang-tidy 23 development build reports three false positives on necessary dereference parentheses. Its suggested edit fails to compile in a minimal reproducer, so those expressions were retained; the genuine trailing-comma finding was fixed. This is not a clean local C++ lint result. The build uses main's exact jeff-mlir dependency pin. Hosted CI is a separate final-head check; these are local results. The rebase preserves main's reusable-function inlining before #2162's control-flow legalization. The existing loop/switch capability snapshot and safety limits remain intact. |
denialhaag
left a comment
There was a problem hiding this comment.
Thanks for the continued improvements, @simon1hofmann! 🙂 Overall, this looks pretty good to me. I only have a few remarks:
2a25b61 to
245a55f
Compare
Record complete compiler-target facts and one exact payload execution contract as typed module metadata. Assisted-by: GPT-5.6 Sol via Codex
Represent the selected hardware target and payload specification as one validated target environment. Cache that value through the MLIR analysis manager for mapping, native synthesis, and conformance. Derive targeted compiler output from the selected payload format in the C++, Python, and mqt-cc APIs. Keep untargeted output selection independent. Assisted-by: GPT-5.6 Sol via Codex
Declare the dialect used by runtime-angle synthesis and cover a fresh context that does not preload it. Assisted-by: GPT-6 via Codex
Zero-fill omitted numeric components at the payload snapshot boundary. Accept the same syntax in typed MLIR and keep compiler output selection exact. Assisted-by: GPT-6 via Codex
Use DDSIM for executable QIR examples and state the environment required by the C++ pipeline builder. Assisted-by: GPT-6 via Codex
Co-authored-by: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Signed-off-by: simon1hofmann <119581649+simon1hofmann@users.noreply.github.com>
Assisted-by: OpenAI via Codex
Assisted-by: OpenAI via Codex
Preserve upstream regressions after rebasing onto main by using the existing target-environment helpers. Assisted-by: OpenAI via Codex
245a55f to
8a050a0
Compare
denialhaag
left a comment
There was a problem hiding this comment.
Thanks for addressing all of my comments, @simon1hofmann! I'll leave the final comment open for now, but I'll not die on that hill; you can resolve it whenever we have come to any conclusion. I'm approving for now. Feel free to request another review if there are new changes I can have a look at! 🙂
|
Also looks good to me, will leave the final check to @burgholzer before merging. |
|
I'll tackle this one next |
Make the pipeline take one environment and reuse its prepared target in the cached analysis. Standalone passes decode the typed pair on demand. Remove the unused DLTI extension and query layer. Assisted-by: GPT-6 via Codex
burgholzer
left a comment
There was a problem hiding this comment.
I ran this through another iteration with the goal of simplifying the implementation, which was pretty successful I believe.
I'd vote for getting this in now and looking at the fallout in subsequent audits until the release.
🤖 AI text below 🤖
Lead: @simon1hofmann. Cross-repository coordination: @burgholzer.
Description
Keep the compiler-only selected-program capability prototype independent of QDMI runtime adoption. Typed metadata and a cached target-environment analysis connect target selection to compilation without requiring unreleased QDMI APIs.
Compiler workstream: main → #2219 → #2162. QDMI adaptation remains the separate integration PR #2227. This compiler-only work targets Core 4.0, subject to Simon's compiler contract review and current CI. It does not require QDMI 1.4 or approval of the later QDMI metadata contract. #2131 tracks compiler requirements; #2365 coordinates the separate Core 4.1/QDMI 1.4 adaptation.
Retain the compiler behavior already released onto main through #2218/#2323/#2215: unknown topology or gate sets fail during inference, variadic controlled DDSIM gates and zero-arity global phase remain supported, and placement/decomposition retain their validated target. No driver replacement, batching or metadata cleanup is included.
Local validation
AI-assisted restructuring; human design review remains required.
Compiler contract review
Model the capabilities of the selected program/target combination rather than assuming a format's full language is executable. Keep the initial feature vocabulary bounded and informed by OpenQASM and QIR. Validate representative benchmark targets without requiring a QDMI 1.4 device. The later QDMI adapter may expose only a subset until its independent contract is ready.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).