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

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.14.2-cp313-cp313-manylinux_2_28_aarch64.whl (114.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.14.2-cp312-cp312-manylinux_2_28_x86_64.whl (128.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.14.2-cp312-cp312-manylinux_2_28_aarch64.whl (114.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.14.2-cp311-cp311-manylinux_2_28_x86_64.whl (128.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.14.2-cp311-cp311-manylinux_2_28_aarch64.whl (114.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 dc9ea2a579f8a49629c5258a944db96b31bca6fb1cbf047559e1d6b2d68e079f
MD5 1b6da438cc3a6701c1e5c48a3ee03fb3
BLAKE2b-256 5df73a18b3251d29644b2da7a8f42ef1111ef2dc289c5a5c49bb5507fe5e034d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 64477eee23499c7f65289706468caaf9d4cc803f4ceb954aeb88d0a49e235fc5
MD5 5621be249e7f7f66d506e48aa48dbc1b
BLAKE2b-256 74d38ea8c82955151f7646c831b7d4d68122a0b496883c57188eb0c428a2198a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 30cb8e27a4ca3369d554c20849fee90c1103d969cd409ec43b1108691a0fe32e
MD5 9590ab2de005dd70f348798f060f14d0
BLAKE2b-256 80a3658057d365bd9f873e3d7576bce92c30eaed8f9581cbc9c103d835a18487

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 651a9d26e41aa736788c98a2c343df720444079283f52ef4469169827b0462a6
MD5 93f3be8f5f3a9dd4098e6a06805d6fe5
BLAKE2b-256 6a595d3ef3703ece50453debec8512becca6922c20d542662ac171d4184cdbe5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 314c086b21a4263f4550eed45d6ca599a00e1f3899eb4789e0ee3ef626fe1c02
MD5 a3f7429f1b6645937127dc9157ca08ed
BLAKE2b-256 4b40d76d2409fdf781826d882d4958a4aadcd1a8696e7fb61b0df6670d919166

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.14.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eb347dd1d5ac4d144744bc7319efde51704219e0d78a04d6a6b14909b820dcfe
MD5 a9656c34becc556fbefa6236eac8b3d1
BLAKE2b-256 74e414371fcdc978e2b14e53de703c75f8c9b66402c818e329392e5731d5e177

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