CN113590193B - 一种运算装置、方法、介质及计算设备 - Google Patents

一种运算装置、方法、介质及计算设备 Download PDF

Info

Publication number
CN113590193B
CN113590193B CN202110783375.XA CN202110783375A CN113590193B CN 113590193 B CN113590193 B CN 113590193B CN 202110783375 A CN202110783375 A CN 202110783375A CN 113590193 B CN113590193 B CN 113590193B
Authority
CN
China
Prior art keywords
data
information
module
instruction
memory
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.)
Active
Application number
CN202110783375.XA
Other languages
English (en)
Other versions
CN113590193A (zh
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.)
Suzhou Yangsiping Semiconductor Co ltd
Original Assignee
Suzhou Yangsiping Semiconductor 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 Suzhou Yangsiping Semiconductor Co ltd filed Critical Suzhou Yangsiping Semiconductor Co ltd
Priority to CN202110783375.XA priority Critical patent/CN113590193B/zh
Publication of CN113590193A publication Critical patent/CN113590193A/zh
Application granted granted Critical
Publication of CN113590193B publication Critical patent/CN113590193B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Devices For Executing Special Programs (AREA)
  • Advance Control (AREA)

Abstract

本发明公开了一种运算装置、方法、介质及计算设备,其中该装置包括编译器、存储器、寄存器,以及控制器,其中,所述存储器用于在所述编译器和所述寄存器的作用下将所述Transformer模型的计算信息编译成规模化数据并储存,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;所述寄存器用于从所述存储器中不间断的读取所述运算指令,并储存所述运算指令的相关信息;所述控制器用于根据所述寄存器读取的运算指令,以及所述运算指令的相关信息构建控制流,并按照流模式控制所述存储器选择相应的运算数据进行运算。本装置具有运算消耗小、运行速度快的优点。

Description

一种运算装置、方法、介质及计算设备
技术领域
本发明涉及人工智能深度学习领域,尤其涉及一种运算装置、方法、介质及计算设备。
背景技术
Transformer是一种机器学习的模型,目前通常是在传统的通用处理器CPU上,按照逐个运算单元顺序运行的方法,实现Transformer模型的运行,此种方法执行效率较低,且不能体现Transformer模型,大规模并行化的设计理念;另外,还可以在通用图形处理器GPU上运行Transformer模型,其中,同类型的运算可通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令,来进行并行化运算。在上述两种运行方法中,不同的运算在时间上只能顺序运行,而且需要大规模的指令才能完成同类计算的大规模并行化运算,因此数据的传输和指令数目成为了此类运算的瓶颈。
因而,现有的不管是通用处理器CPU还是通用图形处理器GPU,均不能高效且高性能的运行Transformer模型
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种运算装置、方法、介质及计算设备,旨在解决背景技术中所提到的问题。
为实现上述目的,本发明提供一种运算装置,包括:编译器、存储器、寄存器,以及控制器,其中,
所述存储器用于在所述编译器和所述寄存器的作用下将所述Transformer模型的计算信息编译成规模化数据并储存,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;
所述寄存器用于从所述存储器中不间断的读取所述运算指令,并储存所述运算指令的相关信息;
所述控制器用于根据所述寄存器读取的运算指令,以及所述运算指令的相关信息构建控制流,并按照流模式控制所述存储器选择相应的运算数据进行运算。
可选地,所述计算信息包括图层信息,所述编译器根据依赖关系在时间维度上,将每个图层中的全部运算划分成多条运算链,并根据所述存储器上用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成所述运算指令。
可选地,所述编译器包括算子融合模块和译码模块;
所述算子融合模块用于根据所述图层信息生成计算逻辑图;
译码模块用于根据所述计算逻辑图,将每个图层中的全部运算,根据依赖关系在时间维度上划分成多条运算链,并根据所述存储器用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成运算指令集合。
可选地,所述编译器还用于判断所述Transformer模型的实现形式,并根据所述Transformer模型的实现形式,获取所述计算信息。
可选地,所述存储器包括并行存储模块、数据选择模块及异构并行计算模块;
所述并行存储模块用于储存所述规模化数据;
所述数据选择模块用于根据所述控制器的控制流信号,从所述并行存储模块中以流模式选取特定的一组运算数据;
所述异构并行计算模块用于对所述数据选择模块选取的特定的一组运算数据以流模式进行运算。
可选地,从所述并行存储模块中以流模式选取特定的一组运算数据包括:每次从所述并行存储模块选取固定长度的运算数据。
可选地,所述寄存器包括指令控制模块和指令描述模块;
所述指令控制模块用于记录所述寄存器从所述存储器读取的运算指令;
所述指令描述模块用于储存所述运算指令的相关信息。
可选地,所述指令描述模块包括多维寄存器堆,所述寄存器按照功能将所述运算指令的相关信息储存在不同的寄存器堆中,全部所述寄存器堆共享相同的数据储存逻辑和数据读取逻辑,以使所述寄存器不间断的向所述控制器提供运算指令及运算指令的相关信息。
本发明还提出一种运算方法,包括:
获取所述Transformer模型的计算信息;
将所述计算信息编译成规模化数据,所述规模化数据包括按照时间和空间编译重组的运算指令及运算数据;
根据所述运算指令,以及每个所述运算指令的相关信息构建控制流;
响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算。
可选地,获取所述Transformer模型的计算信息,包括:
判断所述Transformer模型的实现形式;
根据所述Transformer模型的实现形式,获取所述Transformer模型的计算信息。
可选地,将所述计算信息编译成规模化数据,所述规模化数据包括按照时间和空间编译重组的运算指令及运算数据,包括:
从所述计算信息中提取图层信息、参数存储信息及运算数据;
对每个图层的运算进行拆解;
按照依赖关系,将每个图层拆解后的运算构建成多条依赖链;
在时间维度上,将每个图层的多条依赖链构建成多条运算链;
在空间维度上,将每个图层的多条运算链进行并行化处理。
本发明还提出一种储存介质,其上储存有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
本发明还提出一种计算设备,所述计算设备包括处理器,所述处理器用于执行储存器中储存的计算机程序时实现上述的方法。
通过以上描述可知,本发明提出的运算装置,通过对transformer模型每个图层的运算在时间和空间上进行重组,形成控制流,并以控制流的形式控制各个运算不间断的运行,实现了精简运算Transformer模型的完整过程,而且本发明还通过将参与计算的运算数据限制在存储器内完成所有的计算,达到提升运算速度,降低运算能耗的目的。另外大规模的并行化计算都由控制器的同一条指令和逻辑控制,降低了控制逻辑所额外带来的在时间和能耗上的开销。
附图说明
图1是本发明运算装置一实施例的结构示意图;
图2是本发明运算装置中的存储器一实施例的结构示意图;
图3是本发明运算装置一实施例中的Transformer模型的架构图;
图4是本发明运算方法的步骤图;
图5是本发明运算方法的流程图;
图6是本发明一种储存介质的结构示意图;
图7是本发明一种计算设备的结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种系统、系统、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种运算装置、方法、介质及计算设备。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
示例性装置
本示例性实施方式提出一种运算装置,如图1所示,该装置包括:编译器100、存储器300、寄存器200,以及控制器400,其中,所述存储器300用于在所述编译器100和所述寄存器200的作用下将所述Transformer模型的计算信息编译成规模化数据并储存,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;所述寄存器200用于从所述存储器300中不间断的读取所述运算指令,并储存所述运算指令的相关信息;所述控制器400用于根据所述寄存器200读取的运算指令,以及所述运算指令的相关信息构建控制流,并按照流模式控制所述存储器300选择相应的运算数据进行运算。
具体地,编译器100可以为一段对Transformer模型进行译码的程序,比如在一些实施例中,编译器100可以通过C++语言实现,通过使用C++语言中的程序解释功能,识别Transformer模型中的目标程序是TensorFlow平台还是Pytorch平台,而后再根据不同平台对应的具体函数从Transformer模型中获取其自身的计算信息。其中,Transformer模型的计算信息可以包括图层信息、参数储存信息及运算数据,此时一方面将获取的运算数据和参数储存信息即可在存储器300内储存,另一方面,可以根据图层信息,对Transformer模型的运算指令按照时间和空间进行编译重组,此时就可得到了所述规模化数据。开始运行后,寄存器200就可以从存储器300中不间断的读取编译重组后的运算指令,以及与运算指令相关的信息,继而控制器400,根据寄存器200的运算指令和运算指令的相关信息,构建成控制流,并按照流模式控制存储器300从规模化数据中选择运算数据流进行运算。由于本方案是在控制器400的控制下,以及寄存器200的辅助下进行选择运算数据流并完成相应的运算,而且整个运算过程均在存储器300上完成,故而提高了运算的效能。
接下来,结合本实施例,对按照时间和空间编译重组运算指令进行详细阐述在本实施例中,编译器100包括算子融合模块和译码模块,所述算子融合模块用于根据所述图层信息生成计算逻辑图;译码模块用于根据所述计算逻辑图,将每个图层中的全部运算,根据依赖关系在时间维度上划分成多条运算链,并根据所述存储器300用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成运算指令集合。具体地,在获取了图层信息后,算子融合模块根据图层信息生成计算逻辑图,然后译码模块根据计算逻辑图拆分每个图层中的运算,进而根据依赖关系在时间维度上,将全部的运算划分成多条运算链,比如在某一图层中,先后包含了第一运算、第二运算……第十运算,共十个运算,彼此之间的依赖关系如下:第二运算依赖第一运算结果,第四运算依赖第三运算结果,第六运算依赖第五运算结果,第七运算依赖第二运算结果、第四运算结果及第六运算结果,第十运算依赖第七运算结果、第八运算结果及第九运算结果,那么在时间维度上就可以对上述依赖运算重新划分第一运算、第三运算、第五运算、第八运算、第九运算为一条运算链,可以在第一时间节点同时进行处理;第二运算、第四运算、第六运算为一条运算链,可以第二时间节点同时处理;第七运算为一条运算链,在第三时间节点运算;第十运算为一条运算链,可以在第四时间节点运算;因此原本十个时间节点上十个运算,按照依赖关系,在时间维度上划分成了四个时间节点上的四条运算链,由于划分成运算链后,每条运算链可能包含多个运算,因此需要根据存储器300用于运算的物理空间,对每条运算链进行并行化处理,从而可以使每个运算节点上的运算链,与运算空间想匹配,此时就完成了运算指令的重组。从上述描述不难看出,本技术方案通过在时间维度上对运算指令进行重组,将不同时间节点可平行运算的各类运算合并统一放在同一时间进行运算,节省了运算时间,在空间维度上重组的并行化处理,可以最大化的运动运算空间,提高运算的效能。
如图2所示,接下来对存储器300进行详细阐述,前述已经阐明,存储器300用于储存规模化数据,如在本实施例中,存储器300包括并行存储模块410、数据层选择模块420及异构并行计算模块430,其中所述并行存储模块410用于储存所述规模化数据;所述数据层选择模块420用于根据所述控制器400的控制流信号,从所述并行存储模块410中以流模式选取特定的一组运算数据;所述异构并行计算模块430用于对所述数据层选择模块420选取的特定的一组运算数据以流模式进行运算。具体地,在编译器100获取了Transformer模型的图层信息、参数储存信息,运算数据后,将图层信息、参数储存信息和运算数据发送至存储器300的并行存储模块410进行储存,运算指令重组完成后,当存储器300收到了控制器400的控制信号后,数据层选择模块420就可以从并行存储模块410中选择特定的一组运算数据,然后由异构并行计算模块430对其进行运算。其中,并行存储模块410可以为大规模数据的非易失性数据并行存储模块410,异构并行化计算模块可以完成Transformer模型中不同网络层、不同的方式的运算,而数据层选择模块420可以选择大规模数据,以完成相应的运算,可以满足单一指令完成多级并发计算。
接下来,对寄存器200进行详细阐述,其中,从所述存储器300中不间断的读取所述运算指令,并储存所述运算指令的相关信息,在一实施例中,所述寄存器200包括指令控制模块和指令描述模块;所述指令控制模块用于记录所述寄存器200从所述存储器300读取的运算指令;所述指令描述模块用于储存所述运算指令的相关信息。具体地,编译器100通过寄存器200对各个图层中的运算拆分重组之后,编译形成运算指令,然后把运算指令发送至存储器300,Transformer模型运行后,指令控制模块开始从不间断的读取存储运算指令,指令描述模块则不间断的从存储器300读取储存和运算指令相关信息,比如指令描述模块读取储存各个运算指令的计算长度、数据来源、计算种类,指令控制模块读取储存各个运算指令的下一次计算时间、下一次指令位置,以及其他信息。
在另一个实施例中,所述指令描述模块包括多维寄存器200堆,所述寄存器200按照功能将所述运算指令的相关信息储存在不同的寄存器200堆中,全部所述寄存器200堆共享相同的数据储存逻辑和数据读取逻辑,以使所述寄存器200不间断的向所述控制器400提供运算指令及运算指令的相关信息。
在编译器100重组运算指令集后,后控制器400按照寄存器200所读取储存的信息构建控制流。首先,控制器400需要对指令进行译码,然后根据解码后的控制指令所反应的控制信息,控制存储器300选择相应的运算数据进行运行,由于控制器400是按照控制流的形式对存储器300进行的运算进行控制的,因此存储器300可以不间断的运行Transformer模型的各个图层的各个运算。比如,控制器400不间断的向存储器300发送控制指令,数据层选择模块420根据控制流信号,从并行存储模块410中以流模式不间断的选取特定的一组运算数据,异构并行计算模块430以流模式不间断的进行运算。另一方面,控制器400还可以从寄存器200获取每一步运算的具体操作方式,如:本次计算长度,数据来源,计算种类,下一次计算时间,下一次指令位置以保证功能正确性的同时,获得最大的性能提升。
在另一个实施例中,数据层选择模块420从并行存储模块410中以流模式选取特定的一组运算数据包括:每次从所述并行存储模块410选取固定长度的运算数据。
结合图3所示的Transformer模型的具体架构,对本装置的另一个实施例进行说明。其中,在图3中的A部分为本实施例中的Transformer模型的具体架构,B部分为算子融合模块根据Transformer的图层信息生成的计算逻辑图,根据生成的计算逻辑图,译码模块既可以将该Transformer模型各个图层中的运算在时间和空间上进行重组,而后就可以按照上述具体阐述的方法原理进行运行该Transformer模型。
本发明提供的运算装置,通过对transformer模型每个图层的运算在时间和空间上进行重组,形成控制流,并以控制流的形式控制各个运算不间断的运行,实现了精简运算Transformer模型的完整过程,而且本发明还通过将参与计算的参数储存信息和运算数据限制在存储器300内完成所有的计算,达到提升运算速度,降低运算能耗的目的。另外大规模的并行化计算都由控制器400的同一条指令和逻辑控制,降低了控制逻辑带来的额外在时间和能耗上的开销。
示例性方法
本示例性实施方式提出一种运算方法,如图4所示,该方法包括如下步骤:
步骤S100:获取所述Transformer模型的计算信息。
步骤S200:将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据。
步骤S300:根据所述运算指令,以及每个所述运算指令的相关信息构建控制流。
步骤S400:响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算。
接下来结合图5,对上述步骤进行阐述,对于步骤S100,在获取Transformer模型的计算信息之前,首先需要判断Transformer模型的实现形式,根据Transformer模型的实现形式,即模型算法实现形式的识别,由于Transformer模型可以有不同的平台实现,因此需多次尝试模型形式识别,直至找到正确的实现形式为止。然后选用对应的函数,即可获取Transformer模型的计算信息。
在获取了Transformer模型的计算信息后,进行步骤S200,而步骤S200包括以下步骤:
步骤S210:从所述计算信息中提取图层信息、参数存储信息及运算数据。
步骤S220:对每个图层的运算进行拆解。
步骤S230:按照依赖关系,将每个图层拆解后的运算构建成多条依赖链。
步骤S240:在时间维度上,将每个图层的多条依赖链构建成多条运算链。
步骤S250:在空间维度上,将每个图层的多条运算链进行并行化处理。
上述步骤S210-步骤S250各个步骤的具体方法,可以参照示例性实施方式中的装置的具体方法,在此不一一赘述。
步骤S200重组编译完成运算指令后,进行步骤S300,根据所述运算指令,以及每个所述运算指令的相关信息构建控制流。
然后进行步骤S400,响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算。步骤S300中构建了控制流,在本步骤中,按照控制流下发各个控制指令,响应于接收到控制指令,开始按照控制指令选择并导入运算数据,进行大规模的并行化数据运算,控制流的结束后,模型完成运行。其中控制流包含了Transformer模型从头到尾的全部运算的指令,包括但不限于本次计算长度,运算数据来源、计算种类、下一次计算时间、下一次指令位置等数据。控制流为无间断的流态控制指令,从而响应于控制流,就可以按照无间断的流态的运算方式完成Transformer模型的运行。在控制流的控制指令下Transformer模型的各个运算形成数据流,完成从头到尾的全部运算,从而达到提高计算效能的目的。
示例性介质
在介绍了本发明示例性实施方式的方法、介质和系统之后,接下来,参考图6对本发明示例性实施方式的计算机可读储存介质进行说明,请参考图6,其示出的计算机可读储存介质为光盘70,其上储存有计算机程序(即程序产品),所述计算机程序在被处理器运行时,会实现上述方法实施方式中所记载的各步骤,例如获取所述Transformer模型的计算信息;将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;根据所述运算指令,以及每个所述运算指令的相关信息构建控制流;响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算;各步骤的具体实现方式在此不再重复说明。
需要说明的是,所述计算机可读储存介质的例子还可以包括,但不限于相变内存(PRAM)、静态随机存取储存器(SRAM)、动态随机存取储存器(DRAM)、其他类型的随机存取储存器(RAM)、只读储存器(ROM)、电可擦除可编程只读储存器(EEPROM)、快闪记忆体或其他光学、磁性储存介质,在此不再一一赘述。
示例性计算设备
在介绍了本发明示例性实施方式的方法、系统和介质之后,接下来,参考图7对本发明示例性实施方式的计算设备。
图7示出了适于用来实现本发明实施方式的示例性计算设备80的框图,该计算设备80可以是计算机系统或服务器。图7显示的计算设备80仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算设备80的组件可以包括但不限于:一个或者多个处理器或者处理单元801,系统储存器802,连接不同系统组件(包括系统储存器802和处理单元801)的总线803。
计算设备80典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算设备80访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统储存器802可以包括易失性储存器形式的计算机系统可读介质,例如随机存取储存器(RAM)8021和/或高速缓存储存器8022。计算设备70可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统储存介质。仅作为举例,ROM8023可以用于读写不可移动的、非易失性磁介质(图7中未显示,通常称为“硬盘驱动器”)。尽管未在图7中示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线803相连。系统储存器802中可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块8024的程序/实用工具8025,可以储存在例如系统储存器802中,且这样的程序模块8024包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块8024通常执行本发明所描述的实施例中的功能和/或方法。
计算设备80也可以与一个或多个外部设备804(如键盘、指向设备、显示器等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,计算设备80还可以通过网络适配器806与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器806通过总线803与计算设备80的其它模块(如处理单元801等)通信。应当明白,尽管图7中未示出,可以结合计算设备80使用其它硬件和/或软件模块。
处理单元801通过运行储存在系统储存器802中的程序,从而执行各种功能应用以及数据处理,例如,获取所述Transformer模型的计算信息;将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;根据所述运算指令,以及每个所述运算指令的相关信息构建控制流;响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算;各步骤的具体实现方式在此不再重复说明。应当注意,尽管在上文详细描述中提及了运算装置的若干单元/模块或子单元/子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
在本发明的描述中,需要说明的是,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、系统和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以储存在一个处理器可执行的非易失的计算机可读取储存介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品储存在一个储存介质中,包括若干指令用以使得一台计算设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的储存介质包括:U盘、移动硬盘、只读储存器(ROM,Read-Only Memory)、随机存取储存器(RAM,Random Access Memory)、磁碟或者光盘等各种可以储存程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
通过以上描述,本发明实施例,提供以下技术方案,但不仅限于此:
1.一种运算装置,用于执行Transformer模型,包括编译器、存储器、寄存器,以及控制器,其中,
所述存储器用于在所述编译器和所述寄存器的作用下将所述Transformer模型的计算信息编译成规模化数据并储存,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;
所述寄存器用于从所述存储器中不间断的读取所述运算指令,并储存所述运算指令的相关信息;
所述控制器用于根据所述寄存器读取的运算指令,以及所述运算指令的相关信息构建控制流,并按照流模式控制所述存储器选择相应的运算数据进行运算。
2.如技术方案1所述的运算装置,其中,所述计算信息包括图层信息,所述编译器根据依赖关系在时间维度上,将每个图层中的全部运算划分成多条运算链,并根据所述存储器上用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成所述运算指令。
3.如技术方案1或2所述的运算装置,其中,所述编译器包括算子融合模块和译码模块;
所述算子融合模块用于根据所述图层信息生成计算逻辑图;
译码模块用于根据所述计算逻辑图,将每个图层中的全部运算,根据依赖关系在时间维度上划分成多条运算链,并根据所述存储器用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成运算指令集合。
4.如技术方案1-3任一项所述的运算装置,其中,所述编译器还用于判断所述Transformer模型的实现形式,并根据所述Transformer模型的实现形式,获取所述计算信息。
5.如技术方案1-4任一项所述的运算装置,其中,所述存储器包括并行存储模块、数据选择模块及异构并行计算模块;
所述并行存储模块用于储存所述规模化数据;
所述数据选择模块用于根据所述控制器的控制流信号,从所述并行存储模块中以流模式选取特定的一组运算数据;
所述异构并行计算模块用于对所述数据选择模块选取的特定的一组运算数据以流模式进行运算。
6.如技术方案1-5任一项所述的运算装置,其中,从所述并行存储模块中以流模式选取特定的一组运算数据包括:每次从所述并行存储模块选取固定长度的运算数据。
7.如技术方案1-6任一项所述的运算装置,其中,所述寄存器包括指令控制模块和指令描述模块;
所述指令控制模块用于记录所述寄存器从所述存储器读取的运算指令;
所述指令描述模块用于储存所述运算指令的相关信息。
8.如技术方案1-7任一项所述的运算装置,其中,所述指令描述模块包括多维寄存器堆,所述寄存器按照功能将所述运算指令的相关信息储存在不同的寄存器堆中,全部所述寄存器堆共享相同的数据储存逻辑和数据读取逻辑,以使所述寄存器不间断的向所述控制器提供运算指令及运算指令的相关信息。
9.一种运算方法,用于运算Transformer模型,包括:
获取所述Transformer模型的计算信息;
将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;
根据所述运算指令,以及每个所述运算指令的相关信息构建控制流;
响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算。
10.如技术方案9所述的运算方法,其中,获取所述Transformer模型的计算信息,包括:
判断所述Transformer模型的实现形式;
根据所述Transformer模型的实现形式,获取所述Transformer模型的计算信息。
11.如技术方案9或10所述的运算方法,其中,将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据,包括:
从所述计算信息中提取图层信息、参数存储信息及运算数据;
对每个图层的运算进行拆解;
按照依赖关系,将每个图层拆解后的运算构建成多条依赖链;
在时间维度上,将每个图层的多条依赖链构建成多条运算链;
在空间维度上,将每个图层的多条运算链进行并行化处理。
12.一种储存介质,其上储存有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如技术方案9-11中任一项所述的方法。
13.一种计算设备,其特征在于:所述计算设备包括处理器,所述处理器用于执行储存器中储存的计算机程序时实现如技术方案9-11中任一项所述的方法。

Claims (11)

1.一种运算装置,用于执行Transformer模型,包括编译器、存储器、寄存器,以及控制器,其中,
所述存储器用于在所述编译器和所述寄存器的作用下将所述Transformer模型的计算信息编译成规模化数据并储存,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;所述计算信息包括图层信息,所述编译器根据依赖关系在时间维度上,将每个图层中的全部运算划分成多条运算链,并根据所述存储器上用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成所述运算指令;
所述寄存器用于从所述存储器中不间断的读取所述运算指令,并储存所述运算指令的相关信息;
所述控制器用于根据所述寄存器读取的运算指令,以及所述运算指令的相关信息构建控制流,并按照流模式控制所述存储器选择相应的运算数据进行运算。
2.如权利要求1所述的运算装置,其中,所述编译器包括算子融合模块和译码模块;
所述算子融合模块用于根据所述图层信息生成计算逻辑图;
译码模块用于根据所述计算逻辑图,将每个图层中的全部运算,根据依赖关系在时间维度上划分成多条运算链,并根据所述存储器用于运算的物理空间将所述多条运算链进行并行化处理,并将经过并行化处理后的所述多条运算链编译成运算指令集合。
3.如权利要求2所述的运算装置,其中,所述编译器还用于判断所述Transformer模型的实现形式,并根据所述Transformer模型的实现形式,获取所述计算信息。
4.如权利要求1所述的运算装置,其中,所述存储器包括并行存储模块、数据选择模块及异构并行计算模块;
所述并行存储模块用于储存所述规模化数据;
所述数据选择模块用于根据所述控制器的控制流信号,从所述并行存储模块中以流模式选取特定的一组运算数据;
所述异构并行计算模块用于对所述数据选择模块选取的特定的一组运算数据以流模式进行运算。
5.如权利要求4所述的运算装置,其中,从所述并行存储模块中以流模式选取特定的一组运算数据包括:每次从所述并行存储模块选取固定长度的运算数据。
6.如权利要求1所述的运算装置,其中,所述寄存器包括指令控制模块和指令描述模块;
所述指令控制模块用于记录所述寄存器从所述存储器读取的运算指令;
所述指令描述模块用于储存所述运算指令的相关信息。
7.如权利要求6所述的运算装置,其中,所述指令描述模块包括多维寄存器堆,所述寄存器按照功能将所述运算指令的相关信息储存在不同的寄存器堆中,全部所述寄存器堆共享相同的数据储存逻辑和数据读取逻辑,以使所述寄存器不间断的向所述控制器提供运算指令及运算指令的相关信息。
8.一种运算方法,用于运算Transformer模型,包括:
获取所述Transformer模型的计算信息,所述计算信息包括图层信息;
将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据;
根据所述运算指令,以及每个所述运算指令的相关信息构建控制流;
响应于所述控制流,按照流模式不间断的选择相应的运算数据并完成相应的运算;
其中,将所述计算信息编译成规模化数据,所述规模化数据至少包括按照时间和空间编译重组的运算指令及运算数据,包括:
从所述计算信息中提取图层信息、参数存储信息及运算数据;
对每个图层的运算进行拆解;
按照依赖关系,将每个图层拆解后的运算构建成多条依赖链;
在时间维度上,将每个图层的多条依赖链构建成多条运算链;
在空间维度上,将每个图层的多条运算链进行并行化处理。
9.如权利要求8所述的运算方法,其中,获取所述Transformer模型的计算信息,包括:
判断所述Transformer模型的实现形式;
根据所述Transformer模型的实现形式,获取所述Transformer模型的计算信息。
10.一种储存介质,其上储存有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求8或9所述的方法。
11.一种计算设备,其特征在于:所述计算设备包括处理器,所述处理器用于执行储存器中储存的计算机程序时实现如权利要求8或9所述的方法。
CN202110783375.XA 2021-07-12 2021-07-12 一种运算装置、方法、介质及计算设备 Active CN113590193B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110783375.XA CN113590193B (zh) 2021-07-12 2021-07-12 一种运算装置、方法、介质及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110783375.XA CN113590193B (zh) 2021-07-12 2021-07-12 一种运算装置、方法、介质及计算设备

Publications (2)

Publication Number Publication Date
CN113590193A CN113590193A (zh) 2021-11-02
CN113590193B true CN113590193B (zh) 2024-03-22

Family

ID=78246815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110783375.XA Active CN113590193B (zh) 2021-07-12 2021-07-12 一种运算装置、方法、介质及计算设备

Country Status (1)

Country Link
CN (1) CN113590193B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541612A (zh) * 2010-11-17 2012-07-04 微软公司 数据平行代码中的映射变换
CN105512088A (zh) * 2015-11-27 2016-04-20 中国电子科技集团公司第三十八研究所 一种可重构的处理器架构及其重构方法
CN106786528A (zh) * 2016-12-22 2017-05-31 国网河北省电力公司衡水供电分公司 一种基于d5000系统的变电站主变经济运行控制方法及应用
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN110764744A (zh) * 2018-07-25 2020-02-07 赛灵思公司 用于神经网络计算的中间表示生成方法和装置
CN111428327A (zh) * 2018-12-24 2020-07-17 深圳市中兴微电子技术有限公司 一种指令硬件架构的构建方法、装置及存储介质
CN112183735A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 操作数据的生成方法、装置及相关产品
CN112352219A (zh) * 2018-06-20 2021-02-09 华为技术有限公司 自动化编译的系统和方法
CN112819680A (zh) * 2019-11-15 2021-05-18 英特尔公司 用于嵌入式存储器和计算元件的错误检测和控制的系统和方法
CN112860484A (zh) * 2021-01-29 2021-05-28 深信服科技股份有限公司 容器运行时异常行为检测、模型训练方法及相关装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7676647B2 (en) * 2006-08-18 2010-03-09 Qualcomm Incorporated System and method of processing data using scalar/vector instructions
US11663746B2 (en) * 2019-11-15 2023-05-30 Intel Corporation Systolic arithmetic on sparse data

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541612A (zh) * 2010-11-17 2012-07-04 微软公司 数据平行代码中的映射变换
CN105512088A (zh) * 2015-11-27 2016-04-20 中国电子科技集团公司第三十八研究所 一种可重构的处理器架构及其重构方法
CN106786528A (zh) * 2016-12-22 2017-05-31 国网河北省电力公司衡水供电分公司 一种基于d5000系统的变电站主变经济运行控制方法及应用
CN112352219A (zh) * 2018-06-20 2021-02-09 华为技术有限公司 自动化编译的系统和方法
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN110764744A (zh) * 2018-07-25 2020-02-07 赛灵思公司 用于神经网络计算的中间表示生成方法和装置
CN111428327A (zh) * 2018-12-24 2020-07-17 深圳市中兴微电子技术有限公司 一种指令硬件架构的构建方法、装置及存储介质
CN112183735A (zh) * 2019-07-03 2021-01-05 安徽寒武纪信息科技有限公司 操作数据的生成方法、装置及相关产品
CN112819680A (zh) * 2019-11-15 2021-05-18 英特尔公司 用于嵌入式存储器和计算元件的错误检测和控制的系统和方法
CN112860484A (zh) * 2021-01-29 2021-05-28 深信服科技股份有限公司 容器运行时异常行为检测、模型训练方法及相关装置

Also Published As

Publication number Publication date
CN113590193A (zh) 2021-11-02

Similar Documents

Publication Publication Date Title
US9395986B2 (en) Compiling method and compiling apparatus
JP2016508640A (ja) ハードウェアポインタを使用したsimdコア内での分岐ブランチに対するソリューション
Anderson et al. Optimal DNN primitive selection with partitioned boolean quadratic programming
JP6432450B2 (ja) 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
Zhai et al. ByteTransformer: A high-performance transformer boosted for variable-length inputs
US20120198425A1 (en) Management of conditional branches within a data parallel system
CN108874727A (zh) 一种面向gpdsp的多核并行计算实现方法
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
KR102062208B1 (ko) 멀티스레드 프로그램 코드의 변환 장치 및 방법
Zhong et al. Using arm scalable vector extension to optimize open mpi
Koesterke et al. Optimizing the PCIT algorithm on stampede's Xeon and Xeon Phi processors for faster discovery of biological networks
CN113590193B (zh) 一种运算装置、方法、介质及计算设备
Müller et al. AnySeq/GPU: a novel approach for faster sequence alignment on GPUs
Müller et al. AnySeq: A high performance sequence alignment library based on partial evaluation
Katel et al. High performance gpu code generation for matrix-matrix multiplication using mlir: some early results
Kozlov et al. Efficient computation of the phylogenetic likelihood function on the Intel MIC architecture
US20230116546A1 (en) Method for compilation, electronic device and storage medium
US20080282237A1 (en) Method and Apparatus For Generating Execution Equivalence Information
Phillips et al. Performance analysis of the high-performance conjugate gradient benchmark on GPUs
JPH04293150A (ja) コンパイル方法
Wu et al. Parallelizing CLIPS-based expert systems by the permutation feature of pattern matching
JP2010140233A (ja) エミュレーションシステム及びエミュレーション方法
CN114041116A (zh) 数据移动任务优化的方法和装置
Rietveld et al. Optimizing sparse matrix computations through compiler-assisted programming
Zhai et al. Design and optimization of a big Data computing framework based on CPU/GPU cluster

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
GR01 Patent grant
GR01 Patent grant