NVIDIA CUDA-Q(前身为 NVIDIA CUDA Quantum)是一个开源编程模型,旨在构建 量子加速超级计算,充分发挥 CPU、GPU 和 QPU 的计算能力。由于开发这些应用程序具有挑战性,需要一个易于使用的编码环境,能够提供强大的量子模拟能力,以有效评估和提高新算法的性能。
CUDA-Q 包括许多显著提高性能的新功能,使用户能够突破经典超级计算机上模拟的极限。这篇文章展示了 CUDA-Q 在量子模拟中的性能增强,并简要解释了这些改进。
提高性能
计算期望值是变分量子本征求解器(VQE)应用中的主要量子任务。您可以使用 observe
作用来确定两个小分子(C2H2 和 C2H4)的期望值。实验使用标准的 UCCSD 模拟,并使用 Python 进行编写。
对于每个版本(v0.6、v0.7、v0.7.1),我们测试了三个状态向量模拟器后端:nvidia
(单精度)、nvidia-fp64
(双倍精度)和nvidia-mgpu
(nvidia-fp64
具有栅极融合)。特别是,nvidia-mgpu
指定的门融合级别以前是硬编码为 6,现在则是 v0.7.1 中的可调参数。
Gate Fusion 是一种优化技术,将连续的量子门组合或合并为单个门,以降低总体计算成本并提高电路效率。组合的门的数量(门融合级别)对模拟性能具有显著影响,需要针对每个应用程序进行优化。您现在可以调整 CUDA_MGPU_FUSE
参数 并指定不同于 v0.7.1 默认值 4 的自定义门融合级别,以满足特定应用程序的需求。
图 1 显示了使用 NVIDIA H100 GPU 的每个模拟器和 CUDA-Q 版本的运行时。两个没有门融合的模拟器经历了从 v0.6 到 v0.7.1 的至少 2 倍的加速。
这个nvidia-mgpu-6
v0.7.1 模拟器的结果分别比 24 和 28 量子位实验的 v0.6 结果快 3.2 倍和 4.7 倍。通过调整门融合级别,性能分别提高了 12 倍和 1.2 倍,这表明该参数的重要性和系统依赖性。
这个nvidia-mgpu
模拟器将成为新的默认版本,从 v0.8 开始(尚未发布),提供最佳的整体性能,并使多个 GPU 能够立即用于许多量子位模拟任务。
加速代码
CUDA-Q v0.7 包括许多增强功能,这些功能改进了编译速度,并缩短了连续编译所需的时间,特别是在 observe
调用中(图 2)。
首先,改进了实时(JIT)编译路径,以更有效地编译内核。以前,此过程按电路中门的数量进行二次缩放,但被简化为线性缩放。
其次,对 JIT 更改检测的哈希改进减少了检查是否有任何代码因环境更改而需要重新编译所需的时间。这实际上消除了每次检查所需的时间,例如在observe
呼叫中。
最后,v0.6 将对每个调用执行所有日志处理,而不管指定的日志级别如何。v0.7 中对此进行了更改,仅对指定的日志级别执行必要的处理。
除了 Gate Fusion 之外,0.7.1 版本还引入了自动汉密尔顿批处理(图 3),这进一步减少了 observe
调用次数,通过在单个 GPU 上启用批量 Hamiltonian 求值,从而提高了计算效率。
为了进一步提高性能,未来的版本将包括对状态准备、泡利算子的处理和酉合成的更多增强。
开始使用 CUDA-Q
目前和预期的 CUDA-Q 改进为开发人员提供了一个更高性能的平台来构建量子加速超级计算应用程序。今天,不仅开发速度加快,而且在 CUDA-Q 上构建的应用程序可以部署在实际量子计算所需的混合 CPU、GPU 和 QPU 环境中。
通过 CUDA-Q 快速入门指南,您可以快速设置环境。然后,基础 部分将指导您完成第一次编写 CUDA-Q 应用,并探索 代码示例 和 应用,以获得量子应用程序开发的灵感。最后,如果您想提供反馈和建议,请访问 NVIDIA/cuda-quantum GitHub 回购。