-
Notifications
You must be signed in to change notification settings - Fork 33
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
✨ Add State Preparation Algorithm #543
Conversation
Hey 👋🏼 The best place to put this would probably be in the I would advise you to also create a After the initial setup, it would be great to add some tests for the new functionality. These should probably placed here: https://github.com/cda-tum/mqt-core/tree/main/test/algorithms. Again, you can take lots of inspiration from the existing tests and should be able to use our own simulator for some experiments. Please don't hesitate to ask questions if anything pops up! |
Closing for now. Please feal free to reopen if you plan to continue working on this. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #543 +/- ##
======================================
Coverage 92.4% 92.4%
======================================
Files 126 127 +1
Lines 13257 13402 +145
Branches 2033 2060 +27
======================================
+ Hits 12252 12391 +139
- Misses 1005 1011 +6
|
Hi, sorry for the long wait, I finally got around to working on this again! I do have a question on the new constructor that should be implemented: I do not see any option to reopen this pull request and continue working on it. |
Hey 👋🏼 No worries. I just reopened the PR for you.
I'd imagine that your State Preparation functionality code can be implemented and integrated very similarly. |
I refactored both files to match the other algorithms style if you would like to give it a look! Next step would then be tests from what I can see right? |
Getting the CI to a state where it is all-green would be desirable. |
Alright. Glad that this could be resolved 👍🏼 For some reason I currently cannot push to your fork anymore. However, below is a patch for resolving the linking errors Index: src/algorithms/CMakeLists.txt
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/algorithms/CMakeLists.txt b/src/algorithms/CMakeLists.txt
--- a/src/algorithms/CMakeLists.txt (revision d521ec6f4f6a251ad5591894628a5a10af1b8a57)
+++ b/src/algorithms/CMakeLists.txt (revision 948ec2b18cb510a987a4aa09fb1024efb65791c0)
@@ -22,7 +22,7 @@
target_link_libraries(
${MQT_CORE_TARGET_NAME}-algorithms
PUBLIC MQT::CoreIR
- PRIVATE MQT::ProjectOptions MQT::ProjectWarnings)
+ PRIVATE MQT::CoreCircuitOptimizer MQT::ProjectOptions MQT::ProjectWarnings)
# set include directories
target_include_directories( I'll quickly go through the open questions and subsequently will review the PR. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, many thanks for all your work on this.
This is as close to ready as it gets and turned out nicely.
I have a couple of final suggestions left, which you will find in the respective inline comments. After addressing those, this is ready to go in 🚀
Side note: while reading through the code I couldn't help but notice that it would be very interested to realise the underlying algorithm using decision diagrams as a data structure, which should simplify some of the code and also improve the general performance. Might be a nice follow up project 😌
Co-authored-by: Lukas Burgholzer <[email protected]> Signed-off-by: M-J-Hochreiter <[email protected]>
Implemented all the requested changes. Looks done to me 😄 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Everything looks good to me now. 🙌🏼
Many thanks for all your work on this. 🙏🏼
The contribution turned out quite nicely! ✨
I'll apply one last small suggestion and then this can go in 🚀
Signed-off-by: Lukas Burgholzer <[email protected]>
Signed-off-by: Lukas Burgholzer <[email protected]>
Signed-off-by: Lukas Burgholzer <[email protected]>
Thank you for all your valuable Feedback on this! |
Description
As a part of my bachelor thesis I implemented the Qiskit State Preparation algorithm (https://github.com/Qiskit/qiskit/blob/main/qiskit/circuit/library/data_preparation/state_preparation.py#) in C++ using the MQT Framework.
My advisor Yannick Stade suggested I open a pull request, as it might be interesting to add into MQT.
The state preparation allows a user to create a circuit that initializes a quantum state from a list of complex amplitudes, sometime needed in various quantum algorithms.
I am not sure how/where to add this class, thus I just created a new file.
If you could give me feedback whether this functionality might be interesting to add/what to change I would gladly try my best to fulfill your requests.
I have not yet written any tests, apart from manually comparing outputs of qiskit and my algorithm, and simulating both circuits with qiskit. (can be added in the future)
Checklist: