国内外量子计算软件介绍


概述

量子计算被认为是一种对未来具有颠覆性影响的新型计算模式,量子计算机的发展也十分迅速。量子计算机由于量子比特的相干叠加和纠缠性,以及量子电路的可逆性,与传统计算机相比,在计算速度和能耗方面具有非常巨大的优势。未来,将在人工智能、数据搜索、生物制药、金融等方面产生极大的应用价值。


量子计算软件是连接用户与量子计算硬件设备的桥梁,量子计算机的高效运行和使用,离不开量子软件的支撑。量子软件须满足量子计算底层物理原理和算法逻辑,具有较强专业性和特异性,对于量子技术的发展和应用起到至关重要的作用。由于量子计算软件的专业门槛较高,交叉学科的研发人员还十分匮乏,目前还处于生态体系建立的早期阶段,开放化和开源成为量子计算软件发展的主要趋势。下面将对目前国内外量子计算软件的主要代表进行分别介绍。



1.量子计算软件介绍

量子计算软件对于量子计算的发展和应用起到至关重要的作用。量子计算软件可以分为基础运行软件、计算开发软件、应用服务软件以及通用系统软件等类型。


基础运行类软件

作为量子计算机的核心控制类软件,与硬件紧密相关,是量子计算软件技术的发展核心,也是上层软件开发和应用功能的实现基础。


计算开发类软件

提供了研究量子算法、开发量子应用的工具体系,包含量子编程语言和量子软件开发工具。量子编程框架类软件主要用来编写运行在量子计算机中的量子算法和程序,经过封装后还可提供常用的量子计算组件和量子算法库,进行量子程序的快速开发;量子软件开发工具与量子计算硬件对接,提供统一表示量子算法程序的数据及接口。


应用服务类软件

是量子技术走向应用的关键,匹配行业应用需求解决特定领域问题,通过上层编程开发,为不同应用领域提供业务与服务,主要包括解决算法、应用程序及云端人机交互环境。量子应用服务软件,提供了面向多个领域的量子计算云平台技术应用套件,包括解决特定问题的算法和应用程序,同时在云端提供了人机交互的应用环境,其中量子化学、量子机器学习和量子组合优化类是其中较为典型的应用服务软件。


量子计算+行业应用探索加速,刺激应用服务类软件不断涌现,并趋于多样化,从而有助于降低量子计算云平台使用门槛,对行业用户群体形成“虹吸效应”。量子计算应用套件,可加快量子计算云平台资源的应用服务开发,支持开发人员将经典和量子任务分发到适当的系统,使得任务能够匹配到适合的硬件资源,同时结合量子处理器的计算规模和能力,对任务进行分段处理,实现计算资源优势互补。


通用系统类软件

用于实现量子资源系统化管理和自动任务调度,保证量子计算任务高效执行,屏蔽量子计算软硬件的差异性,简化量子计算操控和使用,未来有望加速量子计算高效运行,实现计算资源共建共享。


2. 国外内量子计算开发软件

2.1 Qiskit

Qiskit是由IBM开发的一款量子编程软件,是一款可用于编写、模拟和运行量子程序的全栈库。该软件工具套件的功能性持续增加,目前能让使用者打造量子计算程序,并让它们在IBM真实的量子处理器或是可在在线存取的量子仿真器上执行。目前主要应用于当今的量子处理器开展研究,教育和商业等工作。


Qiskit也是一个开源SDK,可在电路,算法和应用模块级别与量子计算机一起使用。Qiskit由4个相互协作以实现量子计算的元素组成。其分别是:

A)Terra,为 Qiskit 软件栈提供了基础。Terra 采用模块化结构,简化了电路优化和后端扩展的添加;允许在量子门和脉冲级别编程。

B)Aer,为 Qiskit 软件栈提供了一个高性能模拟器框架。Aer运行量子化学、优化问题和人工智能中使用的算法的高级编程,通过演示经典处理器在多大程度上可以模拟量子计算,帮助我们了解经典处理器的局限性。

C)Ignis,是一个用于理解和缓解量子电路和系统中噪声的框架。Ignis能够检查错误并改进门的实现,致力于消除噪声和错误并开辟一条新道路。Ignis也能够为用户提供代码,可以在给定最少的用户输入参数的情况下轻松生成用于特定实验的电路。

D)Aqua,包含一个跨域量子算法库,可以在其上构建用于近期量子计算的应用程序。可用于研究用经典设备模拟量子计算的局限性,是构建量子计算机算法的地方。


Qiskit为量子电路层级的程序提供一组程序代码工具,赋予远程访问的后台设备执行与管理的功能。下图为Qiskit的运作原理:

Qiskit 的用户工作流程主要为以下四个步骤:

构建:设计一个待解决问题的量子电路。

编译:为特定的量子服务编译电路。

运行:在指定的量子服务上运行编译电路。

分析:计算汇总统计数据并可视化实验结果。


以下为整个工作流程的示例

第 1 步:导入包

import numpy as np
from qiskit import QuantumCircuit
from qiskit.providers.aer import QasmSimulator
from qiskit.visualization import plot_histogram


第 2 步:初始化变量

circuit = QuantumCircuit(2, 2)


第 3 步:添加门 通过添加门(操作)来操作电路的寄存器。

circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])

第 4 步:可视化电路

circuit.draw()

第 5 步:模拟实验

import numpy as np
from qiskit import QuantumCircuit, transpile
from qiskit.providers.basicaer import QasmSimulatorPy
...

第 6 步:可视化结果

plot_histogram(counts)


2.2 Cirq

Cirq是Google Quantum AI 团队发布的一个开源Python框架。即使没有量子物理学背景的开发者,也能够用Cirq创建能够在模拟器上运行的量子算法,同时也为开发者提供了对量子电路的精确控制、经过优化的数据结构,可用于编写和编译这些量子电路。为了编写和编译量子电路,Cirq的数据结构是专门优化过的,能够让开发者更加充分地利用NISQ架构。另外,Cirq支持在本地模拟器上运行这些算法,并可以轻松地与量子硬件或更大的规模的云端模拟器集成起来,为实验成果提供了很好的延续性。


Cirq算法框架在Apache2协议下开源的,可以自由修改或嵌入到任何商业或开源软件包中。可以通过官方网站安装它:

1.安装cirq:pip

python -m pip install --upgrade pip
python -m pip install cirq


2.在cirq.contrib中安装功能的依赖项:

python -m pip install cirq-core[contrib]


3.运行一个简单的示例检查程序是否安装成功:

Hello Qubit

import cirq


# Pick a qubit.
qubit = cirq.GridQubit(0, 0)


# Create a circuit
circuit = cirq.Circuit(
    cirq.X(qubit)**0.5,  # Square root of NOT.
    cirq.measure(qubit, key='m')  # Measurement.
)
print("Circuit:")
print(circuit)


# Simulate the circuit several times.
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)


输出示例:

Circuit:
(0, 0): ───X^0.5───M('m')───
Results:
m=11000111111011001000


2.3 HiQ

HiQ是由华为开发的量子计算模拟器云服务平台,包括基于华为云经典算力构建的量子计算模拟器及量子编程框架。其旨在提供使用经典硬件或实际量子设备来促进发明,实施,测试,调试和运行量子算法的工具。HiQ提供了经典量子混合编程的可视化方案和高性能的 C++并行和分布式模拟器后端,并集成高性能优化器和较为丰富的算法库。


HiQ量子计算云平台提供三种在线量子模拟编程环境,包括:


Jupyter Notebook

Jupyter Notebook是一个基于Web的交互式开发环境,内置开源量子计算框架MindQuantum镜像,可以在开发环境中编写代码、方程式和叙述文本的脚本等,为开发者提供友好、轻量的编程体验。


CloudIDE

CloudIDE是面向云原生的轻量级WebIDE,内置HiQ量子计算插件。支持2U8GB独占容器模式以及56U896GB大规模集群任务模式,为开发者提供极速、智能的量子编程体验。


HiQ Composer

量子线路图形编程环境HiQ Composer。HiQ Composer是在线图形化量子线路编程环境,提供全振幅模拟器,开发者无需安装软件,打开浏览器选择任意开发环境即可开始量子计算编程之旅,开发者可自由拖拽量子门搭建量子线路。


2.4 ProjectQ

ProjectQ是由苏黎世联邦理工学院开发的一款使用Python编程语言实现的量子计算的开源软件框架,具有能够针对各种类型硬件的编译框架、具有仿真能力的高性能量子计算机模拟器以及各种编译器插件。ProjectQ可以将这些程序转换为任何类型的后端,允许用户在 IBM Quantum Experience 芯片、AQT 设备、AWS Braket 或 IonQ 服务提供的设备上运行量子程序,可在经典计算机上模拟量子程序,并在更高的抽象级别上模拟量子程序,还可将量子程序导出为电路,此外还可用于获取资源估算。


ProjectQ的目标是提供一种强大且方便的编程框架,促进使用经典计算机硬件或实际的量子设备进行测试、调试和运行量子算法。而ProjectQ实现这一目标的保障,建立在其四个核心原则上:

1. 开放和免费:ProjectQ在Apache 2.0开源协议发布;

2. 简单的学习曲线:ProjectQ使用Python语言实现编译,Python目前已经在量子领域被广泛使用,因此十分方便上手;

3. 易拓展性:由于编译器和后端都是模块化实现的,任何人都可以为编译器、嵌入式领域特定语言和库做出贡献;

4. 代码质量高:ProjectQ的代码库遵循较高的行业标准,包括常规的代码审查,持续的集成测试以及广泛的代码文档等等。


ProjectQ编译器框架如图所示,它是模块化的,允许通过结合现有的或者新的组件来构建编译器。编译框架由一个主编译器引擎组成,通过一个所谓的编译器引擎链发送电路来执行用户定义的编译步骤序列。每个编译器引擎操纵电路以例如减少运行量子程序所需的门或量子比特的数量。堆栈下方的引擎变得更加特定于后端,并负责将逻辑电路映射到后端布局。

以下为ProjectQ的安装方式:

(1)运行代码进行安装

python -m pip install --user projectq


(2)克隆/下载此存储库(例如,到您的 /home 目录)并运行

cd /home/projectq
python -m pip install --user .


在实际使用中,用户可以使用高级别的领域特定语言(domain-specific language、DSL)编写量子程序嵌入在Python中。具体使用方法可以看一下示例:

def AddConstant ( eng , quint , c ) :
with Compute ( eng ) :
QFT | quint
# addition in the phases :
phi_add ( quint , c )
Uncompute ( eng )


经过上述步骤后,量子程序会被发送到模块化编译前端——Main Engine中。编译器是由单独的编译引擎组成的,它能将代码转换为各种后端支持的低级指令集,比如量子硬件的接口、高性能的量子模拟器和仿真器,以及电路绘制器和资源计数器等等。


后端上,ProjectQ集成了一个量子仿真器,允许通过使用经典的方式模拟量子算法,从而获得更快的处理速度。对于低层次的模拟,ProjectQ有一个优于其他模拟器的新模拟器,已经通过了实际硬件测试,可以在IBM Quantum Experience上运行量子算法。


2.5 QuTrunk

启科量子自主研发一款量子编程框架 QuTrunk,为量子编程开发提供了一个通用的软件环境。QuTrunk 使用 Python 作为宿主语言,利用 Python 的语法特性实现针对量子程序的 DSL(领域专用语言),所有支持 Python 编程的 IDE 均可安装使用 QuTrunk。


QuTrunk 基于量子逻辑门、量子线路等概念提供量子编程所需的各类 API。这些 API 分别由相应的模块实现,比如 QCircuit 实现量子线路功能,Qubit 实现量子比特,Qureg 实现量子寄存器,Comand 对应每个量子门操作的指令,Backend 代表运行量子线路的后端模块,gate 模块实现了各类基础量子门操作。同时 QuTrunk 还可以作为其他上层量子计算应用的基础,比如:量子算法、量子可视化编程、量子机器学习等。

目前 QuTrunk 以 QuSprout 作为后端。QuSprout 也是启科量子自研的一款基于经典计算资源的量子计算模拟软件,支持支持多线程、多节点、GPU 加速,也可预安装在 QuBox 中。QuTrunk 为量子编程工作提供了量子编程框架,建立起一套统一的量子编程规范,进而实现量子程序开发的“降本增效”。启科量子目前正在筹备 QuTrunk 项目的开源计划,旨在通过产品开源的方式促进量子计算软件技术的发展与普及。


QuTrunk 下载及安装

**下载 QuTrunk 量子编程框架: **

下载链接为:

http://github.com/qudoor/qutrunk

QuTrunk 当前提供 whl 包和源码两种类型的安装包,用户根据对应的平台和系统版本选择对应 whl 软件包下载 。


**安装 QuTrunk **

2.5.1 whl 包安装

各系统版本的安装方法如下:

1)whl 下载到本地安装

打开终端,cd 切换到下载目录,命令行执行:

pip3.10 install qutrunk-0.1.9-py3-none-any.whl  


2)直接 pip 安装

pip3.10 install qutrunk  


2.5.2 源码安装方法

(1)MacOS

首先,确认安装 C/C++编译器和编译工具,打开终端执行 gcc --version 可以查询是否安装,一般 MacOS 上都默认已经安装。另外还需要安装 cmake,在终端直接执行:

pip3.10 install cmake  


编译依赖安装完后,再切换到下载目录,解压并开始编译安装 qutrunk:

tar -zxvf qutrunk-0.1.9.tar.gz
cd qutrunk-0.1.9
python3.10 setup.py install


(2) Ubuntu

首先,安装 c/c++编译器:

sudo apt install build-essential


然后,安装 cmake 编译工具:

sudo apt install cmake


最后,在编译安装 qutrunk:

tar -zxvf qutrunk-0.1.9.tar.gz
cd qutrunk-0.1.9
python3.10 setup.py install


(3)Windows

先安装 C++编译器:下载安装 visual studio2022,选择社区版本,安装界面勾上C++编译环境,完成 vs 安装。然后安装再 cmake,根据本地安装的 python 版本选择对应的命令安装,例如python3.10 环境拿下,使用命令行执行:

pip3.10 install cmake  


最后编译安装,解压下载的源码安装包,进入到解压目录下,执行:

python3.10 setup.py install  


2.5.3 QuTrunk 安装完成检查

Qutrunk 安装完成后可以执行如下命令验证安装是否成功,版本是否准确,命令各平台通用:

pip3.10 show qutrun  


2.6 Quantum Development Kit

Quantum Development Kit(QDK)是微软研发且开源的一款量子开发工具包,以便进行量子编程。QDK 包括 Q# 量子编程语言和编译器、入门示例和教程,以及量子程序的模拟器和资源估计器,QDK 还包括 VS 和 VS Code 的开发环境扩展,以及与 Jupyter 平台的集成。


Quantum 开发工具包是用于 Azure Quantum 的开发工具包。可使用 Q#、Qiskit 或 Cirq 生成并运行量子应用程序,以在量子硬件上运行,或生成解决方案,以执行在 Azure 上的经典硬件上运行的优化求解器。以下为其内容:

开发要在各种环境中运行的量子应用程序

以 Python 或.NET 语言编写,用于运行 Q#编写的量子运算程序。


Q#

Q# 是 Microsoft 的一种以量子为中心的高级别编程语言,它提供直观的新式量子程序开发方法。可使用它在算法和应用程序级别帮助你聚焦工作,创建量子程序。Q#具有与 Visual Studio 和 Visual Studio Code 的丰富集成以及与 Python 编程语言的互操作性。企业级开发工具提供了在 Windows,macOS 或 Linux 上进行量子编程的最快途径。


用于促进开发的工具

用户可根据不同的开发环境,执行不同的安装,以进行量子程序开发。Quantum 开发工具包包括与 Visual Studio、Visual Studio Code、Jupyter Notebooks 的功能丰富的集成。可在笔记本和命令行中自行使用 Q# 编程语言,或者通过 Python 和 .NET 的互操作性使用主机语言。可将现有量子工作流与对 Qiskit 和 Cirq 的支持进行集成。使用 Azure Quantum 优化 Python 包优化解决方案。


安装 QDK for Visual Studio Code

此步骤可安装 QDK 并将扩展添加到 Visual Studio Code,以支持使用 Q# 开发量子算法。

(1)打开 Visual Studio Code。

(2)转到适用于 Visual Studio Code 的 Microsoft Quantum 开发工具包,选择“安装”,然后按照安装步骤操作。


验证安装

若要验证安装,请创建基本的 Q# 应用程序,如下所示。

安装 Quantum 项目模板

1.在 Visual Studio Code 的“视图”菜单中,选择“命令面板”。

2.进入“Q#: 安装命令行项目模板”。弹出窗口显示在右下角,即表示模板安装成功:


创建项目

1.在“视图”菜单中,选择“命令面板”。

2.进入“Q#: 创建新项目”。

3.选择“独立控制台应用程序”。

4.选择用于保存项目的目录,例如主目录。输入 QuantumHello 作为项目名称,然后选择“创建项目”。

5.在右下角显示的弹出窗口中,选择“打开新项目”:

6.在“视图”菜单中选择“资源管理器”。

可看到两个文件:QuantumHello.csproj 和 Program.qs。

csproj 文件定义了项目设置。Program.qs 包含用于在控制台显示消息的基本 Q# 程序。

namespace QuantumHello {

    open Microsoft.Quantum.Canon;
    open Microsoft.Quantum.Intrinsic;

    @EntryPoint()
    operation HelloQ() : Unit {
        Message("Hello quantum world!");
    }
}


运行程序

运行程序验证是否已正确设置所有内容。使用dotnet实用工具运行 Q# 程序。

1.在“视图”菜单中,选择“终端”或“集成终端”。

2.运行 dotnet run。

dotnet run

3.该程序将显示以下消息:

Hello quantum world!

成功运行Q# 程序。


参考链接:

1.https://projectq.readthedocs.io/en/latest/

2.https://qiskit.org/documentation/intro_tutorial1.html

3.http://projectq.ch/features/

展开阅读全文

页面更新:2024-03-24

标签:量子   编译器   模拟器   算法   电路   框架   国内外   环境   程序   经典   软件

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top