Skip to content

Version 0.6.0: performance improvement, modern C++20 and matrices

Compare
Choose a tag to compare
@pablolh pablolh released this 23 Jan 15:58
· 131 commits to develop since this release

Almost a complete rewrite. No functional change except:

  • error models don't work anymore :( they will come better and stronger later on
  • classical not gate doesn't work anymore :( it's just an omission, will be fixed soon
  • get_measurement_outcome and get_state don't exist anymore :( they've been superseeded by json output
  • it's faster and using a single core \o/ and less memory on average

Added

  • 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

Changed

  • 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

Removed

  • OpenMP and multithreading.
  • SSE, AVX and other intrinsics.
  • get_measurement_outcome and get_state methods. Now accessible via JSON output.