munich-quantum-toolkit / munich-quantum-toolkit/core
✨ Centralize static-license QDMI deployment and optional SPANK injection
@flowerthrower is already working on this.
Since Sep 4, 2026.
- Dominant language
- C++
- Stars
- 133
- Forks
- 73
- Avg merge
- 17h 34m
- Merged PRs (30d)
- 261
Description
🤖 AI text below 🤖
Lead: @flowerthrower. Cross-repository coordination: @burgholzer.
Elevator pitch
Cluster administrators need one maintained Slurm setup and one authoritative guide. Provider repositories should supply their catalogue and credential instructions rather than duplicate scheduler logic and leave users unsure which runtime to install.
Current state
Core already supplies qdmi::slurm::openDeviceFromLicense, Python bindings, docs/qdmi/slurm.md, and test/slurm. Braket SPANK injects configuration references. IQM SPANK additionally embeds the provider and validates sessions at launch.
Work and decisions
- Make Core the owner of static-license selection, optional generic configuration injection, and shared Slurm fixtures.
- Keep ordinary QDMI 1.3.x support; neither replaceable drivers nor new availability metadata is required.
- Give the injection component a source-only GPL boundary; keep Core runtime and PyPI artifacts independent of Slurm/GPL code.
- Migrate both providers to the shared component and guide, retaining only provider installation, catalogue, credentials, and examples.
- Do not retain legacy provider plugins after migration. If the optional generic access/status check is not ready, remove early validation and document that behavior explicitly.
- Treat licenses as scheduler accounting/selection, not provider authorization or proof of allocation.
Dependencies and release boundary
Current implementation: src/qdmi/Slurm.cpp, bindings/qdmi/slurm.cpp, docs/qdmi/slurm.md, test/slurm. Optional launch check: ✨ Add a reusable QDMI device access and status checker and ✨ Add optional generic SPANK launch-time device validation. Availability design: 💡 Design QDMI availability-based Slurm scheduling.
Acceptance and validation
- An installed Core environment and a provider catalogue work without SPANK.
- Optional injection behaves consistently for both providers, respects documented overrides, and does not leak service credentials.
- Each documented deployment chooses its runtime/catalogue explicitly and does not require an unnecessary second runtime.
- The shared SPANK-only build needs no LLVM or provider SDK build.
- Target Core 4.1/MQSF with the shared setup and provider migrations.
Non-goals
Availability-based scheduling; QDMI 1.4 as a prerequisite; allocating cloud reservations; a Slurm authorization layer; retaining parallel legacy SPANK implementations.
Shared deployment fixture
Maintain one Dockerized Slurm deployment/test setup in Core. Existing provider repositories consume it with their catalogue and provider configuration rather than maintaining scheduler implementations or independent cluster setup recipes. Cover SPANK-free static selection, optional injection, both runtime/catalogue deployment choices, and both Qiskit and PennyLane. Keep provider installation and credentials in provider documentation; Core #2312 is the authoritative scheduler guide.
Sub-issues
- ✨ Add shared source-only SPANK configuration injection
- ♻️ Replace IQM Slurm integration with the shared Core setup
- ♻️ Replace Amazon Braket Slurm integration with the shared Core setup
- 📝 Document the canonical static-license QDMI deployment
- ✨ Add a reusable QDMI device access and status checker
- ✨ Add optional generic SPANK launch-time device validation
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.