Skip to main content

NVIDIA cuQuantum Python

Project description

cuQuantum Python

Documentation

Please visit the NVIDIA cuQuantum Python documentation.

Installation

Install cuQuantum Python from conda-forge

If you already have a Conda environment set up, it is the easiest to install cuQuantum Python from the conda-forge channel:

conda install -c conda-forge cuquantum-python

The Conda solver will install all required dependencies for you. If you need to select a particular CUDA version, say CUDA 12.0, please issue the following command:

conda install -c conda-forge cuquantum-python cuda-version=12.0

Install cuQuantum Python from PyPI

Alternatively, assuming you already have a Python environment set up (it doesn't matter if it's a Conda env or not), you can also install cuQuantum Python this way:

pip install cuquantum-python-cuXX

with XX being 11 (for CUDA 11) or 12 (for CUDA 12). The pip solver will also install all required dependencies for you (including both cuTENSOR and cuQuantum wheels).

Notes:

  • Users can install cuQuantum Python using pip install --no-cache-dir cuquantum-python, which will attempt to detect the current CUDA environment and choose the appropriate wheel to install. In the event of detection failure, CUDA 11 is assumed. This is subject to change in the future. Installing wheels with the -cuXX suffix is encouraged. --no-cache-dir is required when using pip 23.1+.
  • CuPy also uses a similar auto-detection mechanism to determine the correct wheel to install. If in doubt, or if installing cuquantum-python-cu11, please follow CuPy's installation guide and install it manually.
  • To manually manage all Python dependencies, append --no-deps to pip install to bypass the pip solver, see below.

Building and installing cuQuantum Python from source

Requirements

The build-time dependencies of the cuQuantum Python package include:

  • CUDA Toolkit 11.x or 12.x
  • cuStateVec 1.4.0+
  • cuTensorNet 2.2.0+
  • cuTENSOR 1.6.1+
  • Python 3.9+
  • Cython >=0.29.22,<3
  • pip 21.3.1+
  • packaging
  • setuptools 61.0.0+
  • wheel 0.34.0+

Except for CUDA and Python, the rest of the build-time dependencies are handled by the new PEP-517-based build system (see Step 7 below).

To compile and install cuQuantum Python from source, please follow the steps below:

  1. Clone the NVIDIA/cuQuantum repository: git clone https://github.com/NVIDIA/cuQuantum
  2. Set CUDA_PATH to point to your CUDA installation
  3. [optional] Set CUQUANTUM_ROOT to point to your cuQuantum installation
  4. [optional] Set CUTENSOR_ROOT to point to your cuTENSOR installation
  5. [optional] Make sure cuQuantum and cuTENSOR are visible in your LD_LIBRARY_PATH
  6. Switch to the directory containing the Python implementation: cd cuQuantum/python
  7. Build and install:
    • Run pip install . if you skip Step 3-5 above
    • Run pip install -v --no-deps --no-build-isolation . otherwise (advanced)

Notes:

  • For Step 7, if you are building from source for testing/developing purposes you'd likely want to insert a -e flag before the last period (so pip ... . becomes pip ... -e .):
    • -e: use the "editable" (in-place) mode
    • -v: enable more verbose output
    • --no-deps: avoid installing the run-time dependencies
    • --no-build-isolation: reuse the current Python environment instead of creating a new one for building the package (this avoids installing any build-time dependencies)
  • As an alternative to setting CUQUANTUM_ROOT, CUSTATEVEC_ROOT and CUTENSORNET_ROOT can be set to point to the cuStateVec and the cuTensorNet libraries, respectively. The latter two environment variables take precedence if defined.
  • Please ensure that you use consistent binaries and packages for either CUDA 11 or 12. Mixing-and-matching will result in undefined behavior.

Running

Requirements

Runtime dependencies of the cuQuantum Python package include:

If you install everything from conda-forge, all the required dependencies are taken care for you (except for the driver).

If you install the pip wheels, CuPy, cuTENSOR and cuQuantum (but not CUDA Toolkit or the driver, please make sure the CUDA libraries are visible through your LD_LIBRARY_PATH) are installed for you.

If you build cuQuantum Python from source, please make sure that the paths to the CUDA, cuQuantum, and cuTENSOR libraries are added to your LD_LIBRARY_PATH environment variable, and that a compatible CuPy is installed.

Known issues:

  • If a system has multiple copies of cuTENSOR, one of which is installed in a default system path, the Python runtime could pick it up despite cuQuantum Python is linked to another copy installed elsewhere, potentially causing a version-mismatch error. The proper fix is to remove cuTENSOR from the system paths to ensure the visibility of the proper copy. DO NOT ATTEMPT to use LD_PRELOAD to overwrite it --- it could cause hard to debug behaviors!
  • 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.
  • Please ensure that you use consistent binaries and packages for either CUDA 11 or 12. Mixing-and-matching will result in undefined behavior.

Samples

Samples for demonstrating the usage of both low-level and high-level Python APIs are available in the samples directory. The low-level API samples are 1:1 translations of the corresponding samples written in C. The high-level API samples demonstrate pythonic usages of the cuTensorNet library in Python.

Testing

If pytest is installed, typing pytest tests at the command prompt in the Python source root directory will run all tests. Some tests would be skipped if cffi is not installed or if the environment variable CUDA_PATH is not set.

Citing cuQuantum

Pleae click this Zenodo badge to see the citation format: DOI

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

File details

Details for the file cuquantum_python_cu11-23.10.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 01e6b210ed66a1fda172884f1eca68b4763f676f81949af8f0d6b16d798f1881
MD5 e55e88acabe115fa2f1d01e11e9e36d3
BLAKE2b-256 d5395a27deee822f39d0978429a04c77c8933855497a06383d5d7b38c7912ac8

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu11-23.10.0-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f5bd44f0a50b38fa778836577e11515fb820c98217d2958fdedfc861a701f604
MD5 92ba216d6d2c664475319828f62700f8
BLAKE2b-256 3920673a13fe5d7a04535f0f00951e836ad0c5a93024457342f2e873a603e43f

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu11-23.10.0-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ad5e38501cb53d50ba19fc48790f2c79fbc14c22e101d51a0b338f6c6971e6a0
MD5 b1e8ba044471b5696e28472c73601530
BLAKE2b-256 c9bb863726cd7c2d16e1df6e9d29e032cb2b4009399fb6920ebc71dd208a78f6

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu11-23.10.0-cp310-cp310-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp310-cp310-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a0f0dfcb6239ec5fce836fa2f641820d3235ac7d83f391eac90952cf481da03f
MD5 e905d3b683159fb59812add37c8a6989
BLAKE2b-256 14a404578824d9e14441bf9d15057ad0c4896bf200808a55c26ae9d06e374c21

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu11-23.10.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 997e47861bab2c5e183a3b7439ba7fe4dd777cbf4d24f2234ac4ad7936cbc699
MD5 84004c06eda711a2e8e9848b445e87ba
BLAKE2b-256 70a9d9a1179afd21cbca6478f8aaac6ae29af0e6a9503facd0963b31f4041a7e

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu11-23.10.0-cp39-cp39-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu11-23.10.0-cp39-cp39-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0f658d3c83a8f05b81749a1fecc232ca23650147f53d82fe61dae987e544fb9c
MD5 d9e632f590999b2350cd0d4b8e695a99
BLAKE2b-256 f5591cd6614bdc9bf811daf0c37b694b2eafa8b9feabc51d32245b6637fe5517

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page