Skip to content

Releases: unitaryfoundation/qrack

Don't double-count sparse truncation fidelity loss

13 Nov 20:20

Choose a tag to compare

The fidelity tracker was previously counting the fidelity loss roughly twice when there was both amplitude flooring and truncation to memory footprint during Compose(). This has been fixed.

Full Changelog: vm6502q.v9.30.1...vm6502q.v9.30.2

sha1sum results:
d2135ea4105a515db83de5eb6df51383a3f1e593 libqrack-macosx_14_0_arm64.zip
d2c602fff3cac49fa07fcaca3f8feeb851dfc161 libqrack-macosx_15_0_arm64.zip
bb2e4273aa30d982fc4872829ce1d1ee180c283c libqrack-manylinux_2_35_x86_64.zip
74e6438ac7e33ebbd57992589125952957122fc2 libqrack-manylinux_2_39_x86_64.zip
c47b6e84d2c6759455b3f4b1b59af44d712adaf6 libqrack-win-amd64.zip

Fix sparse truncation normalization

13 Nov 05:13

Choose a tag to compare

This release fixes sparse normalization, specifically when QRACK_SPARSE_TRUNCATION_THRESHOLD environment variable is non-default and product state dimension is less than the truncation limit.

Full Changelog: vm6502q.v9.30.0...vm6502q.v9.30.1

sha1sum results:
ce7b94a7abbcd18f66e693f82410c52d2a08deb7 libqrack-macosx_14_0_arm64.zip
42a6d014c4d8dba64f6c245b17aa006c33967eb3 libqrack-macosx_15_0_arm64.zip
1c05265fb82f8181ea17f6ff9f4b7a886fa2db72 libqrack-manylinux_2_35_x86_64.zip
776126b28d4b14ae7e9e774ad8b335d8ec019896 libqrack-manylinux_2_39_x86_64.zip
babfca40027f9342382542011919dd3bbc359e1b libqrack-win-amd64.zip

Debug and improve sparse truncation

13 Nov 02:56

Choose a tag to compare

QUnit actually didn't respect the user option to select sparse simulation: this has been fixed. Also, the environment variable QRACK_SPARSE_TRUNCATION_THRESHOLD has been added to control truncation during Compose()-type operations, setting a floor for product-state probability norm below which amplitudes will be truncated during these operations.

Full Changelog: vm6502q.v9.29.4...vm6502q.v9.30.0

sha1sum results:
81b41f73937b43a11ac23494d7403567b1ce5d31 libqrack-macosx_14_0_arm64.zip
12627d02ce05c22d069762100b463199bdcd430a libqrack-macosx_15_0_arm64.zip
5c8763c5652d93001164f64507e2561ca7297b5d libqrack-manylinux_2_35_x86_64.zip
7f9413b641e775d664d51da0f51f69b17230f19e libqrack-manylinux_2_39_x86_64.zip
1a8ccbc110c1639ef2e06a02cb1a82a44d8a41de libqrack-win-amd64.zip

Fix fidelity estimate bug in v1.70

12 Nov 21:40

Choose a tag to compare

Per unitaryfoundation/pyqrack#32, Qrack v9.29 and PyQrack v1.70 introduced a bug in CPU-based first-principles fidelity estimates. The problem was that the fidelity tracker wasn't properly initialized. This release fixes it.

Full Changelog: vm6502q.v9.29.3...vm6502q.v9.29.4

sha1sum results:
d618337562e36446a6cf181a7ba1be2f870f4e60 libqrack-macosx_14_0_arm64.zip
32f9aa944f37e34f015ed57433face56b327ca66 libqrack-macosx_15_0_arm64.zip
1628d90672af7e0196b48ac0fbf6481681c24d8a libqrack-manylinux_2_35_x86_64.zip
310c442b2d97be1a34e537a9ab61c72cf0776aba libqrack-manylinux_2_39_x86_64.zip
ee2bf4147ac5d9340043038dc4bd3a0cef968c30 libqrack-win-amd64.zip

Debug/optimize sparse truncation

08 Nov 00:55

Choose a tag to compare

MB vs. bytes was confused for sparse truncation limits. Also, there were several cases where truncation can be skipped due to no possibility of changing the count or remapped probabilities of amplitudes overall.

Full Changelog: vm6502q.v9.29.2...vm6502q.v9.29.3

sha1sum results:
05fdbb9046fe676c33f6b23786ccd3f116cde6d8 libqrack-macosx_14_0_arm64.zip
a4b10140955625a366c68f012dfebcac03881586 libqrack-macosx_15_0_arm64.zip
c8c82e1d78e5e1e01560618f58b88db226096aad libqrack-manylinux_2_35_x86_64.zip
2ce14eaa95238dee23060d8e3076952812bb8bf5 libqrack-manylinux_2_39_x86_64.zip
cca5136bd96f4bd29f32f289cacc73340dc5404d libqrack-win-amd64.zip

Retain duplicate norms for sparse truncation

05 Nov 23:28

Choose a tag to compare

(Third time's charm:) During sorting for sparse truncation, we need to retain potential duplicate norms, not just distinct ones. As such, we need a container that sorts, but we can't use std::set. What do we use instead? I'd never heard of it before in my life, but the C++ STL anticipated the need for search a container and provides std::multiset. This fixes an edge case with sparse truncation whenever two or more norms are bit-for-bit exactly the same. (You learn something new every day.)

Full Changelog: vm6502q.v9.29.1...vm6502q.v9.29.2

sha1sum results:
af9f093da4bdfacbe1ae78da31ca211a4ab0840c libqrack-macosx_14_0_arm64.zip
b64639c9584444d921e8dd8608a880c3384c095b libqrack-macosx_15_0_arm64.zip
ff6b1c4a99d67545861f303ba379ec9c7b77f00e libqrack-manylinux_2_35_x86_64.zip
f98ce6ea9934a84827e15d4f2f2405fc1249ccda libqrack-manylinux_2_39_x86_64.zip
6d20a48d7e3a1370d804d84752b0c714bc561be5 libqrack-win-amd64.zip

Fix sparse truncation normalization

05 Nov 22:25

Choose a tag to compare

Apologies for another (classic, patent-pending) Qrack "double-tap" release: it wasn't clear from unit tests, but approximate sparse simulation with truncation should renormalize amplitude scale by the square root of the fidelity retained, not the linear fidelity retained. That is the only change in this release.

Full Changelog: vm6502q.v9.29.0...vm6502q.v9.29.1

sha1sum results:
856193414edd7cd1c3b04ba218821169d1a19842 libqrack-macosx_14_0_arm64.zip
3fb946e75cfd3372c34d92552ca5c2949c9706a7 libqrack-macosx_15_0_arm64.zip
a233cdf723fa84d2a608454f32565db3bc47a3be libqrack-manylinux_2_35_x86_64.zip
171813a12c2d47fa289d2ecc70c3b1c5e631ede3 libqrack-manylinux_2_39_x86_64.zip
b5fe5d665826ac0b2373a9a39ddff93aa7ed01f7 libqrack-win-amd64.zip

Restore and improve sparse simulation

05 Nov 20:50

Choose a tag to compare

There actually does turn out to be a reasonable use case for sparse simulation in Qrack: truncated sparse simulation is a good potential complement to "automatic circuit elision" (ACE) for approximation.

(Sparse simulation is only available for CPU-based simulation for now, as it's challenging to keep this device-side in GPU buffers without a lot of non-coalesced rearrangement of sparse buffers between every gate).

What's Changed

Full Changelog: vm6502q.v9.28.0...vm6502q.v9.29.0

sha1sum results:
148a76bbec28f0d6c3c96efe808ff1c256e29371 libqrack-macosx_14_0_arm64.zip
e47e8bb05a27cbc61a3f4f8b4cab3829ec06412a libqrack-macosx_15_0_arm64.zip
2c732fc592f574a6cedb72af04204697dd705240 libqrack-manylinux_2_35_x86_64.zip
a3405af1f598154ba987cdc240a568716527fb91 libqrack-manylinux_2_39_x86_64.zip
a0c5b1de692a81a7e71763fca43a132e45399750 libqrack-win-amd64.zip

DISABLE_OOO_OCL and ~2048qb

21 Aug 03:31

Choose a tag to compare

The environment variable DISABLE_OOO_OCL has been added for run-time OpenCL v1.x compatibility with prepackaged artifacts, in cases of extremely backwards systems or virtualization. Also, the qubit limit per simulator instance has been increased to about 2048qb per instance, with boost-multiprecision for qubit masks, which could be useful for automatic circuit elision (ACE), Clifford circuits or near-Clifford rounding parameter (NCRP), or Schmidt decomposition rounding parameter (SDRP).

Full Changelog: vm6502q.v9.27.1...vm6502q.v9.28.0

sha1sum results:
95ae4a8f0cfe8f49a899938d420ec02f880c0728 libqrack-macosx_14_0_arm64.zip
aba6946b180d5fe8f87d4dfea4538bec4265c770 libqrack-macosx_15_0_arm64.zip
656d5edc39a750eb22c816b65da39850c5d1dd9d libqrack-manylinux_2_35_x86_64.zip
a0a948c36343cd27ee4c1fc9a24e036dcb740229 libqrack-manylinux_2_39_x86_64.zip
d7738ab8fc10afcf428d3a3453e656b35c0f3490 libqrack-win-amd64.zip

Debug HighestProbAll(n)

20 Aug 20:16

Choose a tag to compare

Sorry, we pulled the trigger a little too quickly on the last release: I checked that the top-n highest probabilities worked for n=2, but not higher. This release fixes it for arbitrarily high n and cuts redundant sorting overhead.

Full Changelog: vm6502q.v9.27.0...vm6502q.v9.27.1

sha1sum results:
cd1be067007d5ecedfbfd7a0b74de8e530bf5138 libqrack-macosx_14_0_arm64.zip
4db67563455dbffdb753a16f2756340dfd6cbf39 libqrack-macosx_15_0_arm64.zip
34a2046b43da26ef1fb74065567f0db2e0072f69 libqrack-manylinux_2_35_x86_64.zip
337131865cedfb1eaeffe6a9b32db8ae020f981b libqrack-manylinux_2_39_x86_64.zip
75d11021dfe133b504a540148be93074a80743f3 libqrack-win-amd64.zip