Skip to content

Releases: unitaryfund/qrack

QHybrid

06 Sep 15:02
7bdbf5a
Compare
Choose a tag to compare
  • This release introduces the Qrack::QHybrid type, which switches between CPU and GPU modes as effecient.
  • Small QEngineCPU (and QHybrid) workloads are now asynchronous.
  • QUnit now loads underlying "shard" engines lazily, when a QEngine is not necessary to simulate single separable qubits.
  • The experimental Qrack::QPager type has been added.

Issue #357 addressed

25 May 04:10
7cca595
Compare
Choose a tag to compare

Issue #357 related to Qrack::QUnit buffering accuracy was addressed and tested up to a random universal circuit depth of 5 layers.

QUnit buffering debbuging

23 May 20:17
39f78d4
Compare
Choose a tag to compare

This release is a stability enhancement for Qrack::QUnit controlled gate buffers, debugged against cross entropy benchmark tests.

Improved QUnit buffering and fSim gate

19 May 23:42
76bce32
Compare
Choose a tag to compare

QUnit buffering has been improved, and the "fSim" gate has been added, which is useful in the simulation of quantum particles with fermionic statistics.

Swap gate bug fix and QUnit buffer refactor

04 May 21:49
16ae353
Compare
Choose a tag to compare

Due to extended cross entropy benchmark testing, a bug was detected and fixed in QUnit::Swap(). In the process, the QUnit controlled gate buffer code was made cleaner and more versatile. As we select versions to tag by stability and correctness, this is due a release iteration.

Stability improvements and API refactor

01 May 04:23
f461f7d
Compare
Choose a tag to compare
  1. Cross entropy benchmarks have helped us debug QUnit to its most stable, accurate, and performant point to date.
  2. Builds have been tested on Linux, Windows, Apple, and with VC4CL on the Raspberry Pi 3.
  3. QFusion was determined to be obsolete, including for performance considerations, and it was removed.
  4. The "Hash" method has been added, which effectively lets the user specify any one-to-one function (without phase effects) for unitary qubit state transformation via a classical hash table.
  5. CMake options now include arbitrary (power-of-two) maximum qubit capacity in a single QUnit, with the Boost libraries for big integers. Of course, allocation is still limited by system resources, and the maximum OpenCL "shard" indexing is 64 qubits or less, (which is safely outside of possible resource limits for "Schrödinger method" simulation).
  6. Documentation has been brought into line with the features and benchmarks of the new release.

Qrack stack integration

25 Jan 00:20
696b1f0
Compare
Choose a tag to compare

At this point, Qrack has been integrated with and extensively tested against a wide, open source stack of third-party quantum computing libraries, as a first-order and a second-order dependency. This is also the state of development at which we plan submit an academic report on benchmarks, for peer review, thanks to the generous support of the Unitary Fund micro-grant program. In overview, major points of improvement include:

  • Debugging all existing work to pass extensive batteries of open source, third party unit tests, (particularly see the recent continuous integration tests and Travis definition file)
  • QUnit "phase gate buffering" optimizations, which cache, commute, and "fuse" 2-qubit controlled gates to further reduce required "representational entanglement" (re: "Schmidt decomposition")
  • Replacing float rounding neighborhoods with exact float value checks wherever applicable, and without loss of performance (which, upon scrutinization, turns out to more-or-less entirely generally)
  • Full support as a Qiskit plugin, in addition to existing support for ProjectQ, as well as tested support as a second-order dependency through those projects

Stable Release (for DOI reference)

16 Aug 03:01
18d7688
Compare
Choose a tag to compare

Qrack has been stable and "quiescent," for about the past month. The vm6502q.v3.3 "minor release" is primarily a fixed point of reference to create an official DOI. Documentation is also tagged.

Windows 10 and Mac support, and ApproxCompare() fix

17 Feb 04:22
a784caa
Compare
Choose a tag to compare

This build debugs support on Mac Mojave, adds support for building with Visual Studio on Windows 10, and fixes a longstanding bug in the ApproxCompare() method, which had been leading to unit test failures. The changes in code itself are minor, but since they add wide platform support, and stable general platform support was the aim of v3.1, we're tagging this version before any new functionality is added.

General hardware support and stack-readiness

09 Feb 01:20
074a808
Compare
Choose a tag to compare

This release improves stability across all tested hardware platforms and debugs support for optional integration with the vm6502q fork of ProjectQ.

What's new in Qrack v3.1:

  • Supports building on the Raspberry Pi 3 with VC4CL
  • Optional integration with vm6502q/ProjectQ fork has been completed
  • "Uniformly controlled" gates added to the API
  • Bug fix in TimeEvolve() method
  • General stability improvements across many different platforms

Known Issues:

ApproxCompare() has a sensitive threshold for state comparison, which causes unit tests based on it to fail sporadically. TryDecompose() and TrySeparate() also use ApproxCompare(). A low threshold means more conservative behavior. TryDecompose() and TrySeparate() are less likely to give false positives for true separability, but they are more likely to give false negatives.