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 12.x or 13.x
  • Python >=3.11, <3.14
  • Cython >=3.0.4,!=3.1.0,!=3.1.1
  • pip 21.3.1+
  • packaging
  • setuptools 77.0.3+
  • wheel 0.34.0+

Note: Starting with cuQuantum Python v25.06, cuQuantum C libraries including cuDensityMat, cuStateVec and cuTensorNet are no longer build-time dependencies. However, they are still required at runtime.

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] Make sure cuQuantum and cuTENSOR are visible in your LD_LIBRARY_PATH
  4. Switch to the directory containing the Python implementation: cd cuQuantum/python
  5. Build and install:
    • Run pip install . if you skip Step 3 above
    • Run pip install -v --no-deps --no-build-isolation . otherwise (advanced)

Notes:

  • For Step 5, 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)
  • Please ensure that you use consistent binaries and packages for either CUDA 12 or 13. 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.5+
  • Driver: Linux (525.60.13+ for CUDA 12, 580.65.06+ for CUDA 13)
  • CUDA Toolkit 12.x or 13.x
  • cuStateVec 1.13.0+
  • cuTensorNet 2.12.0+
  • cuDensityMat >=0.5.0, <0.6.0
  • cuPauliProp >=0.3.0, <0.4.0
  • cuStabilizer >=0.3.0, <0.4.0
  • Python >=3.11, <3.14
  • NumPy v1.21+
  • nvmath-python >=0.7.0, <1.0.0
  • cuda-bindings >=12.9.4, <13.0.0 for CUDA 12 or cuda-bindings >=13.0.3, <14.0.0
  • CuPy v13.0.0+ (see installation guide)
  • PyTorch v1.10+ (optional, see installation guide)
  • Qiskit v1.4.2+ (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!
  • Please ensure that you use consistent binaries and packages for either CUDA 12 or 13. 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

H. Bayraktar et al., "cuQuantum SDK: A High-Performance Library for Accelerating Quantum Science", 2023 IEEE International Conference on Quantum Computing and Engineering (QCE), Bellevue, WA, USA, 2023, pp. 1050-1061, doi: 10.1109/QCE57702.2023.00119

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

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp313-cp313-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 431e3d1c71c0b046735e0f84a6d6213fdbcc549e59d7d2731f55732961cdf35f
MD5 2ebc06e314525ca3555df49cb1681163
BLAKE2b-256 b4ed7ff182e8fed676c3dd7b93ad2cd4af0795ece5d5cddbdcd71539105aab00

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp313-cp313-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 54302524d1e545993cbc1adc63b2307fee3b03a2f22c36553796cd1d59b2d6e1
MD5 487756b6ac99d4337e0401c4dcebdff1
BLAKE2b-256 6a3e1a3a48b824f6d72beb64ec90951e68598c7777b070ccec75ab8656a738e8

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp312-cp312-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15c7a7bf3f9d08bdef94e0ffe5263b7911eecb27f028c5ec11d737c856606a5b
MD5 f0a0ed5343753d82a037ffc4343d4662
BLAKE2b-256 54ae1762faf26028a687ca467b4d7ce3b7188f54dc9fea6ad3788f165010d6f0

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp312-cp312-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b442a08c2d98be36b851bb6cc163f6fe7b061cb0c463bdc2bdd2d2d938ca5c4a
MD5 89053ed7425cdb3a2007c3a6aca92f42
BLAKE2b-256 ac7578a73ba42b81f406d985dc5b3dd455e45d14e1f39c985b653d0681950264

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp311-cp311-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c0437df8e09b379f0b2829a41df4b6965981dacb0b6f1e5e664f5df803dfdf93
MD5 e91fb06a6fab39a9de42d0bd5a21468c
BLAKE2b-256 7e5919e7ab00f5fae8508c3c9da5e013f06ab5e3f64fdda5678c79c946ccc6aa

See more details on using hashes here.

File details

Details for the file cuquantum_python_cu13-26.3.0-cp311-cp311-manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23cec75f68a117d4d90f710dd9f840a08bf8bcd5b279440b29d61ca04dddc302
MD5 2bd5fa3849ce750966dd03026963d162
BLAKE2b-256 083080bc26727e2ae2f6459fb2aee938eed913b51ac8f010c8814c703bce3533

See more details on using hashes here.

Supported by

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