掌桥专利:专业的专利平台
掌桥专利
首页

向量运算方法、向量运算器、电子设备和存储介质

文献发布时间:2024-01-17 01:14:25


向量运算方法、向量运算器、电子设备和存储介质

技术领域

本公开涉及计算机技术领域,具体地,涉及一种向量运算方法、一种向量运算器、一种电子设备和一种计算机可读存储介质。

背景技术

神经网络的网络层(例如,池化层)在进行运算时,通常需要用到神经网络加速器。在相关技术中,神经网络加速器对神经网络运算的加速采用直接映射的方式,即,涉及具有特定功能的抓好用处理电路对网络层运算进行硬件加速。

但是,通过上述方式对网络层运算进行硬件加速的灵活性不高。

发明内容

本公开实施例提供一种向量运算方法、一种向量运算器、一种电子设备和一种计算机可读存储介质。

作为本公开的一个方面,提供一种向量运算方法,包括:

对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;

按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;

按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。

可选地,在所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令的步骤中,每生成一个所述基础运算指令,将生成的所述基础运算指令存储在第一寄存器中;

在所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤中,每次执行基础运算指令都包括:

读取所述第一寄存器中的所述基础运算指令;

根据读取到的所述基础运算指令对待运算的数据进行运算。

可选地,生成第i个基础运算指令的步骤与执行第j次基础运算指令的步骤同步进行,其中,i,j均为序号,i,j均为正整数,且i>j;和/或,

针对不同的初始数据,并行地执行所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤。

可选地,在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算之前,所述向量运算方法还包括:

将所述初始数据写入缓存中,作为第一个基础运算指令的待运算数据;

在执行最后一次基础运算之前,每次执行基础运算指令都还包括:

将运算结果存储在缓存中,以作为下一次基础运算中的待运算数据;

在所述根据读取到的所述基础运算指令对待运算的数据进行运算之前,每次执行基础运算指令都还包括:

从所述缓存中读取待运算的数据。

可选地,所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令,包括:

根据所述基础运算依次生成多个初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器中;

从所述第二寄存器中依次读取各个所述初始运算指令;

分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令。

可选地,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令的步骤。

可选地,所述初始数据满足预定格式,在按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算之前,所述向量运算方法还包括:

获取输入数据;

将所述输入数据转换为满足所述预定格式的所述初始数据。

可选地,满足所述预定格式为12bit的数据;

当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;

当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;

当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。

可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,

在所述对待进行的目标向量运算进行拆分,获得多个满足预定执行顺序的基础运算的步骤中,满足预定执行顺序的基础运算分别为:

所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及

将待运算的数据中各个元素点乘以系数K的乘法基础运算。

作为本公开的第二个方面,提供一种向量运算器,包括:

拆分模块,所述拆分模块用于对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;

指令生成模块,所述指令生成模块用于按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令;

至少一个运算模块,所述运算模块用于按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。

可选地,所述指令生成模块包括指令生成单元和第一寄存器,所述指令生成单元用于生成所述基础运算指令,且所述指令生成单元每生成一个所述基础运算指令,则将生成的所述基础运算指令写入所述第一寄存器;

所述运算模块用于从所述第一寄存器中读取基础运算指令,并根据读取到的基础运算指令对待运算的数据进行运算。

可选地,所述指令生成单元生成第i个基础运算指令与所述运算模块执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j;和/或

所述向量运算器包括多个所述运算模块,所述多个运算模块能够并行作业。

可选地,所述向量运算器还包括缓存,所述缓存用于存储初始数据,以作为第一个基础运算指令的待运算数据;

所述运算模块还用于在执行最后一次基础运算之前,将每次执行基础运算指令获得的运算结果存储在所述缓存中,以作为下一次基础运算中的待运算数据;

所述运算模块还用于在根据读取到的所述基础运算指令对待运算的数据进行运算之前,从所述缓存中读取所述待运算的数据。

可选地,所述向量计算器还包括初始运算指令生成模块,所述指令生成单元还包括指令获取子单元、第二寄存器和译码子单元,

所述初始运算指令生成模块用于根据所述基础运算依次生成初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入所述第二寄存器中;

所述指令获取子单元用于从第二寄存器中依次读取各个初始运算指令;

所述译码子单元用于分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令,并依次将各个基础运算指令写入所述第一寄存器。

可选地,所述第一寄存器和所述第二寄存器均为流水线寄存器,通过所述第一寄存器与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令。

可选地,所述向量运算器还包括:

数据获取模块,用于获取输入数据;和

格式转换模块,用于将所述输入数据转换为满足预定格式的所述初始数据。

可选地,满足所述预定格式为12bit的数据;

当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;

当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;

当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。

可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据,

所述拆分模块用于将所述ReLU激活运算拆分为以下满足预定执行顺序的基础运算:

所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及

将待运算的数据中各个元素点乘以系数K的乘法基础运算。

作为本公开的第三个方面,提供一种电子设备,包括:

存储模块,其上存储有可执行程序;

一个或多个处理模块,当所述一个或多个处理模块调用所述可执行程序时,能够实现本公开第一个方面所提供的向量运算方法。

作为本公开的第四个方面,提供一种计算机可读存储介质,其上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的向量运算方法。

当所述向量运算方法用于执行AI加速器中的向量运算时,可以对目标向量运算进行拆分,然后对初始数据依次进行多次基础运算指令,即可实现目标向量运算。也就是说,通过本公开所提供的向量运算方法,可以执行多种不同的目标向量运算。与“不同目标向量运算对应不同加速器”的相关技术相比,本公开所提供的向量运算方法更加灵活。

附图说明

图1是本公开所提供的向量运算方法的一种实施方式的流程图;

图2是步骤S130的一种实施方式的流程图;

图3是本公开所提供的向量运算方法的另一种实施方式的流程图;

图4是步骤S120的一种实施方式的流程图;

图5是本公开所提供的向量运算方法的还一种实施方式的流程图;

图6是本公开所提供的向量运算的流水线作业示意图;

图7是利用本公开所提供的向量运算方法执行ReLU激活运算的示意图;

图8是本公开所提供的向量运算器的一种实施方式的模块结构示意图;

图9是本公开所提供的向量运算器中指令生成模块的示意图;

图10是本公开所提供的向量运算器的另一种实施方式的模块结构示意图;

图11是本公开所提供的向量运算器中多个运算模块的示意图。

具体实施方式

为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的向量运算方法、向量运算器、电子设备和计算机可读存储介质进行详细描述。

在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。

在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。

如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。

本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。

除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。

作为本公开的第一个方面,提供一种向量运算方法,如图1所示,所述向量运算方法包括:

在步骤S110中,对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;

在步骤S120中,按照所述预定执行顺序依次生成实现多个所述基础运算的多个基础运算指令;

在步骤S130中,按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。

在本公开中,基础运算可以包括加法运算、减法运算、乘法运算、除法运算、移位、查找表、比较大小等,当然,本公开并不限于此。通过多种基础运算进行组合,可以实现复杂的向量运算。

当所述向量运算方法用于执行AI加速器中的向量运算时,可以对目标向量运算进行拆分,然后对初始数据依次进行多次基础运算指令,即可实现目标向量运算。也就是说,通过本公开所提供的向量运算方法,可以执行多种不同的目标向量运算。与“不同目标向量运算对应不同加速器”的相关技术相比,本公开所提供的向量运算方法更加灵活。

例如,目标向量运算为A,可以拆分成基础运算a和基础运算b。为了实现目标向量运算A,所述向量运算方法可以包括:

对目标向量A进行拆分,确定按照先后顺序执行的基础运算a和基础运算b;

依次生成基础运算a的基础运算指令a’和基础运算b的基础运算指令b’;

对初始数据执行基础运算指令a’,得到基础运算b的待运算数据;

对所述待运算数据执行基础运算指令b’,得到运算结果。

目标向量运算为B,可以拆分成基础运算a和基础运算c。为了实现目标向量运算B,所述向量运算方法可以包括:

对目标向量B进行拆分,确定按照先后顺序执行的基础运算a和基础运算c;

依次生成基础运算a的基础运算指令a’和基础运算c的基础运算指令c’;

对初始数据执行基础运算指令a’,得到基础运算c的待运算数据;

对所述待运算数据执行基础运算指令b’,得到运算结果。

通过上述两个例子可知,通过本公开所提供的向量运算方法可以对不同的目标运算进行运算。

为了提高运算效率,可选地,在所述按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令的步骤(即,步骤S120)中,每生成一个所述基础运算指令,将生成的所述基础运算指令存储在第一寄存器中。

相应地,如图2所示,在步骤S130中,每次执行基础运算指令都可以包括:

在步骤S131中,读取所述第一寄存器中的所述基础运算指令;

在步骤S132中,根据读取到的所述基础运算指令对待运算的数据进行运算。

在本公开中,每次执行基础运算指令都可以看做一个周期,也就是说,步骤S130可以包括周期性执行的步骤S131和步骤S132,直至所有的基础运算指令均执行完毕。

作为一种可选实施方式,只有在第一寄存器中的基础运算指令已经被取出调用的情况下,才向该第一寄存器中写入下一个基础运算指令。

在本公开中,对生成各个基础运算指令的步骤、以及执行各个基础运算指令的步骤不做特殊的限定。为了提高运算效率,可选地,生成第i个基础运算指令的步骤与执行第j次基础运算指令的步骤同步进行,其中,i,j均为序号,i,j均为正整数,且i>j。也就是说,生成基础运算指令的步骤、与执行基础运算指令的步骤是并行的。

例如,在生成第二个基础运算指令的同时,可以执行利用第一个基础运算指令对待运算的数据进行运算的步骤。

当然,本公开并不限于此。为了提高运算效率,对于不同的初始数据,并行地执行所述按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算的步骤。

例如,对于初始数据1进行目标向量运算A、对初始数据2进行目标向量运算B而言,

将目标向量运算A拆分为基础运算a和基础运算b、将目标向量运算B拆分为基础运算a和基础运算c之后,可以同步地进行对初始数据1进行基础运算a得到数据1’、以及对初始数据2进行基础运算a得到数据2’的步骤,并且同步地进行对数据1’进行基础运算b、对数据2’进行基础运算c的步骤。

在本公开中,每执行一个步骤S130相当于一个周期,本公开所提供的向量运算方法也可以被看作一种多周期多级流水线握手的运算方法,可以支持神经网络的运算。而相关技术中的加速器依靠单周期多级流水线,不能支持神经网络的运算。

为了进一步提高运算速率,可选地,每次基础运算的待运算数据均写入缓存中。在执行基础运算时,只需要在缓存中调用相应的待运算数据即可。

容易理解的是,所述初始数据是第一个基础运算指令的待运算数据。因此,如图3所示,所述向量运算方法还可以包括:

在步骤S100中,将所述初始数据写入缓存中。

相应地,在执行最后一次基础运算之前,每次执行基础运算指令时,如图3所示,步骤S130都还包括:

在步骤S133中,将运算结果存储在缓存中,以作为下一次基础运算中的待运算数据。

并且,对于每一个基础运算指令,如图3所示,在步骤S132之前,步骤S130都还包括:

在步骤S134中,从所述缓存中读取待运算的数据。

为了提高运算效率,可选地,如图4所示,步骤S120可以包括:

在步骤S121中,根据所述基础运算依次生成多个初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器中;

在步骤S122中,从所述第二寄存器中依次读取各个所述初始运算指令;

在步骤S123中,分别对各个所述初始运算指令进行编译,获得各个基础运算指令。

作为一种可选实施方式,第一寄存器和第二寄存器均为流水线寄存器,因此,可以通过第一寄存器与第二寄存器握手的方式实现步骤S122。

图6中所示的是本公开所提供的向量运算方法中,步骤S120和步骤S130的示意图。步骤S120和步骤S130构成一个三级流水线。

第一级流水线中的“取指”是指获取步骤S121中生成的初始运算指令,“取指”后的“reg”是指将初始运算指令写入第二寄存器;第二级流水线中的“译码”是指步骤S123,“译码”后的“reg”是指将基础运算指令写入第一寄存器;第三级流水线中的“读buffer”是指从缓存中读取待运算的数据,即,步骤S134,第三级流水线中的“运算”是指根据基础运算指令对待运算数据进行运算,即,步骤S132,第三级流水线中的“写buffer”是指将运算结果写入缓存中,即步骤S133。

在相关技术中,往往一个运算模块只支持具有同一种格式的数据的运算。例如,支持12bit数据格式的运算模块只能够对格式为12bit的数据进行运算。

在本公开中,为了节约计算资源,提出了一种“运算模块复用”的技术方案。具体地如下:

所述初始数据满足预定格式,如图5所示,在按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算之前(即,步骤S120之前),所述向量运算方法还包括:

在步骤S101中,获取输入数据;

在步骤S102中,将所述输入数据转换为满足所述预定格式的所述初始数据。

通过步骤S101和步骤S102,无论输入数据具有何种格式,均能够获得满足预定格式的初始数据。

通过步骤S102,可以实现执行基础运算指令的运算模块(例如,加法器、乘法器等)对不同精度类型的数据的复用。也就是说,通过本申请的步骤S101和步骤S102,可以实现对多种不同精度类型的数据进行处理,不再需要针对各种不同精度类型的数据设计专用的运算模块。

例如,满足所述预定格式为12bit的数据;

当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;

当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;

当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。

在本公开中,对目标向量运算的具体类型不做特殊的限定,对如何对目标向量运算进行拆分也不做特殊的限定。下面以所述目标向量运算为ReLU激活运算为例,对步骤S110进行介绍。

当所述目标向量运算为ReLU激活运算时,可以将ReLU激活运算拆分为先进行“比较大小基础运算”、再进行“乘法基础运算”。具体地,针对ReLU激活运算,所述初始数据为矩阵数据,满足预定执行顺序的基础运算分别为:

所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及

将待运算的数据中各个元素点乘以系数K的乘法基础运算。

下面结合图7,对ReLU激活运算的拆分方式进行简单介绍。如图所示,初始数据为特征图为4*4的矩阵A。

将针对矩阵A的ReLU激活运算拆分成与参考矩阵B进行比较取最大值的比较大小基础运算,执行过该基础运算后,可以得到中间矩阵C;

针对该中间矩阵C,将该中间矩阵C中的各个元素点乘以系数K,即可得到输出矩阵D。

也就是说,输出矩阵D是对矩阵A进行ReLU激活运算的运算结果。

作为本公开的第二个方面,提供一种向量运算器,如图8所示,向量运算器包括拆分模块210、指令生成模块220和运算模块230。

本公开所提供的向量运算器用于执行本公开第一个方面所提供的向量运算方法,具体地:

拆分模块210用于执行步骤S110,即,拆分模块210用于对待进行的目标向量运算进行拆分,确定多个满足预定执行顺序的基础运算;

指令生成模块220用于执行步骤S120,即,指令生成模块220用于按照所述预定执行顺序依次生成与多个所述基础运算对应的多个基础运算指令。

运算模块230用于执行步骤S130,即,运算模块230用于按照所述预定执行顺序对待进行所述目标向量运算的初始数据依次进行多个所述基础运算指令,以实现对所述初始数据的目标向量运算,其中,在相邻两次基础运算中,后一次基础运算的待运算数据为前一次基础运算的运算结果。

通过所述向量运算器对复杂的目标向量运算进行运算时,先将目标向量运算拆分成多个基础运算,再对初始数据依次进行各个基础运算,从而可以实现目标向量运算。本公开所提供的向量运算器可以执行多种不同的复杂向量运算,具有较高的灵活性。

为了提高运算效率,作为一种可选实施方式,如图9所示,指令生成模块220可以包括指令生成单元221和第一寄存器222,指令生成单元221用于生成所述基础运算指令,且指令生成单元221每生成一个所述基础运算指令,则将生成的所述基础运算指令写入第一寄存器221。

运算模块230用于从第一寄存器222中读取基础运算指令,并根据读取到的基础运算指令对待运算的数据进行运算。

为了进一步提高运算效率,不同的模块可以并行工作。例如,指令生成单元221生成第i个基础运算指令与运算模块230执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j。

为了进一步提高运算效率,可选地,如图10所示,所述向量运算器还包括缓存240,该缓存240用于存储初始数据,以作为第一个基础运算指令的待运算数据。

除此之外,运算模块230还用于在执行最后一次基础运算之前,将每次执行基础运算指令获得的运算结果存储在缓存240中,以作为下一次基础运算中的待运算数据。

并且,运算模块230还用于在根据读取到的所述基础运算指令对待运算的数据进行运算之前,从缓存240中读取所述待运算的数据。

可选地,如图10所示,所述向量计算器还包括初始运算指令生成模块250,指令生成单元221可以包括指令获取子单元221a、译码子单元221b和第二寄存器221c。

初始运算指令生成模块250用于根据所述基础运算依次生成初始运算指令,其中,每生成一个初始运算指令则将生成的初始运算指令写入第二寄存器221c中。

指令获取子单元221a用于从第二寄存器221c中依次读取各个初始运算指令,译码子单元221b用于分别对各个所述初始运算指令进行编译,获得相应的各个基础运算指令,并依次将各个基础运算指令写入第一寄存器222。

作为一种可选实施方式,第一寄存器222和第二寄存器221c均为流水线寄存器,通过第一寄存器222与所述第二寄存器握手,实现所述从所述第二寄存器中读取所述初始运算指令。

如上文中所述,为了提高运算效率,可选地,所述指令生成单元生成第i个基础运算指令与所述运算模块执行第j次基础运算指令同步,其中,i,j均为序号,i,j均为正整数,且i>j。

作为另一种可选实施方式,如图11所示,所述向量运算器包括多个运算模块230,多个运算模块230能够并行作业。为了提高运算效率,对于不同的初始数据,可以同时调用多个运算模块230,并行地执行步骤S1230。

在本公开中,每执行一个步骤S130相当于一个周期,本公开所提供的向量运算方法也可以被看作一种多周期多级流水线握手的运算方法,可以支持神经网络的运算。而相关技术中的加速器依靠单周期多级流水线,不能支持神经网络的运算。并且,在同一时刻,可以在多个运算模块中执行多个基础运算指令,从而可以提高运算效率。

在本公开中,对各个运算模块的具体结构、类型不做特殊的限定。例如,向运算模块输入两个16bit的数据可以输出16bit的数据。

可选地,所述向量运算器还包括数据获取模块260和格式转换模块270,数据获取模块260用于获取输入数据;格式转换模块270用于将所述输入数据转换为满足预定格式的所述初始数据。

作为一种可选实施方式,满足所述预定格式为12bit的数据。

当所述输入数据的数据类型为FP16时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括指数位、1bit符号位和11bit精度位的所述初始数据;

当所述输入数据的数据类型为INT8时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括5bit符号位和7bit原码精度位的所述初始数据;

当所述输入数据的数据类型为INT12时,在将所述输入数据转换为满足所述预定格式的所述初始数据的步骤中,将所述输入数据转换为包括1bit符号位和11bit精度为的所述初始数据。

在图11中所示的包括128个运算模块的实施方式中,运算模块230支持对FP16、INT8、INT12三种精度的数据进行运算。

可选地,所述目标向量运算包括ReLU激活运算,所述初始数据为矩阵数据。

所述拆分模块用于将所述ReLU激活运算拆分为以下满足预定执行顺序的基础运算:

所述初始数据与参照矩阵的比较取最大值的比较大小基础运算,所述参照矩阵的特征图与所述初始数据的元素的特征图相同,且所述参照矩阵的各个元素均为0;以及

将待运算的数据中各个元素点乘以系数K的乘法基础运算。

作为本公开的第三个方面,提供一种电子设备,包括:

存储模块,其上存储有可执行程序;

一个或多个处理模块,当所述一个或多个处理模块调用所述可执行程序时,能够实现本公开第一个方面所提供的向量运算方法。

作为本公开的第四个方面,提供一种计算机可读存储介质,其上存储有可执行程序,当所述可执行程序被调用时,能够实现本公开第一个方面所提供的向量运算方法。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。

本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

技术分类

06120116079004