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 --strict-channel-priority 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.

Metadata

Release files for cuda-quantum-cu12 0.16.0.post1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for cuda-quantum-cu12 0.16.0.post1
File
cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ ARM64 Details
cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ ARM64 Details
cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ ARM64 Details
cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ ARM64 Details

Total release size: 688.0 MB

Release files / cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_x86_64.whl
Size 92.0 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
fa11aae42e49976028649cffa2f5b5b21ae05c3f79f19905ae99cd567411eadf
BLAKE2b-256 checksum
How to use checksums
3a7f52237fbed5e24a0fcdf26cd9c38d554f0031b223ab5db780f00a4a8a6fd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_aarch64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp314-cp314-manylinux_2_28_aarch64.whl
Size 80.0 MB
Tags CPython 3.14 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
d33bd0fb3a2a45c266f4c72cc4b308a08ae38cde494b6de8c9aa07de462e701f
BLAKE2b-256 checksum
How to use checksums
a6818f4fc96631a77e0b6ad53c7a0dfc2081cdd40e934fbb6a932e8271823085
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_x86_64.whl
Size 92.0 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
14d7cb59f9381c4eddeaee71ef0f18e639d004b4fca20f51c4c57cab63e5a951
BLAKE2b-256 checksum
How to use checksums
e7eec68cb7447662d99e807217f7611c77443e1f7cddcd0f5e1a33bfdcda2c8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_aarch64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp313-cp313-manylinux_2_28_aarch64.whl
Size 80.0 MB
Tags CPython 3.13 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6924da1d8f7ac119829c6e4837a12f2069157179c237dfb936656f883be47f63
BLAKE2b-256 checksum
How to use checksums
915bed38ec27e2c7042826adc9ad25bf85f012ad960990bd3b2fe8b4e797549a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_x86_64.whl
Size 92.0 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0871f65b34e56cf73a711d3fabb45e82d7af7d19bd617299a417169a6c377db8
BLAKE2b-256 checksum
How to use checksums
39fa136ab33a4198542bd5f9636a6567a335412469bd7373f90f43eb90768396
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_aarch64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp312-cp312-manylinux_2_28_aarch64.whl
Size 80.0 MB
Tags CPython 3.12 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
6668286998606fb3b4549b3eea4d6794875dc250fc5bf6c7a4fc1789f9a73ffd
BLAKE2b-256 checksum
How to use checksums
0bb476930ebe63d67a999f89923075ca36982adcb31b6713377b282532f3fbe0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_x86_64.whl
Size 92.0 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
bac26c07f346841922efd1b6b59a37b95ecce960dd07c7f017775a1dd32dd8d4
BLAKE2b-256 checksum
How to use checksums
62a1fdedb1178fa8cce85f24b86c8a5c428ea308ce041f5a58196e469b176b19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_aarch64.whl

Download URL cuda_quantum_cu12-0.16.0.post1-cp311-cp311-manylinux_2_28_aarch64.whl
Size 80.0 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64
SHA-256 checksum
How to use checksums
2f3def919051388eaeccaa56ad06e588b3dfef76595eb31a302d166a55eeae3a
BLAKE2b-256 checksum
How to use checksums
92c23f13d0eb94ed76a4012c919b5cac4c087d0699cbd99440fba8971a570213
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.16.0.post1 This release

8 release files

0.16.0

8 release files

0.14.2

6 release files

0.14.0

7 release files

0.13.0

6 release files

0.11.0

6 release files

0.10.0

6 release files

0.9.1

6 release files

0.9.0

1 release 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