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

= 11.8. 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 currently only supported on Linux operating systems using x86_64 or aarch64/arm64 processors.

Installation Including GPU-Acceleration

CUDA-Q does not require a GPU to use, but some components are GPU-accelerated.

Getting started with CUDA-Q simply requires pip install cuda-quantum-cu11. Please make sure your pip version is >= 24.0. If you have an NVIDIA GPU on your host system, you will be able to use it without any further installation steps.

Note: Support for CUDA 11 will be removed in future releases. Please update to CUDA 12.

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

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 the instructions here. The following commands will create and activate a complete environment for CUDA-Q with all its dependencies:

cuda_version=11.8.0 # set this variable to version >= 11.8
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 cuda-quantum-cu11
source $CONDA_PREFIX/lib/python3.11/site-packages/distributed_interfaces/activate_custom_mpi.sh

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.

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_cu11-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (122.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu11-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl (116.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl (122.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl (116.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl (122.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl (116.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

File details

Details for the file cuda_quantum_cu11-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b34867b1f82a345260905167f52fc9c739d2eda0e5079d8d7f85f49a54c7ae20
MD5 7cd38af18db84ee7214824639285b22a
BLAKE2b-256 ca537ad5678eac07175186e0640043668e9fea4ecbe45fb5315f71e47ae451d1

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu11-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 56a01a4407e506085efd7f8bbcaeed49fff0fc1c101713fcdbfb6c6428d76323
MD5 bdde1ca730d5b0fa4e5e30a3513dfff2
BLAKE2b-256 3c64fdb11c5fa58673a06f7de7f674c0ba81905d461a1dbf5b0852967280a35e

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c3414284a5eb84de0683b1b4bdbb7e5b851d57d4f1c2e58dd809a8c8f26e42c2
MD5 7ff3dd149a088f03f2ed1bf31efee87e
BLAKE2b-256 cd0d56ea68536645ff374ae6bfd92a2d324b863a29f96a508f4c6d5de565e916

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b39f8becf98c128bfbe3cf3443f61a735784f343970da43f36185407b71703c3
MD5 15df82757e8874b94d716dd54a5f49ac
BLAKE2b-256 d1f2cb867e6e08a1c03c387f4f1ef1d11a6c1f19b6dbaa13f0a95e89cc4bf3e7

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e9bf73a71d83995901f745ae34f972f42bdab8760d16ab8015e07ae808f9837d
MD5 7d6e8ba9916606a29f534c0f132013d0
BLAKE2b-256 7c017907f99cf048d7eeed5042ad0a003d404f5f36f225b113880fe5d190426b

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu11-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23263e056a7c64b423092f3be80028b061d1e5d363e6f4a5d55339ba3b509581
MD5 a5721c23c2f5422be4c4b1506a90a058
BLAKE2b-256 77706a15e8a63c5dd87db210014df3caee9f2dc1b2343b9e0783382fab6d9a36

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