MQT Core’s QDMI Driver Implementation

Objective

A QDMI Driver manages the communication between QDMI devices, such as MQT Core’s NA QDMI Device or MQT Core’s DDSIM QDMI Device, and QDMI clients, see the QDMI specification. It is responsible for loading the device, forwarding requests from the client to the device, and sending back the results. MQT Core’s QDMI Driver, qdmi::Driver, comes with several preloaded devices that can be used directly. Other devices can be loaded dynamically at runtime via qdmi::Driver::addDynamicDeviceLibrary().

Python Bindings

The QDMI Driver is implemented in C++ and exposed to Python via nanobind. Direct binding of the QDMI Client interface functions is not feasible due to technical limitations. Instead, a FoMaC (Figure of Merits and Constraints) library defines wrapper classes (Session, Device, Site, Operation, Job) for the QDMI entities. These classes together with their methods are then exposed to Python, see Session, Device, Site, Operation, Job.

Usage

The following example shows how to create a session and get devices from the QDMI driver.

 1from mqt.core.fomac import Session
 2
 3# Create a session to interact with QDMI devices
 4session = Session()
 5
 6# Get a list of all available devices
 7available_devices = session.get_devices()
 8
 9# Print the name of every device
10for device in available_devices:
11    print(device.name())
MQT NA Default QDMI Device
MQT SC Default QDMI Device
MQT Core DDSIM QDMI Device