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.1+
  • cuTensorNet 2.12.2+
  • cuDensityMat >=0.5.2, <0.6.0
  • cuPauliProp >=0.3.2, <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)
  • nccl4py (optional)

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.2-cp313-cp313-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2840f6edf73eae4600c380d9f617cf4c8ff32ec12ce398f4e991c4a811a0d92
MD5 7a7b9ef82e62cf7ecca60c13b40b7a1b
BLAKE2b-256 ad1a7469ab32a47bcd097ed21d6aca1137bb0fe7bca7020cbf50d99b4daf082d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c17c8b33387ca36542fa0eca74c794975d43eb6cae90ffe52484dc8ba2d2e927
MD5 a69a09b8783617cd2ed30c72a3895080
BLAKE2b-256 e30a47fd861a7673ca6d95029008d280da5bfdbdab31fcedac1f646a8aea24ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c7017f7a53034559295007a8e7cf8f1fbf74a74ebb3a1318e074154de2c310d9
MD5 8dc0d63432dcdf30fcb0a023d34c5041
BLAKE2b-256 020ce24ead4771d061e2f0366be96e9e300f9cb992dce7c3e23f6d3755c02606

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b5e726bec9a3fe61e22fabda33af583a01d31b82c44f0066d69cb100488d5716
MD5 85cbcd834224b0947daf879ba7c30422
BLAKE2b-256 8423555b8a60c7a2388216f04feed2cdce6b5678cf575c374f74a21df6816ad4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ffeb1bdc31e8283665ffc566723483295186d552df2c4a25b40a73f6d54d5c3b
MD5 e5f81fbfe8381dc15cdc484d61754b1f
BLAKE2b-256 9dafb1b65ce1521fe8bd4bf8e71227756ca837a52f0a57db63862ecb5c46249c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu13-26.3.2-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d6eda6360c0e06b4211866c5dacbe2fc70d822b46276dff2b1c428b908161db2
MD5 59652e18614a8c70b0f31b32f83764af
BLAKE2b-256 efbddb7e127084c5d8b60970114a138e65bf29c822189103e3bf655598ef2838

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