NVIDIA CUDA-Q is a platform for building quantum-classical computing applications. It is an open-source programming model for heterogeneous computing such as quantum processor units (QPUs), GPUs, and CPUs.

CUDA-Q accelerates workflows such as quantum simulation, quantum machine learning, quantum chemistry, and more. It optimizes these workflows as part of its compiler toolchain and uses the power of GPUs to accelerate them. CUDA-Q offers kernel-based programming and can be used with Python or C++.

## What’s new in CUDA-Q 0.5?

The latest release, CUDA-Q 0.5, introduces more QPUs backends, more simulators, and other improvements. For more information, see the CUDA-Q 0.5 release notes.

### Core features

Quantum error correction and other forms of hybrid quantum-classical computation often require nontrivial control flow and tightly interwoven primitives. CUDA-Q now supports running adaptive quantum kernels: a specification from the QIR alliance and a key step towards truly integrated quantum-classical programming.

Fermionic and Givens rotation and fermionic SWAP kernels are used in quantum chemistry simulations to perform operations on fermionic systems. The Givens rotation kernel is used to perform rotations on qubits, while the fermionic SWAP kernel is used to swap the states of two qubits. The addition of these kernels to the CUDA-Q makes it easier for researchers to perform quantum chemistry simulations and develop new quantum algorithms for chemistry applications.

The Pauli matrices are a set of matrices that are commonly used in quantum mechanics to represent quantum states and operators. The added support of exponentials of Pauli matrices in CUDA-Q is useful for researchers performing quantum simulations of physical systems, such as molecules, and for developing quantum algorithms for optimization problems.

CUDA-Q now has improved support for `std::vector`

and (C style) arrays, as well as support for execution of for– and while-loops of known lengths on quantum hardware backends. These features are useful for developing quantum algorithms that require complex data structures and control flow.

### IQM and Oxford Quantum Circuits QPU backends

A QPU backend is a hardware computing device that acts as a quantum processing unit and can run quantum workloads. CUDA-Q is integrated with several quantum hardware providers’ QPUs.

IQM and Oxford Quantum Circuits (OQC) quantum computers are now supported as QPU backends in CUDA-Q. This is a great addition to the already supported quantum computers from Quantinuum and IonQ, which enable you to run CUDA-Q code on a variety of different quantum technologies available today.

For more information about how to use the backends in either Python or C++, see the IQM or OQC documentation.

### Tensor network and matrix product state simulators

Tensor network-based simulators are suitable for large-scale simulation of certain classes of quantum circuits involving many qubits, beyond the memory limit of state vector-based simulators. Tensor network simulation is improved with this release and is accelerated with the cuQuantum library. For more information, see Tensor Network Simulators.

A matrix product state (MPS) simulator has been added to CUDA-Q in this release. MPS representation takes advantage of tensor network sparsity by using tensor decomposition techniques such as QR and SVD. This is an approximate simulator in nature and therefore can handle a large number of qubits and more gate depth for certain classes of quantum circuits on a relatively small memory footprint. For more information, see Matrix Product State Simulator.

## Getting started with CUDA-Q

The CUDA-Q Getting Started guide walks you through the setup steps so you can get started with Python and C++ examples that provide a quick learning path for CUDA-Q capabilities.

For more information about advanced use cases for quantum–classical applications, see the tutorials gallery. Finally, explore the code in the CUDA-Q open-source repository. This is where you can report issues and also make feature suggestions.