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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 94a77d9cae6b8c4693d9a7e978fc61fea5f3971d7e0687e87fa40b84d23fa1dd
MD5 543ffa95fb8465c648e4d2ca23daf129
BLAKE2b-256 c2a3238b69899c86217c9007b0f245f6e7e104138e63155b19e5a49f8dd24148

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f621190d0a8711889e5a5caf57a01e7692403f78df980706ed1f4d1e46c82b84
MD5 9ca02794bdb42bd14a577cc2057e29f2
BLAKE2b-256 0f650276f84eaf4a46155b2ef2e7fa4449563f0a6d8d568af14bb49b826e4c69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5a153785c8be5ae0385cab950152b280135b1c92c095c07bd3d15e9e58176888
MD5 3f47c22a75efeb51dc1a050a99eaa51c
BLAKE2b-256 290d3eaee3d3fbacc64234405de38623ceb5bea0ab46f66f541d5d1c75592434

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5ebbb7a8010056ace3cac940a2779d7a0d26f12b4314cead546e8ba09b984c6c
MD5 93fd64feb3e7dbe4778a0a07633f527e
BLAKE2b-256 c427d5caa3749ce528c198a1677fca4f46db34c24b38b56efe944d16ed59c20f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b31c89da39e1d1752ff9d2bf656ad3bd2c2c9537202fd931fdc779f9432cec42
MD5 47d0c9dea576b500a50afcff48416da1
BLAKE2b-256 5dd93337145159e2284d3b710ff9da115688ba1092fdad77201c5672653118fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.2-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 21b0bcd74e9859f9269b0533a9ddedbcf887a0d4c5de1f1196027ddee1728bca
MD5 a193967c6d1a49e533afadf3e2cde2c0
BLAKE2b-256 8a6e054c440bc9661b77df3f04e55d96a44233d7707b3b0bbc39cf168b8540bc

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