国内外量子计算软件介绍
温馨提示:这篇文章已超过607天没有更新,请注意相关的内容是否还可用!
概述
量子计算被认为是一种将对未来产生颠覆性影响的新型计算模式,而量子计算机的发展也非常迅猛。由于量子比特的相干叠加和纠缠以及量子电路的可逆性,量子计算机与传统计算机相比在计算速度和能耗方面具有巨大优势。未来将在人工智能、数据搜索、生物制药、金融等领域产生巨大的应用价值。
量子计算软件是连接用户和量子计算硬件设备的桥梁。量子计算机的高效运行和使用离不开量子软件的支持。量子软件必须满足量子计算的底层物理原理和算法逻辑。它具有很强的专业性和特异性,在量子技术的发展和应用中发挥着至关重要的作用。由于量子计算软件专业门槛高,缺乏跨学科研发人员,尚处于生态系统建立初期,开放、开源成为量子计算软件发展的主要趋势。下面分别介绍国内外量子计算软件的主要代表。
一、量子计算软件简介
量子计算软件在量子计算的发展和应用中起着至关重要的作用。量子计算软件可分为基础运行软件、计算开发软件、应用服务软件和通用系统软件。
基础跑分软件
作为量子计算机的核心控制软件,它与硬件息息相关。它是量子计算软件技术发展的核心,是实现上层软件开发和应用功能的基础。
计算和开发软件
提供研究量子算法和开发量子应用的工具系统,包括量子编程语言和量子软件开发工具。量子编程框架软件主要用于编写运行在量子计算机上的量子算法和程序。封装后还可以提供常用的量子计算组件和量子算法库,用于快速开发量子程序;量子软件开发工具与量子计算硬件对接,提供统一表示量子算法程序的数据和接口。
应用服务软件
是量子技术应用的关键,匹配行业应用需求解决特定领域问题,通过上层编程开发为不同应用领域提供业务和服务,主要包括解决算法、应用、云端人机交互等环境。量子应用服务软件提供一整套面向多个领域的量子计算云平台技术应用,包括解决特定问题的算法和应用,提供云端人机交互的应用环境,其中量子化学、量子机器学习和量子组合优化是比较典型的应用服务软件之一。
量子计算+行业应用探索的加速,刺激了应用服务软件的不断涌现和多样化,有利于降低量子计算云平台的使用门槛,对行业用户群体形成“虹吸效应”。量子计算应用套件可以加快量子计算云平台资源的应用服务开发,支持开发者将经典和量子任务分发到合适的系统,使任务匹配到合适的硬件资源,同时结合计算量子处理器的规模和分段处理任务的能力,实现计算资源的优势互补。
通用系统软件
用于实现量子资源的系统化管理和任务自动调度,保证量子计算任务的高效执行,屏蔽量子计算软硬件差异,简化量子计算的操作和使用。未来有望加速量子计算高效运行,实现计算资源共建共享。.
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的用户工作流程主要包括以下四个步骤:
构建:为要解决的问题设计一个量子电路。
编译:为特定的量子服务编译电路。
运行:在指定的量子服务上运行编译电路。
分析:计算汇总统计数据并可视化实验结果。
下面是整个工作流程的例子
第一步:导入包
import numpy as np
from qiskit import QuantumCircuit
from qiskit.providers.aer import QasmSimulator
from qiskit.visualization import plot_histogram
第二步:初始化变量
circuit = QuantumCircuit(2, 2)
第 3 步:添加门 通过添加门(操作)来操作电路的寄存器。
circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])
第 4 步:可视化电路
circuit.draw()
第五步:模拟实验
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、运行一个简单的例子,检查程序是否安装成功:
你好量子比特
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是华为开发的量子计算模拟器云服务平台,包括基于华为云经典算力的量子计算模拟器和量子编程框架。它旨在提供工具电脑硬件测评app,以促进使用经典硬件或实际量子设备发明、实施、测试、调试和运行量子算法。HiQ提供了经典量子混合编程的可视化解决方案和高性能的C++并行分布式模拟器后端,并集成了高性能的优化器和较为丰富的算法库。
HiQ量子计算云平台提供三种在线量子模拟编程环境,包括:
木星笔记本
Jupyter Notebook 是一个基于 Web 的交互式开发环境,内置开源量子计算框架 MindQuantum 镜像,可以在开发环境中编写代码、方程式和叙述性文本脚本,为开发者提供友好轻量级的编程体验。
CloudIDE
CloudIDE是一款面向云原生的轻量级WebIDE,内置HiQ量子计算插件。支持2U8GB专属容器模式和56U896GB大规模集群任务模式,为开发者提供极速智能的量子编程体验。
HiQ作曲家
Quantum Circuits 图形编程环境 HiQ Composer。HiQ Composer 是一种在线图形化量子电路编程环境,可提供全振幅模拟器。开发者无需安装软件电脑硬件测评app,只需打开浏览器,选择任意开发环境即可开启量子计算编程之旅。开发人员可以自由拖放量子门来构建量子电路。
2.4 项目Q
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量子编程框架:**
下载链接是:
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)Mac操作系统
首先确认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) 窗户
首先安装C++编译器:下载安装visual studio2022,选择社区版,在安装界面勾选C++编译环境,完成vs安装。然后安装cmake,根据本地安装的python版本选择对应的命令进行安装,例如win 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(QDK)是微软开发并开源的用于量子编程的量子开发包。QDK 包括 Q# 量子编程语言和编译器、介绍性示例和教程,以及用于量子程序的模拟器和资源估算器。QDK 还包括 VS 和 VS Code 的开发环境扩展,以及与 Jupyter 平台的集成。
Quantum SDK 是 Azure Quantum 的 SDK。使用 Q#、Qiskit 或 Cirq 构建和运行量子应用程序以在量子硬件上运行,或构建解决方案以执行在 Azure 上的经典硬件上运行的优化求解器。以下是其内容:
开发在各种环境中运行的量子应用程序
用 Python 或 .NET 语言编写,用于运行用 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 包优化解决方案。
为 Visual Studio 代码安装 QDK
此步骤安装 QDK 并向 Visual Studio Code 添加扩展,以支持使用 Q# 开发量子算法。
(1) 打开 Visual Studio 代码。
(2) 进入Microsoft Quantum Development Kit for Visual Studio Code,选择“Install”,按照安装步骤进行。
验证安装
若要验证安装,请创建一个基本的 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
3. 程序会显示以下信息:
Hello quantum world!
成功运行 Q# 程序。
参考链接:
1.
2.
3.