Skip to main content

Python bindings for the CUDA-Q toolkit for heterogeneous quantum-classical workflows.

Project description

Welcome to the CUDA-Q Python API

CUDA-Q is a comprehensive framework for quantum programming. It features:

  • A programming model which extends C++ and Python with quantum kernels, enabling high-level programming in familiar languages
  • A high-performance quantum compiler, nvq++, based on the industry standard LLVM toolchain
  • Interoperability with all of the leading models and tools for accelerated computing, including CUDA, ISO standard parallelism, OpenMP, and OpenACC
  • The ability to utilize and seamlessly switch between different quantum technologies, including state-of-the-art simulator backends with NVIDIA cuQuantum and a number of different physical quantum processors (QPUs)

The CUDA-Q Python wheels contain the Python API and core components of CUDA-Q. This package installs CUDA-Q binaries that are compatible with a CUDA version ${{ cuda_version_requirement }}. More information about available packages as well as a link to the documentation and examples for each version can be found in the release notes. System and compatibility requirements are listed in the Installation Guide of the linked documentation.

Note: CUDA-Q is supported on Linux (x86_64 and aarch64/arm64) and macOS (ARM64/Apple silicon, CPU-only simulation). GPU-accelerated simulation requires Linux with a supported NVIDIA GPU.

Installation Including GPU-Acceleration

CUDA-Q does not require a GPU to use, but some components are GPU-accelerated. Getting started with CUDA-Q requires pip install ${{ package_name }}. Please make sure your pip version is >= 24.0.

${{ deprecation_notice }}

Important: Please check if you have an existing installation of the cuda-quantum, cudaq-quantum-cu11, cuda-quantum-cu12, or cuda-quantum-cu13 package, and uninstall it prior to installation. Different CUDA-Q binary distributions may conflict with each other causing issues.

Platform-specific instructions: Linux | macOS

Linux: GPU-Acceleration and Multi-GPU

If you have an NVIDIA GPU on your host system, you will be able to use it without any further installation steps.

If you want to perform multi-GPU simulations, additional components must be installed. We recommend using Conda to do so. If you are not already using Conda, you can install a minimal version following miniconda instructions here. The following commands will create and activate a complete environment for CUDA-Q with all its dependencies:

cuda_version=${{ cuda_version_conda }} # set this variable to version ${{ cuda_version_requirement }}
conda create -y -n cudaq-env python=3.11 pip
conda install -y -n cudaq-env -c "nvidia/label/cuda-${cuda_version}" cuda
conda install -y -n cudaq-env -c conda-forge mpi4py openmpi">=5.0.3" cxx-compiler
conda env config vars set -n cudaq-env LD_LIBRARY_PATH="$CONDA_PREFIX/envs/cudaq-env/lib:$LD_LIBRARY_PATH"
conda env config vars set -n cudaq-env MPI_PATH=$CONDA_PREFIX/envs/cudaq-env
conda activate cudaq-env
pip install ${{ package_name }}
source $CONDA_PREFIX/lib/python3.11/site-packages/distributed_interfaces/activate_custom_mpi.sh

Warning (conda-forge): Installing cudaq from the conda-forge channel on recent versions of Python can lead to segmentation faults. If you see such errors, please switch to one of the Python versions 3.11.10 or 3.12.7 as per the issue #2999 or #3104.

You must configure MPI by setting the following environment variables:

export OMPI_MCA_opal_cuda_support=true OMPI_MCA_btl='^openib'

If you do not set these variables you may encounter a segmentation fault.

Important: It is not sufficient to set these variable within the Conda environment, like the commands above do for LD_LIBRARY_PATH. To avoid having to set them every time you launch a new shell, we recommend adding them to ~/.profile (create the file if it does not exist), and to ~/.bash_profile or ~/.bash_login if such a file exists.

macOS

GPU-acceleration is not available on macOS, so a virtual environment is all you need:

python3 -m venv .venv
source .venv/bin/activate
pip install cudaq

MPI uses SSH or RSH to communicate with each node unless another resource manager, such as SLURM, is used. If you are encountering an error "The value of the MCA parameter plm_rsh_agent was set to a path that could not be found", please make sure you have an SSH Client installed.

Running CUDA-Q

You should now be able to import CUDA-Q and start building quantum programs in Python!

import cudaq

kernel = cudaq.make_kernel()
qubit = kernel.qalloc()
kernel.x(qubit)
kernel.mz(qubit)

result = cudaq.sample(kernel)

Additional examples and documentation are linked in the release notes.

Contributing

There are many ways in which you can get involved with CUDA-Q. If you are interested in developing quantum applications with CUDA-Q, our GitHub repository is a great place to get started! For more information about contributing to the CUDA-Q platform, please take a look at Contributing.md.

License

CUDA-Q is an open source project. The source code is available on GitHub and licensed under Apache License 2.0. CUDA-Q makes use of the NVIDIA cuQuantum SDK to enable high-performance simulation, which is held to its own respective license.

Feedback

Please let us know your feedback and ideas for the CUDA-Q platform in the Discussions tab of our GitHub repository, or file an issue. To report security concerns please reach out to cuda-quantum@nvidia.com.

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.

cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_x86_64.whl (125.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_aarch64.whl (112.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_x86_64.whl (125.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_aarch64.whl (112.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_x86_64.whl (125.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_aarch64.whl (112.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

File details

Details for the file cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c589d708ffdef1d59714407838e5a613dfe0d27414367f86b54fb2cc8312bbdd
MD5 0a42bf324aced4c296a103c3ecff20af
BLAKE2b-256 7b49e04c487bfbf8f6e3feaedf2489584c93d46f7c8790811cea1ab1ed530f11

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 535d4476a61dcd2902527a48dd13455026217e256e6d0efa03e469216e28dc3c
MD5 445d42c3d8458c1110826cccecac1317
BLAKE2b-256 d35a7dc250e74950840fcbe12b3e18af8cb34a83a65ba9fb691ab51c2857d5c1

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46419e0745c022fe2ded0018ab785d6546396753df5d616f604bbd9fa7125153
MD5 b612ed2ca26fefffcce1e39a33d64250
BLAKE2b-256 a5c618300c9dd952ae9ed3eb0c46746df7a6974a3722552646bf606abcb54a44

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 167e73f78c7b186abe0535d3f50728fc095738bf7cccf6f609d05561b2ec1ccb
MD5 a6c65d85f1cf4a137b000bb52ce1477f
BLAKE2b-256 3dde2f9b8349603a80070992f98566fa352e5774e8d6f1e4c254d21b2313c27e

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fb0cde25a6bf4d37f75fa3c6c2cb5eb4b7855769e4329ef66358b2c472202081
MD5 b935b16a1a05a11ef8860ed938bc43e0
BLAKE2b-256 e4b249083658e8c7eae95698562fc84de322fdaa9c7570446f90630f967ba2ef

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7390bf6c4eaab823d8668387478d3f2485acfddb73afc9f6ae377cf4166f215f
MD5 bd27ac9500f57bfcb53479fb55ff31ff
BLAKE2b-256 36d3ae36edd75c013dc28a5a3a9c39e22bf2d1122272a16889569a88cebce2ce

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