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

= 12.0. 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 on x86_64 platforms simply requires pip install cuda-quantum-cu12. 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.

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, or if you are using aarch64/arm64 processors, 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=12.0.0 # set this variable to version >= 12.0
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 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-cu12
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_cu12-0.9.1-cp312-cp312-manylinux_2_28_x86_64.whl (117.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.9.1-cp312-cp312-manylinux_2_28_aarch64.whl (112.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.9.1-cp311-cp311-manylinux_2_28_x86_64.whl (117.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.9.1-cp311-cp311-manylinux_2_28_aarch64.whl (112.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_x86_64.whl (117.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_aarch64.whl (112.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f00f474c7e68f6eb4dad9b0120a2414cc23bb13291ddaea62ea292a38a10c731
MD5 3aeaf5e736131260bb8be7e0bce9577a
BLAKE2b-256 4d78f3fc47bd61ef88dec7d3b1b226d388f7ccec20b6c8b72e0c53c6b22cda68

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca00ad17373abd57f2707544d0f49976635124e1d4fff2bf9feca76041477c98
MD5 a2f6065fed6a74d0503cf23fdfca21ae
BLAKE2b-256 24e471514ca9ad56fe8ca6f2cddc58c920a4b207dff1ae9475119880589fb5bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 afb4892b42903fec8fe444b689e1dec2b5ff96c9086b9e32d6a851db4ea6ead3
MD5 0c16149fccb28336627f675e1921c6a8
BLAKE2b-256 fd8e21dad8b5615233869a510f2762f1d17f263d5eab46b3b2460ed4416bc31e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6a8d8c7e11d2074e51402c60138a5de5a68076e127f8764ff5f3f1c7ae96b92b
MD5 eb7bc9779035e2406d75f92149d41200
BLAKE2b-256 6fde7bbbab790a35f0e35c054e20d8bd2cb4d43440bca04e27f77d2fbdcbdb6f

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee478bc3d7935d607e5bc767d2cf50718284b1c03fdaf6f914a38c0d4c0f66ad
MD5 9f2328af087880998d6316e43f17eef2
BLAKE2b-256 8ac0fe6e7f7b5d4640d902b7f96deb9a040ba39c0225ecddc0471d92af9d07a4

See more details on using hashes here.

File details

Details for the file cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for cuda_quantum_cu12-0.9.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 010d90d203a214696a1c8ff459f5afd07beccb3296a0d95f1222b3c674f53d0c
MD5 36a9759b5c0e1cf25e2eb6558cdb1d65
BLAKE2b-256 78901aca76d212ce1248080abb73756594e0d636fda1d115940759e644b98f25

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