Skip to content

Releases: unitaryfund/pyqrack

Improved try_separate_tolerance()

21 Oct 15:14
Compare
Choose a tag to compare

try_separate_tolerance() has been improved, to avoid unnecessary entanglement when called with isSchmidtDecompose=True. As decompose() also turns out to be a unitary operation in general, separate() no longer proactively normalizes its output subsystems.

Full Changelog:
unitaryfund/qrack@vm6502q.v9.11.8...vm6502q.v9.11.12
v1.32.6...v1.32.7

sha1sum results:
d7bd900f9f30a9fea92e888c6fefb2f7f422ff5c pyqrack-1.32.7-py3-none-macosx_12_0_x86_64.whl
bc3a7c003724e7178674cf88d1a20673772e4e73 pyqrack-1.32.7-py3-none-macosx_13_0_x86_64.whl
4d1a1985712afd456674a387452cd6da1e10eb09 pyqrack-1.32.7-py3-none-macosx_14_0_arm64.whl
e089f64e4e0248de29a6c6faadc88584fb423841 pyqrack-1.32.7-py3-none-macosx_15_0_arm64.whl
4b0069102dd860462476ff15aa92c93697cb760c pyqrack-1.32.7-py3-none-manylinux_2_31_x86_64.whl
d79fb32ef70600ff83eb7bb0c67d5a3cdd371eaf pyqrack-1.32.7-py3-none-manylinux_2_35_x86_64.whl
9b6d005a3910be8d8de2bcf12a3309613ae99390 pyqrack-1.32.7-py3-none-manylinux_2_39_x86_64.whl
b62e6d0aa06d71e34079b6a5fb4ee87e7e721571 pyqrack-1.32.7-py3-none-win_amd64.whl
585957f7a3ae09cd07d72335b5fe0b51eb485689 pyqrack-1.32.7.tar.gz

Debug QUnit Decompose() edge case

20 Oct 12:32
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:
unitaryfund/qrack@vm6502qv9.11.4...vm6502q.v9.11.8
v1.32.5...v1.32.6

sha1sum results:
33c8c6596962a4039807323433807a2e8d74e873 pyqrack-1.32.6-py3-none-macosx_12_0_x86_64.whl
897d2e3bbb2794085e78e037009d3fb25d6842c7 pyqrack-1.32.6-py3-none-macosx_13_0_x86_64.whl
cd6290a49af188c0a44d900026ce261224bd286e pyqrack-1.32.6-py3-none-macosx_14_0_arm64.whl
8e139114f2cc866b741cb3831ca395732b6339d5 pyqrack-1.32.6-py3-none-macosx_15_0_arm64.whl
df736c2040c8b82e3e6ee94363ddaaa196f6d298 pyqrack-1.32.6-py3-none-manylinux_2_31_x86_64.whl
7bc8a300f8d035b38f4a883f270d6db36ff15613 pyqrack-1.32.6-py3-none-manylinux_2_35_x86_64.whl
7218f957056daa4f8ba4dd17bcd244e8437bbef7 pyqrack-1.32.6-py3-none-manylinux_2_39_x86_64.whl
f4a819eddf95127f295003e431d7709ad75597bf pyqrack-1.32.6-py3-none-win_amd64.whl
f3a18937faee658b5bb5323bacb192c9fa98f097 pyqrack-1.32.6.tar.gz

Improve separate() phase

20 Oct 02:12
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:
unitaryfund/qrack@vm6502q.v9.11.0...vm6502qv9.11.4
v1.32.0...v1.32.5

sha1sum results:
8bbf632ddd737166827528e8b0f35f9f0613d28b pyqrack-1.32.5-py3-none-macosx_12_0_x86_64.whl
ad42dbad748d3b071ed548985222ddbe1be27bd8 pyqrack-1.32.5-py3-none-macosx_13_0_x86_64.whl
6f5c020cf5422a042504c17e8e78af3d00bac3dc pyqrack-1.32.5-py3-none-macosx_14_0_arm64.whl
978656bd5d2e75b28116158d8f30acfd6f08d5bd pyqrack-1.32.5-py3-none-macosx_15_0_arm64.whl
983638f590891d08dfe9c18655f6f6f889f84ece pyqrack-1.32.5-py3-none-manylinux_2_31_x86_64.whl
4ad51055ab4318e1276f9fe7fdb1082492dbb379 pyqrack-1.32.5-py3-none-manylinux_2_35_x86_64.whl
04fce824812058014892654059baa44c936f6344 pyqrack-1.32.5-py3-none-manylinux_2_39_x86_64.whl
f3d1cd1b9f4bd61b92e07331713805162dc14724 pyqrack-1.32.5-py3-none-win_amd64.whl
6386c72cdf45dbaf37aacda5041a05eff17b049f pyqrack-1.32.5.tar.gz

separate() and normalize()

19 Oct 18:33
Compare
Choose a tag to compare

This adds the methods separate() and normalize() to QrackSimulator. 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: v1.31.1...v1.32.0

sha1sum results:
3c3fa7201944f075094aa0af335dedcd78a9f175 pyqrack-1.32.0-py3-none-macosx_12_0_x86_64.whl
cf7bcb2e6eba8e3710d3848d6ed4dc9d54208ecb pyqrack-1.32.0-py3-none-macosx_13_0_x86_64.whl
0ce3559f24dc03da9e5da8396250c06f4b59e54a pyqrack-1.32.0-py3-none-macosx_14_0_arm64.whl
76013e110b0cac62ad19e2d0a21622497a66edf5 pyqrack-1.32.0-py3-none-macosx_15_0_arm64.whl
bdc81d0d2a398478c776947e02af431c8eb54950 pyqrack-1.32.0-py3-none-manylinux_2_31_x86_64.whl
ec98175a93723b063f9ef63245d3ac5b876fbeb9 pyqrack-1.32.0-py3-none-manylinux_2_35_x86_64.whl
0f5615763c18033bb370753764750c63a1366864 pyqrack-1.32.0-py3-none-manylinux_2_39_x86_64.whl
465a321626d22405a08542bc98c9e461ac988349 pyqrack-1.32.0-py3-none-win_amd64.whl
d047fbeaa0eb7553236c9e741c731a88eda033ea pyqrack-1.32.0.tar.gz

SDRP/MPS correspondence base case

09 Oct 04:38
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 with isStabilizerHybrid=False constructor parameter for QrackSimulator 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:
unitaryfund/qrack@vm6502q.v9.10.0...vm6502q.v9.10.1
v1.31.0...v1.31.1

sha1sum results:
3ae1e0a1750a5bedfebf736e6502765170236d55 pyqrack-1.31.1-py3-none-macosx_12_0_x86_64.whl
1d5fe728cff883ed7cc94c568b9dc21a07738295 pyqrack-1.31.1-py3-none-macosx_13_0_x86_64.whl
d61c4680519e9d54c4c8708f4af6dcf6d75624f1 pyqrack-1.31.1-py3-none-macosx_14_0_arm64.whl
ff3adfa47ede030ed801e2ac85f2f954c2b11cd6 pyqrack-1.31.1-py3-none-macosx_15_0_arm64.whl
ca22a16227c095877be1568dc2ab0eb03190e075 pyqrack-1.31.1-py3-none-manylinux_2_31_x86_64.whl
f34c3cc9d5caf428078bfddf7958da68d899d8aa pyqrack-1.31.1-py3-none-manylinux_2_35_x86_64.whl
00f5bba0fde498ad81c2315a5cf7bc9f665521fe pyqrack-1.31.1-py3-none-manylinux_2_39_x86_64.whl
b7c57fc85511d119f66b35ad0873aa297da4160f pyqrack-1.31.1-py3-none-win_amd64.whl
430362bfaecebdad031df73e181d641406695102 pyqrack-1.31.1.tar.gz

Better sampling; out_probs(); noise constructor argument

05 Oct 16:02
Compare
Choose a tag to compare

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 Qrack shared library extern C API, which returns the L2 norm of each OutKet() amplitude in same order. This corresponds with QrackSimulator.out_probs().

isNoisy constructor argument has been replaced with noise float parameter, which enable noisy simulation if the parameter is greater than 0 and sets the simulator instance noise level to the value of the constructor parameter.

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.62...vm6502q.v9.10.0
v1.30.31...v1.31.0

sha1sum results:
dfe01c772b112f27aa2315591bd3f33923efffbd pyqrack-1.31.0-py3-none-macosx_12_0_x86_64.whl
5fd8929c2e102e354ad9e9b276480dd45f551866 pyqrack-1.31.0-py3-none-macosx_13_0_x86_64.whl
833a4d6e3ca46349848d1b19f5d5e87d845280f1 pyqrack-1.31.0-py3-none-macosx_14_0_arm64.whl
788517f7dd84c50b0ad10af964c04bb010d153a5 pyqrack-1.31.0-py3-none-macosx_15_0_arm64.whl
58ce3491b010eaba2284225ca73270e8d6d4a757 pyqrack-1.31.0-py3-none-manylinux_2_31_x86_64.whl
94f762aa4357998a3a4194b62c8de0bee1b2e861 pyqrack-1.31.0-py3-none-manylinux_2_35_x86_64.whl
69643ec914124ef6cd625ae6df1e3e591d6cf5fb pyqrack-1.31.0-py3-none-manylinux_2_39_x86_64.whl
cd8d0ff3af642d141a0a6c0472859ec220750d7b pyqrack-1.31.0-py3-none-win_amd64.whl
f47f54ed2acaa76513606ee5d0f0551d21e719b6 pyqrack-1.31.0.tar.gz

Debug QBDD high rounding

04 Oct 10:54
Compare
Choose a tag to compare

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:
unitaryfund/qrack@vm6502q.v9.9.58...vm6502q.v9.9.62
v1.30.30...v1.30.31

sha1sum results:
9908094ebfdd586eac4974bf15a2b9138574e9a4 pyqrack-1.30.31-py3-none-macosx_12_0_x86_64.whl
0def4d068c15c102f37ce561282c606d93c0c98f pyqrack-1.30.31-py3-none-macosx_13_0_x86_64.whl
e75d2d448937db925c5c4624e7607aa2f97c66c0 pyqrack-1.30.31-py3-none-macosx_14_0_arm64.whl
3fa9f9293264719668a493033dd64a4a1819f4e7 pyqrack-1.30.31-py3-none-macosx_15_0_arm64.whl
e34fc68635d0f7bb1a3b44afad26bdfe0d3a9f2a pyqrack-1.30.31-py3-none-manylinux_2_31_x86_64.whl
9f8844a12070e569b72dfe1ba7a0a8cc948efa62 pyqrack-1.30.31-py3-none-manylinux_2_35_x86_64.whl
8e0c1df464e915fbbee89217488502da9eb6013f pyqrack-1.30.31-py3-none-manylinux_2_39_x86_64.whl
c5de30b741fed83ddcbac2c8b817faf5349dcdba pyqrack-1.30.31-py3-none-win_amd64.whl
0dcb36635651266abe0f29ca795c3c0445324e61 pyqrack-1.30.31.tar.gz

Debug QBDD sampling

29 Sep 16:37
Compare
Choose a tag to compare

This release fixes doubling-up of QBDD measurement sampling.

Full Changelog:
unitaryfund/qrack@vm6502q.v9.9.54...vm6502q.v9.9.58
v1.30.29...v1.30.30

sha1sum results:
907a3e4205b2a46a1f3a7b28f305906ea0b32ad3 pyqrack-1.30.30-py3-none-macosx_12_0_x86_64.whl
0038ed3eab843faa496635c054f8e7a6674f3a79 pyqrack-1.30.30-py3-none-macosx_13_0_x86_64.whl
3d75e1e233804c651afdce24cc2ab553e96c4901 pyqrack-1.30.30-py3-none-macosx_14_0_arm64.whl
947e76b08b8bb4a02e04ae954fd8f48b2f526c71 pyqrack-1.30.30-py3-none-manylinux_2_31_x86_64.whl
13a2b6b48af98795c0c10f401b2446d729333f9e pyqrack-1.30.30-py3-none-manylinux_2_35_x86_64.whl
7444f84ae06b3a765a4d0f20c8c792dcecb9d971 pyqrack-1.30.30-py3-none-manylinux_2_39_x86_64.whl
0939ec97ecdb98e23232b357da6bb7329eaf04c7 pyqrack-1.30.30-py3-none-win_amd64.whl
0140b5689495b973711ddb3ded2f9adeab721aa7 pyqrack-1.30.30.tar.gz

QBDD optimization

29 Sep 15:04
Compare
Choose a tag to compare

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:
unitaryfund/qrack@vm6502q.v9.9.50...vm6502q.v9.9.54
v1.30.28...v1.30.29

sha1sum results:
d40ee3a18fa6868289d9d725f9d2f644b3fa4767 pyqrack-1.30.29-py3-none-macosx_12_0_x86_64.whl
ac697499c8fa4a84e68381c425059f24e19d2560 pyqrack-1.30.29-py3-none-macosx_13_0_x86_64.whl
69653bfe7d175ee1df08895ae81e16ff7c636ccd pyqrack-1.30.29-py3-none-macosx_14_0_arm64.whl
4125acfaef864b121db805819d6a15e2ba37d2fa pyqrack-1.30.29-py3-none-manylinux_2_31_x86_64.whl
3cd057429e780d58c76c291959b4ba7a9b9d7e4d pyqrack-1.30.29-py3-none-manylinux_2_35_x86_64.whl
05f67c273783f4f9d35ecec80f837bb40fc530be pyqrack-1.30.29-py3-none-manylinux_2_39_x86_64.whl
1cd2b7c25e252ca0dfc6d7245c76c72b47939e87 pyqrack-1.30.29-py3-none-win_amd64.whl
b6c763cbe4c3798fcb1f2f8438865092b52d0403 pyqrack-1.30.29.tar.gz

0-GPU edge case; env. vars.; precision

26 Sep 19:38
Compare
Choose a tag to compare

This release fixes the following:

  • an edge case that leads to a segmentation fault when QStabilizerHybrid is used in the presence of 0 available OpenCL/CUDA devices,
  • potentially inconsistent defaults for qubit-limit and rounding-parameter environment variables,
  • and rounding neighborhood for separability checks,if we check a two-state qubit for eigenstate norm equality: "machine epsilon" in C++ is the difference between 1.0 and the next greater representable number; half this value is the difference between 1.0 and the next lower representable number; half this value is used for (L2-norm) rounding neighborhood for equality with 1.0 or 0.0 in two-state Hilbert spaces (which are bounded to that range and must normalize to 1.0).

Full Changelog:
unitaryfund/qrack@vm6502qv9.9.46...vm6502q.v9.9.50
v1.30.26...v1.30.28

sha1sum results:
36d3b47b79a5ead25f36cf30a622acfe0098167f pyqrack-1.30.28-py3-none-macosx_12_0_x86_64.whl
225bf79d0561bfa9f66ac879ee1ea126889ec7df pyqrack-1.30.28-py3-none-macosx_13_0_x86_64.whl
f63661664b7d668a1d80606fd0096958b2641187 pyqrack-1.30.28-py3-none-macosx_14_0_arm64.whl
325061786de3436c136ac161388ab56cdf7ce176 pyqrack-1.30.28-py3-none-manylinux_2_31_x86_64.whl
a325a192cebd632ca836f3965117bd3635b2b1d0 pyqrack-1.30.28-py3-none-manylinux_2_35_x86_64.whl
f8445f8917e390d4e3a181c541e0cda1b3aff17b pyqrack-1.30.28-py3-none-manylinux_2_39_x86_64.whl
6cf1a0e396c5c059b9f1e986b98f3ebdf199f70a pyqrack-1.30.28-py3-none-win_amd64.whl
35e413d6e6f906ff06b9afc3f14f6218b00baa5a pyqrack-1.30.28.tar.gz