Skip to main content

NVIDIA cuQuantum Python

Project description

cuQuantum Python

Documentation

Please visit the NVIDIA cuQuantum Python documentation.

For instructions on installing cuQuantum Python, refer to our getting started section

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.7.0+
  • cuTensorNet 2.6.0+
  • cuDensityMat >=0.0.5, <0.1.0
  • Python 3.10+
  • 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, CUTENSORNET_ROOT and CUDENSITYMAT_ROOT can be set to point to the cuStateVec, cuTensorNet and cuDensityMat libraries, respectively. The latter three 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:

  • An NVIDIA GPU with compute capability 7.0+
  • Driver: Linux (450.80.02+ for CUDA 11, 525.60.13+ for CUDA 12)
  • CUDA Toolkit 11.x or 12.x
  • cuStateVec 1.7.0+
  • cuTensorNet 2.6.0+
  • cuDensityMat >=0.0.5, <0.1.0
  • Python 3.10+
  • NumPy v1.21+
  • CuPy v13.0.0+ (see installation guide)
  • PyTorch v1.10+ (optional, see installation guide)
  • Qiskit v0.24.0+ (optional, see installation guide)
  • Cirq v0.6.0+ (optional, see installation guide)
  • mpi4py v3.1.0+ (optional, see installation guide)

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 and cuDensityMat 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

Please 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_cu12-24.11.0-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c5d8c1ba776fb29b22c8aa5a1bd8ac852886b89835460e85daffc2431fff997e
MD5 d1a430193284e6ff989ff8ffad5ee044
BLAKE2b-256 e34d1c334eaecd730609eb2ff748fdbab7b33debaa457b385d571002e06b2c1d

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu12-24.11.0-cp312-cp312-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5fc76709a632dc5e46a0fe45b579bdc6b44dad7b5fe618a0e23fed72c66b7e4b
MD5 74dfc732ac66658787bb524ae085f232
BLAKE2b-256 74bc2a139fba88ea8f3bb401f4d49bd0efa1fcc43a310ce80ad62ef3efd4b6cc

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu12-24.11.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83f298012ae865d2ac48491f6e5089cbb8814af7ee51bac3792435bd41211259
MD5 77575c8639285e895809f463c4e7c392
BLAKE2b-256 6ea676bf1ac3d3a4501211de9c561c2631193dd8857e14a95455f893c621ea12

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu12-24.11.0-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5bd79f6f85dd90a0f492b0a122b2ddeabc0447971e170ccc6f8f1f44bb4a96bb
MD5 16eb29e16e71cbbbd83b3bf51aab98d3
BLAKE2b-256 f0e2268710b36fd5a9258e06fe538b00194da10eee6aeb90d407d9aeeed12300

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu12-24.11.0-cp310-cp310-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp310-cp310-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e00f84033564796e0fb1dafe1071afce63db495c84d0e2f876aca3f4a3147228
MD5 55e5d00b77cdedeadb0f5252f779179b
BLAKE2b-256 9b253df89d004d09f3bafe90124b2db6047e9bea0209a2089502f372b2466fee

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu12-24.11.0-cp310-cp310-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-24.11.0-cp310-cp310-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e8f53c0c1a0000912b559826e26333280c081c13218d926d64b2ad54721e8abc
MD5 83ae1a871204bdf8875d4deb44f78c13
BLAKE2b-256 a7d932bfd1b6d9d249f9e741016e549f8db090db833026587b8da6fd51223afc

See more details on using hashes here.

Supported by

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