MindSpore Quantum 0.8 | 量子线路模拟器全新升级,新增GPU模拟器,性能倍级提升

MindSporeQuantum的0.8版本带来了全新的量子模拟器mqvector,提升了CPU和GPU的性能,尤其是在VQE和QAOA算法上的表现。新版本还支持更多量子门,包括FSim和U3门,以及自定义量子门和KrausChannel功能,增强了量子线路的展示和定制能力。
摘要由CSDN通过智能技术生成

MindSpore Quantum 0.8版本全新发布

经过社区开发者们的不断努力,量子计算MindSpore Quantum最新的0.8版本正式面世。

新版本中我们推出了更强劲的自研量子模拟器mqvector ,新发布GPU模拟器mqvector_gpu。此外新版本支持更多的量子门,方便用户开发更多新的量子算法。下面就带大家快速浏览0.8版本的关键特性。

01 全新量子模拟器,性能更强劲

新版本中我们推出了全新的量子模拟器mqvector,支持全振幅量子模拟,且可自适应控制量子模拟时调用的运算资源,性能表现更好。

【VQE求解化学分子基态能量】

VQE求解化学分子基态能量-CPU、GPU(12量子比特 H6),MindSpore Quantum与主流软件Qiskit、TensorFlow-Quantum对比效果如下面两图所示, CPU性能提高12倍以上,GPU性能提高7倍以上。              

  图1 量子模拟器 VQE(CPU)性能对比图

图2 量子模拟器 VQE(GPU)性能对比图

【QAOA求解Max-Cut问题模拟】

QAOA求解Max-Cut问题(16量子比特),MindSpore Quantum与主流软件Qiskit、Qulacs对比效果如下图所示,性能提高2倍以上。

图3 量子模拟器 QAOA性能对比图

【随机线路演化模拟】

随机线路演化CPU-20量子比特,GPU-22量子比特,MindSpore Quantum与主流软件Qiskit、Quest对比效果如下面两图所示,CPU性能提高2倍以上,GPU性能提高5倍以上。

图4 量子模拟器 CPU性能对比图

图5 量子模拟器 GPU性能对比图

新版本MindSpore Quantum可以通过如下指令来升级:

pip install mindquantum==0.8.0

使用方式如下:

from mindquantum.algorithm.library import qft
from mindquantum.simulator import Simulator

circ = qft(range(3))
sim = Simulator('mqvector', circ.n_qubits)
sim.apply_circuit(circ)

其他会使用到量子模拟器的地方也可使用,例如:

from mindquantum.algorithm.library import qft
qft(range(3)).matrix(backend='mqvector')

此外,我们还推出了基于GPU的量子模拟器mqvector_gpu,具体使用方式与mqvector类似。注意:该模拟器仍处于beta试用阶段,具体调用方式后续可能会持续优化。GPU版本的MindSpore Quantum 0.8请扫下方二维码下载,下个版本将可以直接使用pip指令来安装。下载后删除名称中的"_gpu",然后使用pip指令来安装下载的安装包。

GPU MindSpore Quantum 0.8

02 支持更多量子门,使用更灵活

新版本中我们支持了FSim门和U3门,跟现有参数化量子门不同,此类量子门支持多个独立的变量。

2.1 FSim门

FSim支持费米子算符模拟门,可在变分量子算法中可以有效的运行。它包含两个自由变量,定义如下:

2.2 U3门

单比特的任何量子门U3将会以一个单独的量子门存在,而不是一段量子线路。且U3门在变分量子算法中可以有效的运行。U3门包含三个自由变量,定义如下:

from mindquantum.core.gates import FSim
FSim('a', 'b').on([0, 1])

我们将得到:

FSim(𝜃=a, 𝜑=b|0 1)

2.3 自定义量子门

在0.8中,我们自定义量子门的性能也进行了提升。在新版本中,我们利用numba对自定义量子门进行编译,模拟器会读取编译出的机器码来进行量子门模拟,这极大的提高了自定义量子门的模拟速度,且编译后的自定义量子门可以在模拟器后端的多线程场景中运行。

import numpy as np
from mindquantum.core.circuit import Circuit
from mindquantum.core.gates import gene_univ_parameterized_gate

def matrix(theta):
    return np.array([[np.exp(1j * theta), 0],
                     [0, np.exp(-1j * theta)]])
def diff_matrix(theta):
    return 1j*np.array([[np.exp(1j * theta), 0],
                        [0, -np.exp(-1j * theta)]])
TestGate = gene_univ_parameterized_gate('Test', matrix, diff_matrix)
circ = Circuit().h(0)
circ += TestGate('a').on(0)

2.4 BarrierGate

在新版本中,我们可以只对特定的比特添加屏障门,请看示例:

import mindquantum.core.gates as G
from mindquantum.core.circuit import Circuit, UN
circ = Circuit() + UN(G.H, 3) + UN(G.BarrierGate(), [0, 2]) + UN(G.H, 3)

2.5 KrausChannel

我们还新增了KrausChannel接口,用户可以根据自己的需求来自定义噪声信道,进行含噪线路模拟。

from mindquantum.core.gates import KrausChannel
from mindquantum.core.circuit import Circuit
from math import sqrt

gamma = 0.01
kmat0 = [[1, 0], [0, sqrt(1 - gamma)]]
kmat1 = [[0, 0], [0, sqrt(gamma)]]
phase_damping = KrausChannel('phase-damping', [kmat0, kmat1])
circ = Circuit().h(0).x(1)
circ += phase_damping.on(0)
circ += phase_damping.on(1)

03

 可自定义量子线路宽度,展示更友好

对于一个较长的量子线路,旧版本会直接绘制一个宽度很长的 svg 图,无法直接在论文中展示。因此,在新版本中,我们可以在量子线路的svg方法中传入一个width参数来调整量子线路的展示宽度,使得线路可以在一个页面里完美展示。

from mindquantum.utils import random_circuit
random_circuit(3, 50, seed=42).svg(width=1500).to_file('nice_circuit.svg')

旧版本量子线路打印能力有限,需要通过滚动条查看某一段量子线路。

新版本优化后,量子线路可在同一幅图中较好的展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值