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_cu13-0.14.2-cp313-cp313-manylinux_2_28_x86_64.whl (129.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

cuda_quantum_cu13-0.14.2-cp313-cp313-manylinux_2_28_aarch64.whl (115.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

cuda_quantum_cu13-0.14.2-cp313-cp313-macosx_13_0_arm64.whl (91.1 MB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

cuda_quantum_cu13-0.14.2-cp312-cp312-manylinux_2_28_x86_64.whl (129.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu13-0.14.2-cp312-cp312-manylinux_2_28_aarch64.whl (115.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu13-0.14.2-cp312-cp312-macosx_13_0_arm64.whl (91.1 MB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

cuda_quantum_cu13-0.14.2-cp311-cp311-manylinux_2_28_x86_64.whl (129.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu13-0.14.2-cp311-cp311-manylinux_2_28_aarch64.whl (115.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

cuda_quantum_cu13-0.14.2-cp311-cp311-macosx_13_0_arm64.whl (91.1 MB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9c90f054e9ab07c28356642c3a28b91ec70936527f635642869f9d6dc74ad55b
MD5 aae37b2ff0dcac7cc881156efee294c4
BLAKE2b-256 b94c4cdf3dc5f5e2578e3a50037030a2d07d8b53e609b68c48bf2678f967f639

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2e7454ca7e7e6ce90727f0798dc93614d70444fbb6a8a12faee2a7906ed434c
MD5 982c1410a661c4b0bffc2263b74b2556
BLAKE2b-256 6de28f2f8bbbf92bdf9f617c40be280a8fac08866432cb80ccd707fe9f67780d

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu13-0.14.2-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 fd54aaff590fc42f32aae4cd41d6e60258f3de531f68e024e65c490d80b1aa9c
MD5 3c7fb7a7bcd02001088883701863822f
BLAKE2b-256 82e889afaacffa2bd1e33d7358956c0187df8a6fb231537f69e7c1961e3d9e27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b3c9f8235296bf4e7139de702456ef95a05a96ca3d2188ac964c77f1d2605b6
MD5 094f26d5a698164f87c2a13c2f41c143
BLAKE2b-256 4980fc0923430f37f92eef4509b1a67f457ba1dc04c3d48d4e5d7b06ea81b02e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2551ff1ba398bd52e3161b97a69de906a05d1b6c73cb7d93b4b606bd0d1b1327
MD5 dac3addd7185692e488b7032a14e05cd
BLAKE2b-256 7f38c28b2d0cdbc719e780e0dc538f4c7e8954a6fd711ab169d841731f9cd83d

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu13-0.14.2-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ac4a235c0abaafd8e416e28571d1d3d0e2c83f5d153972107acf117e243263e1
MD5 a039dc58ad945b361bc2a4cd0845dd2a
BLAKE2b-256 65aeee34abd1e1f44d5c071ee3db7c53447bf6431b220e865449d3c71134533f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 13bc31136b34599522c80884c263b6953e343b529629b8dcfbd3e5a9032e7d8e
MD5 939330bc19f46190559b90470e4fe0e5
BLAKE2b-256 87ab8d0d77ba77609a902bd72f5b75e928605d7e8addcfb24bd4fc1c19ac97cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aa2ba9bcb0644f87d6c8df2f0a26ea82ab578129a8107f8b4b9dc9dd4176159a
MD5 d5d1c33846b5e5620e42d3fb7c1e4f86
BLAKE2b-256 a5e521daebcd95ac31b45c735e7c41afe9c7dbb847050beb9ec4f2309b66a2a1

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu13-0.14.2-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu13-0.14.2-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 007e86f76caf536a34a958d7c2f7bc158b0a88db6c56528ee9e59c69389210da
MD5 274192e530092dd05d688956a6bcc4f8
BLAKE2b-256 7e020486dfa8526e211c23f7a9ce21f81745b18369e12629baac54a83a01d821

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