Skip to content

Releases: unitaryfund/pyqrack

QBDD and stabilizer optimization

08 Sep 19:36
Compare
Choose a tag to compare

QBDD and stabilizer methods have been optimized. An incorrect initialization of a default QEngine property was also fixed in the default constructor (though the incorrect initialization likely had no consequence).

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.33...vm6502q.v9.9.37
v1.30.23...v1.30.24

sha1sum results:
5c87a32940566928e559e32104dd326b41add384 pyqrack-1.30.24-py3-none-macosx_12_0_x86_64.whl
c27b7239ff36296fcc858d33a1dbdb9775506711 pyqrack-1.30.24-py3-none-macosx_13_0_x86_64.whl
1731d517468d45ca1e05ea56b3196e77105f62a4 pyqrack-1.30.24-py3-none-macosx_14_0_arm64.whl
8560d24506aeb8d43efb58fdf41545995a582ddf pyqrack-1.30.24-py3-none-manylinux_2_31_x86_64.whl
de19ae67645b40afac9b3e28c66c417867fe381d pyqrack-1.30.24-py3-none-manylinux_2_35_x86_64.whl
d9dd179294ccf615534ce658b2b249240c6eaf59 pyqrack-1.30.24-py3-none-manylinux_2_39_x86_64.whl
77504c0efa42328d996ff7fcfb4ace171cf04db6 pyqrack-1.30.24-py3-none-win_amd64.whl
6eca84f19dd3d2be62f913ef97099f24427a281a pyqrack-1.30.24.tar.gz

QBdt and BigInteger debugging and performance

04 Sep 15:18
Compare
Choose a tag to compare

QBdt and BigInteger (alias bitCapInt) have been debugged. Additionally, one should see drastically improved performance with QBdt (despite significantly reduced parallelism utilization). Systemically, on GNU/Linux, the bitCapInt type now uses 128-bit "words" rather than 64-bit words, which should lead to some performance improvement.

Note that previous releases were almost universally built with capacity for 4095 qubits in a single simulator instance; in practicality, little besides stabilizer simulation can take advantage of the vast majority of this addressing capacity. This release limits to 127 qubits in a single simulator instance, but this is a "feasible" width for Qrack approximation techniques, and performance benefits from the change.

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.28...vm6502q.v9.9.33
v1.30.22...v1.30.23

sha1sum results:
7d56a837c69f0ef15154d540295c09700a5a06eb pyqrack-1.30.23-py3-none-macosx_12_0_x86_64.whl
d581d679f0230b4ebc6bd42edd157cad12c2b83e pyqrack-1.30.23-py3-none-macosx_13_0_x86_64.whl
9c843975e02018239239735129ca52ba2d4708be pyqrack-1.30.23-py3-none-macosx_14_0_arm64.whl
0d6b638b3cb56e3544af0ddfa9ab5480b814e004 pyqrack-1.30.23-py3-none-manylinux_2_31_x86_64.whl
99bf601b21357239b37cffa4366606fa88b14202 pyqrack-1.30.23-py3-none-manylinux_2_35_x86_64.whl
f074b480037da89158ec87a2c8d063d69589f9ad pyqrack-1.30.23-py3-none-manylinux_2_39_x86_64.whl
64261eb452e35173b2fbd186138b7d8ec4d7f8dc pyqrack-1.30.23-py3-none-win_amd64.whl
aeab93744971995f2caad91ba440475486527eab pyqrack-1.30.23.tar.gz

Stable maintenance release (debugging and style)

30 Aug 18:50
Compare
Choose a tag to compare

The past couple of months have seen almost exclusively style and debugging changes in Qrack. (We experimented with fixed-point math for certain applications, but it was only suitable on GNU/Linux, and the experiments mostly proved we are better leaving out fixed-point for now.) This release compared the current head of main branch to the state of Qrack about 2 months ago and whittled down the diff to a small and trustworthy set of bug fixes and adjustments according to style guide.

This release might constitute a relatively "complete" state of the core Qrack project, for a significant amount of time into the future. (Most future development is likely to focus on building out support for other quantum software frameworks.)

(Note that releases of PyQrack now aim to be semantic over build artifacts.)

Happy Qracking! You rock!

Full Changelog:
v1.30.20...v1.30.22
unitaryfund/qrack@vm6502q.v9.9.23...vm6502q.v9.9.28

sha1sum results:
d77818655d1601de8968044b772fb44fe9acafa0 pyqrack-1.30.22-py3-none-macosx_12_0_x86_64.whl
74ef0bd8d2ad1bf36813cebf7bc28b708f362376 pyqrack-1.30.22-py3-none-macosx_13_0_x86_64.whl
ef030e039092d777b6dcdc2dad579d137eb1530f pyqrack-1.30.22-py3-none-macosx_14_0_arm64.whl
d07962b23c3e4ed6e530ad8317da1ad1cd7caf26 pyqrack-1.30.22-py3-none-manylinux_2_31_x86_64.whl
63ecb3574374754aa3fc7bf853cf0c5bbd3940bb pyqrack-1.30.22-py3-none-manylinux_2_35_x86_64.whl
8b31eb7a5e6e851b0f20df3db2e71902dd5ae6ed pyqrack-1.30.22-py3-none-manylinux_2_39_x86_64.whl
dc0a572a584d898c76eb8d1e43dc82b03d4c9af8 pyqrack-1.30.22-py3-none-win_amd64.whl
f556473d0494a602c1e90c995b6e9c3f83b37be7 pyqrack-1.30.22.tar.gz

QBdt debugging

28 Aug 22:02
Compare
Choose a tag to compare

QBdt error amortization suffered from an out-of-precision bug; this has been (completely) fixed.

(Note that release number is being considered semantic relative to artifacts.)

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.22...vm6502q.v9.9.23
v1.30.16...v1.30.20

sha1sum results:
8ea967abbc437f8cf9cb4ff43d9dd28b14e0094a pyqrack-1.30.20-py3-none-macosx_12_0_x86_64.whl
6acf6699f14ebba9f5cbb7f4d8a861f009a03cc8 pyqrack-1.30.20-py3-none-macosx_13_0_x86_64.whl
b85d347541b76ef33b76e96904a07e1ecacbde42 pyqrack-1.30.20-py3-none-macosx_14_0_arm64.whl
4a7d741a20d1e00442fd0941f6f72ad8dacda0a6 pyqrack-1.30.20-py3-none-manylinux_2_31_x86_64.whl
4d7649cc9c0aa4156b479b2670365e9c1825d5fa pyqrack-1.30.20-py3-none-manylinux_2_35_x86_64.whl
55e9150f8efee98efa40b41c7ba3c1f584e4d05e pyqrack-1.30.20-py3-none-manylinux_2_39_x86_64.whl
78e7c64bf647d0462bb429c0b161387a4cd02021 pyqrack-1.30.20-py3-none-win_amd64.whl
cb98691c23d528189335230a679c876240ebd858 pyqrack-1.30.20.tar.gz

OpenCL kernel (and other) optimizations; Ubuntu PowerPC fix

28 Aug 00:47
Compare
Choose a tag to compare

Various micro-optimizations have been added, including OpenCL kernel optimizations. Because of OpenCL kernel updates, perform the following commands as necessary in the qrack repository directory:

$ make clean
$ cmake ..
$ ./qrack_cl_precompile

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.13...vm6502q.v9.9.22
v1.30.15...v1.30.16

sha1sum results:
da683aa4aefc18ad75034384feb40a03b5f93010 pyqrack-1.30.16-py3-none-macosx_12_0_x86_64.whl
adffc30770d521dd2d93f6c0f3bd0aebeca03c8b pyqrack-1.30.16-py3-none-macosx_13_0_x86_64.whl
3bebf9076b3d5b129b627400d0170d910a53ce65 pyqrack-1.30.16-py3-none-macosx_14_0_arm64.whl
b145af18c37633355d9c553e4831c5af310205b7 pyqrack-1.30.16-py3-none-manylinux_2_31_x86_64.whl
69d8a0bc51ef0109d80d2e34c91edd21f9ea40f8 pyqrack-1.30.16-py3-none-manylinux_2_35_x86_64.whl
af131ef5cd848a303c0b71f980e4a4169312b768 pyqrack-1.30.16-py3-none-manylinux_2_39_x86_64.whl
b068e4a24fe4295adf4208fa4e07fd4c4dfcdb7c pyqrack-1.30.16-py3-none-win_amd64.whl
ccdd12dc455ddc2ee1b0afe6b8b2842702b56121 pyqrack-1.30.16.tar.gz

QUnitStateVector and QEngineOCL debugging

26 Aug 21:04
Compare
Choose a tag to compare

A new class QUnitStateVector can hold Schmidt-decomposed representation of state vectors. For now, specifically, it is used only for near-Clifford simulation with QUnitClifford.

A long-standing edge case in QEngineOCL::MAll() has also been fixed.

Full Changelog: v1.30.13...v1.30.15

sha1sum results:
7263691ef64df4f49b4e43dab4bb3580d9285b84 pyqrack-1.30.15-py3-none-macosx_12_0_x86_64.whl
3fff7779ae8609a6a40c09ee10ccf71a238f3817 pyqrack-1.30.15-py3-none-macosx_13_0_x86_64.whl
13862be82cca8a1bd742df250de1c1f171f42c2b pyqrack-1.30.15-py3-none-macosx_14_0_arm64.whl
539db4c3a5e4cb48f00718a6afaa8b53584952cf pyqrack-1.30.15-py3-none-manylinux_2_31_x86_64.whl
f8fe8de503a1ac52c6024813e1416bb315448a0b pyqrack-1.30.15-py3-none-manylinux_2_35_x86_64.whl
c3cd57caa7e41e39f2273c53271aa8f7fe3effe2 pyqrack-1.30.15-py3-none-manylinux_2_39_x86_64.whl
0cb286e69fa1b572cf42c09029e96574ad3b6ac3 pyqrack-1.30.15-py3-none-win_amd64.whl
7f9dbda41a20006a71d473ed15306490425b6cac pyqrack-1.30.15.tar.gz

Random number generation improvements

25 Aug 14:54
Compare
Choose a tag to compare

Minor improvements have been made to Qrack's random number generator API. Most importantly, 32 divisions have been replaced with 32 multiplications when generating a random float with Rand(). Another possible point of improvement is that most-significant bit of the raw random bit stream now corresponds with most-significant bit of Rand(), where some devices and services for random number generation will tend to prioritize most-significant bit as slightly less biased for randomness than least-significant.

Full Changelog: unitaryfund/qrack@vm6502q.v9.9.8...vm6502q.v9.9.9

sha1sum results:
ddc449729f691f906de78a77b870cf76a2646e3c pyqrack-1.30.13-py3-none-macosx_12_0_x86_64.whl
9aec480f31c5fb852d145b8d88219dffeaf07c0e pyqrack-1.30.13-py3-none-macosx_13_0_x86_64.whl
a8f2192ba6fc6d0c2e078aee8958817b35bcacd6 pyqrack-1.30.13-py3-none-macosx_14_0_arm64.whl
72564dbf2ae9639313986539b6c15a88e6383ccc pyqrack-1.30.13-py3-none-manylinux_2_31_x86_64.whl
cca75d86a6476c50d69b94802c773e202f676726 pyqrack-1.30.13-py3-none-manylinux_2_35_x86_64.whl
649c64d026c5baac8b3b525b151348ef0600f385 pyqrack-1.30.13-py3-none-manylinux_2_39_x86_64.whl
f16faa0d40fdab7e581031ad7e07627a8a1b5e96 pyqrack-1.30.13-py3-none-win_amd64.whl
678b73c30d00c6106d131eaec4ea2104a3cff739 pyqrack-1.30.13.tar.gz

Debug shared library observables API

22 Aug 15:31
Compare
Choose a tag to compare

This release fixes bugs in the observables API of the shared library. (It also fixes 16-bit floating-point builds, but this does not affect the packaged artifacts.)

Full Changelog: unitaryfund/qrack@vm6502q.v9.9.7...vm6502q.v9.9.8

sha1sum results:
e2360ecaee941020753469dd4c2f35b95c574e06 pyqrack-1.30.11-py3-none-macosx_12_0_x86_64.whl
869ea76c24c3d628d774ef48bf63ce91c6f6531b pyqrack-1.30.11-py3-none-macosx_13_0_x86_64.whl
88eb1fbbf7ece3f8fc51743286e5db2387b99022 pyqrack-1.30.11-py3-none-macosx_14_0_arm64.whl
2ed48e81880f8fdf15279c5211e060f8f3538a46 pyqrack-1.30.11-py3-none-manylinux_2_31_x86_64.whl
a34f6f621e83e37bf67dfa0034810469aa76984e pyqrack-1.30.11-py3-none-manylinux_2_35_x86_64.whl
b1eec94b320c86a526bc44849fa65333f747151e pyqrack-1.30.11-py3-none-manylinux_2_39_x86_64.whl
0e7cfa8183e52db691764b281a097eb594f3c30f pyqrack-1.30.11-py3-none-win_amd64.whl
e96eb97a796a995c5f7d642af6adf69c18c3dd27 pyqrack-1.30.11.tar.gz

QUnit refactor

20 Aug 22:33
Compare
Choose a tag to compare

This patch release refactors QUnit (isSchmidtDecompose) for code clarity and reuse. No bugs have been fixed; no features have been added; the performance differential might be entirely negligible. However, the improvement in source code is authoritative.

Full Changelog: unitaryfund/qrack@vm6502q.v9.9.6...vm6502q.v9.9.7

sha1sum results:
f0898bdb78965819a17e7cc106918e7b97adb105 pyqrack-1.30.8-py3-none-macosx_12_0_x86_64.whl
aeba254f3e700507c4c6a5e940bccf25da128989 pyqrack-1.30.8-py3-none-macosx_13_0_x86_64.whl
91c87f6f3f088ffb030236fd0eeb3e0c719f8e81 pyqrack-1.30.8-py3-none-macosx_14_0_arm64.whl
b2129765396f779e1595351cdb7112c27bac325c pyqrack-1.30.8-py3-none-manylinux_2_31_x86_64.whl
1d829e392f936ff7a9db1d0d591c59720d050f09 pyqrack-1.30.8-py3-none-manylinux_2_35_x86_64.whl
82f03bf62d3ccead7f4d578e7fa5c45106f06652 pyqrack-1.30.8-py3-none-manylinux_2_39_x86_64.whl
b453168adf34b530fc7667813b0404f6af1ae645 pyqrack-1.30.8-py3-none-win_amd64.whl
03107e1ea5739a5da340c935117e0dd1bc2d2214 pyqrack-1.30.8.tar.gz

Fixed-point QUnit

20 Aug 18:05
Compare
Choose a tag to compare

QUnit now takes advantage of fixed-point math, when available. (This should only improve QUnit precision while keeping the same rounding thresholds.)

Full Changelog: unitaryfund/qrack@vm6502q.v9.9.1...vm6502q.v9.9.6

sha1sum results:
0007344349f81b7641fe950309e889c915649950 pyqrack-1.30.7-py3-none-macosx_12_0_x86_64.whl
aaacba40195b4c5dc8058ce3840a342c5e1e24b9 pyqrack-1.30.7-py3-none-macosx_13_0_x86_64.whl
b8dfa38c04f146bc67f7b3601e59dc569a6102c3 pyqrack-1.30.7-py3-none-macosx_14_0_arm64.whl
c6155a3e8cd579978398cc965ae5ad848c38b82e pyqrack-1.30.7-py3-none-manylinux_2_31_x86_64.whl
60ae04b3dbbc15b461cba9441f33be18d9f7a0a1 pyqrack-1.30.7-py3-none-manylinux_2_35_x86_64.whl
352a48e9980022a95c60c12bb44dd3595ad3fb61 pyqrack-1.30.7-py3-none-manylinux_2_39_x86_64.whl
ee4332635b9d2ac2667c889df9be440a60d0fb3b pyqrack-1.30.7-py3-none-win_amd64.whl
4aa1d7a29ac458600810dfcee3935292b2033aed pyqrack-1.30.7.tar.gz