|
| 1 | +# Release 0.8.0 |
| 2 | +# Breaking Changes |
| 3 | +- Build, compilation, and packaging: |
| 4 | + - The TensorFlow dependency has been upgraded from 2.7.0 to 2.11.0: |
| 5 | + - TensorFlow Quantum is now compiled with `_GLIBCXX_USE_CXX11_ABI=1`. Downstream projects that encounter `std::__cxx11` or `[abi:cxx11]` linker errors will need to adopt this compiler option. See [the GNU C++ Library docs on Dual ABI](https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html). |
| 6 | + - TensorFlow Quantum is now compiled with `-std=c++17`, see [install.md](/docs/install.md) for build instructions. |
| 7 | +- Cirq dependency has been upgraded from `0.13.1` to `~=1.0` |
| 8 | + - `cirq_google.XMON` was deprecated : https://github.com/quantumlib/Cirq/issues/4856 |
| 9 | + - `QuantumEngineSampler` was deprecated : https://github.com/quantumlib/Cirq/issues/5371 |
| 10 | + - So, we need [ProcessorSampler() for testing](https://github.com/quantumlib/Cirq/blob/master/cirq-google/cirq_google/engine/processor_sampler_test.py) |
| 11 | + - `cirq.CNOT` interface was changed. |
| 12 | + - https://quantumai.google/reference/python/cirq/CNOT |
| 13 | + - No more control, target argument. |
| 14 | + - `cirq.SingleQubitGate` was deprecated. |
| 15 | + - For testing, use `cirq.testing.SingleQubitGate` : https://github.com/quantumlib/Cirq/pull/5272/files |
| 16 | + - For implementation, use `cirq.Gate`. |
| 17 | + |
| 18 | +# Major Features and Improvements |
| 19 | +- Significant performance improvements by introducing cuQuantum support for circuit execution on Nvidia GPUs: |
| 20 | + - TensorFlow Quantum Keras layers can now be executed on GPU by setting the optional arguement `use_cuquantum=True` at layer instantiation. Examples: |
| 21 | + - `tfq.layers.Expectation(use_cuquantum=True)` |
| 22 | + - `tfq.layers.SampledExpectation(use_cuquantum=True)` (note that cuQuantum runtime is unsupported for any noisy circuit operations |
| 23 | + - `tfq.layers.State(use_cuquantum=True)` |
| 24 | + - `tfq.layers.Sample(use_cuquantum=True)` |
| 25 | + - `tfq.layers.PQC(model_circuit, operators, use_cuquantum=True)` |
| 26 | + - `tfq.layers.ControlledPQC(model_circuit, operators, use_cuquantum=True)` |
| 27 | + - Important notes: |
| 28 | + - CuQuantum execution is currently only supported for source distributions meaning that the user must build TensorFlow Quantum & `tensorFlow-cpu` from source following the instructions in [install.md](/docs/install.md#build-from-source). |
| 29 | + - Ensure that the first entry is "N" in the `configure.sh` script at [this step](/docs/install.md#6-build-the-tensorflow-quantum-pip-package) of building. This ensures that you build upon `tensorflow-cpu` as `tensorflow-gpu` is unnecessary for CuQuantum support in TensorFlow Quantum. |
| 30 | + - The cuQuantum SDK must be installed locally. See [installation instructions](https://docs.nvidia.com/cuda/cuquantum/custatevec/getting_started.html) for details. As part of the installation process, ensure that the `CUQUANTUM_ROOT` environment variable is set (referred to in the installation instructions). If not set, bazel will attempt to automatically locate the folder containing the cuQuantum installation upon running `configure.sh` at [this step](/docs/install.md#6-build-the-tensorflow-quantum-pip-package). |
| 31 | + - Tested on Titan, Ampere and Volta Nvidia GPU architectures. Note that Pascal GPU architectures are not supported, see documentation to [check whether your GPU is compatible with cuQuantum](https://docs.nvidia.com/cuda/cuquantum/getting_started.html#custatevec) |
| 32 | + - Quantum concurrency (global context option) should be turned off when `use_cuquantum=True`. This can be done by running: `tfq.python.quantum_context.set_quantum_concurrent_op_mode(False)` |
| 33 | + |
| 34 | + |
| 35 | + |
| 36 | +# Thanks to our Contributors |
| 37 | +This release contains contributions from many people at Google, Nvidia, as well as: |
0 commit comments