Ecosystem
QRMI is a library; the projects below connect it to workload managers and other tools.
Core
- QRMI
The interface itself: a Rust library with Python, C and Lua APIs to acquire, run tasks on and monitor quantum resources. Supports IBM Quantum System and Quantum Compute Service, Pasqal Cloud and Local, IQM, Alice & Bob and OQTOPUS.
- QRMI documentation
Getting started, examples and the task_runner command line tool.
Workload managers
- Slurm Slurm
SPANK plugin that adds a --qpu option to Slurm jobs and acquires and releases QPUs through QRMI.
- Slurm license poller Slurm
Daemon that sets Slurm dynamic license counts from the QRMI-reported status of each quantum resource.
- PBS PBS
runjob and execjob_end hooks that acquire and release the quantum resource a job requests.
- IBM LSF LSF
LSF hooks for QRMI, with a container setup based on LSF Community Edition.
- Open Cluster Scheduler / Gridware Cluster Scheduler OCS GCS
QRMI setup for OCS and GCS, submitting jobs with qsub -l qpu=<resource>.
- Flux Framework Flux
Flux shell plugin that runs quantum workloads through QRMI, with Flux as a user-space scheduler.
- Flux quantum co-scheduling Flux under development
Flux jobtap, validation and client plugins for co-scheduling quantum and classical resources.
- Kubernetes operator Kubernetes prototype
Operator with QuantumResource and QuantumResourceClaim custom resources that acquires and releases QPUs through QRMI, holding annotated Jobs until their claim is bound. Lives on the proto/k8s-operator branch of QRMI.
- Kubernetes scheduler plugin Flux Kubernetes
Kubernetes scheduler plugin backed by a Fluxion resource graph that models quantum backends as resources.
Bindings and tools
- qrmi-go
Go bindings for the QRMI C API.