Release Notes

cuQuantum Python v22.11.0

  • We are on NVIDIA/cuQuantum GitHub Discussions! For any questions regarding (or exciting works built upon) cuQuantum, please feel free to reach out to us on GitHub Discussions.

  • Add new APIs and functionalities:

  • API changes:

    • For cuTensorNet low-level APIs, please refer to the release notes of cuTensorNet v2.0.0; cuStateVec low-level APIs remain unchanged.

  • Functionality/performance improvements:

    • Improved performance when contracting two tensors using cuquantum.contract() or related APIs.

    • Improved performance for reusing a Network object with reset_operands().

    • The lightcone construction in CircuitToEinsum is improved to further reduce the number of tensors in the network.

    • The build system now supports PEP-517 and standard pip command-line flags. The environment variable CUQUANTUM_IGNORE_SOLVER is no longer used. See Getting Started for more information.

  • Bugs fixed:

    • Fix a potential multi-device bug in the internal device context switch.

    • Fix a bug for using invalid mode labels in cuquantum.CircuitToEinsum when input circuit size gets large.

  • Other changes:

    • Provide one more distributed (MPI+NCCL) Python sample (example4_mpi_nccl.py) to show how to use cuTensorNet and create parallelism.

    • The test infrastructure will show tests that are not runnable as “deselected” instead of “skipped”.

    • A new pip wheel is released on PyPI: pip install cuquantum-python-cu11. Users can still install cuQuantum Python via pip install cuquantum-python, as before. cuquantum-python now becomes a meta-wheel pointing to cuquantum-python-cu11. This may change in a future release when a new CUDA version becomes available. Using wheels with the -cuXX suffix is encouraged.

Compatibility notes:

  • cuQuantum Python now requires cuStateVec 1.1.0 or above.

  • cuQuantum Python now requires cuTensorNet 2.0.0 or above.

  • cuQuantum Python now requires cuTENSOR 1.6.1 or above.

cuQuantum Python v22.07.1

  • Bugs fixed:

    • The 22.07.0 cuquantum wheel had a wrong file layout. (If you are using the cuqauntum 22.07.0.1 or 22.07.0.2 hot-fix wheel, they will work fine.)

cuQuantum Python v22.07.0

  • Add new APIs and functionalities:

    • For low-level APIs, please refer to the release notes of cuStateVec v1.1.0 and cuTensorNet v1.1.0.

    • New high-level API cuquantum.CircuitToEinsum that supports conversion of qiskit.QuantumCircuit and cirq.Circuit to tensor network contraction:

      • Support state coefficient

      • Support bitstring amplitude

      • Support reduced density matrix

      • Backend support on NumPy, CuPy and PyTorch

    • Add a keyword-only argument slices to the cuquantum.Network.contract() method to support contracting an arbitrary subset of the slices.

    • Add a new attribute intermediate_modes to the cuquantum.OptimizerInfo object for retrieving the mode labels of all intermediate tensors.

    • Add a new attribute num_slices to the cuquantum.OptimizerInfo object for querying the total number of slices.

  • Functionality/performance improvements:

    • Improve the einsum expression parser.

  • Bugs fixed:

  • Other changes:

    • Drop the dependency on typing_extensions.

    • Provide distributed (MPI-based) Python samples that show how easy it is to use cuTensorNet and create parallelism. mpi4py is required for running these samples.

    • Update the low-level, non-distributed sample tensornet_example.py by improving memory usage and switching to the new contraction API contract_slices().

    • Provide Jupyter notebooks to show how to convert a quantum circuit to a tensor network contraction.

    • Add a Python sample to illustrate the usage of the new multi-device bit-swapping multi_device_swap_index_bits() API.

    • Restructure the samples folder to separate cuStateVec and cuTensorNet samples.

Compatibility notes:

  • cuQuantum Python now requires cuQuantum v22.07.

  • cuQuantum Python now requires Python 3.8+.

  • cuQuantum Python now requires NumPy v1.19+.

  • cuQuantum Python supports Cirq v0.6.0+.

  • cuQuantum Python supports Qiskit v0.24.0+.

cuQuantum Python v22.05.0

cuQuantum Python v22.03.0

  • Stable release:

    • Starting this release, cuQuantum Python switches to the CalVer versioning scheme, following cuQuantum SDK

    • pip wheels are released on PyPI: pip install cuquantum-python

  • Functionality/performance improvements:

    • High-level tensor network APIs are now fully NumPy compliant:

      • Support generalized einsum expressions

      • Support ellipsis

      • Support broadcasting

  • Add new APIs and functionalities for:

  • API changes:

Compatibility notes:

  • cuQuantum Python requires cuQuantum v22.03

  • cuQuantum Python requires Python 3.7+

    • In the next release, Python 3.7 will be dropped to follow NEP-29.

  • cuQuantum Python requires NumPy v1.17+

    • In the next release, NumPy 1.17 & 1.18 will be dropped to follow NEP-29.

  • cuQuantum Python requires CuPy v9.5+

  • cuQuantum Python supports PyTorch v1.10+

Known issues:

  • If you install cuQuantum Python from PyPI (pip install cuquantum-python), make sure you also install typing_extensions (via pip or conda). This only affects the wheel installation and will be fixed in the next release. (NVIDIA/cuQuantum#3)

cuQuantum Python v0.1.0.1

  • Patch release:

    • Add a __version__ string

cuQuantum Python v0.1.0.0

  • Initial release (beta 2)

Compatibility notes:

  • cuQuantum Python requires cuQuantum v0.1.0

  • cuQuantum Python requires NumPy v1.17+

  • cuQuantum Python requires CuPy v9.5+

  • cuQuantum Python supports PyTorch v1.10+

Limitation notes:

  • In certain environments, if PyTorch is installed import cuquantum could fail (with a segmentation fault). It is currently under investigation and a temporary workaround is to import torch before importing cuquantum.