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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ea17bbed6429bde801673001c352fa0b08337653a24975b795dab3ee0900f92a
MD5 cfbf2e98e2554b250347dce2ef1a7a57
BLAKE2b-256 ee46d7d53ae5ce45d256e9dccd1869047f80aa74a71b76332c38903a0b301936

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f44a300fbd89fbb2b5d5814a1c302b0f455cca1a678bb56c73461bd85841b697
MD5 dc5ada17191778e092a6df8e026b2f65
BLAKE2b-256 265eada3620348e823253929e72da163f4ec1a744707fd5382edee824b50465d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5df6d5e54377ceeb8258e9b3e77734e2405a3bfcb9f9b44c676e57674eee98fa
MD5 0c6083e0992fe72541c7d9db94042718
BLAKE2b-256 b74396cf001e20f9587251fd23e12762f8ae38ebee6f556876bae7e7f6fed628

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ef3486b14ac0c0def5648e094053271c4d18f4ff1079185e1a661e0ea9e61cef
MD5 abc7c4d5cf814b76a85379c30a32423c
BLAKE2b-256 8b5cb253da4c7d0a093fc8da6b6ceb1e9200716a781ee1212572abed3e8ce734

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0eadf8a00f46ce5bbca6e91ac4bba27903c0fbb9b330acb8109ac519820835bd
MD5 525015d1734a9a6b46fbb42a69735719
BLAKE2b-256 18333249e6a026bff6c2faddba8724f0f047f4446ea4c4eb98bc3a59ac5eee71

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.0-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 189a7dc98d412d360c97403923a7e448d7dec01f7eb0f7d21cee1eb0689d1732
MD5 4e597da9e84a05e3d3236dcf0a11b48b
BLAKE2b-256 f460d33f8cd3b082912441289c37e6e991c128be639f18c7fbca17a6bcedddc6

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