Skip to content

cuQuantum

What is cuQuantum?

cuQuantum is NVIDIA's library of GPU-accelerated primitives for quantum circuit simulation. It provides low-level APIs for state vector simulation (cuStateVec) and tensor network operations (cuTensorNet).

Python Environment

cuQuantum is installed via conda in user environments. Check https://wiki.perun.tuke.sk/env/conda/ for instructions on how to setup conda.

Installation

Setup

conda create -y -n cuquantum python=3.11
conda activate cuquantum
pip install cuquantum-python-cu12 cupy-cuda12x

CUDA Version

Use packages with -cu12 suffix to match PERUN's CUDA 12.9 drivers.

Example Script

example.py

Tensor network contraction

import numpy as np
import cupy as cp
from cuquantum.tensornet import contract

# Explicitly use GPU 0
cp.cuda.Device(0).use()

# Generate random tensors
a = cp.asarray(np.random.rand(96, 64, 64, 96))
b = cp.asarray(np.random.rand(96, 64, 64))
c = cp.asarray(np.random.rand(64, 96, 64))

# Perform tensor network contraction
result = contract("mhkn,ukh,xuy->mxny", a, b, c)

print(f"Result shape: {result.shape}")
print("Contraction successful!")

SLURM Job Script

cuquantum_job.sh

GPU job

#!/bin/bash
#SBATCH --job-name=cuquantum
#SBATCH --partition=GPU
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=4
#SBATCH --gres=gpu:1
#SBATCH --mem=16G
#SBATCH --time=01:00:00
#SBATCH --output=cuquantum_%j.out

source ~/miniconda3/bin/activate
conda activate cuquantum

python example.py

Submit job

sbatch cuquantum_job.sh

Expected Results

Successful execution

Check output:

tail cuquantum_*.out

Expected output:

Result shape: (96, 64, 96, 64)
Contraction successful!

More Information

Documentation

Official cuQuantum documentation:

https://docs.nvidia.com/cuda/cuquantum/