# 量子可视化编程软件介绍
启科量子研发团队持续推进QuBranch研发工作,已在量子编程集成环境软件开发方面取得重大进展。对量子计算而言,量子硬件与软件如同鸟之两翼,只有并行发展才能实现量子计算腾飞。QuBranch是基于VS Code庞大的生态群,专为开发者们开发的一种量子编程工具,包括编辑、调试、量子模拟执行等功能,可为量子计算编程提供一站式集成开发环境,支持Windows、Mac、Linux等操作系统。量子编程开发工具QuBranch已完成三期功能研发,可以进行量子程序编辑、调试、模拟执行等,模拟运行Grover等多种量子算法。后续,启科量子研发团队还将开发和完善代码编辑、调试、量子模拟执行、经典宿主语言支持等相关功能,为量子开发者们提供更高效智能的QuBranch。
## 1.量子计算相对于经典计算的优势
量子计算(Quantum Computing)基于量子的叠加、纠缠等特性存储数据和执行计算,是量子力学与计算机科学相结合的新一代计算方式,早在20世纪80年代,该思想就已由费曼提出。与传统计算机不同,量子计算机遵循量子力学规律、通过调控量子比特进行信息处理;基于微观量子比特的相干叠加和纠缠等特性,以及量子电路的可逆性,在计算速度和能耗方面大大优于传统计算机。随着国内外对量子计算的深入研究,以及全球对大规模计算的现实需求,量子计算受到政府、学界和产业界的更多关注。目前量子计算应用探索主要包括量子模拟和加速优化两大类型,在药物研究、材料科学、分子化学、量化金融、航空动力、交通规划等领域探索活跃。
大数据时代的来临及人工智能发展,海量数据处理的需求日益增长,经典计算开始显现出支撑能力难以为继的趋势。能耗问题、芯片高集成化极限已成为经典计算机发展的制约因素。量子计算机在基本单位、运算模式和计算能力上远超越经典计算机,或将开启新的算力时代。虽然人们对量子计算的未来充满想象和期望,但量子计算从理想到现实还有一段很长远的路程,量子计算机的落地应用从硬件、软件、算法及系统集成都面临许多技术挑战。在量子计算技术发展不完善、硬件开发成本高、规模小的背景之下,量子编程软件的诞生也在一定程度上推动了量子计算技术的发展。
**量子计算机在运算模式和计算能力方面远超越经典计算机**。基本单位方面,经典计算机信息的基本单元是比特,比特是一种有两个状态的物理系统,用0与1表示。在量子计算机中,基本信息单位是量子比特(qubit),通常用态狄拉克符号︱0〉和︱1〉表示量子比特状态,每个量子比特的状态是0或1的线性组合(通常称为叠加态)。运算模式方面,经典计算机的运算模式为逐步计算,一次运算只能处理一次计算任务。量子计算为并行计算,因此量子计算机可以同时对2^n个数进行数学运算,相当于经典计算机重复实施2^n次操作。计算能力方面,在经典计算的计算能力与晶体管数量成正比例线性关系,量子计算机中算力将以量子比特的指数级规模拓展和爆发式增长。
政企学研各领域对量子计算的投入与发展已成为必然趋势。量子领域国际公认量子计算发展有三个标志性阶段:实现量子计算优越性,制造专用量子模拟机、制造可编程通用量子计算机。随着113量子比特可编程量子计算原型机“九章2.0”及66量子比特可编程超导量子原型机“祖冲之2.1”等相继问世,我国已在全球超导量子计算方面实现赶超。
![中国信息通信院.png](./pics/中国信息通信院.png)
图1 来源整理于中国信息通信院
在量子计算发展中,量子硬件与量子软件相互成就。量子计算机由硬件与软件两大部分组成。量子计算机软件包括,能让程序员描述量子计算算法的编程语言、分析程序语言并将其映射到量子硬件的编译器,以及可在特定量子硬件上实现分析、优化、调试和测试程序的其他软件支持。量子编程工具属于计算开发类软件,主要用来编写运行在量子计算机中的量子算法和程序。经封装后可提供常用的量子计算组件和量子算法库,进行量子程序的快速开发。因此,量子编程工具的开发对量子软件发展也至关重要。目前,量子软件生态正处于培育初期,开放化和开源化成为量子计算软件发展的主要趋势。
## 2.国内外已有的量子编程软件
目前国内外已有的量子编程软件分别有IBM开发的Qiskit、华为开发的HiQ WebIDE、本源开发的Qurator-VS Code、以色列量子算法设计平台Classiq。
### 2.1 IBM Quantum Lab
Qiskit是由IBM开发的、可在量子计算机上进行编程的开源框架。其中的IBM Quantum Lab是由IBM公司搭建的量子实验室,可供开发者在线使用,无需本地安装。代码IDE支持Jupyter,用户在Jupyter上通过Braket Python库调度量子资源;还可通过Jupyter IDE在线编辑代码、创建、执行量子电路,可以生成量子线路、直方图、布洛赫球等;支持多种代码编辑方式,包括Notebook、Console、Markdown、Text等等;服务支持量子模拟器5000qubits、100qubits、63qubits、32qubits;IBM Quantum系统将量子处理器与低温组件、控制电子设备和经典计算技术相结合,提供了IBMQ_brooklyn等23个可供选择的系统;Composer提供在线拖拽生成量子电路图,两侧为可联动的图形操作界面和代码编译器界面,两界面中任一侧发生变化时,另一侧会自动做出相应改变。
![IBM产品图.png](./pics/IBM产品图.png)
图5 IBM Quantum Lab产品界面
### 2.2 HiQ WebIDE
HiQ WebIDE是华为用于量子计算的开源软件框架,旨在提供使用经典硬件或实际量子设备促进发明、实施、测试、调试和运行量子算法的工具。HiQ WebIDE支持代码异步执行功能(任务添加到指定队列,等待结果返回);通过Job list可查看历史任务运行结果,按照队列管理调度计算任务;其调试工具支持显示Threads、Call Stack、Variables、Watch、Breakpoints;支持悬停鼠标查看代码帮助信息;通过launch.json文件定义Python运行环境;分布式可扩展的软硬件支持,编译框架支持多量子硬件后端和Python及C++ API前端扩展。
![image.png](./pics/Hiq.png)
图6 HiQ WebIDE产品界面
### 2.3 Qurator-VS Code
Qurator-VS Code是本源量子发布的量子编程工具。Qurator提供了基于本源量子计算的真实后端和其他平台的方式,用户需要在运行前提供API key通过云端访问的方式,直接操纵量子芯片实现计算。Qurator基于VS Code软件可提供清晰的GUI和灵活的启动方式;可检查执行QRunes文件所需的必要依赖项;编程语言方面,Qurator支持 QRunes语言,方便用户自定义量子程序,并支持QPanda和PyQPanda SDK,满足C++和Python编程语言;提供 QRunes的静态程序分析,可用多个图表显示分析结果;将 QRunes 转换为 Python或C++,然后通过这些宿主语言进行调试。
![本源VSCODE.png](./pics/本源VSCODE.png)
图7 Qurator-VsCode产品界面
### 2.4 Classiq
Classiq是以色列的一个量子算法设计平台,旨在匹配客户的量子堆栈,囊括了一些热门的量子编程工具和量子编程语言(如Cirq、Qiskit、Braket和Q#),可以与所有量子编程语言和任何通用门的量子计算机进行无缝协作。Classiq采用"量子算法设计"的方案,从高级功能模型中自动组合和优化量子电路。在Classiq量子算法平台设计之初,一方面由于对量子算法进行编程目前还停留在组合排列各种量子门这一层级,几乎没有任何抽象;另一方面市场上有很多企业需要研发属于他们的量子软件。所以Classiq为这些企业构建了量子软件堆栈的下层基础,即用一个专门的设计软件对量子门操作进行自动化辅助设计和合成,门级细节由Classiq自动化完成,这样就可以让产品使用者们在不了解细节的情况下设计量子算法。当设计人员将功能需求和相应的硬件约束条件输入Classiq平台,的高级功能模型和设计人员可将需求和约束条件输入Classiq平台,Classiq平台就会从高级模型中合成的一个量子电路和优化后的结果。
![Classiq.jpg](./pics/Classiq.jpg)
图8 Classiq产品界面图
## 3.启科量子研发的量子编程软件QuBranch
量子软件必须满足量子计算的底层物理原理和算法逻辑,对量子程序开发者的专业性要求较高。启科QuBranch的诞生旨在降低量子程序开发准入门槛,为量子程序开发者提供更智能便捷的开发方式。下文将详细介绍QuBranch产品的功能特性。
### 3.1QuBranch简介
QuBranch是一款由启科量子研发团队,专为量子编程研发的量子编程软件。其主要功能有代码编辑、调试、量子模拟执行等功能,可支持Windows、Mac、Linux系统。启科量子研发团队基于VS Code强大的生态系统,开发出可进行量子编程的编程软件,使用人群将覆盖学生、量子开发人员、科研人员等多个群体。QuBranch桌面版可供用户下载、安装在PC/笔记本上,使用本机进行量子计算模拟或配置使用远程计算资源;未来的Web版作为QuFertilizer的接口,使用户无需安装软件,通过浏览器即可使用量子云中的计算资源。使用量子语言进行量子编程是开发工作中较基础环节,如何最大效率的构建量子程序是研究团队一直追求的目标。QuBranch致力于使没有物理专业背景的技术人员跨越量子知识障碍,轻松使用QuBranch开发量子程序,发挥量子计算的优异特性。
![量子编程截图.JPG](./pics/量子编程截图.JPG)
图9 QuBranch量子编程界面
IDE(Integrated Development Environment)也称集成开发环境,是为开发者提供程序开发环境的应用程序,一般包括三个主要组件:源代码编辑器(Editor)、编译器(Compiler)、调试器(Debugger)。开发人员可以通过图形用户界面(GUI)访问这些组件,并进行代码编辑、调试和执行。开发者常用的IDE主要有微软的Visual Studio系列、NetBeans、PyCharm等。
| ![image-1.png](./pics/image-1.png) | ![image-2.png](./pics/image-2.png) |
|-----------------------------------------------------------------------|-----------------------------------------------------------------------------|
| **图2 VS Code界面图** | **图3 PyCharm界面图** |
与传统编程类似,为满足量子程序开发者的编程需求,量子软件研发团队需要开发普遍适用的集成开发环境软件和量子编程语言。量子线路图就是一种简洁的量子编程语言,此外还有“量子计算汇编语言”和“量子计算高级编程语言”等量子编程语言。而量子软件必须满足量子计算的底层物理原理和算法逻辑,对量子程序开发者的专业性要求较高。如何降低量子程序开发准入门槛,赋予量子程序开发者更智能高效的开发方式,量子界的瑞士军刀——启科QuBranch应运而生。
启科量子软件架构层包括量子基础架构层、量子混合云基础架构层、量子编程框架层、量子应用层。QuBranch由启科量子软件研发团队研发的量子编程类软件。电脑安装QuBranch后便可开始量子计算程序开发和调试。QuBox为可私有化部署的量子模拟加速服务器,个人电脑资源有限,规模稍大些的程序运行很慢甚至无法运行,这时可以通过QuBranch配置选项连接QuBox进行量子计算模拟加速,运行更大更快的量子程序。
![远程测试界面.png](./pics/远程测试界面.png)
图4 QuBranch远程模式测试界面
### 3.2 QuBranch功能及特色
QuBranch主要包括了量子计算程序的编辑、编译、运行、调试及量子线路可视化编辑、执行等功能,是启科自主研发的量子软件体系架构中的重要一环,属于启科量子软件体系中面向用户的量子编程框类软件。QuBranch目前已完成Windows和Mac两种系统测评,远程单机版本(Arm-Box)、Slurm版开发工作也已完成。QuBranch提供桌面版本供用户下载,可使用本机进行量子计算模拟或配置使用远程计算资源。启科自研的量子编程类软件除QuBranch外,还包括了启科自主研发的Python量子编程语言框架QuTrunk、量子算法库QuFlower等。
**丰富的可视化效果与有效的管理功能**。在环境准备阶段,QuBranch可预选量子框架、基础环境和包。QuBranch中可高效管理Python和C++环境、使用Python和C++等经典宿主语言编辑代码、轻松切换编程语言。其中QuComposer功能模块可实现以图形拖拽和代码编辑两种方式绘制量子线路,量子线路与代码区域还具有双侧联动效果。用户在使用QuBranch时可一键导入工具库,编码过程中还支持代码提示、代码联想、代码高亮、语法错误提示等多种功能有效辅助开发工作。
**量子程序调试与运行**。QuBranch支持错误代码位置跳转,用户可通过观察程序运行步骤,发现程序中出现的逻辑错误,并及时对语法和逻辑错误做出修正。量子模拟执行方面,启科量子研发团队自主研发的QuTrunk目前以量子计算模拟器QuSimulator作为后端,还可扩展支持更多后端支持量子程序的运行与调试。
**一站式量子编程开发环境**。QuBranch可通过结合量子编程框架QuTrunk、调用QuFlower的量子算法资源,最终实现多种量子算法的运行。现阶段启科已经可以通过QuTrunk的backend接口,采用RPC与QuSimulator在QuBranch上模拟运行多种量子算法。
**以柱状图、折线图、雷达图等多种图表形式直观显示程序输出信息和设备信息**。QuBranch可以自动统计量子态信息、量子设备信息和运行数据信息,并以柱状图、折线图、雷达图等多图表形式显示数据输出结果,输出json数据格式化。程序运行结束后还支持生成量子线路图,并一键导出生成的图形。
**一键拖拽实现可视化量子编程**。QuBranch中通过查看-命令面板调用QuComposer实现可视化编程。只需通过简单拖拽量子逻辑门即可生成量子线路和相应代码,测量结果将由QuComposer自带的柱状图显示。
**以下为QuBranch部分功能:**
**代码编辑与调式**
- 已完成基础软件功能和开发功能的开发工作,如可在Windows和Mac系统上完成QuBranch安装并正常运行;编辑器可输入Python/C++/C代码,并对代码关键字进行高亮显示,还可提示出错代码并标明相应错误原因;已完成C/C++编译器的配置,并能设置Linking libraries和Include目录。
- 运行与调试功能方面,可显示变量、监视、调用堆栈及断点信息。当运行代码时出现中断,软件会在状态栏显示出错信息,并输出中断运行时的堆栈信息;编辑器可在特定的行设置断点,代码运行时到达断点会中止,并提供调试信息。
- 支持Python和C++等经典宿主语言。可结合量子编程框架QuTrunk,并调用QuFlower的量子算法资源运行多种量子算法。
![本地测试信息1.png](./pics/本地测试信息1.png)
图10 QuBranch产品测试界面
**信息监控与可视化**
- 量子程序运行可控、可查、可改。QuBranch可展现出类似于TensorBoard视觉呈现的代码执行流程,控制量子软件运行、软件运行信息并修改量子软件执行流程。
- 量子编程模型的可视化tensorboard、latex、pdf、3D显示。
- 实时监控硬件设备信息如CPU、GPU等,既可进行本机测试,还可远程调用启科QuBox等后端设备资源。
![硬件使用率实时监控.png](./pics/硬件使用率实时监控.png)
图11 QuBranch产品硬件监控信息
**自动配置与高效管理**
- 有效管理种类繁杂、数目繁多的文件。QuBranch以插件提供C++项目目录属性(包含目录、库目录)配置功能。
- 自动配置必要工具,尽量减少用户手动安装操作,QuBranch内置必要的Python包、C++库,一并安装Python、ProjectQ。
- 按需选择项目执行环境和筛选包列表。QuBranch以插件提供Python环境及包管理功能,用户可在环境列表中选择需求环境,并在该环境显示的所有包列表中按Installed、Not Installed、 Updatable、Selected、All等类别筛选出需要的包列表。
- 通过Job管理操作可查看历史任务运行结果,并以可视化方式显示参数信息。本地单机版、远程单机版、Slurm版完成算法运行后详细报告会显示算法名称、量子比特数、测试轮次、运行用时、线程数、CPU使用率、内存使用率等参数信息,报告图表会以折线图形式显示比特数和运行时间的关系、以雷达图形式显示量子计算模拟信息、以柱状图显示量子计算模拟能力的好坏等等。
![本地测试数据2.png](./pics/本地测试数据2.png)
图12 量子计算模拟能力柱状图
**量子线路与图形化展示**
- 图形化展示方面,QuComposer支持量子线路绘制功能,如可以以量子线路图形拖拽与代码编辑两种方式生成量子线路,使经典-量子混合编程更加简单和直观。启科量子编程框架也可兼容开源的QuTrunk(启科量子编程开源软件框架,支持用户在Python中执行量子程序)生成量子线路图。量子线路是量子程序基本的表示方式,主要由量子比特和量子操作两部分构成。如同量子计算机上运行的软件程序最终要通过电子门实现,量子线路由多个量子门构成。由于组成量子线路的每一个量子逻辑门都是一个酉矩阵,所以整个量子线路也是一个大的酉矩阵。使用QuBranch生成量子线路图如下:
![image-9.png](./pics/image-9.png)
图13 量子线路图
### 3.3 QuBranch下载与安装
QuBranch目前可通过QuSaaS官方平台进行下载并使用。
用户可以在启科量子开发者官方网站上下载QuBranch,下载后双击应用程序安装包并根据安装向导提示进行自定义安装即可。QuBranch今后将集成快捷的编译环境安装和配置,用户无需单独进行环境配置,安装时可勾选相关开发环境组件。同时,启科量子启科量子开发者官方网站也为各用户提供了开放的内容交流平台与学习渠道,在产品使用期间有任何疑问或知识缺漏都可以通过QuSaaS官方平台进行交流!具体下载及安装情况如下:
QuBranch安装前提是本地已安装好Python环境安装,当前软件包按python3.10环境开发,下载地址:python3.10https://www.python.org/
- **Windows系统**
下载地址:http://developer.queco.cn/download/list
下载完成后,双击QuIDESetup.exe,根据界面提示执行各步骤就可以完成安装。
- **MacOS & Ubuntu系统**
MacOS & Ubuntu系统这两个系统下当前无QuBranch的独立安装包,需从官网先下载vscode,然后再安装qun-graph插件。
1.首先,下载和安装vscode: https://code.visualstudio.com/,
从官网直接下载一般较慢,可通过设置国内镜像加速,方法如下:点击下载后复制下载链接,将链接中的az764295.vo.msecnd.net 更换为 vscode.cdn.azure.cn,然后重新执行下载即可。
2.下载插件quan-graph:http://developer.queco.cn/download/list
打开vscode,右侧导航栏选择扩展,然后点击三点打开菜单,选择从VSIX文件安装,从下载目录选择qun-graph的安装包,点击安装。
![quan-graphAnZhuang.original.jpg](./pics/quan-graphAnZhuang.original.jpg)
3.安装会自动安装相关依赖包,完成后效果如图:
![quan-graphAnZhuangHouXiaoGuo.original.jpg](./pics/quan-graphAnZhuangHouXiaoGuo.original.jpg)
## 4.对QuBranch意义总结及未来展望
QuBranch量子编程软件拥有Qiskit的高可视化效果优势,也具有HiQ WebIDE丰富的量子编程环境,还拥有Qurator-VS Code高效智能的编程功能。经过多次的打磨与锤炼,QuBranch测试阶段已在操作界面简洁性、功能可视化等方面为用户提供较好的使用体验。QuBranch还将不断完善现有的开发工作,如代码异步执行功能(任务添加到指定队列,等待结果返回);通过Job管理,按照队列管理调度计算任务;分布式可扩展的软硬件支持等。后续QuBranch还会继续完善内置集成的量子培训课件,让用户可以使用QuBranch学习更多量子编程知识,体验量子编程的乐趣。
在以量子计算、量子通信和量子测量为代表的量子信息技术中,量子计算领域日新月异,是政产学研各界关注的焦点。全球对量子计算的投资支持力度正不断加大,商业化应用探索蓄势待发。QuBranch作为量子编程开发者与量子计算机系统的桥梁性软件,对加快量子计算技术的应用落地进程和推动量子编程的广泛应用都有着举足轻重的意义。未来,启科量子研发团队将继续完善QuBranch的研发工作,早日实现量子计算软件大规模应用的美好愿景。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。