机器学习处理器及使用处理器执行向量范数指令的方法与流程

文档序号:16359258发布日期:2018-12-22 08:04阅读:172来源:国知局
机器学习处理器及使用处理器执行向量范数指令的方法与流程

本发明涉及通信技术领域,具体涉及一种机器学习处理器及使用处理器执行向量范数指令的方法。

背景技术

现代的通用和专用处理器中,越来越多地引入计算指令(例如向量指令)进行运算。现有处理器在进行计算指令的运算时,开销大,能耗高。



技术实现要素:

本发明实施例提供了一种机器学习处理器及使用处理器执行向量范数指令的方法,可减少运算开销,降低的功耗优点。

第一方面,本发明实施例提供一种机器学习处理器,所述处理器设置于计算装置内,所述计算装置用于执行向量范数指令,执行所述向量范数指令具体包括如下步骤:

获取向量范数指令,所述向量范数指令包括:norm2x,r;norm2为指令标识;所述x为向量x的首地址,所述r为向量范数结果的存储地址;

执行所述向量范数指令得到向量范数指令的具体结果;所述执行所述向量范数指令得到向量范数指令的具体结果具体包括:

提取所述向量范数指令向量x,将向量x进行向量规约运算后得到向量范数结果。

第二方面,提供一种机器学习处理器执行向量范数指令的方法,所述方法应用于计算装置,所述方法包括如下步骤:

获取向量范数指令,所述向量范数指令包括:norm2x,r;norm2为指令标识;所述x为向量x的首地址,所述r为向量范数结果的存储地址;

执行所述向量范数指令得到向量范数指令的具体结果;所述执行所述向量范数指令得到向量范数指令的具体结果具体包括:

提取所述向量范数指令向量x,将向量x进行向量规约运算后得到向量范数结果。

第三方面,提供一种芯片,所述芯片包括第一方面提供的机器学习处理器。

第四方面,提供一种板卡,所述板卡包括第三方面提供的芯片。

第五方面,提供一种电子装置,所述电子装置包括第四方面提供的板卡;所述电子装置包括:数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

第六方面,提供一种向量范数扩展指令的实现方法,所述方法包括如下步骤:

计算装置获取向量范数扩展指令,所述向量范数扩展指令包括:norm2type,n,x,incx,r;norm2为指令标识,type为进行操作的数据类型;所述n为向量的长度,x为向量x的首地址,incx为向量x的元素之间的地址间隔,r为向量范数结果的存储地址;

计算装置解析所述向量范数指令得到第一计算指令以及第二计算指令,依据第一计算指令以及第二计算指令确定计算顺序,按所述计算顺序执行第一计算指令以及第二计算指令得到该扩展计算指令的结果。

可选的,所述方法具体包括:

提取所述向量范数扩展指令的向量x的值,

结果

可选的,所述计算顺序包括:无序计算、正序计算或倒序计算。

可选的,所述计算装置依据所述第一计算指令以及第二计算指令确定第一计算指令与第二计算指令的计算顺序,包括:

计算装置识别所述第一计算指令的输出数据与所述第二计算指令的输入数据是否相同,如相同,确定所述计算顺序为正序计算;

计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否相同,如相同,确定计算顺序为倒序计算;

计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否关联,如不关联,确定计算顺序为无序计算。

可选的,所述扩展计算指令包括:操作码和操作域,所述操作码包括:识别第一计算指令的标识;所述操作域包括:第一计算指令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度n。

可选的,所述扩展指令还包括:第三计算指令以及第三计算指令的输入数据。

第七方面,提供一种计算装置,所述计算装置包括:存储介质、寄存器单元、运算单元和标量数据存储单元;

其中,存储介质,用于存储向量;

所述运算单元,用于获取向量范数扩展指令,所述向量范数扩展指令包括:norm2type,n,x,incx,r;norm2为指令标识,type为进行操作的数据类型;所述n为向量的长度,x为向量x的首地址,incx为向量x的元素之间的地址间隔,r为向量范数结果的存储地址;

计算装置解析所述向量范数指令得到第一计算指令以及第二计算指令,依据第一计算指令以及第二计算指令确定计算顺序,按所述计算顺序执行第一计算指令以及第二计算指令得到该扩展计算指令的结果。

可选的,所述方法具体包括:

提取所述向量范数扩展指令的向量x的值,

结果

可选的,所述计算顺序包括:无序计算、正序计算或倒序计算。

可选的,所述计算装置,用于识别所述第一计算指令的输出数据与所述第二计算指令的输入数据是否相同,如相同,确定所述计算顺序为正序计算;

或识别第一计算指令的输入数据与第二计算指令的输出数据是否相同,如相同,确定计算顺序为倒序计算;

或识别第一计算指令的输入数据与第二计算指令的输出数据是否关联,如不关联,确定计算顺序为无序计算。

可选的,所述扩展计算指令包括:操作码和操作域,所述操作码包括:识别第一计算指令的标识;所述操作域包括:第一计算指令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度n。

可选的,所述扩展指令还包括:第三计算指令以及第三计算指令的输入数据。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例。

图1是本披露实施例提供的计算装置的结构示意图。

图1a是本披露实施例提供的矩阵计算单元的结构示意图。

图1b是本披露实施例提供的流水级的结构示意图。

图1c是本披露实施例披露的一种矩阵计算方法的流程示意图。

图1d是本披露实施例提供的正向和反向运算示意图。

图1e是本披露实施例提供的指令集的格式示意图。

图1f是本披露实施例提供的另一种计算装置的结构示意图。

图2a是本披露实施例提供的一种计算装置的示意性框图。

图2b是本披露实施例提供的一种扩展计算指令的实现方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本披露具体实施方式提供一种矩阵计算方法,该矩阵计算方法在如图1所示的计算装置内完成,如图1所示,该计算装置包括:

存储介质201、用于存储矩阵。优选的该存储介质可以是高速暂存存储器,能够支持不同长度的矩阵数据;本披露将必要的计算数据暂存在高速暂存存储器上(scratchpadmemory),使本运算装置在进行矩阵运算过程中可以更加灵活有效地支持不同长度的数据。上述存储介质还可以为片外数据库、数据库或其他的能够存储的介质等等。

寄存器单元202,用于存储标量数据,其中,该标量数据包括但不限于:矩阵数据在存储介质201的地址以及矩阵与标量运算时的标量。在一种实施方式中,寄存器单元可以是标量寄存器堆,提供运算过程中所需的标量寄存器,标量寄存器不只存放矩阵地址,还存放有标量数据。当涉及到矩阵与标量的运算时,运算单元不仅要从寄存器单元中获取矩阵地址,还要从寄存器单元中获取相应的标量。

运算单元203,用于获取并执行第一运算指令。如图1a所示,该运算单元包括多个运算器,该运算器包括但不限于:矩阵加法运算器231、矩阵乘法运算器232、大小比较运算器233、非线性运算运算器234和矩阵标量乘法运算器235。

该方法如图1c所示,包括如下步骤:

步骤s301、运算单元203获取第一运算指令,所述第一运算指令包括:执行该指令所需的矩阵读取指示。

在步骤s301中,上述执行该指令所需的矩阵读取指示具体可以为多种,例如,在本披露一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的存储地址。又如,在本披露另一个可选的技术方案中,上述执行该指令所需的矩阵读取指示可以为所需矩阵的标识,该标识的表现形式可以为多种,例如,矩阵的名称,又如,矩阵的识别号,再如该矩阵在寄存器单元的寄存器号或地址。

下面通过一个实际的例子来说明上述第一运算指令包含的执行该指令所需的矩阵读取指示,这里假设该矩阵运算公式为f(x)=a+b,其中,a、b均为矩阵。那么在第一运算指令中除了携带该矩阵运算公式外,还可以携带该矩阵运算公式所需矩阵的存储地址,具体的,例如a的存储地址为0000-0fff,b的存储地址为1000-1fff。又如,可以携带a以及b的标识,例如a的标识为0101,b的标识为1010。

步骤s302、运算单元203依据该矩阵读取指示向所述存储介质201发送读取命令。

上述步骤s302的实现方法具体可以为:

如该矩阵读取指示可以为所需矩阵的存储地址,运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。

又如该矩阵读取指示可以为所需矩阵的标识时,运算单元203依据该标识从寄存器单元处采用单位读取方式读取该标识对应的存储地址,然后运算单元203向该存储介质201发送该读取该存储地址的读取命令并采用批量读取方式获取对应的矩阵。

上述单个读取方式具体可以为,每次读取均为单位的数据,即1bit数据。此时设置单位读取方式即1位读取方式的原因为,对于标量数据来说,其占用的容量非常小,如果采用批量数据读取方式,那么读取的数据量容易大于所需的数据的容量,这样会导致带宽的浪费,所以对于标量的数据这里采用单位读取方式来读取以减少带宽的浪费。

步骤s303、运算单元203采用批量读取方式读取该指示对应的矩阵,对该矩阵执行所述第一运算指令。

上述步骤s303中批量读取方式具体可以为,每次读取均为多位的数据,例如每次读取的数据位数为16bit、32bit或64bit,即无论其所需的数据量是多少,其每次读取的均为固定多位数的数据,此批量读取的数据方式非常适合大数据的读取,对于矩阵来说,由于其所占用的容量大,如果采用单个读取方式,其读取的速度会非常慢,所以这里采用批量读取方式来获取多位的数据从而快速读取矩阵数据,避免因为读取矩阵数据过慢影响矩阵计算速度的问题。

本披露提供的技术方案的计算装置设置有寄存器单元了存储介质,其分别存储标量数据以及矩阵数据,并且本披露为两种存储器分配了单位读取方式以及批量读取方式,通过对矩阵数据的特点分配匹配其特征的数据读取方式,能够很好的利用带宽,避免因为带宽的瓶颈对矩阵计算速度的影响,另外,对于寄存器单元来说,由于其存储的为标量数据,设置了标量数据的读取方式,提高了带宽的利用率,所以本披露提供的技术方案能够很好的利用带宽,避免带宽对计算速度的影响,所以其具有计算速度快,效率高的优点。

可选的,上述对该矩阵执行所述第一运算指令具体可以为:

对该矩阵执行第一流水级的计算得到第一结果,(可选的)将第一结果输入到第二流水级执行第二流水级的计算得到第二结果,(可选的)将第二结果输入到第三流水级执行第三流水级计算得到第三结果,(可选的)将第三结果存储至存储介质201。上述流水级的操作流程图如图1b所示。

上述第一流水级包括但不限于:矩阵加法计算器、矩阵乘法计算器等等。

上述第二流水级包括但不限于:大小比较计算器等等。

上述第三流水级包括但不限于:非线性运算器、矩阵标量乘法器等等。

上述三种流水级根据不同的运算指令可以进行调整,例如,在仅仅执行向量运算或矩阵运算时,由于没有比较运算以及非线性运算,所以只需要执行第一流水级即可,当然在实际应用中,也可以仅仅保留第一流水级以及第二流水级,本披露的三个流水级并不表示所有的运算指令均需要,厂家或用户可以根据实际的运算自行调整。将矩阵分三个流水级运算主要是为了提高运算的速度,对于矩阵的计算来说,例如采用现有的通用处理器在计算时,其运算的步骤具体可以为,处理器对矩阵进行计算得到第一结果,然后将第一结果存储在内存中,处理器从内存读取第一结果执行第二次计算得到第二结果,然后将第二结果存储在内存中,处理器从内从读取第二结果执行第三次计算得到第三结果,然后将第三结果存储在内存中。从上述计算的步骤可以看出,在通用处理器进行矩阵计算时,其并没有分流水级进行计算,那么每次计算完毕后均需要将计算完的数据进行保存,下次计算时需要再次读取,所以此方案需要重复存储读取多次数据,对于本披露的技术方案来说,第一流水级计算的第一结果直接进入第二流水级进行计算,第二流水级计算的第二结果直接进入到第三流水级进行计算,第一流水级与第二流水级计算的第一结果和第二结果无需存储,首先其减少了内存的占用空间,其次,其避免了结果的多次存储以及读取,提高了带宽的利用率,进一步提高了计算效率。

在本披露另一实施例中,可以自由组合各流水部件或者采取一级流水级。例如将第二个流水级和第三个流水级合并,或者将第一和第二以及第三个流水线都合并或者各个流水级负责不同的运算可以排列组合。例如,第一级流水负责比较运算,部分乘法运算,第二级流水负责非线性运算和矩阵标量乘法等组合。

可选的,上述计算装置还可以包括:缓存单元204,用于缓存第一运算指令。指令在执行过程中,同时也被缓存在指令缓存单元中,当一条指令执行完之后,如果该指令同时也是指令缓存单元中未被提交指令中最早的一条指令,该指令将背提交,一旦提交,该条指令进行的操作对装置状态的改变将无法撤销。在一种实施方式中,指令缓存单元可以是重排序缓存。

可选的,上述方法在步骤s301之前还可以包括:

确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系,如第一运算指令与第一运算指令之前的第二运算指令存在关联关系,则在第二运算指令执行完毕以后,从缓存单元中提取出该第一运算指令传递至运算单元203。如第一运算指令与该第一运算指令之前的指令无关联关系,则直接将第一运算指令传递至运算单元。

上述确定该第一运算指令与第一运算指令之前的第二运算指令是否存在关联关系的具体实现方法可以为:

依据该第一运算指令提取该第一运算指令中所需矩阵的第一存储地址区间,依据该第二运算指令提取该第二运算指令中所需矩阵的第二存储地址区间,如第一存储地址区间与第二存储地址区间具有重叠的区域,则确定第一运算指令与第二运算指令具有关联关系。如第一存储地址区间与第二存储地址区间无重叠的区域,则确定第一运算指令与第二运算指令不具有关联关系。

此存储地区区间中有重叠区域出现说明第一运算指令与第二运算指令访问了相同的矩阵,对于矩阵来说,由于其存储的空间比较大,比如采用相同的存储区域作为判断是否为关联关系的条件,可能出现的情况是,第二运算指令访问的存储区域包含了第一运算指令访问的存储区域,例如,第二运算指令访问a矩阵存储区域、b矩阵存储区域和c矩阵存储区域,如果a、b存储区域相邻或a、c存储区域相邻,则第二运算指令访问的存储区域为,a、b存储区域以及c存储区域,或a、c存储区域以及b存储区域。这种情况下,如果第一运算指令访问的为a矩阵与d矩阵的存储区域,那么第一运算指令访问的矩阵的存储区域无法与第二运算指令范文的矩阵的存储区域相同,如果采用相同的判断条件,则确定第一运算指令与第二运算指令不关联,但是实践证明,此时第一运算指令与第二运算指令属于关联关系,所以本披露通过是否有重叠区域来判断是否为关联关系的条件,能够避免上述情况的误判。

下面以一个实际的例子来说明何种情况属于关联关系,何种情况属于非关联关系。这里假设第一运算指令所需的矩阵为a矩阵和d矩阵,其中a矩阵的存储区域为【0001,0fff】,d矩阵的存储区域为【a000,afff】,对于第二运算指令所需的矩阵为a矩阵、b矩阵和c矩阵,其分别对应的存储区域为【0001,0fff】、【1000,1fff】、【b000,bfff】,对于第一运算指令来说,其对应的存储区域为:【0001,0fff】、【a000,afff】,对于第二运算指令来说,其对应的存储区域为:【0001,1fff】、【b000,bfff】,所以第二运算指令的存储区域与第一运算指令的存储区域具有重叠区域【0001,0fff】,所以第一运算指令与第二运算指令具有关联关系。

这里假设第一运算指令所需的矩阵为e矩阵和d矩阵,其中a矩阵的存储区域为【c000,cfff】,d矩阵的存储区域为【a000,afff】,对于第二运算指令所需的矩阵为a矩阵、b矩阵和c矩阵,其分别对应的存储区域为【0001,0fff】、【1000,1fff】、【b000,bfff】,对于第一运算指令来说,其对应的存储区域为:【c000,cfff】、【a000,afff】,对于第二运算指令来说,其对应的存储区域为:【0001,1fff】、【b000,bfff】,所以第二运算指令的存储区域与第一运算指令的存储区域不具有重叠区域,所以第一运算指令与第二运算指令无关联关系。

使用人工神经网络运算装置(即如图1所示计算装置、如图1f所示的计算装置,如图2a所示的计算装置中的任意一种)实现神经网络训练的方法;具体来说,包括以下主要内容:

神经网络训练的步骤:是对一个(多层)神经网络中的各层依次执行正向运算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执行这个过程多次;

层的反向运算:每一层的反向运算需要执行两部分运算:一部分是使用输出神经元梯度和输入神经元计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用输出神经元梯度和权值,计算出输入神经元梯度(用于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);

权值更新:在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新;

人工神经网络运算装置具体为稀疏神经网络运算装置的时候,即装置中多一个映射单元,处理的神经网络为稀疏神经网络:

使用稀疏神经网络运算装置实现神经网络训练的方法;具体来说,包括以下三个主要内容:

神经网络训练的步骤是对一个(多层)神经网络中的各层依次执行正向运算,然后按照相反的层的顺序依次执行反向运算,最后用计算得到的权值的梯度去更新权值;这就是神经网络的训练的依次迭代,整个训练过程需要重复执行这个过程多次;

层的反向运算每一层的反向运算需要执行两部分运算:一部分是使用可能是稀疏表示的输出神经元梯度和可能是稀疏表示的输入神经元计算出权值的梯度(用于在“权值更新”步骤更新本层的权值),另一部分是使用可能是稀疏表示的输出神经元梯度和可能是稀疏表示的权值,计算出输入神经元梯度(用于作为反向运算中下一层的输出神经元梯度以供其进行反向运算);

权值更新在执行完神经网络的反向运算之后,就计算出了各层的权值的梯度,在这个步骤中,所述装置的第一输入缓存和第二输入缓存分别用于存储本层的权值和权值的梯度,然后在运算单元中使用权值梯度对权值进行更新。本披露中提到的输入神经元和输出神经元并非是指整个神经网络的输入层中神经元和输出层中神经元,而是对于网络中任意相邻的两层,处于网络前馈运算下层中的神经元即为输入神经元,处于网络前馈运算上层中的神经元即为输出神经元。以卷积神经网络为例,设一个卷积神经网络有l层,k=1,2,...,l-1,对于第k层和第k+1层来说,我们将第k层称为输入层,其中的神经元为所述输入神经元,第k+1层称为输出层,其中的神经元为所述输出神经元。即除最顶层外,每一层都可以作为输入层,其下一层为对应的输出层。

上文中提到的运算都是神经网络中的一层的运算,对于多层神经网络,其实现过程是,在正向运算中,当上一层人工神经网络执行完成之后,下一层的运算指令会将运算单元中计算出的输出神经元作为下一层的输入神经元进行运算(或者是对该输出神经元进行某些操作再作为下一层的输入神经元),同时,将权值也替换为下一层的权值;在反向运算中,当上一层人工神经网络的反向运算执行完成后,下一层运算指令会将运算单元中计算出的输入神经元梯度作为下一层的输出神经元梯度进行运算(或者是对该输入神经元梯度进行某些操作再作为下一层的输出神经元梯度),同时将权值替换为下一层的权值。具体如图1d所示,图1d中虚线的箭头表示反向运算,实现的箭头表示正向运算。

本披露中,如图1e是本披露提供的矩阵操作指令的指令集的格式示意图,如图1e所示,运算指令包括一操作码和至少一操作域,其中,操作码用于指示该运算指令的功能,运算单元通过识别该操作码可进行不同的矩阵运算,操作域用于指示该运算指令的数据信息,其中,数据信息可以是立即数或寄存器号,例如,要获取一个矩阵时,根据寄存器号可以在相应的寄存器中获取矩阵起始地址和矩阵长度,再根据矩阵起始地址和矩阵长度在存储介质中获取相应地址存放的矩阵。

指令集包含有不同功能的运算指令:

矩阵乘向量指令(mmv),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据和向量数据,在运算单元中进行矩阵乘向量的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。

向量乘矩阵指令(vmm),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据和矩阵数据,在运算单元中进行向量乘矩阵的乘法运算,并将结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址;值得说明的是,向量可以作为特殊形式的矩阵(只有一行元素的矩阵)存储于存储器(优选的高速暂存存储器或者标量寄存器堆)中。

矩阵乘标量指令(vms),根据该指令,装置存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的矩阵数据,从标量寄存器堆的指定地址中取出指定大小的矩阵数据,在运算单元中进行标量乘矩阵的乘法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址,需要说明的是,标量寄存器堆不仅存储有矩阵的地址,还存储有标量数据。

张量运算指令(tens),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵数据进行张量运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。

矩阵加法指令(ma),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行加法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。

矩阵减法指令(ms),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的两个指定地址取出分别取出设定长度的两块矩阵数据,在运算单元中对两矩阵进行减法运算,并将计算结果写回。优选的,并将计算结果写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。

矩阵检索指令(mr),根据该指令,装置从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出设定长度的向量数据,从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的矩阵数据,在运算单元中,该向量是索引向量,输出的向量中的第i个元素是以索引向量的第i个元素作为索引,在矩阵的第i列中找到的数,该输出向量写回至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。

矩阵加载指令(ml),根据该指令,装置从指定外部源地址载入设定长度的数据至存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址。

矩阵存储指令(ms),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至外部目的地址处。

矩阵搬运指令(mmove),根据该指令,装置将存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址的设定长度的矩阵数据存至存储器(优选的高速暂存存储器或者标量寄存器堆)的另一指定地址处。

上述指令中的设定长度可以由用户自行设定,在一个可选的实施方案中,用户可以将该设置长度设置为一个值,当然在实际应用中,用户也可以将该设置长度设置为多个值。本披露具体实施方式并不限定该设定长度的具体值以及个数。为使本披露的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本披露进一步详细说明。

本披露还提供一种扩展计算指令,该操作码和操作域,所述操作码包括:识别第一运算指令的标识(例如rot);所述操作域包括:第一计算指令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度n。

可选的,上述扩展指令具体还可以包括:第三计算指令以及第三计算指令的输入数据。

需要说明的是,上述计算指令可以为向量指令或矩阵指令,本披露具体实施方式并不限制上述计算指令的具体表现形式。

参阅图2b,图2b提供了一种扩展计算指令的实现方法,该方法中的扩展计算指令可以包括:操作码和操作域,所述操作码包括:识别第一运算指令的标识(例如rot);所述操作域包括:第一计算指令的输入数据地址、第一计算指令的输出数据地址、第二计算指令的标识、第二计算指令的输入数据、数据类型以及数据长度n(其为用户自行设定值,本披露并不限制n的具体形式);该方法由计算装置或计算芯片执行,该计算装置如图1a所示。该方法如图2b所示,包括如下步骤:

步骤s101、计算装置获取扩展计算指令,解析该扩展计算指令得到第一计算指令以及第二计算指令;

步骤s102、计算装置依据第一计算指令以及第二计算指令确定计算顺序,按所述计算顺序执行第一计算指令以及第二计算指令得到该扩展计算指令的结果。

本披露提供的技术方案提供了扩展计算指令的实现方法,使得计算装置能够对该扩展计算指令执行两个计算指令的计算,使得单个扩展计算指令能够实现两种类型的计算,减少了计算的开销,降低了功耗。

可选的,上述计算顺序具体可以包括:无序计算、正序计算或倒序计算中的任意一种,无序计算时,即第一计算指令与第二计算指令没有相应的顺序的要求,正序计算时即先执行第一计算指令,后执行第二计算指令,倒序计算时即先执行第二计算指令,后执行第一计算指令。

上述计算装置依据第一计算指令以及第二计算指令确定计算顺序的具体实现方式可以为,计算装置识别第一计算指令的输出数据与第二计算指令的输入数据是否相同,如相同,确定计算顺序为正序计算,反之计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否相同,如相同,确定计算顺序为倒序计算,计算装置识别第一计算指令的输入数据与第二计算指令的输出数据是否关联,如不关联,确定计算顺序为无序计算。

具体的以一个实际的例子来说明,如f=a*b+c,第一计算指令为矩阵乘法指令,第二计算指令为矩阵加法指令,由于第二计算指令的矩阵加法指令需要应用到第一计算指令的结果即输出数据,所以确定该计算顺序为正序计算。又如,f=op(a)*op(b),其中,第一运算指令为矩阵乘法指令,第二运算指令为变换,例如转置或共轭,则由于第一运算指令使用了第二运算指令的输出,所以其运算顺序为倒序计算。如没有相应关联,即第一计算指令的输出数据与第二计算指令的输入数据不相同且第一计算指令的输入数据与第二计算指令的输入数据也不相同,确定不关联。

本披露提供的向量指令的扩展,强化了指令的功能,用一条指令代替了原来的多条指令。这样减少了复杂向量、矩阵操作所需的指令数量,简化了向量指令的使用;与多条指令相比,不需要存储中间结果,既节约了存储空间,又避免了额外的读写开销。

如第一计算指令为向量指令,对于向量指令中的输入向量或矩阵,指令增加对其进行缩放的功能即在操作域增加表示缩放系数的操作数,在读入该向量时首先按照缩放系数对其进行缩放(即第二计算指令为缩放指令)。如果向量指令中有多个输入向量或矩阵相乘的操作,则这些输入向量或矩阵对应的缩放系数可以合并成一个。

如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加对其进行转置的功能(即第二计算指令为转置指令)。在指令中增加表示是否对其进行转置的操作数,代表在运算前是否对该矩阵进行转置。

如第一计算指令为向量指令,对于向量指令中的输出向量或矩阵,指令增加与原始的输出向量或矩阵相加的功能(即第二计算指令为加法指令)。在指令中增加表示对原始的输出向量或矩阵进行缩放的系数(即添加第三计算指令,第三计算指令可以为缩放指令),指令表示在进行完向量或矩阵操作后,把结果与缩放后的原始输出相加,作为新的输出。

如第一计算指令为向量指令,对于向量指令中的输入向量,指令增加按照固定步长读取的功能。在指令中增加表示输入向量读取步长的操作数(即第二计算指令为按固定步长读取向量),表示向量中相邻两个元素的地址之差。

如第一计算指令为向量指令,对于向量指令中的结果向量,指令增加按照固定步长写入结果的功能(即第二计算指令按固定步长写入向量)。在指令中增加表示结果向量读取步长的操作数,表示向量中相邻两个元素的地址之差。如果一个向量既是输入又作为结果,则该向量作为输入和作为结果时使用同一个步长。

如第一计算指令为向量指令,对于向量指令中的输入矩阵,指令增加按照固定步长读取行或列向量的功能(即第二计算指令为按固定步长读取多个向量)。在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址之差。

如第一计算指令为向量指令,对于向量指令中的结果矩阵,指令增加按照固定步长读取行或列向量的功能(即第二计算指令为按固定步长写入多个向量)。在指令中增加表示矩阵读取步长的操作数,表示矩阵行或列向量之间的首地址之差。如果一个矩阵既是输入又是结果矩阵,则作为输入和作为结果使用同一个步长。

下面以一些实际的计算指令来说明上述扩展计算指令的实际结构。

功能描述:

向量范数

计算向量的欧几里得范数

功能描述:

该指令进行如下的向量规约操作:

公式中的r表示向量范数的结果。

指令格式下表所示:

如上表所示的指令格式中向量的长度可变,可以减少指令数量,简化指令的使用。支持按一定间隔存储的向量格式,避免了对向量格式进行变换的执行开销和存储中间结果的空间占用。

需要说明的是,上述任意一个表中的同一条指令中的向量或矩阵可以是不同的数据类型,包括浮点定点,位宽,复数等。指令中的变换除了转置和复数求共轭外,还可以包含其它的操作如求逆矩阵等,而且这些变换可以相互组合。对于向量操作可把运算符换成其它的操作类型,例如向量加换成乘、除等,求max换成求中间值等等。

对于如图1所示的计算装置,其实现扩展计算指令运算时计算出该扩展指令的具体结果,即通过一个扩展计算指令执行实现多条计算指令执行的组合,需要说明的是,对于计算装置执行该扩展指令时并未将该扩展指令拆分成多条计算指令。

一种板卡,所述板卡包括所述的芯片封装结构。

一种电子装置,所述电子装置包括板卡。

一种电子装置,所述电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪

本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种向量范数指令执行方法的部分或全部步骤。

本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种向量范数指令执行方法的部分或全部步骤。

需要说明的是,本披露公开的任意一种方法均可以应用在本披露公开的另外一种方法内,本披露公开的任意一种装置、设备、单元、模块也可以设置在本披露公开的另一种装置、设备、单元或模块内。本披露公开的任意一种方法也可以通过本披露的任意一种装置、设备、单元、模块实现。本披露公开的任意一种方法也可以通过机器学习处理器、机器学习处理器或机器学习处理器执行。

需要说明的是,上述计算装置的计算指令可以为一个或多个,即该计算装置可以执行一个或多个上述的计算指令,该计算指令包括但不限于上述的卷积指令、全连接指令、batchnormalization指令或pooling指令,上述指令的具体结构以及如何应用可以参见如图2a。

在本披露的另一实施例中提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法实施例所描述的方法步骤。

所述计算机可读存储介质可以是前述任一实施例所述的终端设备的内部存储单元,例如终端设备的硬盘或内存。所述计算机可读存储介质也可以是所述终端设备的外部存储设备,例如所述终端设备上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述计算机可读存储介质还可以既包括所述终端设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述终端设备所需的其他程序和数据。所述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。

本领域普通技术人员可以意识到,结合本文中所披露的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本披露的范围。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本披露所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本披露实施例方案的目的。

另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(read-onlymemory,rom)、随机存储器(randomaccessmemory,ram)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子抹除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)、u盘、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。应理解的,将软件产品存储在只读存储器rom中可以降低装置的功耗,加快处理速度;而且无需使用者编程,降低使用者的门槛,适合于普通用户(普通消费者)。

以上所述,仅为本披露的具体实施方式,但本披露的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本披露揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本披露的保护范围之内。因此,本披露的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1