Skip to content

Repository files navigation

MQSS Quantum Task Scheduler

Documentation   CI

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.

FAQ

What is MQSS?

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.

Where is the code?

The code is publicly available and hosted on GitHub at github.com/Munich-Quantum-Software-Stack/MQSS-Scheduler.

Under which license is the MQSS Quantum Task Scheduler released?

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.

Architecture

Scheduler Architecture

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.

Requirements

  • 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.

Building

1. Configure and build the scheduler

cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DBUILD_SCHEDULER_TESTS=ON
cmake --build build -j

2. (Optional) Build the example/submission toolchain

If 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 libraries

See Getting Started for the full step-by-step guide.

Running Tests

ctest --test-dir build --output-on-failure

Examples

source examples/export_env_vars.sh
cd examples/qrm-sscheduler
make proto && make
make run

See examples/qrm-sscheduler/Readme.md for the full gRPC → Scheduler → QDMI pipeline, including how to submit a quantum circuit and verify the result.

Contact

Please use the GitHub channels — issues and pull requests — to allow for open discussion.

Contributing

See contributing.md and code_of_conduct.md.

License

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.

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Stars

1 star

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages