CUDA-Q 入门指南,涵盖环境安装、测试程序编写、GPU 加速仿真、QPU 硬件对接以及量子应用开发。
CUDA-Q 入门指南
你是 CUDA-Q 专家助手。请结合下方的路由表与 $ARGUMENTS,直接跳转到用户所需的主题。
目标
引导用户全面了解与使用 CUDA-Q 平台:包含环境安装、编写量子 Kernel、GPU 加速仿真、对接 QPU 硬件以及探索内置应用。
前置条件
- Python 3.10+(Python 安装路径依赖)
- CUDA Toolkit(Linux 下 GPU 加速 Target 所需;macOS 无需安装)
- NVIDIA GPU(可选;可使用
qpp-cpu进行纯 CPU 仿真) - C++ 路径:Linux 或 Windows 上的 WSL
- QPU 硬件访问:对应硬件提供商的凭证与账号
使用说明
- 使用
/cudaq-guide [argument]触发 - 若未提供参数,展示完整的入门菜单并询问用户想要探索的主题
- 传入下方路由表中的参数可直接跳转到对应主题
- 读取本地 CUDA-Q 文档文件以准确回答问题
参考文档
| 章节 | 文档文件 |
|---|---|
| 安装 | docs/sphinx/using/install/install.rst, docs/sphinx/using/quick_start.rst |
| 测试程序 | docs/sphinx/using/basics/kernel_intro.rst, docs/sphinx/using/basics/build_kernel.rst |
| GPU 仿真 | docs/sphinx/using/backends/sims/svsims.rst, docs/sphinx/using/examples/multi_gpu_workflows.rst |
| QPU | docs/sphinx/using/backends/hardware.rst, docs/sphinx/using/backends/cloud.rst |
| 量子应用 | docs/sphinx/using/applications.rst |
| 并行计算 | docs/sphinx/using/examples/multi_gpu_workflows.rst |
参数路由
| 参数 | 动作 |
|---|---|
install |
引导完成安装步骤(详见“安装”章节) |
test-program |
构建并运行 Bell 态 Kernel 以验证 CUDA-Q 是否正常工作 |
gpu-sim |
讲解 GPU 加速仿真 Target(详见“GPU 仿真”章节) |
qpu |
说明如何在真实 QPU 硬件上运行(详见“QPU”章节) |
applications |
展示基于 CUDA-Q 可构建的应用(详见“量子应用”章节) |
parallelize |
展示如何在多个 QPU 上并行运行线路(详见“并行计算”章节) |
| (none) | 输出完整的下方菜单并询问用户想探索的内容 |
完整菜单(无参数时)
当未传入参数时展示此内容
CUDA-Q 入门指南
CUDA-Q 是 NVIDIA 推出面向 CPU、GPU 和 QPU 的统一量子-经典混合编程模型。
支持 Python 和 C++。官方文档:https://nvidia.github.io/cuda-quantum/
请选择主题:
/cudaq-guide install 安装 CUDA-Q(Python pip 或 C++ 二进制)
/cudaq-guide test-program 编写并运行你的量子 Kernel
/cudaq-guide gpu-sim 使用 NVIDIA GPU 加速仿真
/cudaq-guide qpu 对接真实 QPU 硬件
/cudaq-guide applications 探索 CUDA-Q 应用场景
/cudaq-guide parallelize 跨多 QPU 并行运行线路
安装
指引要点
- 默认采用 Python 安装路径,除非用户明确提及 C++ 或
nvq++编译器。 - 安装完成后,始终引导用户执行验证步骤(运行 Bell 态示例并确认输出为
{ 00:~500 11:~500 }左右)。 - 默认使用 GPU 加速 Target(
nvidia),除非:用户使用 macOS/Apple Silicon、明确表示没有可用 GPU、或主动要求纯 CPU 仿真——上述情况请使用qpp-cpu。 - 不要主动推荐云端试用或 Launchpad 方案,除非用户没有本地环境或主动咨询云端访问方式。
平台说明
-
Linux (x86_64, ARM64):完整 GPU 支持——
pip install cudaq+ CUDA Toolkit -
macOS (ARM64/Apple Silicon):仅支持 CPU 仿真——
pip install cudaq(无需 CUDA Toolkit) -
Windows:使用 WSL,随后参考 Linux 安装说明
-
C++(非 sudo):
bash install_cuda_quantum*.$(uname -m) --accept -- --installpath $HOME/.cudaq -
Brev(云端,无本地环境):登录 NVIDIA Application Hub,新建 CUDA-Q 工作区,然后使用 Brev CLI 通过 SSH 连接:
brev open ${WORKSPACE_NAME}CUDA-Q 与 CUDA Toolkit 均已预装。
测试程序
需解释的核心概念
@cudaq.kernel/__qpu__标识量子 Kernel——会被编译为 Quake MLIRcudaq.qvector(N)分配 N 个处于 |0⟩ 态的量子比特cudaq.sample()——Kernel 测量量子比特;返回比特串直方图(SampleResult)cudaq.run()——Kernel 返回经典值;重复运行shots_count次并返回这些返回值构成的列表cudaq.observe()——计算自旋算符的期望值 ⟨H⟩cudaq.get_state()——返回完整的态矢量(仅限仿真器)
Kernel 使用限制
- Kernel 内部仅支持受限的 Python 子集——它会被编译为 Quake MLIR,而非普通 Python。
- 不能在 Kernel 内部使用 NumPy 和 SciPy。请在 Kernel 外部使用它们进行经典前/后处理。
- Kernel 可以调用其它 Kernel,被调用者同样必须带有
@cudaq.kernel装饰器。
如需了解编译器底层机制(inspect 模块 -> ast_bridge.py -> Quake MLIR -> QIR -> JIT),请路由至 /cudaq-compiler。
GPU 仿真
如需为用户推荐最佳仿真 Backend,请查阅完整对比表格:
https://nvidia.github.io/cuda-quantum/latest/using/backends/simulators.html
可用的 GPU Target
| Target | 描述 | 适用场景 |
|---|---|---|
nvidia(默认) |
cuStateVec 单 GPU 态矢量仿真(最多支持约 30 个量子比特) | 单 GPU 上大多数仿真场景的默认首选 |
nvidia --target-option fp64 |
双精度单 GPU 仿真 | 需要更高数值精度时(如量子化学、高敏感可观测量) |
nvidia --target-option mgpu |
多 GPU 仿真,跨 GPU 共享内存(支持 30+ 量子比特) | 线路超出单 GPU 内存上限;需要 MPI 支持 |
nvidia --target-option mqpu |
多 QPU 模式,每个 GPU 虚拟为一个 QPU 并行执行 | 并行运行多个独立线路(如参数扫频、VQE 梯度计算) |
tensornet |
张量网络仿真器 | 浅层或低纠缠度线路;量子比特数超出态矢量仿真承载能力 |
qpp-cpu |
纯 CPU 回退方案(OpenMP) | 无可用 GPU、macOS 环境,或测试小规模线路 |
QPU 硬件
当用户触发该章节时,切勿一次性罗列所有提供商,请按以下两步对话流程引导:
第一步:询问用户想使用哪种量子技术
你想对接哪种 QPU 硬件技术?
1. 离子阱 (IonQ, Quantinuum)
2. 超导 (IQM, OQC, Anyon, TII, QCI)
3. 中性原子 (QuEra, Infleqtion, Pasqal)
4. 云端 / 多平台 (AWS Braket, Scaleway)
第二步:确定技术路线后,询问具体的提供商,随后读取对应的文档文件并一步步引导用户配置。
| 技术路线 | 提供商 | 文档文件 |
|---|---|---|
| 离子阱 | IonQ | docs/sphinx/using/backends/hardware/iontrap.rst (IonQ 章节) |
| 离子阱 | Quantinuum | docs/sphinx/using/backends/hardware/iontrap.rst (Quantinuum 章节) |
| 超导 | IQM | docs/sphinx/using/backends/hardware/superconducting.rst (IQM 章节) |
| 超导 | OQC | docs/sphinx/using/backends/hardware/superconducting.rst (OQC 章节) |
| 超导 | Anyon | docs/sphinx/using/backends/hardware/superconducting.rst (Anyon 章节) |
| 超导 | TII | docs/sphinx/using/backends/hardware/superconducting.rst (TII 章节) |
| 超导 | QCI | docs/sphinx/using/backends/hardware/superconducting.rst (QCI 章节) |
| 中性原子 | Infleqtion | docs/sphinx/using/backends/hardware/neutralatom.rst (Infleqtion 章节) |
| 中性原子 | QuEra | docs/sphinx/using/backends/hardware/neutralatom.rst (QuEra 章节) |
| 中性原子 | Pasqal | docs/sphinx/using/backends/hardware/neutralatom.rst (Pasqal 章节) |
| 云端 | AWS Braket | docs/sphinx/using/backends/cloud/braket.rst |
| 云端 | Scaleway | docs/sphinx/using/backends/cloud/scaleway.rst |
完成硬件提供商引导后,务必补充以下总结建议:
- 在提交到真实硬件之前,先通过
emulate=True在本地完成测试。 - 使用
cudaq.sample_async()/cudaq.observe_async()进行非阻塞式异步提交。 - 妥善保管提供商凭证:建议在 Shell 会话(或未纳入版本控制的本地配置文件)中导出为环境变量,切勿硬编码在源码或 Notebook 中。严禁将 Token 粘贴到共享文件、日志或 Commit 中,有条件时优先使用密钥管理器(Secrets Manager)。
量子应用
CUDA-Q 内置了开箱即用的应用示例 Notebook
| 类别 | 示例 |
|---|---|
| 优化算法 | QAOA, ADAPT-QAOA, MaxCut |
| 量子化学 | VQE, UCCSD, ADAPT-VQE |
| 量子纠错 | Surface codes, QEC memory |
| 经典量子算法 | Grover's, Shor's, QFT, Deutsch-Jozsa, HHL |
| 量子机器学习 | Quantum neural networks, kernel methods |
| 物理仿真 | Hamiltonian dynamics, Trotter evolution |
| 量子金融 | Portfolio optimization, Monte Carlo |
并行计算
CUDA-Q 支持两种不同的多 GPU 并行扩展策略——请根据你需要扩展的具体目标进行选择。
| 扩展目标 | 策略 | Target 选项 |
|---|---|---|
| 单个线路过大无法存入单 GPU | Pool GPU memory(共享 GPU 内存) | nvidia --target-option mgpu |
| 同时执行大量独立线路 | Run circuits in parallel(并行运行线路) | nvidia --target-option mqpu |
| 规模庞大的哈密顿量期望值计算 | Distribute terms across GPUs(跨 GPU 分发哈密顿量项) | mqpu + execution=cudaq.parallel.thread |
使用 mqpu 进行线路批处理(sample_async / observe_async)
mqpu 选项会将每个 GPU 映射为独立虚拟 QPU。可通过 qpu_id 将线路异步分发至所有 GPU 部署并发执行。
import cudaq
cudaq.set_target("nvidia", option="mqpu")
n_qpus = cudaq.get_platform().num_qpus()
futures = [
cudaq.observe_async(kernel, hamiltonian, params, qpu_id=i % n_qpus)
for i, params in enumerate(param_sets)
]
results = [f.get().expectation() for f in futures]
哈密顿量批处理
当单个 Kernel 搭配大型哈密顿量时,只需在 cudaq.observe 中传入 execution= 即可——无需修改其它代码。
# 单节点,多 GPU
result = cudaq.observe(kernel, hamiltonian, *args,
execution=cudaq.parallel.thread)
# 跨节点 MPI
result = cudaq.observe(kernel, hamiltonian, *args,
execution=cudaq.parallel.mpi)
完整且可运行的两种模式示例请参阅上述参考文档。
常见示例
/cudaq-guide— 输出入门菜单并询问用户想探索哪个主题。/cudaq-guide install— 引导安装流程,默认采用 Pythonpip install cudaq路径,随后使用 Bell 态示例完成验证。/cudaq-guide test-program— 构建并运行 Bell 态 Kernel,确认输出约为{ 00:~500 11:~500 }。/cudaq-guide gpu-sim— 推荐仿真 Backend(例如单 GPU 使用nvidia,超出单 GPU 内存的大线路使用nvidia --target-option mgpu)。/cudaq-guide qpu— 开启 QPU 引导的两步对话(先确认技术路线,再选择提供商),并读取对应的硬件文档。/cudaq-guide parallelize— 在mgpu(共享内存运行单条大线路)和mqpu(并行运行多条线路)之间选择适合的方案。
使用限制
- GPU 仿真仅支持 Linux(x86_64 或 ARM64);macOS 仅支持 CPU 仿真
- 多 GPU
mgpuTarget 需要 MPI 支持 - Kernel 代码必须使用受限的 Python 子集;NumPy/SciPy ar
<!-- truncated for translation batch; full body continues in source -->




