Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
67e0402
✨ Implement SC device
ystade Nov 24, 2025
2812858
✅ Setup tests for SC device
ystade Nov 24, 2025
ab883c3
🐛 Fix tests
ystade Nov 24, 2025
f9097cd
Merge remote-tracking branch 'origin/main' into ystade/qdmi-sc-device
ystade Nov 24, 2025
8553ccb
🐛 Fix tests
ystade Nov 24, 2025
19e699b
📝 Add docstrings to `ystade/qdmi-sc-device` (#1329)
coderabbitai[bot] Nov 24, 2025
39d47cb
📝 Fix docstring in generator
ystade Nov 24, 2025
6620171
🎨 WOrk on rabbit's suggestions
ystade Nov 24, 2025
e30ea78
Merge branch 'main' into ystade/qdmi-sc-device
burgholzer Nov 24, 2025
332c3e1
🎨 Add missing free for sessions
ystade Nov 25, 2025
204ad85
🎨 Make memebr functions non static
ystade Nov 25, 2025
6e4500a
🎨 Work on more feedback
ystade Nov 25, 2025
9a9a734
🎨 Work on more commetns
ystade Nov 25, 2025
6c1b974
🎨 Apply more suggestions
ystade Nov 26, 2025
078679a
Merge remote-tracking branch 'origin/main' into ystade/qdmi-sc-device
ystade Nov 26, 2025
9aa2ba8
🎨 Adopt test suite
ystade Nov 26, 2025
72faea0
🎨 Accumulate a couple of improvements
ystade Nov 26, 2025
ac0c32d
⬆️👨‍💻 Update munich-quantum-toolkit/workflows action to v1.17.3 (#1335)
renovate[bot] Nov 27, 2025
d759783
⬆️👨‍💻 Pin munich-quantum-software/setup-mlir action to 2f40b6e (#1334)
renovate[bot] Nov 27, 2025
8a99129
🔧 Streamline DX (#1337)
denialhaag Nov 28, 2025
2e2d440
⬆️🪝 Update pre-commit hook astral-sh/ruff-pre-commit to v0.14.7 (#1339)
renovate[bot] Nov 29, 2025
2f2bb5a
⬆️🪝 Update pre-commit hook astral-sh/uv-pre-commit to v0.9.13 (#1340)
renovate[bot] Nov 29, 2025
080b813
⬆️🪝 Update pre-commit hook crate-ci/typos to v1.40.0 (#1341)
renovate[bot] Nov 29, 2025
aa441bc
⬆️🪝 Update pre-commit hook emzeat/mz-lictools to v2.9.0 (#1344)
renovate[bot] Nov 29, 2025
bde5874
⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.2 (#1342)
renovate[bot] Nov 29, 2025
eac1c9e
⬆️🪝 Update pre-commit hook pre-commit/mirrors-mypy to v1.19.0 (#1343)
renovate[bot] Nov 30, 2025
8c638ca
✨ Add `WireIterator` (#1310)
MatthiasReumann Nov 30, 2025
8edd823
⬆️🪝 Update pre-commit hook rbubley/mirrors-prettier to v3.7.3 (#1345)
renovate[bot] Nov 30, 2025
302c199
🐛 Fix dynamic QDMI Device (#1336)
ystade Nov 30, 2025
a0b3ee3
⬆️🔒️ Lock file maintenance (#1346)
renovate[bot] Dec 1, 2025
6f768be
🎨 Apply changes from #1336 also in new SC device
ystade Dec 1, 2025
e6eb3e1
Merge remote-tracking branch 'origin/main' into ystade/qdmi-sc-device
ystade Dec 1, 2025
4e458a6
🐛 Fix driver tests
ystade Dec 1, 2025
a3bdab6
🎨 Some clean-up
ystade Dec 1, 2025
3cd5dba
✅ Skip failing tests
ystade Dec 1, 2025
0ac07d2
🎨 Add missing include
ystade Dec 1, 2025
ca6f8ba
🎨 Fix akward wrapping
ystade Dec 1, 2025
cdc1cd2
🎨 Apply some suggestions
ystade Dec 1, 2025
5049d82
💚 Fix linter warnings
ystade Dec 2, 2025
e9d2e62
💚 Remove unecessary includes
ystade Dec 3, 2025
0fe2fae
Merge remote-tracking branch 'origin/main' into ystade/qdmi-sc-device
ystade Dec 3, 2025
21d30c6
🎨 Revert change to constexpr
ystade Dec 3, 2025
c394f74
🎨 Enforce existence of sites and operations but with proper error han…
ystade Dec 3, 2025
d6bc57d
🐛 Fix segfault
ystade Dec 3, 2025
06c2c2b
🎨 Add minimal information for operatiosn to SC device
ystade Dec 4, 2025
cc74fa6
🎨 Apply suggestion from coderabbitai
ystade Dec 4, 2025
18f217b
🎨 Remove superfluous include
ystade Dec 4, 2025
f5a9967
🎨 Fix generator
ystade Dec 4, 2025
b9f7722
🐛 Fix field population
ystade Dec 4, 2025
e37e4e2
📝 Update docs
ystade Dec 4, 2025
bcf7f87
🎨 COmplete json spec
ystade Dec 4, 2025
724e825
🎨 Address feedback
ystade Dec 4, 2025
f72c042
🩹 fix number of parameters in `R` gate
burgholzer Dec 4, 2025
06ec254
🚨 fix the obvious clang-tidy warnings
burgholzer Dec 4, 2025
156b4ed
🐛 fix use of moved-from `_couplings` by moving at second use
burgholzer Dec 4, 2025
3e1629f
Merge branch 'main' into ystade/qdmi-sc-device
burgholzer Dec 4, 2025
69f2816
🏁 add potentially missing include for windows
burgholzer Dec 4, 2025
ed694b8
♻️ directly add required headers to the generated header file
burgholzer Dec 4, 2025
9b912f7
👌 address CodeRabbit comments
burgholzer Dec 4, 2025
3f1e7bd
✅ run FoMaC tests on all sites and operations
burgholzer Dec 4, 2025
d47bbb5
✅ extend the operation query tests for duration and fidelity to take …
burgholzer Dec 4, 2025
66b7938
🚨
burgholzer Dec 4, 2025
3d53e41
✏️ fix testname
burgholzer Dec 4, 2025
6434dd9
🩹 do not require sites or operations to be present in fomac tests
burgholzer Dec 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ This project adheres to [Semantic Versioning], with the exception that minor rel

### Added

- ✨ Add a new QDMI device that represents a superconducting architecture featuring a coupling map ([#1328]) ([**@ystade**])
- ✨ Add bi-directional iterator that traverses the def-use chain of a qubit value ([#1310]) ([**@MatthiasReumann**])
- ✨ Add `OptionalDependencyTester` to lazily handle optional Python dependencies like Qiskit ([#1243]) ([**@marcelwa**], [**@burgholzer**])
- ✨ Expose the QDMI job interface through FoMaC ([#1243]) ([**@marcelwa**], [**@burgholzer**])
Expand Down Expand Up @@ -265,6 +266,7 @@ _📚 Refer to the [GitHub Release Notes](https://github.com/munich-quantum-tool
<!-- PR links -->

[#1336]: https://github.com/munich-quantum-toolkit/core/pull/1336
[#1328]: https://github.com/munich-quantum-toolkit/core/pull/1328
[#1327]: https://github.com/munich-quantum-toolkit/core/pull/1327
[#1310]: https://github.com/munich-quantum-toolkit/core/pull/1310
[#1301]: https://github.com/munich-quantum-toolkit/core/pull/1301
Expand Down
24 changes: 12 additions & 12 deletions include/mqt-core/na/device/Device.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
#include <variant>
#include <vector>

namespace qdmi {
namespace qdmi::na {
class Device final {
/// @brief Provides access to the device name.
std::string name_;
Expand Down Expand Up @@ -118,7 +118,7 @@ class Device final {
auto queryProperty(QDMI_Device_Property prop, size_t size, void* value,
size_t* sizeRet) -> int;
};
} // namespace qdmi
} // namespace qdmi::na

/**
* @brief Implementation of the MQT_NA_QDMI_Device_Session structure.
Expand Down Expand Up @@ -216,46 +216,46 @@ struct MQT_NA_QDMI_Device_Job_impl_d {
* @brief Sets a parameter for the job.
* @see MQT_NA_QDMI_device_job_set_parameter
*/
static auto setParameter(QDMI_Device_Job_Parameter param, size_t size,
const void* value) -> int;
auto setParameter(QDMI_Device_Job_Parameter param, size_t size,
const void* value) -> int;

/**
* @brief Queries a property of the job.
* @see MQT_NA_QDMI_device_job_query_property
*/
static auto queryProperty(QDMI_Device_Job_Property prop, size_t size,
void* value, size_t* sizeRet) -> int;
auto queryProperty(QDMI_Device_Job_Property prop, size_t size, void* value,
size_t* sizeRet) -> int;

/**
* @brief Submits the job to the device.
* @see MQT_NA_QDMI_device_job_submit
*/
static auto submit() -> int;
auto submit() -> int;

/**
* @brief Cancels the job.
* @see MQT_NA_QDMI_device_job_cancel
*/
static auto cancel() -> int;
auto cancel() -> int;

/**
* @brief Checks the status of the job.
* @see MQT_NA_QDMI_device_job_check
*/
static auto check(QDMI_Job_Status* status) -> int;
auto check(QDMI_Job_Status* status) -> int;

/**
* @brief Waits for the job to complete but at most for the specified timeout.
* @see MQT_NA_QDMI_device_job_wait
*/
static auto wait(size_t timeout) -> int;
auto wait(size_t timeout) -> int;

/**
* @brief Gets the results of the job.
* @see MQT_NA_QDMI_device_job_get_results
*/
static auto getResults(QDMI_Job_Result result, size_t size, void* data,
[[maybe_unused]] size_t* sizeRet) -> int;
auto getResults(QDMI_Job_Result result, size_t size, void* data,
[[maybe_unused]] size_t* sizeRet) -> int;
};

/**
Expand Down
20 changes: 16 additions & 4 deletions include/mqt-core/qdmi/Driver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@ class DynamicDeviceLibrary final : public DeviceLibrary {
// Call the above macro for all static libraries that we want to support.
DECLARE_STATIC_LIBRARY(MQT_NA)
DECLARE_STATIC_LIBRARY(MQT_DDSIM)
DECLARE_STATIC_LIBRARY(MQT_SC)

/**
* @brief The status of a session.
Expand Down Expand Up @@ -407,11 +408,22 @@ class Driver final {
#ifndef _WIN32
/**
* @brief Adds a dynamic device library to the driver.
* @param libName is the path to the dynamic library to load.
* @param prefix is the prefix used for the device interface functions.
* @returns `true` if the library was successfully loaded, `false`
* if it was already loaded.
* @details This function attempts to load a dynamic library containing
* QDMI device interface functions. If the library is already loaded, the
* function returns `false`. Otherwise, it loads the library, initializes
* the device, and adds it to the list of devices.
*
* @param libName The path to the dynamic library to load.
* @param prefix The prefix used for the device interface functions in the
* library.
* @returns `true` if the library was successfully loaded, `false` if it was
* already loaded.
*
* @note This function is only available on non-Windows platforms.
*
* @throws std::runtime_error If the library fails to load or the device
* cannot be initialized.
* @throws std::bad_alloc If memory allocation fails during the process.
*/
auto addDynamicDeviceLibrary(const std::string& libName,
const std::string& prefix) -> bool;
Expand Down
Loading
Loading