A dependency-free, header-driven C++20 task scheduler (mqss::scheduler::Scheduler<TaskType>) for
dispatching quantum circuits to quantum hardware devices. TaskType is constrained structurally by the Schedulable concept — any type exposing task_id()/priority() satisfies it; plug in your own task struct and the scheduler works unmodified.
MQSS stands for Munich Quantum Software Stack and is a project of the Munich Quantum Valley initiative. It is jointly developed by the Munich Quantum Valley (MQV) gGmbH, Leibniz Supercomputing Centre (LRZ), the Chair for Design Automation (CDA), and the Chair of Computer Architecture and Parallel Systems (CAPS) at TUM. It provides a comprehensive compilation and runtime infrastructure for on-premise and remote quantum devices, support for modern compilation and optimization techniques, and enables both current and future high-level abstractions for quantum programming. This stack is designed to be capable of deployment in a variety of scenarios via flexible configuration options. This includes stand-alone scenarios for individual systems, cloud access to a variety of devices, as well as tight integration into HPC environments supporting quantum acceleration. Concrete instances of the MQSS are deployed at the LRZ and MQV gGmbH, providing unified access to all of their quantum devices through multiple compatible access paths. This includes a web portal, command line access via web credentials, as well as the option for hybrid access with tight integration with HPC systems. It facilitates the connection between end-users and quantum computing platforms by its integration within HPC infrastructures, such as those found at the LRZ.
The code is publicly available and hosted on GitHub at github.com/Munich-Quantum-Software-Stack/MQSS-Scheduler.
The MQSS Quantum Task Scheduler is released under the Apache License v2.0 with LLVM Exceptions. See LICENSE for more information. Any contribution to the project is assumed to be under the same license.
Scheduler<TaskType> is constrained by the Schedulable concept (task_id(), priority()). It queues tasks
(scheduleTask/scheduleTasks) and dispatches them (getNextReadyTask) according to
a SchedulingPolicy fixed at construction — see Scheduling Policies.
include/scheduler/quantum_task.hpp's mqss::scheduler::QuantumTask is a lightweight example task
type (mirroring the MQSS protocol's QuantumTask message) used to exercise the
scheduler in tests and examples. QDMI/LLVM/submitter enter the picture of quantum resource manager at the example
(examples/qrm-sscheduler/), where a scheduled task actually gets submitted to a device.
- CMake ≥ 3.19, a C++20-capable compiler
- GoogleTest, fetched automatically when building the test suite (see cmake/ExternalDependencies.cmake)
- Doxygen + Graphviz (optional, only needed to generate the API documentation)
external/'s dependencies (QDMI, QInfo, submitter, LLVM) are required to build the
example/submission toolchain (examples/qrm-sscheduler/) alongside the library.
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SCHEDULER_TESTS=ON
cmake --build build -jIf you also need the gRPC ingress → Scheduler → QDMI submission pipeline
(examples/qrm-sscheduler/), clone and build the external dependencies first:
cd external
bash clone.sh # QDMI, QInfo, submitter
bash build.sh # compile and install the librariesSee Getting Started for the full step-by-step guide.
ctest --test-dir build --output-on-failuresource examples/export_env_vars.sh
cd examples/qrm-sscheduler
make proto && make
make runSee examples/qrm-sscheduler/Readme.md for the full
gRPC → Scheduler → QDMI pipeline, including how to submit a quantum circuit and verify the
result.
Please use the GitHub channels — issues and pull requests — to allow for open discussion.
See contributing.md and code_of_conduct.md.
This project is released under the Apache License v2.0 with LLVM Exceptions. See LICENSE for more information. Any contribution to the project is assumed to be under the same license.
