CN112667241B - 机器学习指令的转换方法及装置、板卡、主板、电子设备 - Google Patents

机器学习指令的转换方法及装置、板卡、主板、电子设备 Download PDF

Info

Publication number
CN112667241B
CN112667241B CN202011570154.6A CN202011570154A CN112667241B CN 112667241 B CN112667241 B CN 112667241B CN 202011570154 A CN202011570154 A CN 202011570154A CN 112667241 B CN112667241 B CN 112667241B
Authority
CN
China
Prior art keywords
instruction
machine learning
instructions
learning instruction
basic block
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
CN202011570154.6A
Other languages
English (en)
Other versions
CN112667241A (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.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information 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 Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202011570154.6A priority Critical patent/CN112667241B/zh
Publication of CN112667241A publication Critical patent/CN112667241A/zh
Application granted granted Critical
Publication of CN112667241B publication Critical patent/CN112667241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请涉及一种机器学习指令的转换方法及装置、板卡、主板、电子设备,通过获取机器学习指令序列,并对该机器学习指令序列进行划分,得到至少一个基本块,进而根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了对机器学习指令的窥孔优化,减少了机器学习指令的时间开销,大大提升了机器学习计算装置的整体性能。

Description

机器学习指令的转换方法及装置、板卡、主板、电子设备
技术领域
本申请涉及数据处理技术领域,特别是涉及一种机器学习指令的转换方法及装置、板卡、主板、电子设备。
背景技术
近年来,机器学习飞速发展,主要是机器学习可以满足人们对于巨大数据量的超快处理需求。机器学习运算是一种功能强大的算法,近年来被应用于图像、语言等领域。
窥孔优化是一种很局部的优化方式,是指编译器针对已经生成的代码,结合CPU指令的特点,通过一些可能带来性能提升的转换规则,或者通过整体的分析,通过指令转换,以此提升代码性能。
然而,传统技术缺乏对机器学习计算装置中的机器学习指令进行窥孔优化的方案,因此,如何实现对机器学习指令的窥孔优化,成为本领域技术人员亟待解决的问题。
发明内容
基于此,有必要针对上述如何实现对机器学习指令的窥孔优化的技术问题,提供一种机器学习指令的转换方法及装置、板卡、主板、电子设备。
一种机器学习指令的转换方法,其特征在于,所述方法包括:
获取机器学习指令序列;
对所述机器学习指令序列进行划分,得到至少一个基本块,其中,所述基本块中包括至少一条机器学习指令;
根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令。
在其中一个实施例中,所述对所述机器学习指令序列进行划分,得到至少一个基本块,包括:
查找所述机器学习指令序列中的跳转指令;
根据所述跳转指令对所述机器学习指令序列进行划分,得到至少一个基本块。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取所述基本块中的第一偏移寄存器指令;
根据所述第一偏移寄存器指令,查找所述基本块中的第二偏移寄存器指令,其中,所述第一偏移寄存器指令和所述第二偏移寄存器指令用于对同一个寄存器中的值进行偏移;
若所述第一偏移寄存器指令和所述第二偏移寄存器指令之间不存在使用所述寄存器中的值的机器学习指令,则合并所述第一偏移寄存器指令和所述第二偏移寄存器指令,得到合并后的偏移寄存器指令。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取所述基本块中的可提前机器学习指令;
对所述可提前机器学习指令进行位置前移,并根据所述可提前机器学习指令前移后的位置,判断所述机器学习指令序列是否存在逻辑错误;
若所述机器学习指令序列存在逻辑错误,则停止对所述可提前机器学习指令进行位置前移,并将所述可提前机器学习指令放置于所述机器学习指令序列不存在逻辑错误所对应的任一前移后的位置。
在其中一个实施例中,所述获取所述基本块中的可提前机器学习指令,包括:
将所述基本块中的机器学习指令与预设的可提前机器学习指令进行匹配,得到所述基本块中的可提前机器学习指令。
在其中一个实施例中,对所述可提前机器学习指令进行位置前移,包括:
判断所述可提前机器学习指令前移后是否影响其他机器学习指令的执行;
若判定所述可提前机器学习指令前移后不会影响其他机器学习指令的执行,则对所述可提前机器学习指令进行位置前移。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取所述基本块中的存储指令,其中,所述存储指令用于对第一数据进行存储;
在所述存储指令后面继续查找加载所述第一数据的加载指令;
将所述存储指令和所述加载指令进行合并,得到合并后的移动指令。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取连续排列数量超过n条的第一机器学习指令,其中,n为所述第一机器学习指令对应的指令发射队列的队列长度;
将与所述第一机器学习指令在同一个时间片中并行执行的第二机器学习指令提前,并将所述第二机器学习指令插入至第n条所述第一机器学习指令的后面,且所述第二机器学习指令的插入数量不超过所述第二机器学习指令对应的指令发射队列的队列长度。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取一个时间片内,同步指令的指令块之间的初始相对位置,其中,所述指令块包括至少一条机器学习指令;
调整所述指令块与其他机器学习指令之间的位置,获得所述同步指令的指令块之间的最终相对位置;
若所述最终相对位置小于所述初始相对位置,则根据所述最终相对位置确定所述同步指令的指令块调整后的最终位置。
在其中一个实施例中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
若在一个时间片内,存在先后的对同一段数据的多个乘法操作或激活操作,则将所述多个乘法操作或激活操作进行融合,得到融合后的机器学习指令。
例如,指令序列中先对数据乘以scale,再进行relu,若scale大于0,则可以把scale乘到relu的斜率上,而去除乘scale的指令,其结果相同。
一种机器学习指令的转换装置,所述装置包括:
指令获取模块,用于获取机器学习指令序列;
指令划分模块,用于对所述机器学习指令序列进行划分,得到至少一个基本块,其中,所述基本块中包括至少一条机器学习指令;
指令转换模块,用于根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令。
一种板卡,所述板卡包括:机器学习处理器,所述机器学习处理器用于执行上述实施例中任一所述的方法。
一种主板,所述主板包括:通用处理器和如上述实施例中所述的板卡。
一种电子设备,所述电子设备包括如上述实施例中所述的主板。
上述机器学习指令的转换方法及装置、板卡、主板、电子设备,通过获取机器学习指令序列,并对该机器学习指令序列进行划分,得到至少一个基本块,进而根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了对机器学习指令的窥孔优化,以此减少了机器学习指令的时间开销,使得机器学习计算装置的整体性能大大提升。
附图说明
图1为一个实施例中机器学习指令的转换方法的应用环境图;
图2为一个实施例中机器学习指令的转换方法的流程示意图;
图3为一个实施例中对机器学习指令序列进行划分,得到至少一个基本块补充方案的流程示意图;
图4为一个实施例中通过合并偏移寄存器指令以实现机器学习指令的窥孔优化的流程示意图;
图5为一个实施例中对可提前执行的机器学习指令进行位置前移以实现机器学习指令的窥孔优化的流程示意图;
图6为一个实施例中数据加载操作、数据计算操作和数据存储操作构成三级流水线执行的示意图;
图7为一个实施例中对同一批数据对应的存储指令和加载指令合并为移动指令以实现机器学习指令的窥孔优化的流程示意图;
图8为一个实施例中对机器学习指令序列的机器学习指令进行重排序以实现机器学习指令的窥孔优化的流程示意图;
图9为另一个实施例中对机器学习指令序列的机器学习指令进行重排序以实现机器学习指令的窥孔优化的流程示意图;
图10为一个实施例中机器学习指令的转换装置的结构框图;
图11为一个实施例中电子设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的机器学习指令的转换方法,可以应用于如图1所示的应用环境中。其中,处理器102和编译器104分别与存储器106连接。编译器104用于获取机器学习指令序列,利用窥孔优化技术对该机器学习指令序列中的指令进行指令转换,最终得到转换后的机器学习指令。处理器102用于根据编译器104得到的转换后的机器学习指令执行相应的机器学习操作。上述的机器学习指令序列和/或转换后的机器学习指令可存储于存储器106中。由此通过对机器学习指令的优化,可有效减少时间开销。
可选地,处理器102可以是任何适当的硬件处理器,比如:CPU、GPU、FPGA、DSP和ASIC等等。存储器106可以是U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在一个实施例中,该机器学习指令的转换方法可以应用于中央处理器和神经网络加速器这样的计算平台上。其中,机器学习指令的转换方法可以由编译器执行,编译器通常为中央处理器上运行的软件程序,也可以为在中央处理器或神经网络加速器中运行的软件程序或硬件电路。在本实施例中,编译器可以对机器学习指令在中央处理器上进行转换,进而中央处理器将转换后的机器学习指令发送至神经网络加速器,神经网络加速器运行该转换后的机器学习指令后,将运行结果再返回至中央处理器。可选地,上述神经网络加速器可以为图形处理器、嵌入式神经网络处理器或者机器学习处理单元,本实施例对神经网络加速器的具体类型不做限定。在下述实施例中将介绍机器学习指令的转换方法的具体实现过程。
在一个实施例中,如图2所示,提供了一种机器学习指令的转换方法,以该方法应用于图1中的编译器104为例进行说明,包括以下步骤:
S202,获取机器学习指令序列。
其中,机器学习指令序列是指多条机器学习指令的机器码以字节为基本单位顺序拼接形成的线性的队列。可选地,机器学习指令序列包括多条机器学习指令。需要清楚的是,机器学习指令中包括很多向量指令或者流指令,一条指令能处理多个数。跳转指令相对较少。
具体地,编译器可从存储器中读取机器学习指令序列。
S204,对机器学习指令序列进行划分,得到至少一个基本块。
其中,基本块是指程序—顺序执行的语句序列,其只有一个入口和一个出口,入口就是其中的第—个语句,出口就是其中的最后一个语句。对一个基本块来说,执行时只从其入口进入,从其出口退出。
其中,基本块中包括至少一条机器学习指令。
具体地,编译器根据预设的指令划分方式,将机器学习指令序列划分为至少一个基本块。可选地,预设的指令划分方式可以是根据ifelse指令、for循环指令或其他跳转指令对机器学习指令序列进行划分。其中,如上所言,由于跳转指令相对较少,基本块一般划分得更大,所以跳转指令带来的限制更少。与CPU较多标量指令相比,机器学习指令中可以以更粗的粒度对指令顺序进行优化,而不必考虑单条向量指令所处理的数据之间的相关性。
S206,根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令。
需要指出,窥孔优化算法可对基本块中的机器学习指令进行优化,而不能对不同的基本块中的机器学习指令进行优化。
具体地,编译器在获得基本块之后,根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了利用窥孔优化技术对机器学习指令的局部优化。进一步地,编译器将得到的转换后的机器学习指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该转换后的机器学习指令并执行该指令对应的操作。
可选地,窥孔优化的方式包括指令合并、指令前移、指令重排序等。例如,通过指令合并的方式将需要合并的机器学习指令进行合并,从而得到合并后的机器学习指令。不难理解,该合并过程属于对机器学习指令进行指令转换的一种实现过程。
上述机器学习指令的转换方法,编译器通过获取机器学习指令序列,并对该机器学习指令序列进行划分,得到至少一个基本块,进而根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了对机器学习指令的窥孔优化,以此减少了机器学习指令的时间开销,使得机器学习计算装置的整体性能大大提升。
在一个实施例中,请参阅图3,涉及编译器对机器学习指令序列进行划分,得到至少一个基本块的一种可能的实现过程。在上述实施例的基础上,S204包括以下步骤:
S212,查找机器学习指令序列中的跳转指令;
S214,根据跳转指令对机器学习指令序列进行划分,得到至少一个基本块。
其中,跳转指令是指可以实现跳转功能的机器学习指令。可选地,跳转指令可包括if else指令、for循环指令等。
具体地,编译器在获得机器学习指令序列之后,对机器学习指令序列中的所有机器学习指令进行指令查找,得到机器学习指令序列中的所有跳转指令。之后编译器根据该跳转指令和该跳转指令所跳转的机器学习指令,对机器学习指令序列进行划分,得到至少一个基本块。可选地,指令查找的方式可以是预先设置跳转指令,进而根据指令匹配方式,即可得到匹配的机器学习指令序列中的所有跳转指令。
以if else指令为例,假设该if else指令表示if(表达式)语句1else语句2,那么,以if对应的机器学习指令和else对应的机器学习指令为界限,将if对应的机器学习指令、else对应的机器学习指令及它们之间的机器学习指令划分到一个基本块中,并且,将该基本块两侧的机器学习指令各划分到一个基本块中,这样,即可获得四个基本块。该四个基本块包括if前组成的基本块、if到else间组成的基本块、else到else结尾间组成的基本块以及else结尾之后组成的基本块。上述四个基本块可以表示如下:
基本块1
If(…){
基本块2
}else{
基本块3
}
基本块4。
本申请实施例中,编译器以跳转指令作为基本块的划分界限,这样划分好的基本块中的机器学习指令不会存在逻辑问题,进而保证了窥孔优化后的机器学习指令执行的准确性。
本申请实施例中,上述步骤S206的实现方式有多种,下面仅列举其中几种实现方式。
在一个实施例中,请参阅图4,涉及通过合并偏移寄存器指令以实现机器学习指令的窥孔优化的具体过程。在上述实施例的基础上,S206包括以下步骤:
S222,获取基本块中的第一偏移寄存器指令;
S224,根据第一偏移寄存器指令,查找基本块中的第二偏移寄存器指令,其中,第一偏移寄存器指令和第二偏移寄存器指令用于对同一个寄存器中的值进行偏移;
S226,若第一偏移寄存器指令和第二偏移寄存器指令之间不存在使用寄存器中的值的机器学习指令,则合并第一偏移寄存器指令和第二偏移寄存器指令,得到合并后的偏移寄存器指令。
其中,机器学习指令包括上述偏移寄存器指令。偏移寄存器指令指的是fixreg指令,用于对寄存器中的值进行偏移。
可选地,偏移寄存器指令用于对寄存器中的值加一个偏移,或者对寄存器中的值减一个偏移,或者对寄存器中的值乘或除一个偏移。
具体地,编译器在获得基本块之后,查找基本块中的第一偏移寄存器指令,并基于该第一偏移寄存器指令的位置向后查找对同一个寄存器中的值进行偏移的第二偏移寄存器指令。之后编译器判断第一偏移寄存器指令与第二偏移寄存器指令之间是否存在使用该寄存器中的值的机器学习指令,若不存在,则编译器合并第一偏移寄存器指令和第二偏移寄存器指令,得到合并后的偏移寄存器指令;若存在,则返回步骤S222。进一步地,编译器将得到的合并后的偏移寄存器指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该合并后的偏移寄存器指令并执行该指令对应的操作。
本申请实施例中,编译器将功能相同的偏移寄存器指令进行合并,从而减少机器学习指令的数量,提高了机器学习计算装置的运行效率。
作为一种实施方式,偏移寄存器指令可以由标量加指令来完成,因此该转换方法也可以对标量加法指令进行优化。作为另一种实施方式,该转换方法也可以对其他对同一个寄存器的标量计算方法进行优化。
在一个实施例中,请参阅图5,涉及对可提前执行的机器学习指令进行位置前移以实现机器学习指令的窥孔优化的具体过程。在上述实施例的基础上,S206包括以下步骤:
S232,获取基本块中的可提前机器学习指令;
S234,对可提前机器学习指令进行位置前移,并根据可提前机器学习指令前移后的位置,判断机器学习指令序列是否存在逻辑错误;
S236,若机器学习指令序列存在逻辑错误,则停止对可提前机器学习指令进行位置前移,并将可提前机器学习指令放置于机器学习指令序列不存在逻辑错误所对应的任一前移后的位置。
其中,机器学习指令包括上述可提前机器学习指令。可提前机器学习指令表示可以提前执行的机器学习指令,且其提前执行时不应影响其他机器学习指令的执行。
可选地,编译器将基本块中的机器学习指令与预设的可提前机器学习指令进行匹配,即可得到匹配后的基本块中的可提前机器学习指令。例如,以预设的可提前机器学习指令为loadwt指令为例,通过在编译器中预先设置loadwt指令,进而通过指令匹配的方式,从基本块中的机器学习指令中匹配出该loadwt指令。
可选地,可以在编译器获得机器学习指令序列中的所有可提前机器学习指令之后,执行步骤S234,也可以在编译器获得任意一个可提前机器学习指令之后,执行步骤S234。
具体地,编译器在通过指令匹配方式获得基本块中的可提前机器学习指令之后,从该可提前机器学习指令的初始位置,对该可提前机器学习指令进行位置前移,并在该可提前机器学习指令前移的过程中,根据可提前机器学习指令前移后的位置,判断机器学习指令序列是否存在逻辑错误。若该机器学习指令序列存在逻辑错误,则编译器停止对该可提前机器学习指令进行位置前移,并将可提前机器学习指令放置于机器学习指令序列不存在逻辑错误所对应的任一前移后的位置。可选地,编译器可将可提前机器学习指令放置于机器学习指令序列不存在逻辑错误所对应的最近一次前移后的位置。
进一步地,编译器将移位后的机器学习指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该移位后的机器学习指令并执行该指令对应的操作。
本申请实施例中,编译器将可提前机器学习指令提前执行,这样,此类机器学习指令的执行时间被前面的指令执行时间所掩盖,从而优化了总体的指令执行时间。
作为一种实施方式,编译器对可提前机器学习指令进行位置前移的具体实现方式包括:编译器判断可提前机器学习指令前移后是否影响其他机器学习指令的执行。若编译器判定可提前机器学习指令前移后不会影响其他机器学习指令的执行,则编译器对可提前机器学习指令进行位置前移。可选地,若可提前机器学习指令与其他机器学习指令不存在指令相关,则编译器可判定可提前机器学习指令前移后不会影响其他机器学习指令执行。
在本实施方式中,通过设置在可提前机器学习指令的前移不会影响其他机器学习指令执行的前提下进行位置前移,避免机器学习指令执行时出现错误,保证了机器学习指令的执行准确性。
示例性地,以神经网络为例,通常,神经网络包括多层。假设神经网络包括前一层的池化层及后一层的卷积层,由于池化层不需要使用权值,因此可以提前读取卷积层的权值。具体而言,可将后一层卷积层读取权值的过程进行提前,使其与前一层池化层的计算过程并行执行,这样,可以节省总体的执行时间。通过上述指令优化方式,将后一层卷积层读取权值所对应的权值读取指令进行位置前移,使其可以提前执行,由此可大大减少神经网络指令的总体执行时间。
在机器学习指令以流水线排布的应用场景下,也可以对部分机器学习指令进行窥孔优化。示例性地,请参阅图6,图6中的“L”表示数据加载操作,即load;“C”表示数据计算操作,即compute;“S”表示数据存储操作,即store。其中,各操作所占用的时间用一个时间片表示。具体地,在第一个时间片中,获取上一加载指令,并执行数据加载操作;在第二个时间片中,获取上一计算指令和当前加载指令,并行执行数据计算操作和数据加载操作;在第三个时间片中,获取上一存储指令、当前计算指令和下一加载指令,并行执行数据计算操作、数据加载操作、数据存储操作,如此循环执行,使得机器学习指令能够按照三级流水线的方式执行,直到最后一个存储指令执行完成。并且,在L、C、S执行过程中,还采用乒乓存储交替对相关联的L、C、S进行存储。
在一个实施例中,基于上述应用场景,请参阅图7,涉及编译器对同一批数据对应的存储指令和加载指令合并为移动指令以实现机器学习指令的窥孔优化的具体过程。在上述实施例的基础上,S206包括以下步骤:
S242,获取基本块中的存储指令,其中,存储指令用于对第一数据进行存储;
S244,在存储指令后面继续查找加载第一数据的加载指令;
S246,将存储指令和加载指令进行合并,得到合并后的移动指令。
其中,机器学习指令包括上述存储指令和加载指令。存储指令,即store指令。加载指令,即load指令。移动指令用于选择乒乓存储过程中的存储空间。
具体地,在获得基本块之后,编译器查找基本块中的存储指令,并基于该存储指令向后查找对同一个片下地址的加载指令,根据识别片下地址可确定存储指令与加载指令是否作用于同一批数据。若存在作用于同一批数据的存储指令和加载指令,则编译器将该存储指令和加载指令合并,得到合并后的移动指令。
例如,在神经网络中,神经网络的后一层需要用到前一层的输出结果,此时,需要先读取存储指令,将神经网络的前一层的输出结果进行存储,然后读取加载指令,再将该存储的输出结果加载到神经网络的后一层。若是将该存储指令与该加载指令进行合并,合并为移动指令,即可实现直接将神经网络的前一层的输出结果输入至神经网络的后一层,该合并方式可以减少不必要的IO操作。
进一步地,编译器将得到的合并后的移动指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该合并后的移动指令并执行该指令对应的操作。
本申请实施例中,编译器将作用于同一批数据的存储指令和加载指令进行合并,可以减少不必要的IO操作,从而减少了机器学习指令执行时的时间开销。
在一个实施例中,请参阅图8,涉及编译器对一种对机器学习指令序列的机器学习指令进行重排序以实现机器学习指令的窥孔优化的具体过程。在上述实施例的基础上,S206包括以下步骤:
S252,获取连续排列数量超过n条的第一机器学习指令,其中,n为第一机器学习指令对应的指令发射队列的队列长度;
S254,将与第一机器学习指令在同一个时间片中并行执行的第二机器学习指令提前,并将第二机器学习指令插入至第n条第一机器学习指令的后面,且第二机器学习指令的插入数量不超过第二机器学习指令对应的指令发射队列的队列长度。
可选地,以计算指令和IO指令进行流水线执行为例。作为一种实施方式,在流水线中的每一个时间片中,编译器查找连续的超过n条的IO指令,其中n为硬件IO指令发射队列的队列长度。若编译器找到连续的超过n条的IO指令,则编译器将若干同一时间片内的计算指令提前,并插入至第n条IO指令的后面,其中,插入的计算指令的条数不超过计算指令对应的指令发射队列的队列长度。
作为另一种实施方式,在流水线中的每一个时间片中,编译器查找连续的超过n条的计算指令,其中n为硬件计算指令发射队列的队列长度。若编译器找到连续的超过n条的计算指令,则编译器将若干同一时间片内的IO指令提前,并插入至第n条计算指令的后面,其中,插入的IO指令的条数不超过IO指令对应的指令发射队列的队列长度。
申请人通过研究发现,若连续的机器学习指令数量超过发射队列的队列长度时,会卡住发射队列,影响性能。因此,在本申请实施例中,编译器通过对机器学习指令进行重排,防止指令发射队列满载所导致的性能损失。譬如,可以在单时间片中检测IO队列或者计算队列是否有满载情况,并将另一队列的指令提前,以缓解这种情况,从而优化机器学习指令的性能。
在一个实施例中,请参阅图9,涉及另一种编译器对机器学习指令序列的机器学习指令进行重排序以实现机器学习指令的窥孔优化的具体过程。在上述实施例的基础上,S206包括以下步骤:
S262,获取一个时间片内,同步指令的指令块之间的初始相对位置,其中,指令块包括至少一条机器学习指令;
S264,调整指令块与其他机器学习指令之间的位置,获得同步指令的指令块之间的最终相对位置;
S266,若最终相对位置小于初始相对位置,则根据最终相对位置确定同步指令的指令块调整后的最终位置。
其中,同步指令设置在数据相关的机器学习指令之间,用于对全部机器学习指令进行划分,得到多个时间步对应的机器学习指令,相邻时间步内的机器学习指令串行执行,各时间步内的机器学习指令并行执行。
具体地,在流水线中的每一个时间片中,编译器查找含有同步指令的指令块,确定该指令块的边界,进而确定不同的同步指令的指令块之间的初始相对位置。之后编译器将同一时间片内的指令块,通过调整与其他机器学习指令顺序的方式,使得同步指令的指令块之间的最终相对位置小于同步指令的指令块之间的初始相对位置。进而编译器根据该最终相对位置确定同步指令的指令块调整后的最终位置。
进一步地,编译器将调整位置后的机器学习指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该调整位置后的机器学习指令并执行该指令对应的操作。
本申请实施例中,在使用指令流水线排布的前提下,由于同步指令会打断指令的流水式执行,而同步指令离得近会使断流水的开销更小,因此编译器将含有同步指令的指令块尽量放在一起,从而降低同步指令对机器学习计算装置性能的影响。
在一个实施例中,涉及编译器根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令的一种可能的实现过程。在上述实施例的基础上,S206包括以下步骤:
S272,若在一个时间片内,存在先后的对同一段数据的多个乘法操作或激活操作,则将多个乘法操作或激活操作进行融合,得到融合后的机器学习指令。
其中,本实施例的优化方式可以理解为是一种“常量折叠”的优化。具体而言,编译器根据窥孔优化算法对机器学习指令进行扫描,若扫描到在一个时间片内,存在先后的对同一段数据的多个乘法操作或激活操作,则编译器会将多个乘法操作或激活操作进行融合,以得到融合后的机器学习指令。进一步地,编译器将得到的融合后的机器学习指令发送给存储器进行存储,以便于处理器可随时从存储器中读取该融合后的机器学习指令并执行该指令对应的操作。
示例性地,当网络中出现卷积-relu-卷积层相连的情况时,编译器会对这几层进行融合。一般地,卷积层会乘以一个scale,其是一个量化参数,在做卷积之后会除以这个scale。编译器会把一些乘除scale的操作融合到relu中,从而减少开销。例如,如果conv1的结果要乘以1/scale1,conv2的输入要乘以scale2,那么编译器可将scale2/scale1乘到relu的斜率中,从而减少了两个乘scale的开销。需要指出,在本实施例中,scale1为正数,scale2可以为负数。
应该理解的是,虽然图2-9的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-9中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种机器学习指令的转换装置,该装置包括:
指令获取模块302,用于获取机器学习指令序列;
指令划分模块304,用于对机器学习指令序列进行划分,得到至少一个基本块,其中,基本块中包括至少一条机器学习指令;
指令转换模块306,用于根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令。
上述机器学习指令的转换装置,通过获取机器学习指令序列,并对该机器学习指令序列进行划分,得到至少一个基本块,进而根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了对机器学习指令的窥孔优化,以此减少了机器学习指令的时间开销,使得机器学习计算装置的整体性能大大提升。
关于机器学习指令的转换装置的具体限定可以参见上文中对于机器学习指令的转换方法的限定,在此不再赘述。上述机器学习指令的转换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,还提供了一种板卡,该板卡包括:机器学习处理器,机器学习处理器用于执行上述任一实施例的机器学习指令的转换方法。
在一个实施例中,还提供了一种主板,该主板包括:通用处理器和上述板卡。
在一个实施例中,还提供了一种电子设备,该电子设备包括上述主板。
在其中一个实施例中,该电子设备可以是终端,其内部结构图可以如图11所示。该电子设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种机器学习指令的转换方法。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
上述板卡、主板、电子设备,通过获取机器学习指令序列,并对该机器学习指令序列进行划分,得到至少一个基本块,进而根据窥孔优化算法对基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,从而实现了对机器学习指令的窥孔优化,以此减少了机器学习指令的时间开销,使得机器学习计算装置的整体性能大大提升。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (11)

1.一种机器学习指令的转换方法,其特征在于,所述方法包括:
获取机器学习指令序列;
对所述机器学习指令序列进行划分,得到至少一个基本块,其中,所述基本块中包括至少一条机器学习指令;
根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令;
其中,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取连续排列数量超过n条的第一机器学习指令,其中,n为所述第一机器学习指令对应的指令发射队列的队列长度;
将与所述第一机器学习指令在同一个时间片中并行执行的第二机器学习指令提前,并将所述第二机器学习指令插入至第n条所述第一机器学习指令的后面,且所述第二机器学习指令的插入数量不超过所述第二机器学习指令对应的指令发射队列的队列长度。
2.根据权利要求1所述的方法,其特征在于,所述对所述机器学习指令序列进行划分,得到至少一个基本块,包括:
查找所述机器学习指令序列中的跳转指令;
根据所述跳转指令对所述机器学习指令序列进行划分,得到至少一个基本块。
3.根据权利要求1所述的方法,其特征在于,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取所述基本块中的可提前机器学习指令;
对所述可提前机器学习指令进行位置前移,并根据所述可提前机器学习指令前移后的位置,判断所述机器学习指令序列是否存在逻辑错误;
若所述机器学习指令序列存在逻辑错误,则停止对所述可提前机器学习指令进行位置前移,并将所述可提前机器学习指令放置于所述机器学习指令序列不存在逻辑错误所对应的任一前移后的位置。
4.根据权利要求3所述的方法,其特征在于,所述获取所述基本块中的可提前机器学习指令,包括:
将所述基本块中的机器学习指令与预设的可提前机器学习指令进行匹配,得到所述基本块中的可提前机器学习指令。
5.根据权利要求3所述的方法,其特征在于,对所述可提前机器学习指令进行位置前移,包括:
判断所述可提前机器学习指令前移后是否影响其他机器学习指令的执行;
若判定所述可提前机器学习指令前移后不会影响其他机器学习指令的执行,则对所述可提前机器学习指令进行位置前移。
6.根据权利要求1所述的方法,其特征在于,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取所述基本块中的存储指令,其中,所述存储指令用于对第一数据进行存储;
在所述存储指令后面继续查找加载所述第一数据的加载指令;
将所述存储指令和所述加载指令进行合并,得到合并后的移动指令。
7.根据权利要求1所述的方法,其特征在于,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
获取一个时间片内,同步指令的指令块之间的初始相对位置,其中,所述指令块包括至少一条机器学习指令;
调整所述指令块与其他机器学习指令之间的位置,获得所述同步指令的指令块之间的最终相对位置;
若所述最终相对位置小于所述初始相对位置,则根据所述最终相对位置确定所述同步指令的指令块调整后的最终位置。
8.根据权利要求1所述的方法,其特征在于,所述根据窥孔优化算法对所述基本块中的机器学习指令进行指令转换,得到转换后的机器学习指令,包括:
若在一个时间片内,存在先后的对同一段数据的多个乘法操作或激活操作,则将所述多个乘法操作或激活操作进行融合,得到融合后的机器学习指令。
9.一种板卡,其特征在于,所述板卡包括:机器学习处理器,所述机器学习处理器用于执行如权利要求1-8任一所述的方法。
10.一种主板,其特征在于,所述主板包括:通用处理器和如权利要求9所述的板卡。
11.一种电子设备,其特征在于,所述电子设备包括如权利要求10所述的主板。
CN202011570154.6A 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备 Active CN112667241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011570154.6A CN112667241B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202011570154.6A CN112667241B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN201911087323.8A CN110874643B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201911087323.8A Division CN110874643B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备

Publications (2)

Publication Number Publication Date
CN112667241A CN112667241A (zh) 2021-04-16
CN112667241B true CN112667241B (zh) 2023-09-29

Family

ID=69718233

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201911087323.8A Active CN110874643B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN202011115613.1A Active CN112257870B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN202011570154.6A Active CN112667241B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201911087323.8A Active CN110874643B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN202011115613.1A Active CN112257870B (zh) 2019-11-08 2019-11-08 机器学习指令的转换方法及装置、板卡、主板、电子设备

Country Status (1)

Country Link
CN (3) CN110874643B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874643B (zh) * 2019-11-08 2021-01-12 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021799A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 基于逻辑发射序号的软、硬件结合指令相关性控制方法
CN102609292A (zh) * 2010-12-13 2012-07-25 微软公司 指令优化
CN102662720A (zh) * 2012-03-12 2012-09-12 天津国芯科技有限公司 一种多发射嵌入式处理器编译器的优化方法
CN104049949A (zh) * 2014-05-30 2014-09-17 南阳理工学院 一种面向bswap指令的窥孔优化方法
CN105843660A (zh) * 2016-03-21 2016-08-10 同济大学 一种编译器的代码优化调度方法
CN107077369A (zh) * 2014-07-25 2017-08-18 英特尔公司 使用多个转换表以实现指令集不可知的运行时架构
CN108154238A (zh) * 2017-12-25 2018-06-12 东软集团股份有限公司 机器学习流程的迁移方法、装置、存储介质和电子设备
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法
CN109478257A (zh) * 2016-05-07 2019-03-15 英特尔公司 用于硬件加速机器学习的设备
CN110045960A (zh) * 2018-01-16 2019-07-23 腾讯科技(深圳)有限公司 基于芯片的指令集处理方法、装置及存储介质
CN110874643B (zh) * 2019-11-08 2021-01-12 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4656582A (en) * 1985-02-04 1987-04-07 International Business Machines Corporation Generating storage reference instructions in an optimizing compiler
US20060200811A1 (en) * 2005-03-07 2006-09-07 Cheng Stephen M Method of generating optimised stack code
CN102945148A (zh) * 2012-09-26 2013-02-27 中国航天科技集团公司第九研究院第七七一研究所 一种并行指令集的实现方法
CN102981802B (zh) * 2012-11-06 2015-10-07 无锡江南计算技术研究所 一种指令转化方法及系统
US9595205B2 (en) * 2012-12-18 2017-03-14 Neuron Fuel, Inc. Systems and methods for goal-based programming instruction
CN104516726B (zh) * 2013-09-27 2018-08-07 联想(北京)有限公司 一种指令处理的方法及装置
CN105487839A (zh) * 2015-11-24 2016-04-13 无锡江南计算技术研究所 一种面向连续不对界向量数据访问的编译优化方法
CN105719184A (zh) * 2016-01-15 2016-06-29 优品财富管理有限公司 一种交易指令转换方法及系统
US10789544B2 (en) * 2016-04-05 2020-09-29 Google Llc Batching inputs to a machine learning model
CN106021040B (zh) * 2016-05-04 2019-07-16 中国人民解放军国防科学技术大学 一种基于线形汇编指令差异性变换的dsp软错误检测方法
US10169010B2 (en) * 2016-06-01 2019-01-01 International Business Machines Corporation Performing register promotion optimizations in a computer program in regions where memory aliasing may occur and executing the computer program on processor hardware that detects memory aliasing
CN109491659B (zh) * 2017-09-11 2022-06-21 龙芯中科技术股份有限公司 指令转换方法和装置
CN110163360B (zh) * 2018-02-13 2021-06-25 上海寒武纪信息科技有限公司 一种计算装置及方法
CN108924187B (zh) * 2018-06-07 2020-05-08 北京百度网讯科技有限公司 基于机器学习的任务处理方法、装置和终端设备
CN108845830B (zh) * 2018-07-03 2021-12-03 中国人民解放军国防科技大学 一种一对数装载指令的执行方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021799A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 基于逻辑发射序号的软、硬件结合指令相关性控制方法
CN102609292A (zh) * 2010-12-13 2012-07-25 微软公司 指令优化
CN102662720A (zh) * 2012-03-12 2012-09-12 天津国芯科技有限公司 一种多发射嵌入式处理器编译器的优化方法
CN104049949A (zh) * 2014-05-30 2014-09-17 南阳理工学院 一种面向bswap指令的窥孔优化方法
CN107077369A (zh) * 2014-07-25 2017-08-18 英特尔公司 使用多个转换表以实现指令集不可知的运行时架构
CN105843660A (zh) * 2016-03-21 2016-08-10 同济大学 一种编译器的代码优化调度方法
CN109478257A (zh) * 2016-05-07 2019-03-15 英特尔公司 用于硬件加速机器学习的设备
CN108154238A (zh) * 2017-12-25 2018-06-12 东软集团股份有限公司 机器学习流程的迁移方法、装置、存储介质和电子设备
CN110045960A (zh) * 2018-01-16 2019-07-23 腾讯科技(深圳)有限公司 基于芯片的指令集处理方法、装置及存储介质
CN108427558A (zh) * 2018-02-09 2018-08-21 芯海科技(深圳)股份有限公司 一种c编译器的窥孔优化方法
CN110874643B (zh) * 2019-11-08 2021-01-12 安徽寒武纪信息科技有限公司 机器学习指令的转换方法及装置、板卡、主板、电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Peephole Optimization Technique for analysis and review of Compiler Design and Construction;Bhatt C et al.;《IOSR Journal of Computer Engineering》;20130430;第9卷(第4期);全文 *
二进制翻译中冗余指令优化算法;谭捷 等;《计算机研究与发展》;20170930;第54卷(第09期);全文 *

Also Published As

Publication number Publication date
CN112667241A (zh) 2021-04-16
CN110874643B (zh) 2021-01-12
CN112257870B (zh) 2024-04-09
CN110874643A (zh) 2020-03-10
CN112257870A (zh) 2021-01-22

Similar Documents

Publication Publication Date Title
US11442786B2 (en) Computation method and product thereof
CN109543816B (zh) 一种基于权重捏合的卷积神经网络计算方法和系统
US8321492B1 (en) System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm
US10877733B2 (en) Segment divider, segment division operation method, and electronic device
CN114503125A (zh) 结构化剪枝方法、系统和计算机可读介质
US10558500B2 (en) Scheduling heterogenous processors
EP4071619A1 (en) Address generation method, related device and storage medium
US12061910B2 (en) Dispatching multiply and accumulate operations based on accumulator register index number
CN112667241B (zh) 机器学习指令的转换方法及装置、板卡、主板、电子设备
CN106682258B (zh) 一种高层次综合工具中的多操作数加法优化方法及系统
US7734456B2 (en) Method and apparatus for priority based data processing
US20230359697A1 (en) Tensor processing
CN115469931B (zh) 一种循环程序的指令优化方法、装置、系统、设备及介质
CN115130672A (zh) 一种软硬件协同优化卷积神经网络计算的方法及装置
CN111798363B (zh) 图形处理器
CN114490002A (zh) 数据处理系统、任务调度方法、装置、芯片、及电子设备
CN113496270A (zh) 使用具有负载平衡的空间融合的混合精度神经处理单元
Qin et al. A CNN hardware accelerator designed for YOLO algorithm based on RISC-V SoC
US9298421B2 (en) Performing quotient selection for a carry-save division operation
Gao et al. GPU acceleration of pyrosequencing noise removal
CN117112033B (zh) 随机指令生成方法、装置、设备以及存储介质
US20240184554A1 (en) Vectorizing a loop
US11829754B2 (en) Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program
CN111915014B (zh) 人工智能指令的处理方法及装置、板卡、主板和电子设备
US20240004830A1 (en) Floorplan-optimized matrix extension architecture for processors

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