cuQuantum Python¶
从源代码构建和安装 cuQuantum Python¶
要求¶
cuQuantum Python 包的构建时依赖项包括
CUDA Toolkit 11.x 或 12.x
cuStateVec 1.7.0+
cuTensorNet 2.6.0+
cuDensityMat >=0.0.5, <0.1.0
Python 3.10+
Cython >=0.29.22,<3
pip 21.3.1+
setuptools 61.0.0+
wheel 0.34.0+
除了 CUDA 和 Python,其余构建时依赖项都由新的基于 PEP-517 的构建系统处理(见下面的步骤 7)。
要从源代码编译和安装 cuQuantum Python,请按照以下步骤操作
克隆 NVIDIA/cuQuantum 仓库:`
git clone https://github.com/NVIDIA/cuQuantum
`设置 `
CUDA_PATH
` 以指向您的 CUDA 安装[可选] 设置 `
CUQUANTUM_ROOT
` 以指向您的 cuQuantum 安装[可选] 设置 `
CUTENSOR_ROOT
` 以指向您的 cuTENSOR 安装[可选] 确保 cuQuantum 和 cuTENSOR 在您的 `
LD_LIBRARY_PATH
` 中可见切换到包含 Python 实现的目录:`
cd cuQuantum/python
`构建和安装
如果您跳过上面的步骤 3-5,请运行 `
pip install .
`否则运行 `
pip install -v --no-deps --no-build-isolation .
` (高级)
注释
对于步骤 7,如果您为了测试/开发目的从源代码构建,您可能需要在最后一个句点前插入 `
-e
` 标志(所以 `pip ... .
` 变成 `pip ... -e .
`)`
-e
`: 使用“可编辑”(就地)模式`
-v
`: 启用更详细的输出`
--no-deps
`: 避免安装*运行时*依赖项`
--no-build-isolation
`: 重用当前的 Python 环境,而不是创建一个新的环境来构建包(这避免了安装任何*构建时*依赖项)
作为设置 `
CUQUANTUM_ROOT
` 的替代方法,可以分别设置 `CUSTATEVEC_ROOT
`、`CUTENSORNET_ROOT
` 和 `CUDENSITYMAT_ROOT
` 以指向 cuStateVec、cuTensorNet 和 cuDensityMat 库。如果定义了后三个环境变量,则它们优先。请确保您为 CUDA 11 或 12 使用一致的二进制文件和包。混合搭配将导致未定义的行为。
运行¶
要求¶
cuQuantum Python 包的运行时依赖项包括
具有计算能力 7.0+ 的 NVIDIA GPU
驱动程序:Linux (CUDA 11 为 450.80.02+,CUDA 12 为 525.60.13+)
CUDA Toolkit 11.x 或 12.x
cuStateVec 1.7.0+
cuTensorNet 2.6.0+
cuDensityMat >=0.0.5, <0.1.0
Python 3.10+
NumPy v1.21+
CuPy v13.0.0+(请参阅 安装指南)
PyTorch v1.10+(可选,请参阅 安装指南)
Qiskit v0.24.0+(可选,请参阅 安装指南)
Cirq v0.6.0+(可选,请参阅 安装指南)
mpi4py v3.1.0+(可选,请参阅 安装指南)
如果您从 conda-forge 安装所有内容,则所有必需的依赖项都为您处理(驱动程序除外)。
如果您安装 pip wheels,CuPy、cuTENSOR 和 cuQuantum(但不包括 CUDA Toolkit 或驱动程序,请确保 CUDA 库通过您的 `LD_LIBRARY_PATH
` 可见)会为您安装。
如果您从源代码构建 cuQuantum Python,请确保将 CUDA、cuQuantum 和 cuTENSOR 库的路径添加到您的 `LD_LIBRARY_PATH
` 环境变量中,并安装了兼容的 CuPy。
已知问题
如果系统有多个 cuTENSOR 副本,其中一个安装在默认系统路径中,则 Python 运行时可能会拾取它,即使 cuQuantum Python 链接到安装在其他位置的另一个副本,也可能导致版本不匹配错误。正确的解决方法是从系统路径中删除 cuTENSOR,以确保正确副本的可见性。**不要尝试**使用 `
LD_PRELOAD
` 覆盖它——这可能会导致难以调试的行为!在某些环境中,如果安装了 PyTorch,`
import cuquantum
` 可能会失败(出现段错误)。目前正在调查中,临时解决方法是在导入 `cuquantum
` 之前导入 `torch
`。请确保您为 CUDA 11 或 12 使用一致的二进制文件和包。混合搭配将导致未定义的行为。
示例¶
用于演示低级和高级 Python API 用法的示例在 `samples
` 目录中提供。低级 API 示例是 C 语言编写的相应示例的 1:1 翻译。高级 API 示例演示了 cuTensorNet 和 cuDensityMat 库在 Python 中的 pythonic 用法。
测试¶
如果安装了 pytest,在 Python 源代码根目录的命令提示符下键入 `pytest tests
` 将运行所有测试。如果未安装 `cffi
` 或未设置环境变量 `CUDA_PATH
`,则会跳过某些测试。
引用 cuQuantum¶
H. Bayraktar 等人,“cuQuantum SDK:用于加速量子科学的高性能库”,2023 年 IEEE 量子计算与工程国际会议 (QCE),美国华盛顿州贝尔维尤,2023 年,第 1050-1061 页,doi: 10.1109/QCE57702.2023.00119