This patch release debugs `QUnitMulti` for heterogeneous OpenCL devices. **Note that this is the first ever release with CMake `-DUINTPOW=5` option, hence you will need to recompile your OpenCL kernels, if you use "pre-compilation."** `-DUINTPOW=5` limits `QPager` "page" width to 31 qubits or less, but this is literally larger than the maximum allocation segment of an A100 GPU, and this has no impact on multi-GPU scaling, hence there should be no new limitations so long as environment variable `QRACK_MAX_PAGE_QB` is set to `31` or less, (and most systems, including the A100, will typically want to set this variable even _lower._)
With this release, interoperability between NVIDIA GPU and Intel HD integrated graphics can offer significant speed advantages on quantum volume circuits, for example. For a gaming laptop with two OpenCL devices, an Intel HD (device number `0`) and an RTX 3080 (device number `1`), here is an example of how the environment variable might be set:
export QRACK_OCL_DEFAULT_DEVICE=1
export QRACK_MAX_PAGE_QB=27
export QRACK_QUNITMULTI_DEVICES=1,0
export QRACK_QUNITMULTI_DEVICES_MAX_QB=-1,15
export QRACK_QPAGER_DEVICES=8.1,24.0
export QRACK_QPAGER_DEVICES_HOST_POINTER=8.0,24.1
export QRACK_MAX_ALLOC_MB=24576,16108
export QRACK_MAX_PAGING_QB=32
export QRACK_MAX_CPU_QB=32
export QRACK_QTENSORNETWORK_THRESHOLD_QB=32
These commented variables might also be tuned for performance and approximation
export QRACK_PSTRIDEPOW=11
export QRACK_QUNIT_SEPARABILITY_THRESHOLD=0.00001
export QRACK_QBDT_SEPARABILITY_THRESHOLD=0.00001
export QRACK_NONCLIFFORD_ROUNDING_THRESHOLD=1
File SHA-1 sums:
5a003eee9f12f66adb8d6c7be8a8752f08f074fc pyqrack-1.23.1-py3-none-any.whl
26099f2c626d412c14785095596a2aa173fabaca pyqrack-1.23.1-py3-none-linux_aarch64.whl
53abb05db9fa7270b6fd86380191a7817aebbb5d pyqrack-1.23.1-py3-none-linux_armv7l.whl
cdcc0a05163f704ae0bdff99c8820c460d5b7666 pyqrack-1.23.1-py3-none-macosx_10_4_x86_64.whl
b9f4468a749cf5bca2889dcbc54cb8a115fd72d1 pyqrack-1.23.1-py3-none-manylinux2014_x86_64.whl
1f94239f491a8c6bac53b0d98bf46bf41426168a pyqrack-1.23.1-py3-none-manylinux_2_35_x86_64.whl
00316ea4521800890e33be8a5853f93d10b12424 pyqrack-1.23.1-py3-none-win32.whl
68f2d661593aa65b9aacc7ac4d54be37bc73b4e5 pyqrack-1.23.1-py3-none-win_amd64.whl
fc60129a0c20be898469076a89e146ef919c3553 pyqrack-1.23.1.tar.gz