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
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
Expected Results¶
Successful execution
Check output:
Expected output: