github Munich-Quantum-Software-Stack/QDMI v1.1.0
QDMI 1.1.0 Release

7 months ago

👀 What Changed

This release contains the work of the last couple of weeks by @ystade and @burgholzer on refining QDMI based on the discussions we had at the end of last year. Given the discussions in #109, #117, and #125, it was clear that breaking changes were inevitable.
And this release definitely contains breaking changes. However, it also fixes and improves literally all aspects of QDMI. In particular:

  • The interfaces have been consolidated and restructured. There are now two clear interfaces: the "device interface" (contained in the qdmi/device.h header) and the "client interface" (contained in the qdmi/client.h header). These two interfaces connect three entities: devices, clients, and a driver. This distinction and separation of concerns has been made more explicit in the interface itself as well as in its documentation.
  • In addition to the regular QDMI_Session concept for establishing a connection between a client and a driver, a new QDMI_Device_Session concept was introduced that accomplishes a similar connection between the driver and a device. This resolves #109 and #117, based on the discussion in these issues, as it allows the driver to establish separate connections to a device for each client. The respective sessions may be used to authenticate with the device or to potentially switch the API endpoint used in the device implementation without having to recompile the device implementation.
  • Resolves #125 by streamlining authentication and session handling. Based on the discussions over there, the new expected workflow with sessions is to first create them, then set certain parameters, and, finally, to initialize them. A session may only be used once it is successfully initialized. Any kind of authentication is handled in the new initialization routines.
  • Resolves #128 by adding a unique identifier to QDMI sites. Significant effort has been put into clarifying the respective semantics around site IDs and qubits used in programs submitted to the devices.
  • Many functions have been renamed to follow a consistent naming scheme throughout the whole interface. Functions are now generally prefixed by the type they operate on (for example, QDMI_device; typically the type of the first parameter), followed by the action to be performed (for example, query), and suffixed by the particular thing acted on (for example, site_property). This style is now consistently used throughout the whole interface.
  • The QDMI_device_get_sites and QDMI_device_get_operations routines have been refactored to become device properties that can be queried just as every other property. This helps to keep the interface more compact and the semantics more uniform.
  • Based on discussion around pulse-level control, the property query function for operations has received additional parameters for querying properties of parametrized operations depending on their parameter values. This allows devices to expose almost arbitrary operations and their properties. Effectively, this should allow realizing pulse-level QDMI devices.
  • Resolves #108 by adding the respective calibration program format and needs calibration device property as discussed in that issue.
  • Resolves #123 by adjusting the figure as discussed in that issue.
  • Resolves #131 by adding extensive API documentation, including examples.
  • Resolves #106 by significantly expanding on the client interface documentation.
  • The API documentation has been meticulously cleaned up and extended wherever possible.
  • All example devices, the example driver, as well as the example fomac and the example tool have been updated based on the above changes.
  • All tests have been updated based on the above changes.

Overall, I believe the list above illustrates the significant progress made since last year's discussions. In particular, this release contains changes that resolve all open issues requiring breaking changes that we are aware of. Based on that and the level of attention paid to every little detail in the >150 commits leading to this release, we are confident in calling this the first official stable version of QDMI. 🎉

📝 Make sure to check out the official project documentation for more information: https://munich-quantum-software-stack.github.io/QDMI/

Full Changelog: v1.0.0...v1.1.0

Don't miss a new QDMI release

NewReleases is sending notifications on new releases.