Releases: unitaryfund/pyqrack
Improved try_separate_tolerance()
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
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
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()
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
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
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
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
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
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
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