模拟/建模/设计

使用 NVIDIA cuQuantum 实现基于矩阵产品状态的量子电路仿真

量子电路模拟 是设计量子就绪算法的最佳方法,因此您可以在强大的量子计算机可用时立即利用它们。

NVIDIA cuQuantum 是一个 SDK ,它使您能够利用不同的方式来执行量子电路模拟。 cuStateVec ,一个为状态向量量子模拟器构建的高性能库,依赖于在 GPU 存储器中保存量子状态向量。它的内存需求按 O ( 2 ^ N )进行缩放, N 表示量子位的数量。当你开始扩展到超过 40 个量子位时,这可能会非常昂贵。

为了减轻使用状态向量方法的量子电路模拟的存储器需求的指数缩放,可以使用张量网络作为替代方案。你可以通过用增加的计算换取减少的空间来模拟更大的量子电路。

cuTensorNet 使您可以利用 NVIDIA GPU 上的张量网络方法,与其他替代方案相比,提供了更高的可扩展性和更好的性能。尽管最近在加速张量收缩路径发现方面取得了进展,但随着电路尺寸在深度或宽度上的增加,精确张量网络收缩的成本仍然会变得难以控制。

一种系统地保持张量网络模拟所需资源可控制的策略是使用近似算法。本文详细介绍了 cuTensorNet v2.0.0 中支持近似张量网络模拟的新功能。

cuTensorNet 的进一步尺度近似张量网络模拟

从 2.0.0 版开始, cuTensorNet 库提供单个 GPU 计算原语,以加速近似张量网络模拟。由于感兴趣的量子问题在大小和复杂度上都会有很大的差异,研究人员开发了高度定制的近似张量网络算法,以解决各种可能性。

为了实现与这些框架和库的轻松集成, cuTensorNet 提供了一组 API 来涵盖以下常见用例:

  • 张量 QR
  • 张量 SVD
  • 闸门拆分

这些原语使您能够加速和缩放不同类型的量子电路模拟器。利用这些方法模拟量子计算机的一种常见方法是矩阵积态( MPS ),也称为 tensor train

分解

矩阵的 QR 分解可以通过将张量的多个维度合并为行维度,将其余维度合并为列维度,从而推广到高维张量。生成的 Q 和 R 矩阵可以进一步展开为张量,从而将输入张量有效地拆分为两个操作数。

张量 QR

我们介绍了 cutensornet TensorQR ,这是一个 API ,主要用于移动近似张量网络中的正交中心,包括 MPS 、投影纠缠对状态( PEPS )等。

对于基准测试,我们使用 NVIDIA A100 80GB GPU 上的 QR ,检查了分解第 3 级 MPS 张量的性能,形状(D, 2, D),其中 D 表示 MPS 的键尺寸。对于 cuTensorNet 和基于 D 的等效( CPU )实现,分解的执行时间作为 D 的函数进行测量,以进行比较。所有 CPU 性能结果均使用相同的 EPYC 7742 CPU 完成,使用所有芯。

Tensor QR decomposition execution time (measured in milleseconds) running on an NVIDIA A100 80GB GPU compared to a standard NumPy implementation running on an AMD EPYC 7742 CPU. When the bond dimension is 64 or greater, you can see that the cuTensorNet implementation demonstrates superior scaling characteristics and is faster. At scale (bond dimensions of 4096 or greater), the performance difference is almost two orders of magnitude.
图 1 。与 AMD EPYC 7742 CPU 上的标准 NumPy 实现相比, NVIDIA A100 80GB GPU 上 cuTensorNet Tensor QR 分解的性能

图 1 显示,当使用大于 32 的键维度时, cuTensorNet 比基于 CPU 的 NumPy 实现产生了数量级的加速。在 8192 的键维度上,您可以看到 CPU 实现的加速高达 96 倍。

张量 SVD

张量 SVD 的定义和用途与前面描述的张量 QR 相似。分解得到的奇异值包含有关量子系统的重要信息。例如,量子态的奇异值与基础量子电路的冯·诺依曼纠缠熵直接相关。对于弱到中等纠缠的量子系统,可以截断奇异值的尾部,以降低计算成本,同时保持模拟的高精度。

张量 SVD 性能的测量方法与张量 QR 相同。我们发现,当模拟维度大于 128 的键时, cuTensorNet 实现提供了性能优势。当放大到 8192 维时,我们看到了 7.5 倍的加速。

Tensor SVD execution time, (measured in milliseconds), as a function of bond dimension. cuTensorNet was executed on an NVIDIA A100 80GB GPU and is compared to a NumPy implementation running on an EPYC 7742 CPU. Users see better scaling, with cuTensorNet outperforming for bond dimensions greater than 64 and up to 7.5x speedup at scale.
图 2 :与 AMD EPYC 7742 CPU 上的标准 NumPy 实现相比, cuTensorNet 张量 SVD NVIDIA A100 80GB GPU 的性能。

将量子电路转换为 MPS 表示

在量子电路模型中,当一个 2 量子比特的门操作数应用于一对连接的张量时,你可以执行一系列操作,将门吸收到两个连接的张量上,同时保持固定的拓扑结构。

这种类型的操作形成了构建量子电路的 MPS 或 PEPS 表示的基础。在执行张量 SVD 时,可以将截断作为过程的一部分,以保持计算成本可控制。例如,通过在所有 2 量子比特门上迭代使用该技术,可以实现量子电路的近似 MPS 模拟(图 3 )。

Tensor networks can be simplified by absorbing 2-qubit gates onto the connected tensors via the Gate Split function. This reduces the complexity of the network connectivity and is the cornerstone of value behind MPS quantum circuit simulations. Users can leverage truncated tensor SVD to further reduce the network size and computational cost. After iterating through this process many times, a user is left with an MPS which can be contracted to simulate quantum circuit operations.
图 3 。将 2 量子比特门应用于张量对的过程。通过迭代这个过程,生成 MPS ,然后可以收缩 MPS 来模拟量子电路。

张量网络可以通过门分裂函数将 2 量子比特门吸收到连接的张量上来简化。通过迭代这个过程,生成 MPS ,然后可以收缩 MPS 以模拟量子电路。 这降低了网络连接的复杂性,是 MPS 量子电路仿真的价值基石。您可以利用截断张量 SVD 进一步降低网络大小和计算成本。在多次迭代这个过程之后,您将得到一个 MPS ,它可以收缩以模拟量子电路操作。

闸门分裂

使用 cuTensorNet 使用近似张量网络方法实现量子电路模拟所需的最后一个组件是 2.0.0 版中引入的 gate split 功能。该团队提供了一些示例,展示了如何在 cuQuantum GitHub repo 中最好地单独使用这些组件,此外还有一个 具体样本 ,它使用这些组件来实现 MPS 量子模拟。

该函数的性能通过检查构建最终 MPS 的最后一个也是成本最高的步骤的执行时间作为结合维度的函数来测试。当超出 128 的键尺寸时,您可以开始看到利用 GPU 进行 MPS 模拟的优势。

在 8192 的键合维度下,与同一数据中心级别 CPU 上的标准 NumPy 实现相比, NVIDIA A100 80GB GPU 上的 cuTensorNet 的加速约为 7.8 倍。

cuTensorNet scales better and for bond dimensions greater than 128 you see a clear value add with a greater than 7.8x speedup for bond dimensions of 8192.
图 4 。 MPS Gate Split 性能在 NVIDIA A100 80GB GPU 上以执行时间为函数测量,并与在 EPYC 7742 数据中心级 CPU 上运行的 NumPy 进行比较

开始使用 cuTensorNet 进行量子模拟

cuTensorNet v2.0.0 现已推出。您可以通过 conda-forgepipcuQuantum installers 访问它。要快速开始新功能,请参见 Approximation Setting: SVD Options 。有关详细指南,请参阅 code samples 。要请求功能或报告错误,请联系 GitHub 上的 NVIDIA/cuQuantum

有关详细信息,请参阅以下内容 量子计算资源:

 

Tags