Releases: unitaryfund/qrack
Improved TrySeparate()
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
- Cut sparse state vector by @WrathfulSpatula in #1018
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
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
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
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
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
Better sampling; OutProbs()
Multi-shot measurement in QEngine
was previously handled in a way that was technically not thread-safe for C++. This has been fixed, and QEngine
sampling has been parallelized further.
The OutProbs()
method has been added to the shared library extern C
API, which returns the L2 norm of each OutKet()
amplitude in same order.
Full Changelog: vm6502q.v9.9.62...vm6502q.v9.10.0
sha1sum results:
682bb0a67d824e9fda5087830eeed1b05ca235c0 libqrack-macosx_14_0_arm64.zip
f4fb8a9365a50d8a45ce74ea4587a14f443d70df libqrack-macosx_15_0_arm64.zip
e90b4a5156ea56f7870c01bec0aba1ff08009b2e libqrack-manylinux2014_x86_64.zip
dd585ec49c30e41824dd280325dacee931c8fb2c libqrack-manylinux_2_35_x86_64.zip
ca026cd4465a1dfd0c50a3d6df2bd961d993df2e libqrack-manylinux_2_39_x86_64.zip
32ef042ae5d5f61c914ba7ee55ff099149b62c85 libqrack-win-amd64.zip
Debug QBDD high rounding
If QRACK_QBDT_SEPARABILITY_THRESHOLD
were set too high, it would previously lead to segmentation faults. This release should allow the rounding parameter to be set almost arbitrarily high.
Full Changelog: vm6502q.v9.9.58...vm6502q.v9.9.62
sha1sum results:
5f00f43db80fb218e08b32655b628dcdbea90423 libqrack-macosx_14_0_arm64.zip
b7a72c195e53bb6aeb16df07664d59f2380bb72a libqrack-manylinux2014_x86_64.zip
fa4cb90197c7f8acf689ace6ce689742e1ecb81d libqrack-manylinux_2_35_x86_64.zip
ed3c0dd7a609549f78fc617007247ff36dffa5ae libqrack-manylinux_2_39_x86_64.zip
05f5b863349557ec517eb0692a30da67caae9e54 libqrack-win-amd64.zip
Debug QBDD sampling
This release fixes doubling-up of QBDD measurement sampling.
Full Changelog: vm6502q.v9.9.54...vm6502q.v9.9.58
sha1sum results:
48e945330d390dfe13e6d9669ddcb415d96b098c libqrack-macosx_14_0_arm64.zip
be690a24d3be4779ea47c3b4147485300a817cb7 libqrack-manylinux2014_x86_64.zip
90a75523a351e0650d9368bf946933db856e2e40 libqrack-manylinux_2_35_x86_64.zip
a65404040e0b04077964c4ff64471bb7280e00e8 libqrack-manylinux_2_39_x86_64.zip
197fc449ce7f34f5511bbbc1480110c13ee0e49d libqrack-win-amd64.zip
QBDD optimization
A number of improvements have been made in QBDD simulation:
PushStateVector()
has more consistent flooring logic for very small contributions to overall state vector probability.- Because QBDD gains little advantage from internal parallelism in most cases, internal parallelism in QBDD now defaults to
OFF
. - If QBDD internal parallelism is off, then
QTensorNetwork
automatically parallelizes QBDD measurement sampling over shots
Full Changelog: vm6502q.v9.9.50...vm6502q.v9.9.54
sha1sum results:
10bea70febb145a1cd4adab85503d850ae40a116 libqrack-macosx_14_0_arm64.zip
0cd78e6a21e4ba5d071f74b543b596ed3d149b12 libqrack-manylinux2014_x86_64.zip
21bf6174e08864b569038dda52439d9a38db1ae9 libqrack-manylinux_2_35_x86_64.zip
6ddecb25a28ffef7ef865e15886544db063331a6 libqrack-manylinux_2_39_x86_64.zip
8ee9c3597d4428b48d5d21ad85fd6724fee8897a libqrack-win-amd64.zip
Edge case segfault with 0 OpenCL/CUDA devices
This release fixes an edge case that leads to a segmentation fault, when QTensorNetwork
is used in the presence of 0 available OpenCL/CUDA devices.
Full Changelog: vm6502q.v9.9.42...vm6502qv9.9.46
sha1sum results:
735297a892fb18177266d0133b904d3a522ba437 libqrack-macosx_14_0_arm64.zip
06c5149dbc4016b82a46cf2d9cfe6a40e30963a1 libqrack-manylinux2014_x86_64.zip
86ec787ff73d182556db6a41a30b6e5580d264f1 libqrack-manylinux_2_35_x86_64.zip
50ae58c200cae3cc90f48f04d4b8d762e4df64db libqrack-manylinux_2_39_x86_64.zip
576d4f1b86eb7fe7c126580987409e6fedcb0c16 libqrack-win-amd64.zip