🚚 Take ownership of the neutral-atom stack - #1111
Conversation
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Assisted-by: Opus 5 via Claude Code
Cpp-Linter Report
|
Assisted-by: Opus 5 via Claude Code
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
Quite a bit of the code mentioned here has been backported to v3.x, so it can also be moved as part of this PR. |
Yes, I just didn't do that just yet because I didn't want the Python CI to be red. The upcoming PR in MQT Core will be fully independent of all of this. Once 3.9.0 is released and MQT QCEC is updated accordingly, I'll get this PR ready. 😌 |
|
@burgholzer and @ystade, I have a quick question about whether (or how) the neutral-atom operations in |
|
As soon as NALAC causes any issues, feel free to remove it. I just kept it as a legacy but it is Kinds deprecated. Consolidating anything here with respect to NALAC is a warte of time. |
I think we do not need to remove it, necessarily. But what I take from your comment is that it is entirely fine to keep everything for NALAC self contained in its own directory and rather focus on a clean integration for the rest. |
Description
🤖 AI text below 🤖
This is the MQT QMAP side of moving the neutral-atom stack out of MQT Core (munich-quantum-toolkit/core#2092). QMAP is the only downstream consumer of the transferred code, so each piece is added here first and can then be removed from Core.
Four pieces move in:
MQT::QMapNAQDMIDeviceConfigunderinclude/na/qdmi, together with the bundled device schema and its tests.MQT::QMapNAComputationunderinclude/na/computation.nasp,zoned, andhybridmapnow link that target instead ofMQT::CoreNA, and no QMAP target depends onMQT::CoreNAanymore.MQT::QMapNAFoMaCunderinclude/na/fomac.AodOperationmoves intohybridmap, which was its only consumer, so it no longer has to live in generic Core IR.The neutral-atom QDMI device itself is deliberately left behind for now. Its implementation includes
qdmi/common/DeviceConfiguration.hpp, which exists only on Core'smainand not in the pinned v3.8.0, so the device cannot compile here until QMAP pins a Core release that ships it. The device tests and the FoMaC test are held back with it, since both need a registered neutral-atom QDMI device at runtime.The Python bindings for
mqt.core.naare not moved yet either. They bindna::Session::Deviceas deriving fromfomac::Device, which Core registers inmqt.core.qdmi, so moving them requires wiring that base class across package boundaries.Because the code is transferred rather than rewritten,
FoMaCis added to thetyposallowlist, matching the entry Core already carries.AI notice
This PR and its contents were created with the assistance of Opus 5 via Claude Code.
Checklist
If PR contains AI-assisted content:
🤖 *AI text below* 🤖(titles are exempt).