一种计算装置和计算方法与流程

文档序号:26101399发布日期:2021-07-30 18:12阅读:54来源:国知局
一种计算装置和计算方法与流程

本公开涉及数据处理领域,更具体地,涉及数据类型的转换。



背景技术:

传统的cpu和gpu在进行神经网络训练或者推理时,在输入数据类型为float16的条件下,为了提高神经网络的精度,需要将float16类型数据转换为float32数据类型将进一步的运算,待运算完毕后又将float32类型的结果转换为float16类型的数据以进行保存。

传统的实现方法中主要有两种方式。第一方式是,先将float16数据类型的数据从存储器中按行读出,将读出的数据进行float16到float32的数据类型转换,然后将转换后生成的float32类型的数据存回存储器中。接下来,再将float32的数据读出进行运算。但是,这种方式的缺点在于上述计算过程结束后的数据量翻倍,占用了相对于float16数据类型而言2倍的存储空间。第二种方式是,首先读取半行float16类型的数据,转数后生成1行float32类型的数据以进行运算。

无论以上哪种方式,对于将数据送到32位的浮点运算器组中执行运算操作的1行数据,受限于带宽固定,此时每行中float32数据类型的元素个数相对于float16数据类型而言减半,即运算效率减半。这样就增加了把数据从存储器件中读出的次数,同时需要更多的指令条数完成此种操作,从而具有执行时间长,功耗高和编程复杂的缺陷。



技术实现要素:

本公开的目的在于克服现有技术中占用存储空间大或者转换效率低的缺陷。

根据本公开的第一方面,提供一种计算装置,包括:第一转换单元(t1),配置为将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,其中n和m为整数,且n大于m;运算单元(c),所述运算单元配置为连接到所述第一转换单元(t1),分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分;第二转换单元(t2),配置为将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

根据本公开的第二方面,提供一种芯片,包括上述的计算装置。

根据本公开的第三方面,提供一种板卡,包括如上面所述的计算装置或者如上面所述的芯片。

根据本公开的第四方面,提供一种电子设备,包括如上面所述的计算装置,或者如上面所述的芯片,或者如上面所述的板卡。

根据本公开的第五方面,提供一种计算方法,包括:将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,其中n和m为整数,且n大于m;分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分;以及将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

本公开的技术方案的至少一个有益效果包括,可以在带宽固定的约束下,在不损失运算速度的前提下提高运算精度。

附图说明

通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:

图1示出了根据本公开一个实施方式的计算装置的框图;

图2示出了根据本公开的一个实施方式的将第一数据转换为多行第二数据的示意图;

图3示出了根据本公开的一个实施方式的对第二数据进行处理的示意性框图;

图4示出了根据本公开的一个实施方式的计算装置的示意性框图;

图5示出了根据本公开的一个实施方式的第二转换单元将第三数据转换为结果数据的示意性框图;

图6示出了根据本公开一个实施方式的计算方法的流程图;

图7为组合处理装置的示意图;以及

图8示出了一种示例性的板卡。

具体实施方式

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

应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

下面结合附图来详细描述本公开的具体实施方式。

图1示出了根据本公开一个实施方式的计算装置的框图。

如图1所示,本公开的计算装置可以包括第一转换单元t1,配置为将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,例如第二数据的第零部分,…,第i部分,…,第n/m-1部分,其中n和m为整数,且n大于m;运算单元c,所述运算单元c配置为连接到所述第一转换单元t1,分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分,例如第三数据的第零部分,…,第i部分,…,第n/m-1部分;以及第二转换单元t2,配置为将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

在图1中,第一数据的数据类型例如可以是float类型,精度可以为4、8、14、32等等,这些数据有时候需要提高到更高精度的数据类型以进行更高精度的运算,例如8、16、32和64的float类型数据。可以将低精度的数据转换为高精度的数据,从而提升运算的精度。

例如,如果将float16的第一数据转换为float32的第二数据,则第二数据占用的空间为第一数据所占用的空间的2倍;而如果将float8的第一数据转换为float64的第二数据,则第二数据占用的空间为第一数据所占用的空间的8倍。

在上面的描述中,数据可以包括多个“部分”,这里所述的“部分”可以是预设的大小,也可以根据存储器存储数据的规则来进行划分。优选地,每个部分可以表示存储器中的一行数据。但需要理解的,上面所述的“部分”也可以是其他任何限定的大小。

根据本公开的一个实施方式,第一数据可以在存储器中被存储为多行,第一转换单元t1进一步配置为每次读取一行第一数据,从而每次所读取的一行第一数据被转换为n/m行的第二数据。

由于第二数据所占用的空间为第一数据的多倍,因此可以将第二数据存储为多个部分。例如,第一数据在存储器中存储为一行,那么第二数据可以相应地存储为多行,由此,一行float16的第一数据转换为float32的第二数据时,可以存储为2行,而一行float8的第一数据转换为float64的第二数据时,可以存储为8行。换言之,现有技术是先将每个第一数据的一部分(例如前半行)转换为第二数据,再将该第一数据的另外一部分(例如后半行)转换为第二数据,而本公开是一次性或者同时将第一数据转换为包含多个部分的第二数据,这显著地提升了转换效率。

上文所述的“分别对所述第二数据的n/m个部分进行运算”可以表示运算是同时进行的。

在一个实施方式中,例如,对包含多个部分的第二数据进行运算可以是同时的,即本公开的技术方案包括多个并行的运算单元,所述多个运算单元对第二数据中多个相应的部分并行或同时地进行转换,从而客服了现有技术中对第二数据逐个进行运算的局限,提升了运算效率。

图2示出了根据本公开的一个实施方式的将第一数据转换为多行第二数据的示意图。

如图2所示,可以将第一数据中的每行分为n/m个分段,所述第一转换单元t1配置为将每个分段转换为一行第二数据,从而将一行第一数据转换为n/m行的第二数据。

在图2中,设第一数据的一行数据具有16个数据0-15;设n=32,m=8,即将float8的数据转换为float32的数据,由此,n/m=4。因此每行第一数据被划分为4个分段,可以存在四个子转换单元,分别为t10、t11、t12和t13,每个子转换单元将相应的第一数据的分段转换为float32的第二数据,具体而言,子转换单元t10负责转换数据0-3,子转换单元t11负责转换数据4-7,子转换单元t12负责转换数据8-11,以及子转换单元t13负责转换数据12-15。

子转换单元t10将数据0-3转换为第二数据的第0行,子转换单元t11将数据4-7转换为第二数据的第1行,子转换单元t12将数据8-11转换为第二数据的第2行,子转换单元t13将数据12-15转换为第二数据的第3行。

需要理解的是,第一转换单元t1以及子转换单元t10-t13可以通过软件来实现,也可以通过硬件来实现。当以软件来实现时,则子转换单元t10-t13可以是逻辑上或功能上拆分出来的转换模块;当以硬件实现时,该子转换单元t10-t13可以是实体上区分的转换器。更进一步地,子转换单元t10-t13可以是整体实现的能够转换多个(例如4个)数据的转换模块或者转换电路,或者子转换单元t10-t13中的每一个又可以拆分为多个(例如四个)转换器,每个转换器将一个数据进行转换。更具体地,例如,子转换单元t10可以拆分为四个转换器,这四个转换器分别对数据0-3进行数据类型的转换。

结合以上描述,转换单元可以采用多种形式,本公开并不局限于任何特定的形式。

根据本公开的一个实施方式,运算单元c可以包括n/m个累加器,配置为每次分别对n/m行第二数据进行累加操作。需要理解的是,运算单元c可以是加法器,减法器,乘法器或者任何其他对数据进行运算的独立单元或组合单元,本公开不对运算器的类型进行任何限制。

图3示出了根据本公开的一个实施方式的对第二数据进行处理的示意性框图。

在图3中,以累加器作为运算器的示例来进行说明。其中,n=32,m=4,因此第一数据可以被转换为4个部分,运算单元c可以包括4个累加器c0、c1、c2和c3。图3中示出的累加器的数量仅仅是一个示例,其数量可以根据实际情况进行调整。

在图3中,图2中所示的第二数据的第0行输入到累加器c0中,第二数据的第1行输入到累加器c1中,第二数据的第2行输入到累加器c2中,以及,第二数据的第3行输入到累加器c3中。

当第一组第二数据进入到累加器中时,由于累加器中原先并未存储有任何其他数据,因此该第一组第二数据只是进入并暂存在累加器中,而并不进行任何运算操作。当第二组第二数据进入到累加器中时,则与第一组第二数据进行运算操作。经过累加器之后,第二数据输出为第三数据。

下面以运算器器为累加器来进行更详细的解释。

为了进行连续的累加操作,累加器进一步包括反馈路径,所述反馈路径将所述累加器的输出反馈至所述累加器中,以由所述累加器将所述第三数据与所述累加器中的当前数据进行累加。

图4示出了根据本公开的一个实施方式的计算装置的示意性框图。

如图4所示,示例性地示出了4个累加器c0-c3。第一数据为多行数据,第一转换单元t1每次读取一行第一数据,并将该一行第一数据转换为第二数据,该第二数据包括第0部分、第1部分、第2部分和第3部分。累加器c0接收第二数据的第0部分,累加器c1接收第二数据的第1部分,累加器c2接收第二数据的第2部分,累加器c3接收第二数据的第3部分。

更具体而言,第一转换单元t1例如可以在第一周期内读取第0行第一数据,并将其转换为四行第二数据;累加器c0-c3分别接收第0行第二数据、第1行第二数据、第2行第二数据以及第3行第二数据。由于累加器c0-c3中当前没有数据,因此累加器c0-c3中没有发生运算操作,并且累加器c0-c3的输出与输入相同。

接下来,在第二周期内,第一转换单元t1可以读取第1行第一数据,并将其转换为四行第二数据;累加器c0-c3分别接收这四行新接收的第二数据,并分别将累加器c0-c3的输出作为反馈与这四行新接收的第二数相加。以此类推,累加器可以将所有行的第一数据进行累加操作,并最终输出为第三数据,第三数据也包括四个部分,即第0部分、第1部分、第2部分和第3部分。

需要理解的是,上面所述的周期,可以是一个时钟周期,也可以是多个时钟周期,或者可以是任何自定义的周期。上述的操作,可以是在一个周期的不同时隙内完成的。

还需要理解的是,累加器c0-c3可以通过软件来实现,也可以通过硬件来实现。每个累加器可以根据第二数据每行中数据的数量来分成相应数量的子累加器,例如当第二数据每行中的数据为16个时,则每个累加器c0-c3可以包括16个子累加器,每个子累加器对应于一个数据。当以软件来实现时,则子累加器可以是逻辑上或功能上拆分出来的累加模块;当以硬件实现时,该子累加器可以是实体上区分的累加电路。累加器c0-c3也可以是能够一次性读取一行第二数据的整体模块。本公开对累加器的结构不做任何限制。

某些情况下,所有的第一数据并不一定能够被整行地存储,某些行中的第一数据的数量可能会少于其他行的第一数据,从而不能填充完整的一行。

此外,在另外一些情况中,某些行中的元素虽然填充有具体的数据,但此数据可能并不参与后续具体的运算操作,因此该数据对于运算属于无效的数据。数据的有效或者无效可以在数据指示符中进行记载,例如0可以表示无效,1可以表示有效。

由此可见,存储器的某些存储空间可能是空的,即该存储空间并不存储任何数据内容;此外,存储器的某些存储空间虽然保存有具体的数据内容,但这些数据内容并不参与后续的操作。可以将空的元素或者不参与后续运算的元素称为“无效数据”。

根据本公开的一个实施方式,所述第一转换单元t1配置为,响应于检测到所述第一数据中的元素为无效数据,则略过对所述无效数据的转换。

在此实施方式中,第一转换单元t1可以确定每行第一数据中是否存在无效数据,即是否存在空的存储空间或者是否存在不参与后续运算操作的数据。当存在这些情况的时候,可以直接略过对这些数据进行转换,从而节约了转换的时间,提升了转换效率。需要理解的是,第一转换单元t1可以通过自身来确定每行第一数据中是否存在无效数据,也可以从其他单元中接收关于每行数据中是否存在无效数据的信息。

根据本公开的另一个实施方式,所述运算单元c可以配置为,响应于检测到所述第一数据和/或第二数据中的元素为无效数据,则略过对所述无效数据的运算。

在此实施方式中,运算单元c可以确定每行第一数据是否存在无效数据,即是否存在空的存储空间或者是否存在不参与后续运算操作的数据;或者,运算单元c可以确定经过第一转换单元t1转换得到的第二数据中是否存在无效数据。当第一数据或者第二数据中存在无效数据时,则运算单元c也可以直接略过对这些数据进行运算,从而节约了运算的时间,提升了运算效率。需要理解的是,运算单元c可以通过自身来确定第一数据或第二数据中是否存在无效数据,也可以从其他单元中接收关于第一数据或第二数据中是否存在无效数据的信息,例如,当第一转换单元t1确定了第一数据中是否存在无效数据之后,可以将该信息转发给运算单元c。

根据本公开的又一个实施方式,所述运算单元c可以配置为,响应于检测到所述第一数据和/或第二数据中的元素为无效数据,则将作为无效数据的元素视为零。

在此实施方式中,当运算单元c确定了相应的第一数据或第二数据中的某些数据或元素为无效数据时,可以直接将这些数据视为零,或者将这些数据修改为零来进行进一步的运算。

此外,如果第一转换单元t1检测到第一数据中的某些数据或者元素为无效数据,还可以将这些无效数据直接修改为零,以便于后续运算单元c的进一步运算。

进一步地,根据本公开的一个实施方式,所述第二转换单元t2配置为将n/m行第三数据转换为一行结果数据,即,在运算结束之后,运算单元c的输出为n/m行的数据,其形式与第二数据的存储形式是相同的,但数据的内容与第二数据不同,第二转换单元t2将n/m行的第三数据恢复为结果数据。

图5示出了根据本公开的一个实施方式的第二转换单元将第三数据转换为结果数据的示意性框图。

如图5所示,第三数据例如为4部分数据,分别为第0部分,第1部分、第2部分和第3部分。这里所述的“部分”,可以是存储器中的一行数据,因此也可以称为第0行至第3行。

为了对这四部分数据进行转换,可以进行多种方式的操作。

例如,可以将第二转换单元t2分为四个子转换单元t20-t23,每个子转换单元t20-t23负责对一行第三数据进行转换,即,第三数据的第0行数据由第二转换器t2的子转换单元t20进行转换,第三数据的第1行数据由第二转换器t2的子转换单元t21进行转换,第三数据的第2行数据由第二转换器t2的子转换单元t22进行转换,第三数据的第3行数据由第二转换器t2的子转换单元t23进行转换。每个子转换单元将一行第三数据转换为1/4的结果数据,然后将这些结果数据拼接起来,形成最终的数据。

或者,第二转换单元t2或者子转换单元t20-t21可以根据第三数据中数据的数量来分为多个子转换器。例如,第0行第二数据具有16个数据,则子转换单元t20可以包括16个转化器,每个转换器将对一个数据进行转换,从而第二转换单元t2可以具有64个转换器。

同样地,第二转换单元t2以及子转换单元t20-t23可以通过软件来实现,也可以通过硬件来实现。当以软件来实现时,则子转换单元t20-t23可以是逻辑上或功能上拆分出来的转换模块;当以硬件实现时,该子转换单元t20-t23可以是实体上区分的转换器。

图6示出了根据本公开一个实施方式的计算方法的流程图。

如图6所示,本公开的方法包括:在操作s610,将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,其中n和m为整数,且n大于m;在操作s620,分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分;以及在操作s630,将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

通过结合图1-图5的描述,可以很清楚的理解本公开的方法的内容,因此这里将不再赘述。

本公开的技术方案的有益效果包括,可以在带宽固定的约束下,在不损失运算速度的前提下提高运算精度。此外,本公开的技术方案并没有损失性能,并且没有增加操作次数,以及未增加对存储器件的访存量,从而具有性能高、编程简单和功耗低的优点。

本公开还提供了一个组合处理装置700,其包括上述的计算装置702,通用互联接口704,和其他处理装置706。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图7为组合处理装置的示意图。

其他处理装置,包括中央处理器cpu、图形处理器gpu、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。

通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。

可选的,该结构还可以包括存储装置708,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。

该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的soc片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。

在一些实施例里,本公开还提供了一种芯片,其包括了上述计算装置或组合处理装置。

在一些实施例里,本公开还提供一种板卡,其包括了上述芯片或者上述的计算装置。

在一些实施例里,本公开还提供了一种电子设备,其包括了上述的计算装置,或者上述的芯片,或者上述的板卡。

参阅图8,其提供了一种示例性的板卡,上述板卡除了包括上述芯片802以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件804、接口装置806和控制器件808;

所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元810。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是ddrsdram(英文:doubledataratesdram,双倍速率同步动态随机存储器)。

ddr不需要提高时钟频率就能加倍提高sdram的速度。ddr允许在时钟脉冲的上升沿和下降沿读出数据。ddr的速度是标准sdram的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个ddr4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位ddr4控制器,上述72位ddr4控制器中64bit用于传输数据,8bit用于ecc校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。ddr在一个时钟周期内可以传输两次数据。在所述芯片中设置控制ddr的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。

所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备812(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准pcie接口。比如,待处理的数据由服务器通过标准pcie接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。

所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过spi接口电连接。所述控制器件可以包括单片机(microcontrollerunit,mcu)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。

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

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

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本公开所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

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

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

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

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本公开的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。

通过以下条款,能够更好地理解本公开的内容:

条款1.一种计算装置,包括:

第一转换单元(t1),配置为将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,其中n和m为整数,且n大于m;

运算单元(c),所述运算单元配置为连接到所述第一转换单元(t1),分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分;

第二转换单元(t2),配置为将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

条款2.根据条款1所述的计算装置,其中,所述第一数据为精度4、8、16和32的float数据中的任何一个,所述第二数据为精度为8、16、32和64的float数据中的任何一个。

条款3.根据条款1所述的计算装置,其中,所述第一数据在存储器中被存储为多行,所述第一转换单元(t1)进一步配置为每次读取一行第一数据,从而每次所读取的一行第一数据被转换为n/m行的第二数据。

条款4.根据条款3所述的计算装置,其中,所述第一数据中的每行被分为n/m个分段,所述第一转换单元(t1)配置为将每个分段转换为一行第二数据,从而将一行第一数据转换为n/m行的第二数据。

条款5.根据条款4所述的计算装置,其中,所述运算单元包括n/m个累加器,配置为每次分别对n/m行第二数据进行累加操作。

条款6.根据条款5所述的计算器,其中,所述累加器进一步包括反馈路径,所述反馈路径将所述累加器的输出反馈至所述累加器中,以由所述累加器将所述第三数据与所述累加器中的当前数据进行累加。

条款7.根据条款1-6中任意一项所述的计算装置,其中,所述第一转换单元(t1)配置为,响应于检测到所述第一数据中的元素为无效数据,则略过对所述无效数据的转换。

条款8.根据条款1-6中任意一项所述的计算装置,其中,所述运算单元(c)配置为,响应于检测到所述第一数据和/或第二数据中的元素为无效数据,则略过对所述无效数据的运算。

条款9.根据条款1-6中任意一项所述的计算装置,其中,所述运算单元(c)配置为,响应于检测到所述第一数据和/或第二数据中的元素为无效数据,则将作为无效数据的元素视为零。

条款10.根据条款1-9中任意一项所述的计算装置,其中,所述第二转换单元(t2)配置为将n/m行第三数据转换为一行结果数据。

条款11.一种芯片,包括如条款1-10中任意一项所述的计算装置。

条款12.一种板卡,包括如条款1-10中任意一项所述的计算装置或者如条款11所述的芯片。

条款13.一种电子设备,包括如条款1-10中任意一项所述的计算装置,或者如条款11所述的芯片,或者如条款12所述的板卡。

条款14.一种计算方法,包括:

将具有第一精度m的第一数据转换为具有第二精度n的第二数据,其中,第二数据占用的空间为第一数据的n/m倍并且包括n/m个部分,其中n和m为整数,且n大于m;

分别对所述第二数据的n/m个部分进行运算,以得到具有第二精度n的第三数据,所述第三数据包括n/m个部分;以及

将具有第二精度n的第三数据转换为具有第一精度m的结果数据。

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