CN111767055A - 一种量子程序的编译方法及装置 - Google Patents

一种量子程序的编译方法及装置 Download PDF

Info

Publication number
CN111767055A
CN111767055A CN202010545894.8A CN202010545894A CN111767055A CN 111767055 A CN111767055 A CN 111767055A CN 202010545894 A CN202010545894 A CN 202010545894A CN 111767055 A CN111767055 A CN 111767055A
Authority
CN
China
Prior art keywords
source code
quantum
compiling
analysis
type
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010545894.8A
Other languages
English (en)
Inventor
方圆
陈博颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Origin Quantum Computing Technology Co Ltd
Original Assignee
Origin Quantum Computing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Origin Quantum Computing Technology Co Ltd filed Critical Origin Quantum Computing Technology Co Ltd
Priority to CN202010545894.8A priority Critical patent/CN111767055A/zh
Publication of CN111767055A publication Critical patent/CN111767055A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/436Semantic checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N10/00Quantum computing, i.e. information processing based on quantum-mechanical phenomena

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Condensed Matter Physics & Semiconductors (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了一种量子程序的编译方法及装置,方法包括:获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;对所述源代码进行词法分析,得到多个语法单元token;对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。利用本发明能够从用户编程层面,解决当前需要严格区分类型的难题。

Description

一种量子程序的编译方法及装置
技术领域
本发明属于量子计算技术领域,特别是一种量子程序的编译方法及装置。
背景技术
编译程序是一种计算机程序,它把用一种编程语言(源语言)编写的计算机代码翻译成另一种语言(目标语言)。编译器主要用于将源代码从高级语言转换为低级语言(例如,汇编语言、目标代码或机器代码)以创建可执行的程序。
虽然编译器有不同的类型,编译器可能执行以下部分或全部操作:预处理、词法分析、解析、语义分析(语法定向翻译)、将输入程序转换为中间表示、代码优化和代码生成等。编译器分阶段实现这些操作,以促进源代码到目标代码的有效设计和正确转换。
目前适用于量子程序的编译器处理流程大致如下:编译器在获得源代码后,将源代码编译为量子程序,然后将量子程序发送给FPGA(现场可编程门阵列)生成波形,然后再发送给可以执行波形序列的硬件,如量子处理器(量子处理单元),由量子处理器执行波形序列获得执行结果。
但是,目前现有的量子处理器执行波形序列获得执行结果存在很大的局限,表现为:量子程序的执行时间非常有限,不可能在执行几行量子程序后,等待用户输入,因此当前量子处理器无法处理量子程序中的循环结构。
基于此,有必要实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序。
发明内容
本发明的目的是提供一种量子程序的编译方法及装置,以解决现有技术中的不足,它能够实现在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题。
本申请的一个实施例提供了一种量子程序的编译方法,包括:
获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
对所述源代码进行词法分析,得到多个语法单元token;
对所述token进行语法分析,构建句法树;
基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
如上所述的量子程序的编译方法,其中,优选的是,所述对所述源代码进行词法分析,得到多个语法单元token,包括:
对所述源代码进行词法分析,得到多个语法单元token,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
如上所述的量子程序的编译方法,其中,优选的是,所述对所述token进行语法分析,构建句法树,包括:
根据所述token构建句法树,按照源代码语言的语法规则,识别并检查所述句法树的语法,同时更新所述符号表。
如上所述的量子程序的编译方法,其中,优选的是,所述对所述源代码进行词法分析,得到多个语法单元token,包括:
确定有穷自动机DFA,对所述源代码进行扫描,按照所述源代码语言的词法规则识别各类单词,产生相应单词的属性字,其中,所述单词包括关键字、标识符、常数、运算符和界符,所述属性字表示指向符号表中词法单元的条目;
根据所述单词及其属性得到语法单元token。
如上所述的量子程序的编译方法,其中,优选的是,所述基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,包括:
利用所述句法树和所述符号表检查所述源代码语言定义的语义,并收集所述句法树和所述符号表的信息;
通过查询所述符号表,确定所述源代码变量、表达式、函数分别对应的类型。
如上所述的量子程序的编译方法,其中,优选的是,所述源代码的逻辑结构还包括分支结构;
所述根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,具体包括:
解析所述句法树,根据所述符号表的信息,判断当前解析对象的类型并进行类型检查;其中,所述解析对象包括变量、表达式和函数;
当所述解析对象的类型为辅助类型时,则对相应的编译对象进行第一编译操作,以消除相应的分支结构或循环结构;
当所述解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作,以消除相应的循环结构,可保留或不保留相应的分支结构;
最终得到所述源代码对应的特定形式的中间代码。
本申请的又一实施例提供了一种量子程序的编译装置,包括:
获得模块,用于获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
词法分析模块,用于对所述源代码进行词法分析,得到多个语法单元token;
构建模块,用于对所述token进行语法分析,构建句法树;
语义分析模块,用于基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
编译模块,用于根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
如上所述的量子程序的编译装置,其中,优选的是,所述词法分析模块,包括:
写入模块,用于对所述源代码进行词法分析,得到多个语法单元token,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
本申请的又一实施例提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
本申请的又一实施例提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项中所述的方法。
可见,与现有技术相比,本发明首先获得量子程序的源代码,对所述源代码进行词法分析,得到多个语法单元token,对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,再根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。基于此,本发明实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题,即用户在编程界面编写代码时,在代码字面上无需区分类型进行编写,两种类型在编译过程中会被区分开来并被转译为中间代码。
附图说明
图1是本发明实施例提供的一种量子程序编译方法的计算机终端硬件结构框图;
图2是本发明实施例提供的一种量子程序编译方法的流程示意图;
图3是本发明实施例提供的一种量子程序编译装置的结构示意图。
具体实施方式
下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
需要说明的是,本发明的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
下面以运行在计算机终端上为例对其进行详细说明。图1是本申请实施例提供的一种量子程序编译方法的计算机终端硬件结构框图。如图1所示,计算机终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,可选地,上述计算机终端还可以包括用于通信功能的传输装置106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的量子计算模拟方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
量子线路作为量子程序的一种体现方式,也称量子逻辑电路,是最常用的通用量子计算模型,表示在抽象概念下对于量子比特进行操作的线路,其组成包括量子比特、线路(时间线),以及各种量子逻辑门,最后常需要通过量子测量操作将结果读取出来。
不同于传统电路是用金属线所连接以传递电压信号或电流信号,在量子线路中,线路可看成是由时间所连接,亦即量子比特的状态随着时间自然演化,在这过程中按照哈密顿运算符的指示,一直到遇上逻辑门而被操作。
一个量子程序整体上对应有一条总的量子线路,本发明所述量子程序即指该条总的量子线路,其中,该总的量子线路中的量子比特总数与量子程序的量子比特总数相同。可以理解为:一个量子程序可以由量子线路、针对量子线路中量子比特的测量操作、保存测量结果的寄存器及控制流节点(跳转指令)组成,一条量子线路可以包含几十上百个甚至千上万个量子逻辑门操作。量子程序的执行过程,就是对所有的量子逻辑门按照一定时序执行的过程。需要说明的是,时序即单个量子逻辑门被执行的时间顺序。
众所周知,普通计算机中所有的数据和指令都是由0和1组成的。例如:01010000机器指令在CPU上运行的时候就是一组电平脉冲信号;真正的量子计算机是混合结构的,它包含两大部分:一部分是经典计算机,负责执行经典计算与控制;另一部分是量子设备,负责运行量子程序进而实现量子计算。而量子程序是由量子语言如QRunes语言编写的一串能够在量子计算机上运行的指令序列,实现了对量子逻辑门操作的支持,并最终实现量子计算。具体的说,量子程序就是一系列按照一定时序操作量子逻辑门的指令序列。本发明实施例所指量子程序,即是经典语言编写的表征量子比特及其演化的程序,其中与量子计算相关的量子比特、量子逻辑门等等均有相应的经典代码表示。
需要说明的是,QRunes是一种面向过程、命令式的量子编程语言,QRunes根据量子计算的经典与量子混合(Quantum-Classical Hybrid)特性,在程序编译之后可以操纵宿主机器、量子测控设备与量子芯片来实现量子计算。所谓的量子经典混合编程即是将实现量子计算的部分用量子代码实现量子比特和量子逻辑门的操作,而与经典计算机打交道的部分(结果展示、量子程序开发包,比如QPanda)用经典语言实现的一种编程方式。
QRunes通过提供高级语言的形式(类似C语言的编程风格)来实现量子算法和程序的逻辑控制,其丰富的类型系统(辅助类型、经典类型等)可以实现量子计算中数据对象的绑定和行为控制,可以满足各类量子算法开发人员的算法实现需求。
QRunes中的每一个变量、函数、表达式都有自己的类型,类型可以确保程序编译的正常进行。QRunes的类型属于强类型,也是一种静态类型,即每一个对象都有自己的类型。
具体的,辅助类型(Auxiliary Type,简称A类型)描述变量,有助于构建量子程序,且这些变量是在量子程序传输到量子设备之前确定的;经典类型(Classical Type,简称C类型)是在量子测控系统中存在的对象,经典类型的创建、计算、管理都是由量子芯片的测控系统完成,是为了解决普通的宿主机和量子芯片之间无法进行实时数据交换的问题而存在的。简而言之,经典类型介于宿主机(辅助类型)和量子芯片之间。经典类型的变量,典型地可以被用于保存量子比特的测量结果。
在实际应用中,受限于量子芯片的发展,量子计算机的运行存在着一个很大的局限性:一个量子程序执行的时间是十分有限的。因此,不可能在执行几行量子程序后等待用户输入。也就是说,一段量子程序在运行时被视作一个整体,并且程序中所有的标识符(类似于经典语言中的变量)的值都应该是确定的,只有满足条件,才能保证量子程序的正确运行,且目前的量子芯片是被动驱动的,即量子芯片本身并不生成量子线路,因此通常需要控制设备(量子测控设备)协作,驱动量子芯片,使得施加到量子芯片上的量子逻辑门产生波形,并按照波形序列施加脉冲信号。
参见图2,图2为本发明实施例提供的一种量子程序的编译方法的流程示意图,可以包括如下步骤:
S201:获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构。
本领域技术人员可以理解的是,现有的量子编程语言QRunes由三部分构成:设置模块(Setting)、量子程序构建模块(QCodes)和经典编程模块(Script),设置模块(Setting)定义了关于QRunes编译的全局信息,主要是对量子程序源代码的信息配置进行描述,对经典编程模块的语言类型和量子软件开发所需的依赖文件的配置;量子程序构建模块(QCodes)具体实现对于量子比特操作和行为的控制,用于用户自定义编写量子程序,可以满足量子算法和量子应用的设计开发;经典编程模块(Script)是宿主程序的实现,类似于宿主(Host)语言,用户可使用自己熟悉的其他经典编程语言(C++、Python等)来调用量子软件开发包(QPanda、pyQPanda)和量子程序构建模块的功能来实现自己的量子程序。以下以基于量子语言QRunes开发的量子程序为例进行说明。
量子程序的源代码从组成上分为变量、表达式、语句和函数,结构上分为顺序结构、分支结构、循环结构,具体如下:
变量:程序变量是在量子计算机中用来存储数据的字母或者值,主要包括量子变量、经典变量和经典辅助变量三种类型,量子变量用来表示一个量子比特或者一组量子比特;经典变量是用来处理量子程序中跟经典计算机相关的常规变量类型;经典辅助变量属于经典变量,该变量的值是在量子程序被量子物理设备处理之前自行确定。
表达式:表达式是一串可以被确定值的代码,有功能(赋值、逻辑运算等)表达式和算术表达式两种类型,作为一组代码(数值、变量、操作运算符等)的集合,表达式均会返回一个值;一段示例性代码表示为:
number=0.175;//赋值表达式,该表达式使用运算符“=”将数值0.175赋值给变量number
X||Y;//逻辑表达式
12+13;//算术表达式
语句:语句是量子程序运行时执行某个动作的语法结构,它改变变量的值、产生输出、或处理输入,语句类型有经典辅助语句、经典语句、量子逻辑门和函数调用四种;量子逻辑门是量子线路的基础,是量子计算模型中的一个基本操作单元,类似于传统逻辑门中的数位线路,通过操作逻辑门来实现量子程序。在量子程序中,已经预先定义了常规的量子逻辑门的操作,比如Hadamard(H门,即哈达马门)、Pauli-X(泡利-X门)等;一段量子逻辑门操作的示例性代码表示为:
RX(q[1],3.1415926);//RX门操作
CZ(q[1],q[2]);//CZ门操作
函数:函数是用户自定义的一组语句的集合,能够完成用户指定的某种特定功能或者算法,主要包括函数定义和函数声明,函数声明主要体现函数的功能,以便在执行程序照此检查函数,函数定义由三部分组成:函数名、参数列表、函数体,一段关于2量子比特的D-J算法的函数定义的示例性代码表示为:
D_J_Alg(qvecq,cvec c)
{
RX(q[1],Pi);
H(q[0]);
H(q[1]);
CNOT(q[0],q[1]);
H(q[0]);
measure(q[0],c[0]);
}
程序结构上,包括如下结构:
顺序结构:只需按照量子程序的代码顺序自上而下,依次执行即可;
分支结构:需要根据先验的条件结果来选择执行顺序,而不是按照代码排序的物理逻辑执行,在量子程序主要是体现在if分支中;一段示例性代码表示为:
/**
*判定条件可以是量子程序中后验得到的寄存在经典寄存器中的量子测算结果
*或者用户程序中的自定义变量值
*/
if(c[1])
{
H(q[1]);
}
else{
X(q[1]);
}
循环结构:在经典程序语言中是非常常见的一种程序逻辑,通过描述重复执行的代码,可以大大减少源代码的重复书写工作量;在量子程序主要是体现在for循环中,一段示例性代码表示为:
inti=0;
for(i:1:len(q)-1)
{
RX(q[i],Pi);
T(q[i]);
}
需要说明的是,以上现有的代码仅仅作为示例,并不构成对本发明技术方案的限定。
S202:对所述源代码进行词法分析,得到多个语法单元token。
具体的,可以通过确定有穷自动机DFA,对所述源代码进行扫描,按照所述源代码语言的词法规则识别各类单词,产生相应单词的属性字,其中,所述单词包括关键字、标识符、常数、运算符和界符,所述属性字表示指向符号表中词法单元的条目。
需要说明的是,词法分析的第一阶段即扫描器,通常基于有穷自动机DFA,扫描器能够识别其所能处理的标记中可能包含的所有字符序列(单个这样的字符序列也可以称为“语素”)。例如,“整数”标记可以包含所有数字字符序列。有穷自动机DFA是由一个非空有限的状态集合、一个输入字母表、一个转移函数、一个开始状态和一个接受状态的集合组成的五元组。
具体的,词法分析阶段是编译过程的第一个阶段。该阶段的实现从左到右将字符依次读入源程序,即对构成源程序的字符流按照源代码语言的词法规则进行扫描然后根据构词规则识别单词(也称单词符号或符号)。即词法分析是计算机科学中将字符序列转换为标记(token)序列的过程,所述的标记是一个字串,是构成源代码的最小单位。从输入字符流中生成标记的过程称为标记化(tokenization),即将输入字符流分割为标记,生成的标记随后便被用来进行语法分析,进而将标记进行分类的过程。例如,针对C语言的表达式:
sum=3+2;
将其标记化后可以得到如下图内容:
语素(字符序列) 标记(token)类型
sum 标识符
赋值操作符
3 数字
+ 加法操作符
2 数字
语句结束符号
词法分析主要是读入源代码,将源代码分解为一个个的单词,如“sum”、“=”、“3”、“+”、“2”、“;”,作为一个个语法单元token,其中,“sum”是标识符,“=”是赋值操作符,“3”和“2”是数字,“+”是加法操作符,“;”为语句结束符号。词法分析面向的对象是单个的字符,目的是把它们组成有效的单词(字符序列),根据所述单词及其属性得到语法单元token。
在词法分析过程中,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
具体的,符号表是一种用于语言翻译器(例如编译器)中的数据结构。在符号表中,程序源代码中的每个标识符都和它的声明或使用信息绑定在一起,比如其名称、类型、值、作用域以及内存地址等。
在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,符号表中所登记的信息在编译的不同阶段都要用到。例如在语义分析中,符号表所登记的内容将用于语义检查和产生中间代码;在目标代码生成阶段,当对符号名进行地址分配时,符号表是地址分配的依据。在编译程序的整个阶段,符号表被频繁的用来建立表项、查找表项、填充和引用表项的属性,且源代码的对应信息与所述符号表的属性相对应,即将信息写入符号表对应的属性下面。
S203:对所述token进行语法分析,构建句法树。
具体的,语法分析是编译过程的一个逻辑阶段,语法分析是为了实现在词法分析的基础上将单词序列组合成各类语法短语,如“程序”、“语句”、“表达式”等,语法分析可实现判断源程序在结构上是否正确。
其中,所述句法树包括:一个根节点、多个子树节点和多个叶子节点,所述根节点和子树节点包括语法规则信息,所述叶子节点包括token信息。
具体的,句法树是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。构建句法树的目的就是将量子程序源码在定义的语法规则下进行树状的表示,清晰展示量子程序源代码的代码结构。语法分析即是识别并判断其中的语法规则,以token作为叶子节点,构建句法树,叶子节点的上级各节点(上至根节点)体现的即为该叶子节点相关的语法规则。
根据所述token构建句法树,按照源代码语言的语法规则,识别并检查所述句法树的语法,同时更新所述符号表。
具体的,词法分析和语法分析本质上都是对源程序的结构进行分析。在词法分析和语法分析两个过程中,符号表都是连贯上下的。即在扫描源程序的过程中,需不断更新符号表中的信息。
S204:基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型。
具体的,可以利用所述句法树和所述符号表检查所述源代码语言定义的语义,并收集所述句法树和所述符号表的信息;通过查询所述符号表,确定所述源代码变量、表达式、函数分别对应的类型。
其中,语义分析是编译过程的一个逻辑阶段,语义分析的任务是对结构上正确的源程序进行上下文有关性质的判断,进行类型审查。语义分析能够确定所述源代码变量、表达式、函数分别对应的类型,并且也可以通过语义分析报告源代码的错误。
需要说明的是,所述源代码变量、表达式、函数分别对应的类型至少包括辅助类型和经典类型。定义辅助类型描述经典变量,构建量子程序,并且所述经典变量是在量子程序传输到量子设备之前确定的,因此对于可以被立即执行的变量,将其定义为辅助类型,其运行后不会存在于量子程序当中,例如:
inti=0;
H(q[i]);
可知,对于上述变量i的赋值由宿主语言处理并且它不传输到量子计算机,故i属于辅助类型;定义经典类型处理量子计算机中的经典位或变量,是一种嵌入式系统中表示数据的专用方法。例如,对于这样的for循环:
for(int i=0;i<10;i++,c++);
其中,对于i和c的处理是不一样的,因此,必须要标记i和c,即确定它们的类型。变量如果是运行时才能被确定值,其应该被插入到量子程序当中;如果是运行时毫不相关的值,应该被立即执行。
因此,对于运行时才能被确定的值,定义为经典类型;通常运行在FPGA中并且往往与量子测量密切相关。
S205:根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
具体的,所述源代码的逻辑结构还包括分支结构,根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,具体包括以下情形:
1.解析所述句法树,根据所述符号表的信息,判断当前解析对象的类型并进行类型检查;其中,所述解析对象包括变量、表达式和函数;当所述解析对象的类型为辅助类型时,则对相应的编译对象进行第一编译操作,以消除相应的分支结构或循环结构。
具体的,通过解析句法树,查询符号表并确定当前解析对象的类型,当确定解析对象的类型为辅助类型时,则对相应的编译对象进行第一编译操作。其中,所述第一编译操作为可以被立即执行的类型操作,无需进行分支结构或循环结构的操作,因此需要消除相应的分支结构和循环结构,例如,对如下的一段程序:
for(int i=1;i<=100;i++){
sum+=i;
}
对于解析对象sum,当确定其类型为辅助类型时,在进行相应的for循环的第一编译操作时,为消除相应的循环结构,即可直接赋值sum值为5050,通过上述操作,即可消除该循环结构。
接上述示例,例如,对如下的一段程序:
if(sum){
i++;
}
else{
i--;
}
对于解析对象sum,当确定其类型为辅助类型时,在进行相应的第一编译操作时,因为sum的值为5050,因此可判断上述程序仅执行该分支结构的“if”部分,“else”部分无需执行,因此通过上述操作,即可消除该“else”部分的分支结构,成为顺序结构。
2.解析所述句法树,根据所述符号表的信息,判断当前解析对象的类型并进行类型检查;其中,所述解析对象包括变量、表达式和函数;当所述解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作,以消除相应的循环结构,可保留或不保留相应的分支结构。
具体的,通过解析句法树,查询符号表并确定当前解析对象的类型,当确定解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作。其中,所述第二编译操作为运行时需要确定值的类型操作,因此该第二编译操作需要消除所述源代码中的循环结构,保留或不保留相应的分支结构再进行编译。例如,对如下的一段程序:
for(inti=0;i<5;i++){
H(q[i]);
}
对于解析对象i,当确定其类型为经典类型时,在进行相应的第二编译操作时,为消除相应的循环结构,即需要将此循环展开如下:
H(q[0]);
H(q[1]);
H(q[2]);
H(q[3]);
H(q[4]);
通过上述操作,即可消除该循环结构,展开为顺序结构,进行第二编译操作。
其中,当所述解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作,保留相应的分支结构,例如,对如下的一段程序:
int a;
measure(a);
if(a){
i++}
else{
i--;
}
对于上述程序,因变量a为经典类型,且无法确定a的值,因此需要保留相应的分支结构,进行第二编译操作。
其中,当所述解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作。例如,当变量c为经典类型,且c的值确定,则不保留相应的分支结构,对如下的一段程序:
if(c){
i++;
}
else{
i--;
}
对于上述程序,可以看出不需要保留相应的分支结构(假设执行if分支不执行else分支,则不保留else分支结构),即可进行第二编译操作。
通过上述流程,经过编译最终得到所述源代码对应的特定形式的中间代码。可以理解的是,在进行了语法分析和语义分析阶段的过程后,所述源代码变成一种内部表示形式,这种内部表示形式被称为特定形式的中间代码。所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统复杂性介于源代码语言和机器语言之间,容易将它翻译成目标代码。
以上仅仅作为示例,实际生成的特定形式中间代码由构造规则决定(即决定长什么样子),具体根据需求实现为准。
可见,与现有技术相比,本发明首先获得量子程序的源代码,对所述源代码进行词法分析,得到多个语法单元token,对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,再根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。基于此,本发明实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题,即用户在编程界面编写代码时,在代码字面上无需区分类型进行编写,两种类型在编译过程中会被区分开来并被转译为中间代码。
参见图3,图3为本发明实施例提供的一种量子程序编译装置的结构示意图,与图2所示的流程相对应,所述装置包括:
获得模块301,用于获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
词法分析模块302,用于对所述源代码进行词法分析,得到多个语法单元token;
构建模块303,用于对所述token进行语法分析,构建句法树;
语义分析模块304,用于基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
编译模块305,用于根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
具体的,所述词法分析模块,包括:
写入模块,用于对所述源代码进行词法分析,得到多个语法单元token,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
可见,与现有技术相比,本发明首先获得量子程序的源代码,对所述源代码进行词法分析,得到多个语法单元token,对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,再根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。基于此,本发明实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题,即用户在编程界面编写代码时,在代码字面上无需区分类型进行编写,两种类型在编译过程中会被区分开来并被转译为中间代码。
本发明实施例还提供一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
具体的,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
获得模块301,用于获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
词法分析模块302,用于对所述源代码进行词法分析,得到多个语法单元token;
构建模块303,用于对所述token进行语法分析,构建句法树;
语义分析模块304,用于基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
编译模块305,用于根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
具体的,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
可见,与现有技术相比,本发明首先获得量子程序的源代码,对所述源代码进行词法分析,得到多个语法单元token,对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,再根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:环结构。基于此,本发明实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题,即用户在编程界面编写代码时,在代码字面上无需区分类型进行编写,两种类型在编译过程中会被区分开来并被转译为中间代码。
本发明实施例还提供一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
具体的,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
具体的,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
获得模块301,用于获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
词法分析模块302,用于对所述源代码进行词法分析,得到多个语法单元token;
构建模块303,用于对所述token进行语法分析,构建句法树;
语义分析模块304,用于基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
编译模块305,用于根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
可见,与现有技术相比,本发明首先获得量子程序的源代码,对所述源代码进行词法分析,得到多个语法单元token,对所述token进行语法分析,构建句法树;基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,再根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。基于此,本发明实现一种在不影响量子程序语义前提下,将量子程序变量、表达式、函数分别对应的类型确定编译的方法,使得量子程序中的循环结构转变为量子处理器可处理的量子程序,从用户编程层面,解决当前需要严格区分类型的难题,即用户在编程界面编写代码时,在代码字面上无需区分类型进行编写,两种类型在编译过程中会被区分开来并被转译为中间代码。
以上依据图式所示的实施例详细说明了本发明的构造、特征及作用效果,以上所述仅为本发明的较佳实施例,但本发明不以图面所示限定实施范围,凡是依照本发明的构想所作的改变,或修改为等同变化的等效实施例,仍未超出说明书与图示所涵盖的精神时,均应在本发明的保护范围内。

Claims (10)

1.一种量子程序的编译方法,其特征在于,所述方法包括:
获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
对所述源代码进行词法分析,得到多个语法单元token;
对所述token进行语法分析,构建句法树;
基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
2.根据权利要求1所述的方法,其特征在于,所述对所述源代码进行词法分析,得到多个语法单元token,包括:
对所述源代码进行词法分析,得到多个语法单元token,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
3.根据权利要求2所述的方法,其特征在于,所述对所述token进行语法分析,构建句法树,包括:
根据所述token构建句法树,按照源代码语言的语法规则,识别并检查所述句法树的语法,同时更新所述符号表。
4.根据权利要求2所述的方法,其特征在于,所述对所述源代码进行词法分析,得到多个语法单元token,包括:
确定有穷自动机DFA,对所述源代码进行扫描,按照所述源代码语言的词法规则识别各类单词,产生相应单词的属性字,其中,所述单词包括关键字、标识符、常数、运算符和界符,所述属性字表示指向符号表中词法单元的条目;
根据所述单词及其属性得到语法单元token。
5.根据权利要求3所述的量子程序的编译方法,其特征在于,所述基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,包括:
利用所述句法树和所述符号表检查所述源代码语言定义的语义,并收集所述句法树和所述符号表的信息;
通过查询所述符号表,确定所述源代码变量、表达式、函数分别对应的类型。
6.根据权利要求5所述的方法,其特征在于,所述源代码的逻辑结构还包括分支结构;
所述根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,具体包括:
解析所述句法树,根据所述符号表的信息,判断当前解析对象的类型并进行类型检查;其中,所述解析对象包括变量、表达式和函数;
当所述解析对象的类型为辅助类型时,则对相应的编译对象进行第一编译操作,以消除相应的分支结构或循环结构;
当所述解析对象的类型为经典类型时,则对相应的编译对象进行第二编译操作,以消除相应的循环结构,可保留或不保留相应的分支结构;
最终得到所述源代码对应的特定形式的中间代码。
7.一种量子程序的编译装置,其特征在于,所述装置包括:
获得模块,用于获得量子程序的源代码;其中,所述源代码的逻辑结构至少包括:循环结构;
词法分析模块,用于对所述源代码进行词法分析,得到多个语法单元token;
构建模块,用于对所述token进行语法分析,构建句法树;
语义分析模块,用于基于所述句法树对所述源代码进行语义分析,确定所述源代码变量、表达式、函数分别对应的类型,其中,所述类型至少包括辅助类型和经典类型;
编译模块,用于根据所述变量、表达式、函数分别对应的类型,将所述源代码编译为特定形式的中间代码,其中,所述中间代码的逻辑结构不包括:循环结构。
8.根据权利要求7所述的装置,其特征在于,所述词法分析模块,包括:
写入模块,用于对所述源代码进行词法分析,得到多个语法单元token,同时将对应信息写入符号表,其中,所述符号表的属性至少包括:名称name、类型type、值value以及作用域scope,所述源代码的对应信息与所述符号表的属性相对应。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6任一项中所述的方法。
CN202010545894.8A 2020-06-16 2020-06-16 一种量子程序的编译方法及装置 Pending CN111767055A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010545894.8A CN111767055A (zh) 2020-06-16 2020-06-16 一种量子程序的编译方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010545894.8A CN111767055A (zh) 2020-06-16 2020-06-16 一种量子程序的编译方法及装置

Publications (1)

Publication Number Publication Date
CN111767055A true CN111767055A (zh) 2020-10-13

Family

ID=72721365

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010545894.8A Pending CN111767055A (zh) 2020-06-16 2020-06-16 一种量子程序的编译方法及装置

Country Status (1)

Country Link
CN (1) CN111767055A (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860262A (zh) * 2021-02-09 2021-05-28 上海商汤智能科技有限公司 一种代码解析的方法、装置、电子设备及存储介质
WO2021181155A1 (en) * 2020-03-09 2021-09-16 Quantum Machines Concurrent results processing in a quantum control system
US11245389B2 (en) 2018-11-26 2022-02-08 Quantum Machines Quantum controller with modular and dynamic pulse generation and routing
CN114443128A (zh) * 2020-10-30 2022-05-06 北京字节跳动网络技术有限公司 一种语言元素分析方法、装置、电子设备和存储介质
US11342905B2 (en) 2019-01-14 2022-05-24 Quantum Machines Quantum controller with multiple pulse modes
US11387820B2 (en) 2019-07-31 2022-07-12 Quantum Machines Frequency generation in a quantum controller
US11405024B2 (en) 2020-08-05 2022-08-02 Quantum Machines Frequency management for quantum control
US11463075B2 (en) 2019-09-02 2022-10-04 Quantum Machines Quantum controller architecture
CN115271084A (zh) * 2022-08-04 2022-11-01 无锡江南计算技术研究所 一种面向量子加速设备的混合式编译方法
US11507873B1 (en) 2019-12-16 2022-11-22 Quantum Machines Highly scalable quantum control
CN115409194A (zh) * 2021-05-28 2022-11-29 合肥本源量子计算科技有限责任公司 量子程序的生成系统及量子计算机操作系统
CN115409193A (zh) * 2021-05-28 2022-11-29 合肥本源量子计算科技有限责任公司 量子程序的生成方法、装置、介质及量子计算机操作系统
WO2022267854A1 (zh) * 2021-06-23 2022-12-29 合肥本源量子计算科技有限责任公司 量子计算任务处理方法、系统、装置及操作系统
US11616498B2 (en) 2019-09-02 2023-03-28 Quantum Machines Software-defined pulse orchestration platform
US11671180B2 (en) 2021-04-28 2023-06-06 Quantum Machines System and method for communication between quantum controller modules
US11671082B2 (en) 2019-03-06 2023-06-06 Quantum Machines Synchronization in a quantum controller with modular and dynamic pulse generation and routing
WO2023103612A1 (zh) * 2021-12-08 2023-06-15 深圳市腾讯计算机系统有限公司 量子程序的执行方法和量子程序的编译方法
CN116643734A (zh) * 2023-07-27 2023-08-25 北京云庐科技有限公司 多物理场的机器可执行有限元程序代码的生成方法和系统
US11868849B2 (en) 2019-05-02 2024-01-09 Quantum Machines Modular and dynamic digital control in a quantum controller
WO2024140891A1 (zh) * 2022-12-29 2024-07-04 华为技术有限公司 一种编译方法、电子设备及系统
US12111352B2 (en) 2022-01-24 2024-10-08 Quantum Machines Machine learning for syncing multiple FPGA ports in a quantum system
US12132486B2 (en) 2021-04-08 2024-10-29 Quantum Machines System and method for pulse generation during quantum operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081361A (zh) * 2012-02-03 2014-10-01 苹果公司 动态编程语言的基于跟踪器的运行时优化
CN104281096A (zh) * 2013-07-08 2015-01-14 广州中国科学院先进技术研究所 数控代码编译器的构造方法
US9274771B1 (en) * 2014-09-22 2016-03-01 Oracle International Corporation Automated adaptive compiler optimization
CN110187885A (zh) * 2019-06-10 2019-08-30 合肥本源量子计算科技有限责任公司 一种量子程序编译的中间代码生成方法及装置
CN110825384A (zh) * 2019-10-28 2020-02-21 国电南瑞科技股份有限公司 一种基于llvm的st语言编译方法及编译系统和编译器
CN111079933A (zh) * 2019-11-15 2020-04-28 合肥本源量子计算科技有限责任公司 量子线路的图形化显示方法、系统、存储介质和电子装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104081361A (zh) * 2012-02-03 2014-10-01 苹果公司 动态编程语言的基于跟踪器的运行时优化
CN104281096A (zh) * 2013-07-08 2015-01-14 广州中国科学院先进技术研究所 数控代码编译器的构造方法
US9274771B1 (en) * 2014-09-22 2016-03-01 Oracle International Corporation Automated adaptive compiler optimization
CN110187885A (zh) * 2019-06-10 2019-08-30 合肥本源量子计算科技有限责任公司 一种量子程序编译的中间代码生成方法及装置
CN110825384A (zh) * 2019-10-28 2020-02-21 国电南瑞科技股份有限公司 一种基于llvm的st语言编译方法及编译系统和编译器
CN111079933A (zh) * 2019-11-15 2020-04-28 合肥本源量子计算科技有限责任公司 量子线路的图形化显示方法、系统、存储介质和电子装置

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHRISTIAN G. BÖHMER ET AL.: "Loop quantum dynamics of the Schwarzschild interior", 《PHYSICAL REVIEW D》, vol. 76, no. 10, 8 October 2007 (2007-10-08) *
PHALDON: "QRunes教程-第2章 Qrunes基本类型与变量", 《GITHUB HTTPS://GITHUB.COM/ORIGINQ/QRUNES/BLOB/MASTER/SOURCE/CHAPTERS/CHAPTER2.RST》, 17 August 2019 (2019-08-17), pages 4 *
VLADIMIR KOZLOV: "Loop optimizations in Hotspot Server VM Compiler (C2)", 《OPENJDK WIKI HTTPS://WIKI.OPENJDK.JAVA.NET/PAGES/VIEWPAGE.ACTION?PAGEID=20415918》, 28 September 2015 (2015-09-28), pages 2 *
范志东: "低功耗编译优化算法及软件功耗分析技术的研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》, vol. 2016, no. 07, 15 July 2016 (2016-07-15), pages 32 - 34 *

Cited By (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11750179B2 (en) 2018-11-26 2023-09-05 Quantum Machines Quantum controller with modular and dynamic pulse generation and routing
US12088302B2 (en) 2018-11-26 2024-09-10 Quantum Machines Quantum controller with modular and dynamic pulse generation and routing
US11245389B2 (en) 2018-11-26 2022-02-08 Quantum Machines Quantum controller with modular and dynamic pulse generation and routing
US11342905B2 (en) 2019-01-14 2022-05-24 Quantum Machines Quantum controller with multiple pulse modes
US11736096B2 (en) 2019-01-14 2023-08-22 Quantum Machines Quantum controller with multiple pulse modes
US11671082B2 (en) 2019-03-06 2023-06-06 Quantum Machines Synchronization in a quantum controller with modular and dynamic pulse generation and routing
US12021532B2 (en) 2019-03-06 2024-06-25 Quantum Machines Synchronization in a quantum controller with modular and dynamic pulse generation and routing
US11868849B2 (en) 2019-05-02 2024-01-09 Quantum Machines Modular and dynamic digital control in a quantum controller
US11387820B2 (en) 2019-07-31 2022-07-12 Quantum Machines Frequency generation in a quantum controller
US11870443B2 (en) 2019-07-31 2024-01-09 Quantum Machines Frequency generation in a quantum controller
US11967957B2 (en) 2019-09-02 2024-04-23 Quantum Machines Software-defined pulse orchestration platform
US11463075B2 (en) 2019-09-02 2022-10-04 Quantum Machines Quantum controller architecture
US11967956B2 (en) 2019-09-02 2024-04-23 Quantum Machines Software-defined pulse orchestration platform
US11942947B2 (en) 2019-09-02 2024-03-26 Quantum Machines Quantum controller architecture
US11616497B2 (en) 2019-09-02 2023-03-28 Quantum Machines Software-defined pulse orchestration platform
US11616498B2 (en) 2019-09-02 2023-03-28 Quantum Machines Software-defined pulse orchestration platform
US11507873B1 (en) 2019-12-16 2022-11-22 Quantum Machines Highly scalable quantum control
WO2021181155A1 (en) * 2020-03-09 2021-09-16 Quantum Machines Concurrent results processing in a quantum control system
US11405024B2 (en) 2020-08-05 2022-08-02 Quantum Machines Frequency management for quantum control
US11942946B2 (en) 2020-08-05 2024-03-26 Quantum Machines Frequency management for quantum control
CN114443128A (zh) * 2020-10-30 2022-05-06 北京字节跳动网络技术有限公司 一种语言元素分析方法、装置、电子设备和存储介质
CN112860262B (zh) * 2021-02-09 2024-06-07 上海商汤智能科技有限公司 一种代码解析的方法、装置、电子设备及存储介质
CN112860262A (zh) * 2021-02-09 2021-05-28 上海商汤智能科技有限公司 一种代码解析的方法、装置、电子设备及存储介质
US12132486B2 (en) 2021-04-08 2024-10-29 Quantum Machines System and method for pulse generation during quantum operations
US11671180B2 (en) 2021-04-28 2023-06-06 Quantum Machines System and method for communication between quantum controller modules
CN115409193B (zh) * 2021-05-28 2024-08-13 本源量子计算科技(合肥)股份有限公司 量子程序的生成方法、装置、介质及量子计算机操作系统
CN115409194A (zh) * 2021-05-28 2022-11-29 合肥本源量子计算科技有限责任公司 量子程序的生成系统及量子计算机操作系统
CN115409193A (zh) * 2021-05-28 2022-11-29 合肥本源量子计算科技有限责任公司 量子程序的生成方法、装置、介质及量子计算机操作系统
CN115409194B (zh) * 2021-05-28 2024-08-13 本源量子计算科技(合肥)股份有限公司 量子程序的生成系统及量子计算机操作系统
US12026590B2 (en) 2021-06-23 2024-07-02 Origin Quantum Computing Technology (Hefei) Co., Ltd Quantum computing task processing method, system and apparatus, and operating system
WO2022267854A1 (zh) * 2021-06-23 2022-12-29 合肥本源量子计算科技有限责任公司 量子计算任务处理方法、系统、装置及操作系统
WO2023103612A1 (zh) * 2021-12-08 2023-06-15 深圳市腾讯计算机系统有限公司 量子程序的执行方法和量子程序的编译方法
US12111352B2 (en) 2022-01-24 2024-10-08 Quantum Machines Machine learning for syncing multiple FPGA ports in a quantum system
CN115271084A (zh) * 2022-08-04 2022-11-01 无锡江南计算技术研究所 一种面向量子加速设备的混合式编译方法
WO2024140891A1 (zh) * 2022-12-29 2024-07-04 华为技术有限公司 一种编译方法、电子设备及系统
CN116643734B (zh) * 2023-07-27 2024-05-31 北京云庐科技有限公司 多物理场的机器可执行有限元程序代码的生成方法和系统
CN116643734A (zh) * 2023-07-27 2023-08-25 北京云庐科技有限公司 多物理场的机器可执行有限元程序代码的生成方法和系统

Similar Documents

Publication Publication Date Title
CN111767055A (zh) 一种量子程序的编译方法及装置
CN110187885B (zh) 一种量子程序编译的中间代码生成方法及装置
CN110908640B (zh) 实现业务功能的方法和脚本引擎
US8898651B2 (en) Automatic generation of instruction-set documentation
CN114692600B (zh) 使用子例程图谱进行形式语言处理的方法和系统
CN115509514B (zh) 一种前端数据模拟方法、装置、设备及介质
Fritzson et al. Towards Modelica 4 meta-programming and language modeling with MetaModelica 2.0
Kania et al. Ckript: a new scripting language for web applications
US20080141230A1 (en) Scope-Constrained Specification Of Features In A Programming Language
Agarwal et al. Structured Code Representations Enable Data-Efficient Adaptation of Code Language Models
Fritzson et al. Meta-programming and language modeling with MetaModelica 1.0
Bennett A methodology for automated design of computer instruction sets
Griswold et al. Managing design trade-offs for a program understanding and transformation tool
Koskimies et al. The design of a language processor generator
Fritzson et al. Metamodelica–a symbolic-numeric modelica language and comparison to julia
Jana C++ and object-oriented programming paradigm
Kop et al. The power of non-determinism in higher-order implicit complexity: characterising complexity classes using non-deterministic cons-free programming
Arndt et al. Graph-based shape analysis beyond context-freeness
Petrila @ C--augmented version of C programming language
Husák et al. Optimizing transformations of dynamic languages compiled to intermediate representations
González Castiñeiras Implementing high-performance interpreted languages through the use of FPGAs. A proof of concept
Bose Instruction set design for support of high-level languages
Lam A Framework-Driven Comparison of Automata-Based Tools for Identifying Business Rule Conflicts
Barnat et al. ABSTRACTIONS VIA PROGRAM TRANSFORMATIONS
Feldman Edward W. Czeck

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20201013