-
Notifications
You must be signed in to change notification settings - Fork 11
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
Release 0.6.0 #121
Release 0.6.0 #121
Conversation
a50b696
to
ac0dc92
Compare
- Use a sparse array to store the global quantum state. This is implemented using a absl::flat_hash_map for performance. - Remove all intrinsics instruction as well as all multithreading. The speedup obtained with the above is very good such that this is no longer needed (and would have to be reimplemented). - More .cc files. - Explicit matrices for all common quantum gates, this is way more readable. - C++20 all the way. - Camel case instead of snake case. Consequences of this change: - No more platform-specific things, thus this also support e.g. ARM. - Performance is WAY BETTER even though it's using a single thread. Reason for this is likely the cache-friendliness of the code. - C++20 allows the code to read better.
Almost a complete rewrite. No functional change except it's faster. - Ability to easily implement any quantum gate by simply giving an arbitrary unitary matrix in Gates.h - Performance speedup using a single thread - Some proper linear algebra primitives using template metaprogramming - Abseil-cpp dependency for flat_hash_map - Ability to compile the simulator with an set maximum number of qubits - in the future this will be using templates as well to switch data structures based on the input quantum circuit - Quantum state is stored as a sparse array implemented using a flat_hash_map from Abseil-cpp - C++20 in place of C++14, - Code style: camel case - OpenMP and multithreading. - SSE, AVX and other intrinsics.
ac0dc92
to
1356e2c
Compare
@oschusler this PR makes it possible to build and run on ARM |
I see you removed support for 3.7? Why exactly? |
Morning Olaf, Sorry for not mentioning it, I've been a bit messy with my commit.
Other things that I did not mention:
I suggest then we can merge this PR, then I create a separate PR when there is time for the error models and the classical not gate. Meanwhile QI doesn't have to upgrade. But that makes it possible to experiment with ARM64 it need be. |
Almost a complete rewrite. No functional change except it's faster.
Added
be using templates as well to switch data structures based on the input quantum circuit
Changed
Removed