# QDMI on IQM

**QDMI on IQM** is IQM’s official, production-ready implementation of the
[Quantum Device Management Interface (QDMI)](https://github.com/Munich-Quantum-Software-Stack/qdmi).

By providing this officially supported implementation, IQM empowers HPC centers
and middleware developers to embed IQM processors via a stable, vendor-agnostic
standard—no fragile, bespoke adapter chains, just clean integration through a
shared interface.

The library is written in C++20 and communicates with IQM hardware through the
[IQM Server API](https://resonance.iqm.tech/docs/api-reference), handling
session control, calibration queries, and job lifecycle management
transparently. Pre-compiled binaries for all major platforms are provided
alongside a Python wrapper for straightforward installation via `pip` or `uv`.

## Where to Start

| I want to…                                                       | Start here                                                                    |
|------------------------------------------------------------------|-------------------------------------------------------------------------------|
| Run quantum circuits on IQM hardware from **Python / Qiskit**    | [Qiskit Integration](qiskit.html.md)             |
| Run end-to-end example workloads (benchmarks, quantum chemistry) | [Examples](examples.html.md)                       |
| Integrate the C++ library directly                               | [Usage Guide](usage.html.md)                    |
| Integrate with **Slurm** on an HPC cluster                       | [SPANK Plugin Guide](spank_plugin.html.md)             |
| Install via **Spack** on an HPC cluster                          | [Spack Guide](spack_guide.html.md)                    |
| Understand the Python package and its entry points               | [Python Package](python_package.html.md)                 |
| Compare integration options for my HPC site                      | [Integration Scenarios Analysis](integration_scenarios.html.md) |
| Stand up IQM access on a Slurm cluster as an administrator       | [Administrator Guide](admin_guide.html.md)            |
| Contribute to the project                                        | [Contributing](contributing.html.md)                   |

## API Reference

The generated API references cover both the C/C++ API and the Python package:
the [C/C++ API reference](capi/index.html.md) documents all public QDMI functions
and types exposed by the library, while the
[Python API reference](api/iqm/qdmi/index.html.md) covers the `iqm-qdmi` package
including the Qiskit backend and its sampler and estimator primitives.

## User Guide

* [Running End-to-End Quantum Workloads on IQM Hardware via QDMI-on-IQM](examples.html.md)
* [Using Qiskit to Run Quantum Workloads on IQM Hardware via QDMI-on-IQM](qiskit.html.md)
* [Directly Using the QDMI Device Library to Run Quantum Workloads on IQM Hardware via QDMI-on-IQM](usage.html.md)
* [Easy Integration with the `iqm-qdmi` Python Package](python_package.html.md)
* [Slurm SPANK Plugin](spank_plugin.html.md)
* [Integrating with Spack](spack_guide.html.md)
* [Changelog](CHANGELOG.html.md)

## Administrator Guide

* [Integration Scenarios Analysis](integration_scenarios.html.md)
* [Administrator Guide: Standing Up IQM Access on a Slurm Cluster](admin_guide.html.md)

## Developer Guide

* [Dependencies](dependencies.html.md)
* [Contributing](contributing.html.md)
* [Support](support.html.md)
* [Security Policy](security.html.md)

## API Reference

* [C/C++ API Reference](capi/index.html.md)
* [iqm.qdmi](api/iqm/qdmi/index.html.md)
