Recent Releases of qdmi
qdmi - QDMI 1.1.0 Release
๐ 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.hheader) and the "client interface" (contained in theqdmi/client.hheader). 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_Sessionconcept for establishing a connection between a client and a driver, a newQDMI_Device_Sessionconcept 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_sitesandQDMI_device_get_operationsroutines 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
calibrationprogram format andneeds calibrationdevice 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. ๐
Full Changelog: https://github.com/Munich-Quantum-Software-Stack/QDMI/compare/v1.0.0...v1.1.0
- C++
Published by github-actions[bot] about 1 year ago
qdmi - QDMI 1.0.0 Release
๐ What Changed
This is a preliminary release that encompasses the initial version of QDMI we collectively decided to tag. It is created purely for historical reasons and posterity. The first truly stable version will be released shortly afterwards. Specifically, once #132 is merged.
๐ Features and Enhancements
- โจ Provide an option to specify the supported QIR profile @ystade (#126)
- ๐งช Test Installation of QDMI @ystade (#101)
- Provision to set session parameters @mnfarooqi (#100)
- Fix license @ystade (#97)
- ๐ Document the Usage of Templates and add Rationale of QDMI @ystade (#90)
- โจ Use Prefixes for Device Symbols and Types @ystade (#86)
- โจ Add Readout Format for State Vector and Probabilities @ystade (#82)
- โจ Docs: Page on Example Device @ystade (#79)
- โก enable compiler cache if available @burgholzer (#76)
- โจ Add Project Templates for Devices @ystade (#72)
- โจ Add C++ Example Device @ystade (#71)
- โจ Example for QDMI Client @ystade (#65)
- ๐ Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- ๐จ Refine and Unify Interface Structure @ystade (#61)
- ๐ Add automatic Generation of Documentation @ystade (#62)
- Changing the type of task_id @kayaercument (#59)
- QDMI_Job is included in readout routines. @kayaercument (#55)
- Not supported definition @kayaercument (#53)
- ๐ง๐จ๐จ Code Formatting and Linting @burgholzer (#45)
- โป๏ธ Properly set up CMake Build System @burgholzer (#44)
- implementing QDMI_core_device_count and QDMI_core_open_device @kayaercument (#29)
- ๐ more extensive gitignore @burgholzer (#32)
- Implementing device property query for char @kayaercument (#33)
- Internal header moved to src @kayaercument (#27)
- Removing Backends [Issue/#11] @kayaercument (#25)
- Adding members for storing and retrieving Qubit properties @Durganshu (#4)
- Wmi backend @echavarria-lrz (#5)
- Setting sentinel values to gate coupling mappings @Durganshu (#2)
๐ Bug Fixes
- ๐จ Stability improvements for custom enum parameters @ystade (#122)
- ๐ฉน fix potential target conflict @burgholzer (#121)
- ๐ Fix an inconsistency in the docs about coupling maps @ystade (#120)
- ๐งช Test Installation of QDMI @ystade (#101)
- ๐ Remove not implemented functionality from comment @ystade (#99)
- Fix license @ystade (#97)
- Fix Inverted Dark Mode Figures @ystade (#92)
- ๐ fix condition for deployment of docs @burgholzer (#87)
- โป๏ธ Fixing Various Bugs @ystade (#84)
- ๐ Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- NULL Initialization of qdmi_library_list @kayaercument (#57)
- Enable parsing of quoted strings @denialhaag (#50)
- โป๏ธ Re-enable routine checking @burgholzer (#46)
- assigning QDMI_query_device_property_c @kayaercument (#38)
- Typo fix @kayaercument (#28)
- LLVM Dependency @kayaercument (#1)
๐ Documentation
- ๐ Fix an inconsistency in the docs about coupling maps @ystade (#120)
- ๐ version v1 @burgholzer (#103)
- ๐ฑ update QDMI figures @burgholzer (#104)
- ๐ add citation information @burgholzer (#102)
- ๐ Remove not implemented functionality from comment @ystade (#99)
- Fix Inverted Dark Mode Figures @ystade (#92)
- ๐ Document the Usage of Templates and add Rationale of QDMI @ystade (#90)
- ๐ fix condition for deployment of docs @burgholzer (#87)
- โป๏ธ Fixing Various Bugs @ystade (#84)
- โจ Docs: Page on Example Device @ystade (#79)
- โ๏ธ remove redundant abbreviation in readme header @burgholzer (#67)
- ๐ Change Icon in "DOCUMENTATION"-Button @ystade (#64)
- ๐ Add Button to documentation on the README.md @ystade (#63)
- ๐จ Refine and Unify Interface Structure @ystade (#61)
- ๐ Add automatic Generation of Documentation @ystade (#62)
- ๐ Project Readme @burgholzer (#36)
- ๐ Add License Information @burgholzer (#31)
๐ค CI
- ๐งช Test Installation of QDMI @ystade (#101)
- ๐ท Set up continuous integration @burgholzer (#70)
- ๐ท Set up dependabot @burgholzer (#69)
๐งน Code Quality
- ๐งช Test Installation of QDMI @ystade (#101)
- โจ Use Prefixes for Device Symbols and Types @ystade (#86)
- ๐จ Use
size_tfor buffer sizes and countable quantities in general @burgholzer (#85) - ๐จ Fix uncontrolled data used in path expression @burgholzer (#78)
- ๐จ Fix shadowing of global devices list in qdmi_example_driver.cpp @burgholzer (#75)
โฌ๏ธ Dependencies
7 changes
- โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#130) - โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#127) - โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#110) - โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#107) - โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#93) - โฌ๏ธ๐ช update pre-commit hooks @pre-commit-ci (#88) - ๐ท Set up dependabot @burgholzer (#69)Full Changelog: https://github.com/Munich-Quantum-Software-Stack/QDMI/compare/...v0.1.0
- C++
Published by github-actions[bot] about 1 year ago