0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

状态向量模拟和cuStateVec库的介绍

星星科技指导员 来源:NVIDIA 作者:NVIDIA 2022-04-08 14:39 次阅读

量子计算渴望为某些类型的经典难题提供更强大的计算能力和更快的结果。量子电路模拟对于理解量子计算和量子算法的发展至关重要。在量子电路中,量子器件由 N 量子位组成,通过对量子位应用一系列量子门和测量来执行计算。

从数学上来说, N 量子比特系统的量子态可以描述为一个复杂的 2 N – 维向量。在经典计算机上模拟量子电路最直观的方法是状态向量模拟,它将这个向量与其 2 N 复杂值直接存储在内存中。该电路通过将向量乘以一系列矩阵来执行,这些矩阵对应于构成该电路的门序列。

然而,随着状态向量的维数随着量子位的数量呈指数增长,完整描述状态的内存需求将这种方法限制在 30 – 50 量子位的电路中。基于张量网络的替代方法可以模拟更多的量子位,但通常在能够有效模拟的电路的深度和复杂性方面受到限制。

NVIDIA cuQuantum SDK 具有用于状态向量和张量网络方法的库。在本文中,我们将重点介绍状态向量模拟和 cuStateVec 库。有关张量网络方法库的更多信息,请参阅 利用 NVIDIA cuTensorNet 进行量子电路模拟 。

cuStateVec 图书馆

cuStateVec 库提供了单个 GPU 原语来加速状态向量模拟。由于状态向量方法是模拟量子电路的基础,大多数量子计算框架和库都包含自己的状态向量模拟器。为了便于与这些现有模拟器集成, cuStateVec 提供了一套 API ,以涵盖常见用例:

测量

门应用

期望值

采样器

状态向量运动

测量

一个量子位可以存在于两个态|0》和|1》的叠加中。当进行测量时,其中一个值被概率选择和观察,另一个值崩溃。 cuStateVec 测量 API 模拟量子位测量,并支持基于 Z 基产品的测量用例和批量单量子位测量。

门应用

量子电路有量子逻辑门来修改和准备量子态,以观察理想的结果。量子逻辑门用酉矩阵表示。 cuStateVec gate 应用程序 API 提供了将量子逻辑门应用于某些矩阵类型的功能,包括:

稠密的

斜线的

广义置换

泡利矩阵的矩阵指数

期望值

在量子力学中,计算算符和量子态的期望值。对于量子电路,我们还计算了给定电路和量子态的期望值。 cuStateVec 有一个 API ,可以用较小的内存占用计算期望值。

采样器

状态向量模拟在数值上将量子态保留在状态向量中。通过计算每个状态向量元素的概率,您可以有效地多次模拟多个量子位的测量,而不会破坏量子态。 cuStateVec sampler API 以较小的内存占用在 GPU 上执行采样。

状态向量运动

将状态向量放置在 GPU 上,以加速 GPU 的模拟。要在 CPU 上分析模拟结果,请将生成的状态向量复制到 CPU 。 cuStateVec 提供访问器 API 来代表用户执行此操作。在复制过程中,状态向量元素的顺序可以被重新安排,这样你就可以将量子位重新排序为所需的量子位顺序。

谷歌 Cirq / qsim 和 NVIDIA cuStateVec

宣布NVIDIA CuStEVEEC 文库集成的第一个项目是 Google’s qsim ,一个优化的模拟器,用于他们的量子计算框架, Cirq 。 Google Quantum 人工智能团队通过一个新的基于 cuStateVec 的 GPU 模拟后端扩展了 qsim ,以补充他们的 CPU 和 CUDA 模拟引擎。

使用 cuStateVec 为 Cirq 和 qsim 构建说明

要通过 Cirq 启用 cuStateVec ,请从源代码编译 qsim ,并安装 qsimcirq Python 包提供的 Cirq 绑定。

# Prerequisite:
# Download cuQuantum Beta2 from https://developer.nvidia.com/cuquantum-downloads # Extract cuQuantum Beta2 archive and set the path to CUQUANTUM_ROOT
$ tar -xf cuquantum-linux-x86_64-0.1.0.30-archive.tar.xz
$ export CUQUANTUM_ROOT=`pwd`/cuquantum-linux-x86_64-0.1.0.30-archive
$ ln -sf $CUQUANTUM_ROOT/lib $CUQUANTUM_ROOT/lib64
# Clone qsim repository from github and checkout v0.11.1 branch
$ git clone https://github.com/quantumlib/qsim.git
$ git checkout v0.11.1
# Build and install qsimcirq with cuStateVec
$ pip install .
# Install cirq
$ pip install cirq

在本例中,我们运行一个电路,创建格林伯格 – 霍恩 – 齐林格( GHZ )状态,并对实验结果进行采样。以下 Python 脚本通过调用三个不同的模拟器来获取|0…00>|1…11>中的振幅:

  • Cirq 内置模拟器
  • 基于 CPU 的模拟器共享
  • 使用 cuStateVec 加速拆分

我们启用了两个基于 CIRQS 和 77YC 的 CPU 插槽,这两个插槽分别用于基于 CPU 的 CPU 模拟器。对于 cuStateVec 加速模拟,我们使用单个 A100 GPU 。

import cirq
import qsimcirq
n_qubits = 32
qubits = cirq.LineQubit.range(n_qubits)
circuit = cirq.Circuit()
circuit.append(cirq.H(qubits[0]))
circuit.append(cirq.CNOT(qubits[idx], qubits[idx + 1]) \ for idx in range(n_qubits - 1))
# Cirqs = cirq.sim.Simulator()
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'cirq.sim : {result}')
# qsim(CPU)
options = qsimcirq.QSimOptions(max_fused_gate_size=4, cpu_threads=512)
s = qsimcirq.QSimSimulator(options)
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'qsim(CPU) : {result}')
# qsim(cuStateVec)
options = qsimcirq.QSimOptions(use_gpu=True, max_fused_gate_size=4, gpu_mode=1)
s = qsimcirq.QSimSimulator(options)
result = s.compute_amplitudes(circuit, [0, 2**n_qubits-1])
print(f'cuStateVec: {result}')

以下控制台输出显示,通过使用 CPU SIMD 指令和 OpenMP 进行优化, qsim 的 CPU 版本比 Cirq 的模拟器快 5.1x 。通过使用 cuStateVec 版本,模拟速度进一步加快,比 Cirq 的模拟器快 30.04 倍,比 qsim 的 CPU 版本快 5.9 倍。

cirq.sim : [0.70710677+0.j 0.70710677+0.j], 87.51 s
qsim(CPU) : [(0.7071067690849304+0j), (0.7071067690849304+0j)], 17.04 s
cuStateVec: [(0.7071067690849304+0j), (0.7071067690849304+0j)], 2.88 s

绩效结果

下图显示了一些常用电路的门应用的初步性能结果。所有量子位计数的模拟都会加速。然而,随着量子位数量的增加,模拟速度显著加快,对于最大的电路,模拟速度大约是 10-20 倍。这种性能为探索更大量子电路的开发和评估提供了机会。

A100 与 64 核 CPU 上的 Cirq / qsim + cuStateVec

图 1 。与 64 核 EPYC 7742 CPU 上的 Cirq / qsim 相比,在单个 NVIDIA A100 GPU 上使用 cuStateVec 的流行量子电路的模拟性能

相对于 EPYC 7742 中的 64 个 CPU 内核,一个 NVIDIA A100 上的 VQE 加速

图 2 。与 64 核 EPYC 7742 CPU 上的 Cirq / qsim 相比,在单个 NVIDIA A100 GPU 上使用 cuStateVec 的多个不同分子的变分量子本征解算器加速

多 GPU 状态向量仿真

状态向量模拟也非常适合在多个 GPU 上执行。大多数门应用是一种完全并行的操作,通过拆分状态向量并将其分布在多个 GPU 上来加速。

在大约 30 个量子位之外,多 GPU 模拟是不可避免的。这是因为一个状态向量无法适应单个 GPU 的内存,因为它的大小随着附加的量子位呈指数增长。

当多个 GPU 在一个模拟中协同工作时,每个 GPU 可以将一个门并行应用于其状态向量部分。在大多数情况下,每个 GPU 只需要本地数据来更新状态向量,每个 GPU 都可以独立应用门。

然而,根据门作用于哪个模拟量子位, GPU 有时可能需要存储在不同 GPU 中的部分状态向量来执行更新。在这种情况下, GPU 必须交换大部分状态向量。这些部分的大小通常为数百兆字节或几千兆字节。因此,多 GPU 状态向量模拟对 GPU 互连的带宽非常敏感。

DGX A100 完全符合这些要求,八款 NVIDIA A100 GPU 使用 NVLink 提供 600GB / s 的 GPU 到 GPU 直接带宽。我们选择了三种 30-32 量子位的常见量子计算算法,在 DGX A100 上用 cuStateVec 对 Cirq / qsim 进行基准测试:

量子傅里叶变换( QFT )

肖尔算法

梧桐至上电路

与单次 GPU 运行相比,在八次 GPU 运行中,所有基准测试都显示出 4.5 – 7 倍加速之间良好的强缩放行为。

图 3 。 DGX A100 上流行电路状态向量模拟的多重 GPU 缩放

图 4 。流行量子电路模拟的加速比。在 DGX A100 上测量了 GPU 模拟的性能,并与 EPYC 7742 的两个插座的性能进行了比较。

与两个 64 核 CPU 上的模拟时间相比, DGX-A100 在 50-90 倍之间提供了令人印象深刻的整体速度提升。

总结

NVIDIA CuQuin SDK 中的 CuStEVEVEC 库旨在加速 GPU 上的量子电路的状态向量模拟器。谷歌针对 Cirq qsim 的模拟器是首批采用该库的模拟器之一,该库对现有程序的 GPU 加速使 Cirq 用户受益。随后将集成到更多量子电路框架,包括 IBM 的 Qiskit 软件。

我们也在扩大规模。基于 cuStateVec 的多 GPU 模拟的初步结果显示,关键量子算法的加速比为 50 – 90 倍。我们希望 cuStateVec 成为开创量子计算新领域的宝贵工具。

关于作者

Shinya Morino 是NVIDIA 高级解决方案架构师,隶属于NVIDIA 人工智能技术中心( NVAITC )。他已经在 NVAITC 中原型化了一个 GPU 加速状态向量模拟器,并正在利用他的知识推动 cuStateVec 的开发。新亚拥有日本东京大学的工程学博士学位。

Andreas Hehn 是NVIDIA 的开发技术工程师。他帮助客户使用 GPU 加速他们的科学工作流程,重点关注基因组学、高能物理实验和量子计算。安德烈亚斯拥有瑞士苏黎世 ETH 的物理学博士学位,他在那里从事大规模凝聚态物理模拟。

Leo Fang 是NVIDIA 的高级工程师,专注于 HPC 、量子计算和 Python 软件。 2017 年,他在杜克大学获得物理学博士学位。在加入 NVIDIA 之前,他是布鲁克海文国家实验室计算科学倡议的助理计算科学家。他也是许多开源项目的定期贡献者,包括 CuPy 、 mpi4py 、 conda forge 和 Python 数据 API 标准联盟。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4863

    浏览量

    102756
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4686

    浏览量

    128655
  • API
    API
    +关注

    关注

    2

    文章

    1481

    浏览量

    61777
收藏 人收藏

    评论

    相关推荐

    科技云报到:大模型时代下,向量数据的野望

    科技云报到:大模型时代下,向量数据的野望
    的头像 发表于 10-14 17:18 198次阅读

    大模型卷价格,向量数据“卷”什么?

    被大模型“带飞”这一年,向量数据才刚刚写下序言
    的头像 发表于 05-23 09:24 1739次阅读
    大模型卷价格,<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b>“卷”什么?

    请问STM8L052R8的USART2中断向量在哪?

    我现在在使用STM8L052R8,在使用手册中介绍有3个USART串口,但中断向量表中只有USART1有中断向量,那么另外两个串口不能使用中断接收吗?没有中断发送可以,但没有中断接收,臣妾没有办法用啊!请各位达人解答一下怎么使用
    发表于 05-09 06:33

    IAP升级,boot和app分别是用标准和HAL写的,跳转不成功是怎么回事?

    在学IAP升级。 我写的app程序是用HAL写的,设置了IROM的起始地址及大小,在程序开始后也设置了中断向量表偏移地址。 用我同事写好的boot程序(标准写的,可以跳转到标准
    发表于 04-24 07:56

    搭载英伟达GPU,全球领先的向量数据公司Zilliz发布Milvus2.4向量数据

    在美国硅谷圣何塞召开的 NVIDIA GTC 大会上,全球领先的向量数据公司 Zilliz 发布了 Milvus 2.4 版本。这是一款革命性的向量数据系统,在业界首屈一指,它首次
    的头像 发表于 04-01 14:33 443次阅读
    搭载英伟达GPU,全球领先的<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b>公司Zilliz发布Milvus2.4<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b>

    Zilliz携手大模型生态企业玩转GDC 2024,向量数据和RAG成行业焦点

    3 月 23 日-24 日,聚焦全球开发者精英,由上海市人工智能行业协会(SAIA)主办的 2024 全球开发者先锋大会(2024 GDC)在上海举办。Zilliz 作为向量数据赛道的领军者,受邀
    的头像 发表于 03-26 11:14 336次阅读
    Zilliz携手大模型生态企业玩转GDC 2024,<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b>和RAG成行业焦点

    与NVIDIA深度参与GTC,向量数据大厂Zilliz与全球顶尖开发者共迎AI变革时刻

    近日,备受关注的 NVIDIA GTC 已拉开序幕。来自世界各地的顶尖 AI 开发者齐聚美国加州圣何塞会议中心,共同探索行业未来,全球领先的向量数据公司 Zilliz 也不例外。作为去年被
    的头像 发表于 03-26 11:01 387次阅读

    STM32F429的工程标准移植到HAL后中断向量表异常的原因?

    STM32F429的工程标准移植到HAL后中断向量表异常
    发表于 03-20 06:02

    什么是中断向量偏移,为什么要做中断向量偏移?

    当MCU中有两段或以上程序的时候(第一个程序为用户BootLoader程序,其他的为APP程序,这个在前期视频《什么是ISP?什么是IAP》中有讲过),APP程序中都需要做中断向量偏移,那么什么是中断向量偏移,为什么要做中断向量
    的头像 发表于 01-30 09:47 1566次阅读
    什么是中断<b class='flag-5'>向量</b>偏移,为什么要做中断<b class='flag-5'>向量</b>偏移?

    博途用户自定义的使用-的编辑及管理

    前面两篇文章我们介绍了项目及全局。项目没有单独的存放路径,它随项目创建而创建,随项目保存而保存。全局有单独的存放路径,可被保存、归档
    的头像 发表于 01-24 10:45 983次阅读
    博途用户自定义<b class='flag-5'>库</b>的使用-<b class='flag-5'>库</b>的编辑及管理

    腾讯云把向量数据“卷”到哪一步了?

    被大模型“带飞”这一年,向量数据才刚刚写下序言
    的头像 发表于 01-15 09:49 1547次阅读
    腾讯云把<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b>“卷”到哪一步了?

    Access数据基础知识介绍

    电子发烧友网站提供《Access数据基础知识介绍.pdf》资料免费下载
    发表于 01-02 10:24 3次下载

    诚邀报名 | AI 向量、云原生、开源,今年的数据热点技术都在这里

    训练和推理的精准度对数据和信息的存储、检索、处理提出了更高的要求。为此,存算分离、向量化数据、图数据、分布式数据和开源数据等受到了前
    的头像 发表于 12-20 20:48 328次阅读
    诚邀报名 | AI <b class='flag-5'>向量</b>、云原生、开源,今年的数据<b class='flag-5'>库</b>热点技术都在这里

    第五代英特尔® 至强® 可扩展处理器助力星环科技分布式向量数据 Transwarp Hippo 实现大幅性能提升

    与上一代产品相比,第五代英特尔 至强 可扩展处理器实现了令人惊喜的性能提升,能够有助于进一步释放星环科技分布式向量数据 Transwarp Hippo 的性能潜力,为用户带来强大的向量数据处理能力
    的头像 发表于 12-16 16:15 444次阅读
    第五代英特尔® 至强® 可扩展处理器助力星环科技分布式<b class='flag-5'>向量</b>数据<b class='flag-5'>库</b> Transwarp Hippo 实现大幅性能提升

    诚邀报名 | AI 向量、云原生、开源,今年的数据热点技术都在这里

    和推理的精准度对数据和信息的存储、检索、处理提出了更高的要求。为此,存算分离、向量化数据、图数据、分布式数据和开源数据等受到了前所未
    的头像 发表于 12-13 16:05 312次阅读