Releases: unitaryfund/pennylane-qrack
QHybrid no longer necessary
For years, it was always the case that low qubit width run on GPU-based simulation methods "plateaued" at a certain higher value than CPU-based methods at the same width, because full GPU parallelism couldn't be engaged for small numbers of work items. To alleviate this condition, years ago, Qrack implemented QHybrid
, to intelligently switch between GPU-based and CPU-based methods.
Apparently, NVIDIA has fixed this behavior at driver level. (Dan is not going to lie: he's a little "miffed" that no one pointed this out to us specifically, when we've had rapport with the CUDA-Q team in the past, and the first to smooth over this imperfection at software rather than driver level was Qrack.) Hence, QHybrid
will remain available for legacy drivers and other vendors who can benefit from it, but this optimizing "layer" will be disabled by default.
Full Changelog:
unitaryfund/qrack@vm6502q.v9.12.28...vm6502q.v9.12.32
unitaryfund/pyqrack@v1.32.21...v1.32.35
v0.10.14...v0.10.15
sha1sum results:
4f3777cce33775ec50f73c0099f330166e97f06b pennylane_qrack-0.10.15-py3-none-macosx_13_0_x86_64.whl
5334681357e162e2347f9ca9b0edb850ede5b7cc pennylane_qrack-0.10.15-py3-none-macosx_14_0_arm64.whl
c852fd204117cdf0863ca17b45c736b0c833e593 pennylane_qrack-0.10.15-py3-none-macosx_15_0_arm64.whl
97419e90b16e9db468aaa418324691d1dc5c83b8 pennylane_qrack-0.10.15-py3-none-manylinux_2_31_x86_64.whl
2b216e9a798c7f1ec30fbd74632986cb8a234000 pennylane_qrack-0.10.15-py3-none-manylinux_2_35_x86_64.whl
1aad35b189ef76b555385e856eef8d045588bafe pennylane_qrack-0.10.15-py3-none-manylinux_2_39_x86_64.whl
d2e9db711109e3a2292f39cba6bd22352abbbd17 pennylane_qrack-0.10.15-py3-none-win_amd64.whl
76b1878c1210cef8e62089ce641ddef17c8ba26d pennylane_qrack-0.10.15.tar.gz
Improve QrackCircuit
In preparation for experiments in compilation, QrackCircuit
has been slightly refactored: single-qubit gates are now allowed to combine with any multi-qubit gate that would otherwise block commutation (which should almost never incur any additional simulation overhead penalty for running the optimized circuit with Qrack), and checks for identity equivalence have been made fully exhaustive.
Full Changelog:
unitaryfund/qrack@vm6502q.v9.12.27...vm6502q.v9.12.28
unitaryfund/pyqrack@v1.32.20...v1.32.21
v0.10.13...v0.10.14
sha1sum results:
46925e27d5320d133d1b98b0ea4d747b9846c71e pennylane_qrack-0.10.14-py3-none-macosx_12_0_x86_64.whl
ad5415cc1775052e8c371eb0c66b61e7dd1fd904 pennylane_qrack-0.10.14-py3-none-macosx_13_0_x86_64.whl
e5db5295b699533a6481e992814c035dd0f77516 pennylane_qrack-0.10.14-py3-none-macosx_14_0_arm64.whl
62624b1a1be8734416cce4d57ddfa12ec119f272 pennylane_qrack-0.10.14-py3-none-macosx_15_0_arm64.whl
9f7ab1d00638c9c33ac9d7bd56100f0f994fdd85 pennylane_qrack-0.10.14-py3-none-manylinux_2_31_x86_64.whl
79cdd27023f0826fc09c1174ecfce66516004b8a pennylane_qrack-0.10.14-py3-none-manylinux_2_35_x86_64.whl
78f290d944b1530fed75763ad97c1bdcabb10b90 pennylane_qrack-0.10.14-py3-none-manylinux_2_39_x86_64.whl
2d9575bcc79de43348d1a10231e9fda1bf40b3cf pennylane_qrack-0.10.14-py3-none-win_amd64.whl
81281e04de022ce6eec203967634ec3b7e7fd543 pennylane_qrack-0.10.14.tar.gz
Option to disable low-fidelity exception
This release adds the option to disable the limiter exception on low QUnit
fidelity estimate, by setting environment variable QRACK_DISABLE_QUNIT_FIDELITY_GUARD
to any truthy value.
When QUnit
encounters a situation where acting a coupler gate would require exceeding user-specified maximum system memory resources, it will automatically resort to replacing this gate with a "classical shadow" that will not require additional allocation. In the process, QUnit
will decrease its internal first-principles unitary fidelity estimation under assumption that the classical shadow replacement effect is worst-case. If the fidelity estimate drops below floating-point rounding epsilon, QUnit
will automatically throw
to exit simulation early. However, particularly in cases of "anti-concentration," such as with universal random circuit sampling, this first-principles worst-case fidelity estimate might be very overly severe. In these cases, the worst-case fidelity estimate cannot necessarily be trusted not to be (potentially very) overly pessimistic, but the throw condition on low fidelity estimate can be disabled by assigning any value to environment variable QRACK_DISABLE_QUNIT_FIDELITY_GUARD
.
Full Changelog:
unitaryfund/qrack@vm6502qv9.12.23...vm6502q.v9.12.23
unitaryfund/pyqrack@v1.32.18...v1.32.19
v0.10.11...v0.10.13
sha1sum results:
a4170741c8d3dc72341f980a48cbf4b7494462cc pennylane_qrack-0.10.13-py3-none-macosx_12_0_x86_64.whl
d637e8af92d18e8c9b72f03e037dae4330144335 pennylane_qrack-0.10.13-py3-none-macosx_13_0_x86_64.whl
6da6a37442d5acf6aa2fcdc03885ae931543937d pennylane_qrack-0.10.13-py3-none-macosx_14_0_arm64.whl
bbb816b34dba5d7e7702b183ee45e06e2afc46d6 pennylane_qrack-0.10.13-py3-none-macosx_15_0_arm64.whl
588f667464d2213c0533f5ac9c238955a7e4fbb9 pennylane_qrack-0.10.13-py3-none-manylinux_2_31_x86_64.whl
1e437a24dfd3a954bc7d343da994f3a4bd8743b5 pennylane_qrack-0.10.13-py3-none-manylinux_2_35_x86_64.whl
b74cf466cee9dc8f5084de39eb7e40ff705e3337 pennylane_qrack-0.10.13-py3-none-manylinux_2_39_x86_64.whl
cb1b1ac41b718bb91ec7dc2748f67ef26098e005 pennylane_qrack-0.10.13-py3-none-win_amd64.whl
4391683dc977d45878b4d1639e9fb7975dfdbcae pennylane_qrack-0.10.13.tar.gz
Optimize classical shadows (and clean up Qrack code)
This release optimizes the QUnit
classical shadows code and makes many various "micro-optimizations" in Qrack largely around the goal of reducing division operations on literals and instituting a HALF_R1
macro.
WARNING: Continuation of Mac OS 12 wheels is not guaranteed for any future release. Please plan accordingly.
Full Changelog:
unitaryfund/qrack@vm6502qv9.12.18...vm6502qv9.12.23
unitaryfund/pyqrack@v1.32.16...v1.32.17
v0.10.10...v0.10.11
sha1sum results:
1fa431af9d8ae9254a90e2a57da75d3a45e29fa0 pennylane_qrack-0.10.11-py3-none-macosx_12_0_x86_64.whl
fe7e51f37405f6e1c188239a8395821a39749a64 pennylane_qrack-0.10.11-py3-none-macosx_13_0_x86_64.whl
5ff5b6e483df5fac3230755744bdc6d8a33a7caa pennylane_qrack-0.10.11-py3-none-macosx_14_0_arm64.whl
c6c293d9c0c0317acd1af1910be86e4ccca0caa7 pennylane_qrack-0.10.11-py3-none-macosx_15_0_arm64.whl
88eb619e08bc30a6aecdc6431e8b29d35982f891 pennylane_qrack-0.10.11-py3-none-manylinux_2_31_x86_64.whl
3d2a6375ec1b84eb7006976b97a93f25b6ab1e61 pennylane_qrack-0.10.11-py3-none-manylinux_2_35_x86_64.whl
338582b70fc691161cc64b75bf7bd8e29d85fc86 pennylane_qrack-0.10.11-py3-none-manylinux_2_39_x86_64.whl
a557e5429dd7fc2bc683747f43703c9a63d1a48d pennylane_qrack-0.10.11-py3-none-win_amd64.whl
94d30a962b3e3b4f463ecd3994197288216e5942 pennylane_qrack-0.10.11.tar.gz
QUnit classical shadows (debug)
Sorry for the rapid-fire releases, but cleanup was done last night on QUnit
classical shadows. To benefit from the new changes, use QUnit
without QTensorNetwork
.
sha1sum results:
ec78c4404e5e6993b2a899a76b915bbc9877b878 pennylane_qrack-0.10.10-py3-none-macosx_12_0_x86_64.whl
ca55be0702eace83dc07256e60f005f8228bab48 pennylane_qrack-0.10.10-py3-none-macosx_13_0_x86_64.whl
c3702d4fa1ae40e4b6805d85b78775e753949936 pennylane_qrack-0.10.10-py3-none-macosx_14_0_arm64.whl
db513e104a3c0a1cfc45be159bff7db61e5c043e pennylane_qrack-0.10.10-py3-none-macosx_15_0_arm64.whl
8b009c79111c780501f2384911d6993ba345aab5 pennylane_qrack-0.10.10-py3-none-manylinux_2_31_x86_64.whl
3dfe337de74ff3fd15c36ee473ba28e47fdef906 pennylane_qrack-0.10.10-py3-none-manylinux_2_35_x86_64.whl
74b02675cc4a504d34e431fb1fab67f5927f9382 pennylane_qrack-0.10.10-py3-none-manylinux_2_39_x86_64.whl
da30376ee6f2d1c98702ac8ec6c8486b5d7ec895 pennylane_qrack-0.10.10-py3-none-win_amd64.whl
4593a34d2494fbfe0676814a228ca9bc16bfefb5 pennylane_qrack-0.10.10.tar.gz
QUnit classical shadows
With this release, if QUnit
throws bad_alloc
due to subsystems becoming too large due to Kronecker products, then the state is restored to what it was before the offending gate, and a classical shadow of the gate is enacted instead, reducing the internal fidelity tracking total (which should always be checked by the user). This classical shadow will not require any further Kronecker products, keeping resource usage below system limits. If the fidelity of QUnit
approaches floating-point rounding epsilon, QUnit
will throw again immediately to abort the approximate emulation.
Full Changelog:
unitaryfund/qrack@vm6502q.v9.12.12...vm6502q.v9.12.13
unitaryfund/pyqrack@v1.32.12...v1.32.14
v0.10.6...v0.10.8
sha1sum results:
d8d7e6f60e58f79508afee4ef4eae41029d40e62 pennylane_qrack-0.10.8-py3-none-macosx_12_0_x86_64.whl
6ecaccddd6c05cc12c93e6c26f3a878dbd03a61d pennylane_qrack-0.10.8-py3-none-macosx_13_0_x86_64.whl
322d7b0afe83e47f9efc1b383229b991b57b151d pennylane_qrack-0.10.8-py3-none-macosx_14_0_arm64.whl
97954976287fce40158255340595a6fa0d8bca1b pennylane_qrack-0.10.8-py3-none-macosx_15_0_arm64.whl
cb56ec292ef2b09237269d7fd248598f3fa1e443 pennylane_qrack-0.10.8-py3-none-manylinux_2_31_x86_64.whl
fdbd8efe7a18059a278fa3d41b8c0883354f1027 pennylane_qrack-0.10.8-py3-none-manylinux_2_35_x86_64.whl
9305bc5b89a229703db21df825868d70e9a4aafe pennylane_qrack-0.10.8-py3-none-manylinux_2_39_x86_64.whl
e8aecfd4270e267996e184e5c278297ada39f5bb pennylane_qrack-0.10.8-py3-none-win_amd64.whl
efe841d3f1ddf301a85528292ef8747728c56b3e pennylane_qrack-0.10.8.tar.gz
Optimize try_decompose() (2)
try_decompose()
has been optimized for significant time complexity reduction in the case that the system is detected to be separable. (The development team highly suspects that this implementation is finally "pareto-optimal," in other words, not possible to fundamentally optimize further.)
(Since this version technically fixes an edge case bug introduced into the Qrack code by the last release, even though it is likely not exposed via pennylane-qrack
, we will include a Mac OS 12 wheel build. Barring a bug fix in the next release, expect this to be the final Mac OS 12 release.)
Full Changelog:
unitaryfund/qrack@vm6502q.v9.12.0...vm6502q.v9.12.4
unitaryfund/pyqrack@v1.32.9...v1.32.10
v0.10.5...v0.10.6
sha1sum results:
83c4800c681f16e0d971bcf8c289fcdfd1fcc8df pennylane_qrack-0.10.6-py3-none-macosx_12_0_x86_64.whl
55e1854277565977d6d8893189d32a334d8eff98 pennylane_qrack-0.10.6-py3-none-macosx_13_0_x86_64.whl
83a1335c01f4067548377c403a9bb38efde6b897 pennylane_qrack-0.10.6-py3-none-macosx_14_0_arm64.whl
b33ad4a6fea42abf476f94e6d84e376d5243843a pennylane_qrack-0.10.6-py3-none-macosx_15_0_arm64.whl
2bca8375e80f9eac1be4f561b996829b8d120827 pennylane_qrack-0.10.6-py3-none-manylinux_2_31_x86_64.whl
80a10c7ded497953f994e7be992b8f13f943f54c pennylane_qrack-0.10.6-py3-none-manylinux_2_35_x86_64.whl
25357b06827ad4dcd9891056ddd84d336791560a pennylane_qrack-0.10.6-py3-none-manylinux_2_39_x86_64.whl
351a0b86880ab2a04999975351383290313c7342 pennylane_qrack-0.10.6-py3-none-win_amd64.whl
d68f88561da4c049b42ed75dd859c6a83d237b2a pennylane_qrack-0.10.6.tar.gz
Debug OpenCL/CUDA Decompose()/Dispose(); optimize for CPU
In recent releases, a bug was introduced in OpenCL and CUDA based Decompose()
/Dispose()
when trying to calculate the phase angle of very small amplitudes. This has been fixed, and CPU-based simulation has been optimized.
WARNING: You must recompile any precompiled OpenCL kernels, after upgrading to this release.
(A Mac OS 12 wheel build is included since this is primarily a debugging release, but, as the OS version is deprecated, be prepared to lose Mac OS 12 support for any release forward of this version.)
Full Changelog:
unitaryfund/qrack@vm6502q.v9.11.12...vm6502q.v9.11.16
unitaryfund/pyqrack@v1.32.7...v1.32.8
v0.10.4...v0.10.5
sha1sum results:
34c4ac394b63c0669b97577251a4e33ec4cd3128 pennylane_qrack-0.10.5-py3-none-macosx_12_0_x86_64.whl
f90e9bded62ad7fa46ee4dfc2469ca87589d7269 pennylane_qrack-0.10.5-py3-none-macosx_13_0_x86_64.whl
0bb5a80cdadff357ee59da681ef20ac4c774590f pennylane_qrack-0.10.5-py3-none-macosx_14_0_arm64.whl
e2ed1c96eaeb77f77068fec42db294f62264d839 pennylane_qrack-0.10.5-py3-none-macosx_15_0_arm64.whl
cb3ff87ee05e07839a56c02dcc1e61cd80b719b0 pennylane_qrack-0.10.5-py3-none-manylinux_2_31_x86_64.whl
f962683c1513d2b8c39ff6e2811d94f18c913656 pennylane_qrack-0.10.5-py3-none-manylinux_2_35_x86_64.whl
2f741ba467fff6109613677b473dbd3942d2979a pennylane_qrack-0.10.5-py3-none-manylinux_2_39_x86_64.whl
6dc0dc993780081979055707960a68dc76786219 pennylane_qrack-0.10.5-py3-none-win_amd64.whl
7f3350b9785a59b4bcf450fc6e8c41fea1fe9808 pennylane_qrack-0.10.5.tar.gz
Manually set self.shots on QrackDevice
self.shots
always defaulted to 1 for the Python PennyLane back end. This release (since v0.10.3 on PyPi) manually sets self.shots
to ensure the correct behavior when multiple shots are requested.
(Note that since Mac OS 12 is officially deprecated, we would continue to support it, since we retain the ability to build for it, except that brew
deprecation of the OS has led to a very time-consuming build-from-source process for every dependency. Hence, this might be the last release of pennylane-qrack
to officially offer a Mac OS 12 wheel.)
(Also note, the only difference between v0.10.3 on PyPi vs. v0.10.4, this release that skips a patch number on GitHub, is that a PennyLane deprecation warning has been fixed.)
Full Changelog: v0.10.2...v0.10.4
sha1sum results:
2db641b53eccc116d2f16762904b5a2ef35574c8 pennylane_qrack-0.10.4-py3-none-macosx_12_0_x86_64.whl
5a012b5ea40ac8f699beca6c1cb44fc6fa289583 pennylane_qrack-0.10.4-py3-none-macosx_13_0_x86_64.whl
f14961a9c071ea8041210dd6a10919f9a5fe3b86 pennylane_qrack-0.10.4-py3-none-macosx_14_0_arm64.whl
78a9e904912271ef4a655276a74c4326b18e3d3c pennylane_qrack-0.10.4-py3-none-macosx_15_0_arm64.whl
cd5347e8298ff2fb31e8c9e2bb6508b46a058fb9 pennylane_qrack-0.10.4-py3-none-manylinux_2_31_x86_64.whl
3af7d4f738ed01ba24a60dc9b3b6bfddc7fab937 pennylane_qrack-0.10.4-py3-none-manylinux_2_35_x86_64.whl
8a54dcddbf3330486681758fa48b5210bfd3cdea pennylane_qrack-0.10.4-py3-none-manylinux_2_39_x86_64.whl
84cad001173fb9a67dac68c851e013711c37052e pennylane_qrack-0.10.4-py3-none-win_amd64.whl
f321288372eed69eef9d3e7937a62615e4f3d15b pennylane_qrack-0.10.4.tar.gz
PennyLane noisy mode is always "weak" simulation
Qrack noisy simulation mode categorically needs to be "weak" rather than "strong" simulation condition, in the sense that sampling always entails one full run of the unitary circuit and generating only a single shot, top-to-bottom for each shot requested, in any instance of a request for shots. This release ensures this to always be the case for Qrack noisy simulation with the Python-based PennyLane back end.
What's Changed
- Fix import in shots=None case by @cosenal in #25
- One-shot for noise in Python by @WrathfulSpatula in #26
New Contributors
Full Changelog: v0.10.1...v0.10.2
sha1sum results:
edcafaa4e9de5c83c8747541c62c73e921b62e71 pennylane_qrack-0.10.2-py3-none-macosx_12_0_x86_64.whl
0268d42c388e24f1e63be6b1c7aebdcc9b358337 pennylane_qrack-0.10.2-py3-none-macosx_13_0_x86_64.whl
49a933bcff24289389484c7c92d6b6d3ae6efcbc pennylane_qrack-0.10.2-py3-none-macosx_14_0_arm64.whl
d08fcebcc46597ef890d1e5e2d9bb405fdc590d1 pennylane_qrack-0.10.2-py3-none-macosx_15_0_arm64.whl
3df003fc49beef1991f51a6fdd2ed4f3a5af480b pennylane_qrack-0.10.2-py3-none-manylinux_2_31_x86_64.whl
07a4749a33ecbea71781c59b15b3cb3264d1a4a8 pennylane_qrack-0.10.2-py3-none-manylinux_2_35_x86_64.whl
9ecaa500a9f91c42279edc8b07a25a246d638c7b pennylane_qrack-0.10.2-py3-none-manylinux_2_39_x86_64.whl
8b809532038d833bff31050fd599d55e22d2ccfa pennylane_qrack-0.10.2-py3-none-win_amd64.whl
4cb3f64a310e9bd428c5df347d57355c9786026d pennylane_qrack-0.10.2.tar.gz