Skip to content

Releases: unitaryfund/qrack

QUnit/QBDD separability interop

07 Nov 00:15
Compare
Choose a tag to compare

The separability-detection interoperability between QUnit and QBdt has been fixed and improved.

Full Changelog: vm6502q.v9.12.8...vm6502q.v9.12.12

sha1sum results:
efb97a7428d7cf44a0e9ebf785f42cd4cd2dc219 libqrack-macosx_14_0_arm64.zip
6477ff78a6fc265985185c297a5a61b603fa9109 libqrack-macosx_15_0_arm64.zip
b1324669797ac11b05d2f7656f1a6216967cb76e libqrack-manylinux2014_x86_64.zip
c9d831e50465d5d101e4c67bc30155e7e65f3e08 libqrack-manylinux_2_35_x86_64.zip
0d289bd2f67040ec796c8593a139726e7fda75e1 libqrack-manylinux_2_39_x86_64.zip
194a7da49dc1eddf837d1913516434bfae81baf1 libqrack-win-amd64.zip

Improve QBdt TryDecompose()

05 Nov 15:22
Compare
Choose a tag to compare

QBdt effectively turns out to structurally solve the "separability problem." That is, a fully reduced QBDD naturally exhibits manifestly obvious separability between low-index and high-index qubit subsystems. This has been leveraged for TryDecompose() in both QBdt and with QUnit over QBdt, as well as in QUnit::TrySeparate().

NOTE: The original build artifacts were changed, to fix a method hidden by overloading.

Full Changelog: vm6502q.v9.12.4...vm6502q.v9.12.8

sha1sum results:
1f48f639727f7c94ed603a2e25e927e8c7c94ca0 libqrack-macosx_14_0_arm64.zip
85d8eac7ec45a7d906936f325900c4f81c531a67 libqrack-macosx_15_0_arm64.zip
43edf58a0f2f2ac33adcc860fa278a74e93fae4a libqrack-manylinux2014_x86_64.zip
19d0b1b5e62bcc5662d8a8520a0a3df57de4b014 libqrack-manylinux_2_35_x86_64.zip
75b553de26b493a294b5585fa372d27f8e0ecc7b libqrack-manylinux_2_39_x86_64.zip
2dd68e7dc5177780f64b7ec178ce73183bbb7c3c libqrack-win-amd64.zip

Optimize TryDecompose() (2)

03 Nov 14:33
Compare
Choose a tag to compare

TryDecompose() has been optimized for significant time complexity reduction in the case that the system is detected to be separable. (The development team highly suspects that this implementation is finally "pareto-optimal," in other words, not possible to fundamentally optimize further.)

Full Changelog: vm6502q.v9.12.0...vm6502q.v9.12.4

sha1sum results:
cb36861c9fdd8897e557b78613241f21526ce825 libqrack-macosx_14_0_arm64.zip
681baabb9fdb92010b93e3f30a6b260a7c030d75 libqrack-macosx_15_0_arm64.zip
2dbfd53fbbd949e9807807b33cb16a207fd5f1b0 libqrack-manylinux2014_x86_64.zip
4b152b36c0bcdba5813849c18b3ae800fc0da1c8 libqrack-manylinux_2_35_x86_64.zip
2388c3cfe6530e622d21c8c444d1173e33cbf929 libqrack-manylinux_2_39_x86_64.zip
eb6bee8165dcde602e5c75bdcb83e8092fbe0709 libqrack-win-amd64.zip

Optimize TryDecompose()

02 Nov 21:29
Compare
Choose a tag to compare

This release substantially improves the space and time complexity of TryDecompose(). (It also fixes a small bug in QHybrid that likely wouldn't have been exposed to Python or Rust bindings, but rather only to static linkage.)

Full Changelog: vm6502q.v9.11.16...vm6502q.v9.12.0

sha1sum results:
dbd7208b35c56751d6ba3b807162359755636143 libqrack-macosx_14_0_arm64.zip
067d767e43452a0b1a36fe58255d4cd44a5b3765 libqrack-macosx_15_0_arm64.zip
ea910c3e76fe3d222fc83fd879c46f44cb764e0c libqrack-manylinux2014_x86_64.zip
b22e0d5d45cc81ad4533663bff858ba47213fa03 libqrack-manylinux_2_35_x86_64.zip
d521daf3f6bdee6c0fb2ab9c587ed1071f9de61c libqrack-manylinux_2_39_x86_64.zip
d4c4dd5e08f4558d0c012b5ca8af782ca4d3a668 libqrack-win-amd64.zip

Debug OpenCL/CUDA Decompose()/Dispose(); optimize for CPU

02 Nov 14:29
Compare
Choose a tag to compare

In recent releases, a bug was introduced in OpenCL and CUDA based Decompose()/Dispose() when trying to calculate the phase angle of very small amplitudes. This has been fixed, and CPU-based simulation has been optimized.

WARNING: You must recompile any precompiled OpenCL kernels, after upgrading to this release.

Full Changelog: vm6502q.v9.11.12...vm6502q.v9.11.16

sha1sum results:
5a381270a13c320d20a45be9e1e71841285fb300 libqrack-macosx_14_0_arm64.zip
fe1afadedfe52f1553f40740873d6245e6d2c23d libqrack-macosx_15_0_arm64.zip
c8d9189268afe412a91703d3a40dacc914830fb2 libqrack-manylinux2014_x86_64.zip
d3c7b4f8c810ed1b939c2a67c83892bd6b040eee libqrack-manylinux_2_35_x86_64.zip
e9969830f9b54b626147e2e8ef327f6298810af8 libqrack-manylinux_2_39_x86_64.zip
244a116d3f658d101d4612488380faf1b6ab8feb libqrack-win-amd64.zip

Improved TrySeparate()

21 Oct 15:05
Compare
Choose a tag to compare

TrySeparate() with a tolerance parameter has been improved, to avoid unnecessary entanglement when called in QUnit. As Decompose() also turns out to be a unitary operation in general, Separate() in the shared library API also no longer proactively normalizes its output subsystems.

Sparse state vector simulation was found to be bugged (under QUnit), and the official recommendation is that QBDD (QBdt) supersedes it in basically all regards, so sparse state vector simulation has been removed. (The argument to enable it remains behind in QInterface constructors so that this need not be a breaking change.)

What's Changed

Full Changelog: vm6502q.v9.11.8...vm6502q.v9.11.12

sha1sum results:
c2e5b97f4dcb784be2532693cfb590a8da11b8bc libqrack-macosx_14_0_arm64.zip
262da2fa86b4029d32427b2d8d465264adf473ca libqrack-macosx_15_0_arm64.zip
e82df4d941516b9fbdb27c1b6b844d1adbec808f libqrack-manylinux2014_x86_64.zip
7890e9c4f5b8c4b2d6517480abddd48f8a2ddbff libqrack-manylinux_2_35_x86_64.zip
c9890a557bbe3c3f809df9d24fdc8f85552a56c0 libqrack-manylinux_2_39_x86_64.zip
55f3a5b7b6868451105f843e30143d9991c27d71 libqrack-win-amd64.zip

Improve Separate() phase

20 Oct 01:58
Compare
Choose a tag to compare

Separate() and Decompose()/Dispose() phase angles are now weighted by contributing-amplitude probability (from the L2 norm).

Full Changelog: vm6502q.v9.11.0...vm6502qv9.11.4

sha1sum results:
304e1540f4dbeea282d6be39c11495e44ba4c892 libqrack-macosx_14_0_arm64.zip
00c03bdd6bde0bf75f4ca41e2b5c7b505344dbf3 libqrack-macosx_15_0_arm64.zip
82e3377ae898915b6e0036e75e6af8d0c56f9e1f libqrack-manylinux2014_x86_64.zip
a7bfd836a4e9ad3bbdb740838c5c57a872655f2d libqrack-manylinux_2_35_x86_64.zip
17caa2ca34ef96483032eeef2cbad5111a1fc6d3 libqrack-manylinux_2_39_x86_64.zip
418f8d7613150cf0b2b064a0f011ea6684ae0bc0 libqrack-win-amd64.zip

Debug QUnit Detach() edge case

20 Oct 12:29
Compare
Choose a tag to compare

QUnit::Decompose() had a long-standing bug: it failed to reindex QUnit "shards" in the destination simulation. This was fixed in a release yesterday, but the change introduced another problem in the indexing of the original simulator instance. Both issues have been fixed, in the current release.

Full Changelog: vm6502qv9.11.4...vm6502q.v9.11.8

sha1sum results:
4f1eae46796c5d886448e7f3fdfd8a528d72c8c2 libqrack-macosx_14_0_arm64.zip
e849181207388aaf66ac22081dcd42adc9177d6b libqrack-macosx_15_0_arm64.zip
1a52a62cace8082e8b16cadd108bf8397fef8235 libqrack-manylinux2014_x86_64.zip
ba4e4cbff1384cf2873f53524bffcaddebf91ff7 libqrack-manylinux_2_35_x86_64.zip
d686c4d6f7c23f382db07a5ec9387de19b5f10eb libqrack-manylinux_2_39_x86_64.zip
a328df9caca74a6f947164285e3c6d3dd819e313 libqrack-win-amd64.zip

Separate() in shared library API

19 Oct 18:27
Compare
Choose a tag to compare

This release adds Separate() and Normalize() to the shared library API. Separate() forces entanglement-breaking between the target subsystem and all other qubits (without condition). Normalize() is a necessary component to achieve Separate() manually via Decompose().

A bug was fixed in QUnit::Decompose() in the course of testing Separate().

Full Changelog: vm6502q.v9.10.1...vm6502q.v9.11.0

sha1sum results:
ef2e584f25cd8ceee0a802af735f3d64bf6554c8 libqrack-macosx_14_0_arm64.zip
6cb9deb4f81d6d7b70ebd33ce914d6f2ae282bf6 libqrack-macosx_15_0_arm64.zip
1371c7d578f3e5d5210abb1aaae4c4c4cedb4861 libqrack-manylinux2014_x86_64.zip
7d3b73abc6507bdade613e796403cf76314960f6 libqrack-manylinux_2_35_x86_64.zip
1b21dfc0a6d25f18902fe40de4bd103fd32e52ff libqrack-manylinux_2_39_x86_64.zip
4ff75167921d15056d38c687b58330f56c210f6c libqrack-win-amd64.zip

SDRP/MPS correspondence base case

09 Oct 04:29
Compare
Choose a tag to compare

With all-to-all connectivity (but 0 bond dimension), SDRP (Schmidt decomposition rounding parameter) should reproduce the effective behavior of MPS (matrix product states) when the rounding parameter is set to 1 or greater: this release fixes the QUnit implementation to realize this theoretical expectation. (Disable QStabilizerHybrid layer and set the rounding parameter >= 1 to see this behavior, but the loss of "hybrid stabilizer" optimization should not qualitatively hurt performance in this case.)

Full Changelog: vm6502q.v9.10.0...vm6502q.v9.10.1

sha1sum results:
0e94263a661246fa548a8ae617e7f79a41d9c3be libqrack-macosx_14_0_arm64.zip
e929c7ddfc1445159e3ca08203cec7d5c98f677e libqrack-macosx_15_0_arm64.zip
09b9595f30030108e66e7732570cfda3993d1ee9 libqrack-manylinux2014_x86_64.zip
c3304b4a0b8c4e4cd831fbeae26963bf5deff7c1 libqrack-manylinux_2_35_x86_64.zip
984a41214ffedef4a4182d1038b0143a99c478e2 libqrack-manylinux_2_39_x86_64.zip
d62ebfc25eaa6ad01c7a7ef860d6d9881c2ccc58 libqrack-win-amd64.zip