QBdt` ("quantum binary decision tree") has finally been made production-ready. (I considered it experimental, in all previous versions.) As a Qrack layer, it fully interoperates with `QUnitMulti` and `QStabilizerHybrid`. Although it is not intended for use _with_ `QPager`, commonly, it can _replace_ `QPager` as a single-device "paged" simulation, (commonly for 4 pages on an NVIDIA device), by using as many "global qubits" as `QPager`.
The place of `QBdt` in the default empty stack (from fully default `QrackSimulator` constructor Boolean options) is as a replacement for `QPager` layer _only when no `QPager` device list is specified_ by environment variable. However, for the first release with this default layer change, one must manually opt-in to the change by setting environment variable `QRACK_QBDT_DEFAULT_OPT_IN` to any truthy value. (For example, on a Linux system, `export QRACK_QBDT_DEFAULT_OPT_IN=1` at command line to turn the option on for the current terminal session.)
By default, `QBdt` will offload a single device maximum allocation segment to ket simulation. Ket is simply faster in this role, for now, but the two freely interoperate, as with a permeable domain wall between the two methods, but the domain wall is not necessarily managed by module user's code. As `QBdt` can act analogously to `QPager` this way, single device `QBdt` instances at maximum capacity will typically have two `QBdt` method qubits in lowest significance indices, which can be leveraged to specific purposes for their algorithmic strengths. To add relatively more `QBdt` method qubits than just two per device, select the count of extra qubits to add by setting environment variable `QRACK_SEGMENT_GLOBAL_QB` to that integer. (This environment variable does the same thing for `QPager`.)
(Special thanks to Jülich Supercomputing Centre and researchers including Robert Wille, re: your presentation at IEEE Quantum Week, 2021! See for example: https://arxiv.org/abs/2108.07027)