IQM on Slurm

A Slurm job requests a device license and uses the QDMI Client Interface to access that device. Slurm schedules the allocation; the IQM device implementation handles authentication and quantum execution. The same job environment can include device implementations from several vendors.

Submit a Qiskit job

Activate your site’s workload environment and set your IQM credentials before submission. For example, IQM_TOKENS_FILE can name a credential file readable at the same path on each quantum access node. Slurm exports the submission environment to the job. See authentication for token renewal and other credential sources.

Save this workload as bell.py. It uses the allocated license as its catalogue ID, assuming one local license with a count of one (ID or ID:1):

bell.py
import os

from mqt.core.qdmi import builtin_driver as qdmi_driver
from qiskit import QuantumCircuit, transpile
from iqm.qdmi.qiskit import IQMBackend

device_id = os.environ["SLURM_JOB_LICENSES"].removesuffix(":1")
backend = IQMBackend(device=qdmi_driver.open_device(device_id))
circuit = QuantumCircuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()
result = backend.run(transpile(circuit, backend), shots=100).result()
print(result.get_counts())

Request the Emerald Resonance mock’s license on the site’s quantum partition:

srun --partition=quantum --licenses=iqm.emerald.mock python bell.py

Applications that use several devices open their catalogue IDs explicitly and request the corresponding licenses. IQM and other device credentials can coexist in one job environment. Keep tokens out of command arguments, Slurm configuration, and committed scripts.

The offloader also submits IQM sampler and estimator jobs through srun. IQM supports IQM JSON and QIR. MQT Core’s PennyLane adapter requires OpenQASM; use the IQM Qiskit adapter for these workloads.

Prepare the cluster

Install the Python package with its Qiskit adapter in the workload environment on login and quantum access nodes:

uv pip install 'iqm-qdmi[qiskit]'

The driver discovers the package’s catalogue, including iqm.emerald, iqm.garnet, and their .mock variants. Native installations need a readable catalogue and library on every quantum access node; retain the Python package for the adapter. All nodes in the quantum partition can share one environment and reach every configured device.

Register each device ID as a Slurm license. For example, Licenses=iqm.emerald.mock:1 permits one allocation at a time for the Emerald Resonance mock. A cluster availability monitor can reserve this license while the device is unavailable; give it separate site-owned IQM credentials and network access to Resonance. See the Slurm deployment guide for scheduler configuration and monitoring.

Administrators can put shared non-secret settings in /etc/mqt-core/qdmi.json and expose the workload environment through site defaults or a software module. See device configuration for quantum computer IDs, aliases, and their precedence.

Exercise the integration

MQT Core’s cluster playground is a concrete deployment with a shared quantum access partition and several device implementations. Follow its build instructions to install the current main branches for this development setup.

The Slurm smoke test uses that playground to run an authenticated eight-shot Qiskit job on the Emerald Resonance mock using the installed wheel. Its README describes the required credentials and commands.