cuQuantum Python

文档

请访问 NVIDIA cuQuantum Python 文档

有关安装 *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+

  • packaging

  • setuptools 61.0.0+

  • wheel 0.34.0+

除了 CUDA 和 Python,其余构建时依赖项都由新的基于 PEP-517 的构建系统处理(见下面的步骤 7)。

要从源代码编译和安装 cuQuantum Python,请按照以下步骤操作

  1. 克隆 NVIDIA/cuQuantum 仓库:`git clone https://github.com/NVIDIA/cuQuantum`

  2. 设置 `CUDA_PATH` 以指向您的 CUDA 安装

  3. [可选] 设置 `CUQUANTUM_ROOT` 以指向您的 cuQuantum 安装

  4. [可选] 设置 `CUTENSOR_ROOT` 以指向您的 cuTENSOR 安装

  5. [可选] 确保 cuQuantum 和 cuTENSOR 在您的 `LD_LIBRARY_PATH` 中可见

  6. 切换到包含 Python 实现的目录:`cd cuQuantum/python`

  7. 构建和安装

    • 如果您跳过上面的步骤 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