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.1+
  • cuDensityMat >=0.5.1, <0.6.0
  • cuPauliProp >=0.3.1, <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.1-cp313-cp313-manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp313-cp313-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 90b53fdb001c8e3183ec9fec3283fecaa7f5300137bea92e0b5699b792badb19
MD5 22aa627258f5588d7066a12e0b9d9640
BLAKE2b-256 f6bf91636ccf0bb3cb0db65d48d8bd48a8b087185cc81680471cdebb5ba0e0ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp313-cp313-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 807355e2f8a8252d5b3a5aec123abde9f2be65acc8132decbbc3f3c3a7789c32
MD5 338b63a1ca807a0913dfded060ec5332
BLAKE2b-256 73c80ca698cbfe54e620bac45f3535dc841c5395838d4bb6f68b398ad36059d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp312-cp312-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e866b73a06a7d3c3409cbe4101cbaefe53314a51ed5641c51e4c66f49675a704
MD5 cdb93608efb2da364b18745ef515be4b
BLAKE2b-256 c0b89e31d2256969ced95e393d3dd518714f8a954e2320200fa8e58936e3ff52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp312-cp312-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b86fbb60c5064db93820ff602038f69f2d48e11d78c12263f81fd5dc7b068aff
MD5 72488ce0b27cb01a05a3ba094ba8bdb6
BLAKE2b-256 2a9fe2c06f76e75b7e3eeb6f998d9b0dd16b2605577a4f54b175721c79e80831

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp311-cp311-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5736c1fd5d9d3eb8e14ba0007b2d7fbaf1a98217100f7ebfb201b7ab27c52478
MD5 e491b81af9ea2c6d26c80a18b0d64491
BLAKE2b-256 7956e94295eb5329c328f22210c3ff67cf0ae9bee259984af17208f29ed426e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuquantum_python_cu12-26.3.1-cp311-cp311-manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1dcd597385668912fd7ba63bd674f0b8641425df67cb2625a79a6da6c6c1e20b
MD5 48d580d0c591b7661fcd8727cf5144f2
BLAKE2b-256 ea5a0825c0b7c1827c616b5be67d07e7b13576f120c9c7749ee127a07265dcf1

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