Skip to main content

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.

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.1-cp313-cp313-manylinux_2_28_x86_64.whl (125.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.1-cp313-cp313-manylinux_2_28_aarch64.whl (113.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.15.1-cp312-cp312-manylinux_2_28_x86_64.whl (125.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.1-cp312-cp312-manylinux_2_28_aarch64.whl (113.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.15.1-cp311-cp311-manylinux_2_28_x86_64.whl (125.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.15.1-cp311-cp311-manylinux_2_28_aarch64.whl (113.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 002939d9dce108cee6b4260b7c6ad91df0d303857f01aa336fc6487f9edcb144
MD5 d36a88b8118c904649a1e6a7293400ea
BLAKE2b-256 11f688bac5dc23bdd681a121e8009ed8fc23b36c29d7d52385f65980f3bdc9e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 de178c4e44990c94f9dcdb06bb35460f0c6103928b8db3a901e04e9057623274
MD5 70e0eefb60618a52064a80980d07b432
BLAKE2b-256 faf9d5d572c4618b6f85fe5781b2ee3e361e619932ace503ae02bbe517acb3aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2ddade14524e67b8a83dfbaf0da0e27f4e8b979d96bfa41ca3e73b7e79177219
MD5 7bee2b3769324edccb5ef161c9342484
BLAKE2b-256 d1a1c646cc9d1006c24ee53a37dc3df342b603fc6b6bf323ae1be46e92f45dd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0bfe3f3571b2451c1ca0cf41adfdb6c0861cd5d74b6eff414982a0f48f55b1de
MD5 b52e09e2e1ce7ca4759ea5b858b5fef6
BLAKE2b-256 44423a4d75bda038439beb8a4091206b9c5774492dcaa15e1bf3bd339bc4291d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7d084d650b16af9c639d56a515b96a7316abcf621ddf3e1fdb4dde10554e30d7
MD5 7abd8db95ab98a7939a7ef3ffa68b6e1
BLAKE2b-256 3d534c2fc7996a1a4a0c8db5df30df7758e2bd0dbfbe50db637c40c7158e61db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.15.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 77bb78af44566058cff29904c91b5e9bb7ee5e36d4f8aa7301e9b74f07a8f08f
MD5 f24c73e357cda0b16e2ef42a17d534be
BLAKE2b-256 8ec7bbb3307e7502b4640f68d7b3fd732ad8ef58fad0110d2692983519682819

See more details on using hashes here.

Release history Release notifications | RSS feed

0.16.0

8 files

This release

0.15.1 This release

6 files

0.15.0

6 files

0.14.2

6 files

0.14.0

7 files

0.13.0

6 files

0.12.0.post1

8 files

0.12.0

8 files

0.11.0

6 files

0.10.0

6 files

0.9.1

6 files

0.9.0

1 file

0.0.0a0

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page