Skip to content

✨ Support more Properties in NA QDMI Device #1100

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 162 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
162 commits
Select commit Hold shift + click to select a range
3f7e2b5
Setup protobuf dep
ystade Jun 4, 2025
d6eaab9
Draft doc for NA QDMI device
ystade Jun 4, 2025
90a1ed8
🎨 Run pre-commit
ystade Jun 4, 2025
5b9e442
🐛 Fix license tool
ystade Jun 4, 2025
e08fde0
➕ Add QDMI to the party
ystade Jun 4, 2025
1d93600
➕ Add spdlog to the party
ystade Jun 4, 2025
2348278
✨ Implement device as singleton
ystade Jun 4, 2025
fbc3605
🎨 Improve error handling
ystade Jun 4, 2025
12eeb25
✅ Setup test infrastructure for qdmi device
ystade Jun 4, 2025
585e0a9
🐛 Fix device and tests
ystade Jun 4, 2025
d2d3c96
🐛 Try to fix some bugs related to QDMI version and protobuf
ystade Jun 4, 2025
c62f95a
🚧 Still fixing protobuf include
ystade Jun 4, 2025
b8bd40b
🐛 Finally fix build
ystade Jun 4, 2025
1792945
🎨 Write out JSON schema
ystade Jun 5, 2025
13a360d
🩹 Fix JSON schema write-out
ystade Jun 5, 2025
88a944c
📝 Add comment
ystade Jun 5, 2025
3c59017
🎨 Implement dummy job interface
ystade Jun 5, 2025
3eea7c7
✅ Fix tests
ystade Jun 5, 2025
b857905
🎨 Implement querying sites
ystade Jun 5, 2025
262b24a
✏️ Fix typo
ystade Jun 5, 2025
709c03b
♻️ Refactor structure and add documentation
ystade Jun 5, 2025
411ee8d
🎨 Implement operations and decoeherence times
ystade Jun 5, 2025
8dcdd3b
🎨 Expose operation properties
ystade Jun 5, 2025
04d9219
🎨 Restructure file
ystade Jun 5, 2025
c3635b7
🎨 Add shuttling operations
ystade Jun 5, 2025
c4a091e
🎨 Initialize units
ystade Jun 5, 2025
99a425b
🐛 Fix finalize
ystade Jun 5, 2025
8b63686
🐛 Fix test
ystade Jun 5, 2025
9e2650e
🎨 Imrpove naming of tests
ystade Jun 5, 2025
f4ca5a6
🍱 Add device.json
ystade Jun 5, 2025
6306815
🔥 Remove initialized
ystade Jun 6, 2025
18aadea
🎨 Use add mqt core library
ystade Jun 6, 2025
3b6917e
🚧 Start restructuring
ystade Jun 12, 2025
1d39c79
🎨 Update cmake config for gen
ystade Jun 13, 2025
c43a22f
✨ First version of generator
ystade Jun 13, 2025
91acdd5
🐛 Print proper version
ystade Jun 13, 2025
218cb3b
🎨 Resturcture, put everything in device
ystade Jun 13, 2025
802632e
🐛 Fix restructuring
ystade Jun 13, 2025
9f3ea65
🐛 Fix all remaining bugs
ystade Jun 13, 2025
a51992f
🔥 Remove outdated docs
ystade Jun 13, 2025
2c4db2e
⏪️ Revert target names
ystade Jun 13, 2025
747c251
🎨 Use unique ptr for sessions
ystade Jun 13, 2025
f9fa92f
✅ Incoporate number of qubits
ystade Jun 16, 2025
223343b
🎨 Improve documentation
ystade Jun 16, 2025
0e2250c
Potential fix for code scanning alert no. 602: For loop variable chan…
ystade Jun 18, 2025
92a5a72
🔥 Remove superfluous variable
ystade Jun 16, 2025
67b459b
🐛 Fix
ystade Jun 16, 2025
a63361e
🎨 Incorporate first changes from review
ystade Jun 20, 2025
50440bc
🎨 Adapt new proto def
ystade Jun 20, 2025
e5b6b25
📝 Add doc page
ystade Jun 20, 2025
db35039
🎨 Add comment in proto file
ystade Jun 20, 2025
27fd4c8
🎨 Update gen exec
ystade Jun 20, 2025
99ceec4
⬆️ Update QDMI
ystade Jun 20, 2025
1f19e7a
🎨 Remove doxygen left-over
ystade Jun 20, 2025
bb2c04f
🐛 Link spdlog header only
ystade Jun 25, 2025
19741bf
Revert "🐛 Link spdlog header only"
ystade Jun 25, 2025
8367dfa
🎨 Add missing header
ystade Jun 25, 2025
9b53d18
🎨 Configure protobuf
ystade Jun 25, 2025
833ae4e
🐛 Fix cmake config
ystade Jun 25, 2025
816af7e
✅ Increase test coverage
ystade Jun 25, 2025
2593953
🔧 Setup cmake structure for tests
ystade Jun 25, 2025
7353749
🎨 Cluster more tests into one target
ystade Jun 26, 2025
9c87cea
🎨 Fix incldues
ystade Jun 26, 2025
d773132
Add more try catch
ystade Jun 26, 2025
647bdb4
🎨 Fix includes
ystade Jun 26, 2025
f4e9512
🎨 Add module number to site props
ystade Jun 26, 2025
cb056e2
🧪 Add more tests for executable
ystade Jun 26, 2025
f1067fb
🐛 Fix generator
ystade Jun 26, 2025
30092b7
🐛 Try to fix MVSC build
ystade Jun 27, 2025
203f4a1
🔧 Small modification
ystade Jun 27, 2025
ebdc2b2
💚 Fix clang-tidy warning
ystade Jun 27, 2025
2b58953
💚 Remove GTEST_HAS_ABSL
ystade Jun 27, 2025
c16e971
🔥 Remove left-over
ystade Jun 27, 2025
2a4f341
🐛 Fix export target
ystade Jun 28, 2025
851caed
✅ Add more App.cpp tests
ystade Jun 28, 2025
a2db640
✅ More App tests
ystade Jun 28, 2025
3365330
✅ Imrpove testing of device
ystade Jun 28, 2025
2187999
✅ Add tests for generator
ystade Jun 28, 2025
6fa6a01
Merge remote-tracking branch 'origin/main' into qdmi-na-device
ystade Jun 28, 2025
92657e1
🐛 Fix test
ystade Jun 28, 2025
017608d
🎨 Add extent of lattices
ystade Jul 1, 2025
ff9ae40
🎨 Remove 'repeat' from lattice definition
ystade Jul 2, 2025
33c29da
🎨 Fix tests
ystade Jul 2, 2025
7411f92
Merge remote-tracking branch 'origin/main' into qdmi-na-device
ystade Jul 2, 2025
169eb91
💚 Work on CI warnings
ystade Jul 2, 2025
8613882
🔧 Comment ABSEIL inclusion
ystade Jul 2, 2025
d8e981e
🎨 Mark protobuf header as system header
ystade Jul 2, 2025
cbfb156
Revert "🔧 Comment ABSEIL inclusion"
ystade Jul 2, 2025
50af0ef
🔧 Fix config
ystade Jul 2, 2025
aa99111
🔧 slightly refactor external dependency setup
burgholzer Jul 8, 2025
3b832df
🔧 make more link libraries private
burgholzer Jul 8, 2025
0970fed
✅ Semantically fix test
ystade Jul 3, 2025
31339ef
🎨 Apply changes from code review
ystade Jul 9, 2025
41f6c5a
➖ Protobuf and Abesil dependency
ystade Jul 9, 2025
306db3f
📝 Write missing docstrings and fix others
ystade Jul 9, 2025
5861943
🏗️ Implement device as a singleton
ystade Jul 10, 2025
5fe1b4b
✅ Fix tests
ystade Jul 10, 2025
18c07b8
📝 Dcoument main function
ystade Jul 10, 2025
63cf2a6
🎨 Lowercase for operations
ystade Jul 10, 2025
b4dd5a5
🔧 Fix cmake
ystade Jul 10, 2025
5e68478
🎨 Improve code
ystade Jul 10, 2025
d71f41a
📝 Fix docs
ystade Jul 10, 2025
b906049
📝 Incoporate feedback on docs
ystade Jul 10, 2025
c4bb411
🔥 Remove commented code
ystade Jul 10, 2025
835c941
✅ Fix linter warning
ystade Jul 10, 2025
3675924
💚 Next try to avoid linter warning
ystade Jul 10, 2025
d044f03
✨ Implement job allocation and freeing
ystade Jul 10, 2025
1225608
✅ Adapt tests
ystade Jul 10, 2025
0c4a5ad
🚨 Reduce compilation warnings
ystade Jul 10, 2025
77a54de
Merge branch 'main' into qdmi-na-device
ystade Jul 10, 2025
6ddc6f4
🎨 Consolidate on Operation types
ystade Aug 5, 2025
8191be1
🎨 Improve structure of App.cpp
ystade Aug 5, 2025
eb379d0
📝 Imrpove docs page
ystade Aug 5, 2025
fbe66b3
🎨 Incorporate feedback from review in cmake setup
ystade Aug 5, 2025
3165fd5
🎨 Incorporate suggestions from code review
ystade Aug 5, 2025
07e67f6
Merge remote-tracking branch 'origin/main' into qdmi-na-device
ystade Aug 5, 2025
f171fad
📝 Add changelog entry
ystade Aug 5, 2025
4ad3a93
🐛 Fix destructor
ystade Aug 5, 2025
2a43ce5
💡 demonstrate cross-reference
burgholzer Aug 5, 2025
6b2d2f6
🔥 remove duplicate struct documentation
burgholzer Aug 5, 2025
2de43f3
🐛 Fix cmake configuration
ystade Aug 6, 2025
ba94637
Update CHANGELOG.md
ystade Aug 7, 2025
6d1deac
🔧 Updat QDMI
ystade Aug 7, 2025
ab7c1e7
🎨 Replace CUSTOM properties
ystade Aug 8, 2025
e0a7bf8
✨ Use new features of QDMI
ystade Aug 7, 2025
14514c1
🩹 Fix include
ystade Aug 7, 2025
1f501d9
🩹 Fix other includes
ystade Aug 7, 2025
dc59249
🔥 Remove debug output
ystade Aug 7, 2025
4e5fcc0
🐛 Fix bugs after rebase
ystade Aug 8, 2025
643de7c
🔥 Remove unnecessary attributes
ystade Aug 8, 2025
9cdaaef
🎨 Replace name of shuttling unit with auto incremented id
ystade Aug 8, 2025
0ff84e4
💚 Fix linter warnings
ystade Aug 11, 2025
0f74b92
Merge remote-tracking branch 'origin/main' into ystade/qdmi-device-ad…
ystade Aug 14, 2025
40b5919
🐛 Fix bugs after merge
ystade Aug 14, 2025
e7f11ad
🐛 Mainly fix datatypes after introducing duration unit
ystade Aug 14, 2025
f352327
✨ Incoporate mean shuttling speed
ystade Aug 15, 2025
74cbc8d
🐛 Improve tests and fix bug
ystade Aug 15, 2025
228c222
✨ Report supported sites and add tests
ystade Aug 15, 2025
76b20f0
🎨 Improve tests
ystade Aug 15, 2025
9ecf806
🎨 Improve tests
ystade Aug 15, 2025
8199da4
🐛 Fix sites querying
ystade Aug 15, 2025
a1d316b
🐛 Fix generator
ystade Aug 15, 2025
81ee80a
✨ Report units
ystade Aug 15, 2025
c36b76d
✨ Report min atom distance
ystade Aug 15, 2025
f45d62f
✨ Report idlingFidelity
ystade Aug 15, 2025
e2b9f72
✅ Add tests for blocking and interaction radius
ystade Aug 15, 2025
e42a734
🎨 Solve todos
ystade Aug 19, 2025
591d826
🐛 Fix test for supported sites
ystade Aug 19, 2025
e7b32bb
🐛 Fix some bugs in the test querying operation data
ystade Aug 19, 2025
a06f059
✅ Fix all tests
ystade Aug 20, 2025
862c6da
🎨 Remove debug line
ystade Aug 20, 2025
f6a7287
Merge remote-tracking branch 'origin/main' into ystade/qdmi-device-ad…
ystade Aug 20, 2025
7688fff
🩹 Fix minor bug in generator
ystade Aug 20, 2025
7e1a00e
💚 Fix Linter warnings
ystade Aug 20, 2025
c3d4a20
📝 Update changelog
ystade Aug 20, 2025
204e1d8
Merge branch 'refs/heads/main' into ystade/qdmi-device-add-features
burgholzer Aug 22, 2025
425835c
📝 miscellaneous docstring touch-ups
burgholzer Aug 22, 2025
1e5eb6a
🚨 use designated initializers
burgholzer Aug 22, 2025
c8f89be
🚨 miscellaneous const
burgholzer Aug 22, 2025
b55e223
🚨 some more structured bindings
burgholzer Aug 22, 2025
4f7add2
🚚 move the changelog entry to the "changed" section
burgholzer Aug 22, 2025
bfdd540
Merge branch 'refs/heads/main' into ystade/qdmi-device-add-features
burgholzer Aug 22, 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 @@ -22,6 +22,7 @@ This project adheres to [Semantic Versioning], with the exception that minor rel

### Changed

- ✨ Extend MQT's implementation of a QDMI Device for neutral atom-based quantum computing with more properties ([#1100]) ([**@ystade**])
- 🚚 Rename `xxminusyy` to `xx_minus_yy` and `xxplusyy` to `xx_plus_yy` in MLIR dialects ([#1071]) ([**@BertiFlorea**], [**@denialhaag**])
- 🚸 Add custom assembly format for operations in the MLIR dialects ([#1139]) ([**@burgholzer**])
- 🚸 Enable `InferTypeOpInterface` in the MLIR dialects to reduce explicit type information ([#1139]) ([**@burgholzer**])
Expand Down Expand Up @@ -180,6 +181,7 @@ _📚 Refer to the [GitHub Release Notes](https://github.com/munich-quantum-tool
[#1117]: https://github.com/munich-quantum-toolkit/core/pull/1117
[#1116]: https://github.com/munich-quantum-toolkit/core/pull/1116
[#1106]: https://github.com/munich-quantum-toolkit/core/pull/1106
[#1100]: https://github.com/munich-quantum-toolkit/core/pull/1100
[#1099]: https://github.com/munich-quantum-toolkit/core/pull/1099
[#1098]: https://github.com/munich-quantum-toolkit/core/pull/1098
[#1089]: https://github.com/munich-quantum-toolkit/core/pull/1089
Expand Down
178 changes: 140 additions & 38 deletions include/mqt-core/na/device/Device.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,11 @@

#include "mqt_na_qdmi/device.h"

#include <algorithm>
#include <cstddef>
#include <cstdint>
#include <memory>
#include <optional>
#include <string>
#include <unordered_map>
#include <utility>
Expand All @@ -32,6 +34,26 @@ class Device final {
/// @brief The number of qubits in the device.
size_t qubitsNum_ = 0;

/// @brief A struct representing a unit.
struct Unit {
/// @brief The unit used to interpret values.
std::string unit;
/**
* @brief The scale factor of the unit.
* @details This factor must be multiplied with all values before
* interpreting them in the unit specified by @ref Unit::unit.
*/
double scaleFactor = 1.0;
};
/// @brief The unit used to interpret length values.
Unit lengthUnit_;

/// @brief The unit used to interpret duration values.
Unit durationUnit_;

/// @brief The minimum atom distance that must be maintained.
uint64_t minAtomDistance_;

/// @brief The list of sites.
std::vector<std::unique_ptr<MQT_NA_QDMI_Site_impl_d>> sites_;

Expand Down Expand Up @@ -226,25 +248,43 @@ struct MQT_NA_QDMI_Device_Job_impl_d {
* @brief Implementation of the MQT_NA_QDMI_Device_Site structure.
*/
struct MQT_NA_QDMI_Site_impl_d {
friend MQT_NA_QDMI_Operation_impl_d;

private:
uint64_t id_ = 0; ///< Unique identifier of the site
uint64_t moduleId_ = 0; ///< Identifier of the module the site belongs to
uint64_t subModuleId_ =
0; ///< Identifier of the sub-module the site belongs to
int64_t x_ = 0; ///< X coordinate of the site in the lattice
int64_t y_ = 0; ///< Y coordinate of the site in the lattice
/// Identifier of the submodule the site belongs to
uint64_t subModuleId_ = 0;
int64_t x_ = 0; ///< X coordinate of the site in the lattice
int64_t y_ = 0; ///< Y coordinate of the site in the lattice
uint64_t xExtent_ = 0; ///< Width of the site in the lattice (for zone sites)
uint64_t yExtent_ = 0; ///< Height of the site in the lattice (for zone sites)
/// @brief Collects decoherence times for the device.
struct DecoherenceTimes {
double t1_ = 0.0; ///< T1 time in microseconds
double t2_ = 0.0; ///< T2 time in microseconds
uint64_t t1_ = 0; ///< T1 time
uint64_t t2_ = 0; ///< T2 time
};
/// @brief The decoherence times of the device.
DecoherenceTimes decoherenceTimes_{};
bool isZone = false; ///< Indicates if the site is a zone site

public:
/// @brief Constructor for the MQT_NA_QDMI_Site_impl_d.
MQT_NA_QDMI_Site_impl_d(uint64_t id, uint64_t module, uint64_t subModule,
/// @brief Constructor for regular sites.
MQT_NA_QDMI_Site_impl_d(uint64_t id, uint64_t moduleId, uint64_t subModuleId,
int64_t x, int64_t y);
/// @brief Constructor for zone sites.
MQT_NA_QDMI_Site_impl_d(uint64_t id, int64_t x, int64_t y, uint64_t width,
uint64_t height);

public:
/// @brief Factory function for regular sites.
[[nodiscard]] static auto makeUniqueSite(uint64_t id, uint64_t moduleId,
uint64_t subModuleId, int64_t x,
int64_t y)
-> std::unique_ptr<MQT_NA_QDMI_Site_impl_d>;
/// @brief Factory function for zone sites.
[[nodiscard]] static auto makeUniqueZone(uint64_t id, int64_t x, int64_t y,
uint64_t width, uint64_t height)
-> std::unique_ptr<MQT_NA_QDMI_Site_impl_d>;
/**
* @brief Queries a property of the site.
* @see MQT_NA_QDMI_device_session_query_site_property
Expand All @@ -257,45 +297,107 @@ struct MQT_NA_QDMI_Site_impl_d {
* @brief Implementation of the MQT_NA_QDMI_Device_Operation structure.
*/
struct MQT_NA_QDMI_Operation_impl_d {
/// The type of operation.
enum class Type : uint8_t {
GlobalSingleQubit, ///< Global single-qubit operation
GlobalMultiQubit, ///< Global multi-qubit operation
LocalSingleQubit, ///< Local single-qubit operation
LocalMultiQubit, ///< Local multi-qubit operation
ShuttlingLoad, ///< Shuttling load operation
ShuttlingMove, ///< Shuttling move operation
ShuttlingStore, ///< Shuttling store operation
};

private:
std::string name_; ///< Name of the operation
Type type_; ///< Type of the operation
size_t numParameters_; ///< Number of parameters for the operation
/**
* @brief Number of qubits involved in the operation
* @note This number is only valid if the operation is a multi-qubit
* operation.
*/
size_t numQubits_;
double duration_; ///< Duration of the operation in microseconds
double fidelity_; ///< Fidelity of the operation

/**
* @brief Checks if the operation type is a shuttling operation.
* @param type The operation type to check.
* @return true if the operation type is a shuttling operation, false
* otherwise.
*/
[[nodiscard]] static auto isShuttling(Type type) -> bool;
std::optional<size_t> numQubits_ = std::nullopt;
/// Duration of the operation
std::optional<uint64_t> duration_ = std::nullopt;
std::optional<double> fidelity_ = std::nullopt; ///< Fidelity of the operation
/// Interaction radius for multi-qubit operations
std::optional<uint64_t> interactionRadius_ = std::nullopt;
/// Blocking radius for multi-qubit operations
std::optional<uint64_t> blockingRadius_ = std::nullopt;
/// Mean shuttling speed
std::optional<uint64_t> meanShuttlingSpeed_ = std::nullopt;
/// Idling fidelity
std::optional<double> idlingFidelity_ = std::nullopt;
/// The operation's supported sites
std::vector<MQT_NA_QDMI_Site> supportedSites_;
/// Indicates if this operation is zoned (global)
bool isZoned_ = false;

/// @brief Constructor for the global single-qubit.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
size_t numQubits, uint64_t duration,
double fidelity, MQT_NA_QDMI_Site zone);
/// @brief Constructor for the global multi-qubit operations.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
size_t numQubits, uint64_t duration,
double fidelity, uint64_t interactionRadius,
uint64_t blockingRadius, double idlingFidelity,
MQT_NA_QDMI_Site zone);
/// @brief Constructor for the single-qubit operations.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
uint64_t duration, double fidelity,
const std::vector<MQT_NA_QDMI_Site>& sites);
/// @brief Constructor for the multi-qubit operations.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
size_t numQubits, uint64_t duration,
double fidelity, uint64_t interactionRadius,
uint64_t blockingRadius,
const std::vector<MQT_NA_QDMI_Site>& sites);
/// @brief Constructor for load and store operations.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
uint64_t duration, double fidelity,
MQT_NA_QDMI_Site zone);
/// @brief Constructor for the shuttling operations.
MQT_NA_QDMI_Operation_impl_d(std::string name, size_t numParameters,
MQT_NA_QDMI_Site zone,
uint64_t meanShuttlingSpeed);

/// @brief Sort the sites such that the occurrence of a given site can be
/// determined in O(log n) time.
auto sortSites() -> void;

public:
/// @brief Constructor for the MQT_NA_QDMI_Operation_impl_d.
MQT_NA_QDMI_Operation_impl_d(std::string name, Type type,
size_t numParameters, size_t numQubits,
double duration, double fidelity)
: name_(std::move(name)), type_(type), numParameters_(numParameters),
numQubits_(numQubits), duration_(duration), fidelity_(fidelity) {}
/// @brief Factory function for the global single-qubit operations.
[[nodiscard]] static auto
makeUniqueGlobalSingleQubit(const std::string& name, size_t numParameters,
uint64_t duration, double fidelity,
MQT_NA_QDMI_Site zone)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the global multi-qubit operations.
[[nodiscard]] static auto makeUniqueGlobalMultiQubit(
const std::string& name, size_t numParameters, size_t numQubits,
uint64_t duration, double fidelity, uint64_t interactionRadius,
uint64_t blockingRadius, double idlingFidelity, MQT_NA_QDMI_Site zone)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the local single-qubit operations.
[[nodiscard]] static auto
makeUniqueLocalSingleQubit(const std::string& name, size_t numParameters,
uint64_t duration, double fidelity,
const std::vector<MQT_NA_QDMI_Site>& sites)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the local multi-qubit operations.
[[nodiscard]] static auto makeUniqueLocalTwoQubit(
const std::string& name, size_t numParameters, size_t numQubits,
uint64_t duration, double fidelity, uint64_t interactionRadius,
uint64_t blockingRadius,
const std::vector<std::pair<MQT_NA_QDMI_Site, MQT_NA_QDMI_Site>>& sites)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the shuttling load operations.
[[nodiscard]] static auto
makeUniqueShuttlingLoad(const std::string& name, size_t numParameters,
uint64_t duration, double fidelity,
MQT_NA_QDMI_Site zone)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the shuttling move operations.
[[nodiscard]] static auto
makeUniqueShuttlingMove(const std::string& name, size_t numParameters,
MQT_NA_QDMI_Site zone, uint64_t meanShuttlingSpeed)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;
/// @brief Factory function for the shuttling store operations.
[[nodiscard]] static auto
makeUniqueShuttlingStore(const std::string& name, size_t numParameters,
uint64_t duration, double fidelity,
MQT_NA_QDMI_Site zone)
-> std::unique_ptr<MQT_NA_QDMI_Operation_impl_d>;

/**
* @brief Queries a property of the operation.
Expand Down
Loading
Loading