计算方法、信息处理装置、计算程序及信息处理系统与流程

文档序号:15385390发布日期:2018-09-08 00:30阅读:202来源:国知局

本发明涉及计算方法、信息处理装置、计算程序及信息处理系统



背景技术:

近年来,已经对包括形成双环(doubletorus)结构的运算元件的处理器进行了研究。形成双环结构的运算元件是m×n个运算元件,这些运算元件被配置成,使得沿行方向设置的m(m是1或大于1的整数)个运算元件与沿列方向设置的n(n是1或大于1的整数)个运算元件例如以环状方式彼此连接。

在包括上述运算元件的处理器中,通过在多个运算元件之间共享存储在运算元件的寄存器中的数据的同时执行处理来减少在处理期间访问存储器(例如,动态随机存取存储器(dram))的频率。结果,如上所述的处理器可以实现高速处理(例如,参见日本特开专利公报no.h06-175986)。



技术实现要素:

在如上所述的处理器中,当计算矩阵乘积时,例如,要计算的矩阵的子矩阵被存储在多个运算元件的寄存器中,并且通过在所述多个运算元件之间共享存储在每个寄存器中的数据来执行处理。结果,该处理器也可以实现高速处理,以供计算矩阵乘积。

然而,在如上所述的处理器中,可以在多个运算元件中同时执行使用相同子矩阵的处理。因此,在这种情况下,在该处理器中,可能存在需要等待其它运算元件中的处理结束的运算元件,并且矩阵乘积的有效(高速)计算有时不能被执行。

根据该实施方式的一方面,一种用于在信息处理装置中计算第一矩阵与第二矩阵的乘积的计算方法,该信息处理装置包括m×n个运算元件,这些运算元件被配置成,使得沿行方向设置的m个运算元件与沿列方向设置的n个运算元件以环状(torus-like)方式彼此连接,其中,m为1或大于1的整数,并且n为1或大于1的整数,所述计算方法包括以下步骤:第一生成步骤,该第一生成步骤由处理器沿行方向按m和n的最小公倍数并且沿列方向按n分割所述第一矩阵,来生成一个或更多个第一分割矩阵;第二生成步骤,该第二生成步骤由处理器沿行方向按m并且沿列方向按所述最小公倍数分割所述第二矩阵,来生成一个或更多个第二分割矩阵;第一存储步骤,该第一存储步骤由处理器将所生成的一个或更多个第一分割矩阵存储在所述运算元件的存储单元中,使得在所述第一矩阵中位于同一列的所述一个或更多个第一分割矩阵被存储于在所述信息处理装置中设置于不同列的所述运算元件中;第二存储步骤,该第二存储步骤由处理器将所生成的一个或更多个第二分割矩阵存储在所述存储单元中,使得在所述第二矩阵中位于同一行的所述一个或更多个第二分割矩阵被存储于在所述信息处理装置中设置于不同行的所述运算元件中;第一相加步骤,该第一相加步骤针对每个运算元件,由处理器将存储在各运算元件的所述存储单元中的、所述一个或更多个第一分割矩阵与所述一个或更多个第二分割矩阵的第一乘积加至存储在各运算元件的所述存储单元中的第一结果矩阵;第一发送步骤,该第一发送步骤针对每个运算元件,由处理器将存储在各运算元件的所述存储单元中的所述一个或更多个第一分割矩阵发送至沿行方向按环状方式彼此连接的其它运算元件中的、直接连接至该运算元件的运算元件;第二发送步骤,该第二发送步骤针对每个运算元件,由处理器将存储在各运算元件的所述存储单元中的所述一个或更多个第二分割矩阵发送至沿列方向按环状方式彼此连接的其它运算元件中的、直接连接至该运算元件的运算元件;第二相加步骤,该第二相加步骤针对每个运算元件,响应于从其它运算元件接收到所述一个或更多个第一分割矩阵和所述一个或更多个第二分割矩阵,由处理器将所接收的一个或更多个第一分割矩阵与所接收的一个或更多个第二分割矩阵的第二乘积与存储在各运算元件的所述存储单元中的第一结果矩阵相加;以及第一重复步骤,该第一重复步骤由处理器重复所述第一发送步骤、所述第二发送步骤以及所述第二相加步骤,直到在按环状方式彼此连接的每个运算元件中将根据存储在各运算元件的所述存储单元中的所述一个或更多个第一分割矩阵计算的乘积加至所述第一结果矩阵,并且在按环状方式彼此连接的每个运算元件中将根据存储在各运算元件的所述存储单元中的所述一个或更多个第二分割矩阵计算的乘积加至所述第一结果矩阵为止。

根据一个方面,可以有效地计算所述矩阵乘积。

附图说明

图1是例示信息处理系统10的配置的图。

图2是例示dlu111的配置的图。

图3是例示将dpu00中的子矩阵存储到dpu23的图。

图4是例示将子矩阵存储到dpu00至dpu23的具体示例的图。

图5是例示信息处理系统10的硬件配置的图。

图6是dlu111的功能框图。

图7是例示第一实施方式中的矩阵计算处理的概要的流程图。

图8是例示第一实施方式中的矩阵计算处理的概要的流程图。

图9是例示步骤s4和步骤s5的处理的具体示例的图。

图10是例示步骤s4和步骤s5的处理的具体示例的图。

图11是例示步骤s4和步骤s5的处理的具体示例的图。

图12是例示步骤s11至步骤s15的处理的具体示例的图。

图13是例示步骤s11至步骤s15的处理的具体示例的图。

图14是例示步骤s11至步骤s15的处理的具体示例的图。

图15是例示第一实施方式中的矩阵计算处理的细节的流程图。

图16是例示第一实施方式中的矩阵计算处理的细节的流程图。

图17是例示第一实施方式中的矩阵计算处理的细节的流程图。

图18是例示第一实施方式中的矩阵计算处理的细节的流程图。

图19是例示第一实施方式中的矩阵计算处理的细节的图。

图20是例示第一实施方式中的矩阵计算处理的细节的图。

图21是例示第一实施方式中的矩阵计算处理的细节的图。

图22是例示第一实施方式中的矩阵计算处理的细节的图。

图23是例示第一实施方式中的矩阵计算处理的细节的图。

图24是例示第一实施方式中的矩阵计算处理的细节的图。

图25是例示第一实施方式中的矩阵计算处理的细节的图。

图26是例示第一实施方式中的矩阵计算处理的细节的图。

图27是例示第一实施方式中的矩阵计算处理的细节的图。

图28是例示第一实施方式中的矩阵计算处理的细节的图。

图29是例示第一实施方式中的矩阵计算处理的细节的图。

图30是例示第一实施方式中的矩阵计算处理的细节的图。

具体实施方式

信息处理系统的配置

首先,对信息处理系统10的配置进行描述。图1是例示信息处理系统10的配置的图。图1所示信息处理系统10包括:信息处理装置1和信息处理装置2。信息处理装置1包括处理器111和存储器112,而信息处理装置2包括cpu101和存储器102。下面将处理器111描述为fujitsulimited所制造的

例如,当处理器的研究者(下文中还简称为“研究者”)将矩阵输入到信息处理装置2时,cpu101将输入矩阵存储到存储器102中。例如,当要在dlu111中计算矩阵乘积时,cpu101将存储在存储器102中的矩阵存储到存储器112中。

dlu111是包括形成双环结构的m×n个运算元件(下文中还称为“dpu”)的处理器。dlu111获得存储在存储器112中的矩阵(下文中还称为“第一矩阵”和“第二矩阵”),并且以预定定时(例如,在用于计算矩阵乘积的输入被输入至信息处理装置1时)计算第一矩阵和第二矩阵的乘积。

接下来,对dlu111的配置进行描述。图2是例示dlu111的配置的图。

如图2所示,例如,dlu111包括由沿列方向(图2中的竖直方向)设置的六个dpu和沿行方向(图2中的水平方向)设置的四个dpu所形成的24个dpu。每个dpu都包括例如被配置成存储第一矩阵的子矩阵和第二矩阵的子矩阵的存储单元。

如图2所示,沿同一列设置的六dpu(dpu00、dpu04、dpu08、dpu12、dpu16以及dpu20)形成环状结构tr21。具体来说,例如,dpu00连接至dpu20和dpu04,并且dpu04连接至dpu00和dpu08。

如图2所示,沿同一行设置的四个dpu(dpu00、dpu01、dpu02以及dpu03)形成环状结构tr11。具体来说,例如,dpu00连接至dpu03和dpu01,并且dpu01连接至dpu00和dpu02。

即,在dlu111中设置的24个dpu形成双环结构,该双环结构包括各由沿同一列设置的六个dpu形成的四个环状结构(tr21、tr22、tr23以及tr24)以及各由沿同一行设置的四个dpu形成的六个环状结构(tr11、tr12、tr13、tr14、tr15以及tr16)。

结果,例如,dpu00可以共享(引用)存储在形成环状结构tr21的其它dpu(即,dpu04、dpu08、dpu12、dpu16以及dpu20)中的子矩阵。dpu00可以共享(引用)存储在形成环状结构tr11的其它dpu(即,dpu01、dpu02以及dpu03)中的子矩阵。

因此,在计算第一矩阵和第二矩阵的乘积时,例如,dlu111可以在计算第一矩阵和第二矩阵的乘积期间,通过将需要被乘以并加至存储在dpu00、dpu01、dpu02以及dpu03中的子矩阵的子矩阵存储在dpu00、dpu04、dpu08、dpu12、dpu16以及dpu20中的任一个中来减少访问存储器112的频率。下面,对第一矩阵的子矩阵和第二矩阵的子矩阵被存储在dpu00至dpu23中的任一个中的情况进行描述。

在每个dpu中存储子矩阵

图3是例示将dpu00中的子矩阵存储到dpu23的图。具体来说,图3是例示在计算第一矩阵ma和第二矩阵mb的乘积时存储子矩阵的图。下面,将第一矩阵ma和第二矩阵mb的乘积的计算结果描述为第三矩阵mc。

如图3所示,例如,dlu111将第一矩阵ma和第二矩阵mb中的每一个分割成24个部分。具体来说,如图3所示,dlu111根据dlu111中的每个dpu的布置将第一矩阵ma和第二矩阵mb中的每一个分割成沿列方向的六个部分和沿行方向的四个部分。

然后,dlu111将第一矩阵ma的子矩阵存储在dpu中,使得要在计算第三矩阵mc的子矩阵时使用的第一矩阵ma的子矩阵被存储在形成环状结构的dpu中的任一个中。dlu111存储第二矩阵ma的子矩阵,使得要在计算第三矩阵mc的子矩阵时使用的第二矩阵mb的子矩阵被存储在形成环状结构的dpu中的任一个中。dlu111将要存储第三矩阵mc的子矩阵的dpu确定为要存储、要在计算该子矩阵中使用的第一矩阵ma的子矩阵和第二矩阵mb的子矩阵两者的dpu。即,dlu111将第一矩阵ma的子矩阵、第二矩阵mb的子矩阵以及第三矩阵mc的子矩阵存储到dpu00至dpu23中的每一个中。

具体来说,例如,dlu111将要在计算第三矩阵mc的子矩阵中的一预定子矩阵中使用的、第一矩阵ma的子矩阵存储在dpu00、dpu01、dpu02以及dpu03中。例如,dlu111将要在计算第三矩阵mc的子矩阵中的一预定子矩阵中使用的、第二矩阵mb的子矩阵存储在dpu00、dpu04、dpu08、dpu12、dpu16以及dpu20中。在该情况下,dlu111将第三矩阵mc的子矩阵中的该预定子矩阵存储在dpu00中,该dpu00对于其中存储第一矩阵ma的子矩阵的dpu和其中存储第二矩阵mb的子矩阵的dpu是共用的。

结果,当计算第三矩阵mc的子矩阵时,dlu111不需要访问存储器112。

将子矩阵存储到dpu中的具体示例

接下来,对将子矩阵存储到dpu00至dpu23中的具体示例进行描述。图4是例示将子矩阵存储到dpu00至dpu23的具体示例的图。在图4中,仅例示了要存储在第一矩阵ma中的dpu00、dpu01、dpu02以及dpu03中的子矩阵、要存储在第二矩阵mb中的dpu00、dpu04、dpu08、dpu12、dpu16以及dpu20中的子矩阵、以及要存储在第三矩阵mc中的dpu00中的子矩阵。在图4所示的示例中,符号ma1至ma12和mb1至mb12是从第一矩阵ma和第二矩阵mb分割的矩阵(下文中还称为“分割矩阵”)。第三矩阵mc的每个分量的初始值是零。

当dlu111将子矩阵存储在dpu中时,优选的是将子矩阵尽可能均等地存储在dpu中,使得有效地计算矩阵乘积。因此,例如,dlu111通过沿行方向按m(沿行方向设置的dpu的数量)和n(沿列方向设置的dpu的数量)的最小公倍数并且沿列方向按n分割第一矩阵ma,来生成一个或更多个分割矩阵。dlu111将所生成的一个或更多个分割矩阵存储在针对每个子矩阵的dpu中,在该子矩阵中,沿行方向的分割矩阵的数量是通过将所述最小公倍数除以m而获取的数,并且其中沿列方向的分割矩阵的数量为1。dlu111例如通过沿行方向按m并且沿列方向按m和n的最小公倍数分割第二矩阵mb来生成一个或更多个分割矩阵。dlu111将所生成的一个或更多个分割矩阵存储在针对每个子矩阵的dpu中,在该子矩阵中,沿行方向的分割矩阵的数量为1,并且其中沿列方向的分割矩阵的数量是通过将所述最小公倍数除以n而获取的数。

具体来说,在图2所示的示例中,沿行方向设置的dpu的数量是四个,而沿列方向设置的dpu的数量是六个。由此,在该情况下,dlu111将第一矩阵ma的行方向和第二矩阵mb的列方向中的每一个按作为沿行方向设置的dpu的数量和沿列方向设置的dpu的数量的最小公倍数的12来分割,如图4所示。如图4所示,dlu111在dpu00、dpu01、dpu02以及dpu03中存储沿行方向的分割矩阵的数量是三的子矩阵,并且在dpu00、dpu04、dpu08、dpu12、dpu16以及dpu20中存储沿列方向的分割矩阵的数量是二的子矩阵。

结果,dlu111可以尽可能均等地存储用于dpu的子矩阵。

计算第一矩阵和第二矩阵的乘积

接下来,对第一矩阵ma和第二矩阵mb的乘积(第三矩阵mc)的计算进行描述。

在图4所示的示例中,dpu00在形成环状结构的dpu01、dpu02以及dpu03之间循环存储在dpu中的分割矩阵。dpu00在形成环状结构的dpu04、dpu08、dpu12、dpu16以及dpu20之间循环存储在dpu中的分割矩阵。dpu00计算存储在第三矩阵mc的dpu00中的子矩阵。

具体来说,在图4所示的示例中,dpu00将分割矩阵ma1和分割矩阵mb1的乘积与分割矩阵ma2和分割矩阵mb2的乘积相加,并且存储所计算矩阵与当前分割矩阵mc1的和作为新分割矩阵mc1。然后,在图4所示的示例中,dpu00将分割矩阵ma3和分割矩阵mb3(通过分割矩阵的循环从dpu04发送至dpu00的分割矩阵)的乘积相加,并且存储所计算矩阵与当前分割矩阵mc1的和作为新分割矩阵mc1。在图4所示的示例中,dpu00将分割矩阵ma4(通过分割矩阵的循环从dpu01发送至dpu00的分割矩阵)和分割矩阵mb4(通过分割矩阵的循环从dpu04发送至dpu00的分割矩阵)的乘积相加,并且存储所计算矩阵与当前分割矩阵mc1的和作为新分割矩阵mc1。类似地,dpu00执行分割矩阵ma1至ma12和mb1至mb12的相乘和相加,并且计算分割矩阵mc1。

在该情况下,dlu111还在除了cpu00以外的其它dpu中,并行地执行第一矩阵ma的子矩阵与第二矩阵mb的子矩阵的乘积的计算。结果,在计算矩阵乘积时,dlu111可以实现高速处理。

然而,在dlu111中,可以在多个dpu中同时执行使用同一子矩阵的处理(计算)。具体来说,在图3所示的示例中,上述情况对应于存储在第一矩阵ma中的dpu00中的子矩阵被同时用于计算要被存储在第三矩阵mc的dpu00中的子矩阵和计算要被存储在第三矩阵mc的dpu01中的子矩阵的情况。

在该情况下,在dlu111中,存在需要等待其它dpu中的处理结束的dpu,并且无法高效(高速)地计算矩阵乘积。

因而,如图4所示,该实施方式中的dlu111通过沿第一矩阵的行方向按m(沿行方向设置的dpu的数量)和n(沿列方向设置的dpu的数量)的最小公倍数并且沿第一矩阵ma的列方向按n分割第一矩阵ma,来生成一个或更多个分割矩阵(下文中还称为“第一分割矩阵”)。如图4所示,dlu111通过沿第二矩阵的行方向按m并且沿第二矩阵的列方向按m和n的最小公倍数分割第二矩阵mb来生成一个或更多个分割矩阵(下文中还称为“第二分割矩阵”)。

dlu111将一个或更多个第一分割矩阵存储在dpu的存储单元中,使得在第一矩阵ma中位于同一列的一个或更多个第一分割矩阵被存储于在dlu111中设置于不同列的dpu中。dlu111将一个或更多个第二分割矩阵存储在dpu的存储单元中,使得在第二矩阵mb中位于同一行的一个或更多个第二分割矩阵被存储于在dlu111中设置于不同行的dpu中。

即,dlu111确定要存储子矩阵的dpu,使得多个dpu使用同一子矩阵的定时彼此不交叠。结果,dlu111可以抑制发生针对每个dpu的等待时间。

针对每个dpu,dlu111将存储在存储单元中的一个或更多个第一分割矩阵和一个或更多个第二分割矩阵的乘积(下文中还称为“第一乘积”)与存储在存储单元中的第三矩阵的子矩阵(下文中还称为“第一结果矩阵”)相加。然后,针对每个dpu,dlu111将存储在存储单元中的第一分割矩阵发送至沿行方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu。而且,针对每个dpu,dlu111将存储在存储单元中的一个或更多个第二分割矩阵发送至沿列方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu。

然后,响应于从其它dpu接收到一个或更多个第一分割矩阵和一个或更多个第二分割矩阵,dlu111将所接收的一个或更多个第一分割矩阵和所接收的一个或更多个第二分割矩阵的乘积(下文中还称为“第二乘积”)与存储在针对每个dpu的存储单元中的第一结果矩阵相加。

然后,dlu111重复发送第一分割矩阵、发送第二分割矩阵以及加上第二乘积,直到在按环状方式彼此连接的每个dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第一分割矩阵计算的乘积加至第一结果矩阵,并且在按环状方式彼此连接的每个dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第二分割矩阵计算的乘积加至第一结果矩阵为止。

结果,dlu111可以有效地(高速地)计算第一矩阵ma和第二矩阵mb的乘积。

信息处理系统的硬件配置

接下来,对信息处理系统10的硬件配置进行描述。图5是例示信息处理系统10的硬件配置的图。

信息处理装置1包括:作为处理器的dlu111、存储器112、外部接口(i/o单元)113以及存储介质(存储部)114。这些单元通过总线115彼此连接。

存储介质114在该存储介质114中的程序存储区域(未例示)中存储用于执行计算第一矩阵ma和第二矩阵mb的乘积的处理(下文中还称为“矩阵计算处理”)的程序120。

在执行程序120时,dlu111将程序120从存储介质114加载到存储器112,并且与程序120协作执行矩阵计算处理。外部接口113与信息处理装置2通信。

信息处理装置2包括:作为处理器的cpu101、存储器102、外部接口(i/o单元)103以及存储介质(存储部)104。这些单元通过总线105彼此连接。

存储介质104在该存储介质104中的程序存储区域(未例示)中存储用于执行用于将存储在存储器102中的第一矩阵ma和第二矩阵mb存储在存储器112中的处理(下文中还称为“矩阵存储处理”)的程序110。

如图5所示,在执行程序110时,cpu101将程序110从存储介质104加载到存储器112,并且与程序110协作执行矩阵存储处理。外部接口103与信息处理装置1通信。

dlu的功能

接下来,对dlu111的功能框图进行描述。图6是dlu111的功能框图。如图6所示,dlu111通过与程序120协作,而操作为第一矩阵分割单元121、第二矩阵分割单元122、矩阵存储单元123、矩阵计算单元124、矩阵发送接收单元125以及矩阵输出单元126。

第一矩阵分割单元121例如通过沿行方向按m和n的最小公倍数并且沿列方向按n分割第一矩阵ma,来生成一个或更多个第一分割矩阵。

第二矩阵分割单元122例如通过沿行方向按m并且沿列方向按m和n的最小公倍数分割第二矩阵mb,来生成一个或更多个第二分割矩阵。

矩阵存储单元123例如将由第一矩阵分割单元121生成的一个或更多个第一分割矩阵存储在dpu的存储单元中,使得在第一矩阵ma中位于同一列的一个或更多个第一分割矩阵被存储于在dlu111中设置于不同列的dpu中。矩阵存储单元123例如将由第二矩阵分割单元122生成的一个或更多个第二分割矩阵存储在dpu的存储单元中,使得在第二矩阵mb中位于同一行的一个或更多个第二分割矩阵被存储于在dlu111中设置于不同行的dpu中。

针对每个dpu,矩阵计算单元124例如将存储在存储单元中的、一个或更多个第一分割矩阵与一个或更多个第二分割矩阵的第一乘积与存储在存储单元中的第一结果矩阵相加。

针对每个dpu,矩阵发送接收单元125例如将存储在存储单元中的一个或更多个第一分割矩阵发送至沿行方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu。针对每个dpu,矩阵发送接收单元125将存储在存储单元中的一个或更多个第二分割矩阵发送至沿列方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu。然后,响应于矩阵发送接收单元125从其它dpu接收到一个或更多个第一分割矩阵和一个或更多个第二分割矩阵,矩阵计算单元124例如将所接收的一个或更多个第一分割矩阵和所接收的一个或更多个第二分割矩阵的第二乘积与存储在针对每个dpu的存储单元中的第一结果矩阵相加。

矩阵发送接收单元125和矩阵计算单元124重复分割矩阵的发送和第二乘积的相加,直到在按环状方式彼此连接的所有dpu中执行了每个步骤为止。

矩阵输出单元126在在按环状方式彼此连接的所有dpu中执行分割矩阵的发送和第二乘积的相加之后,将第一结果矩阵输出到信息处理装置2等。

第一实施方式的概要

接下来,对第一实施方式的概要进行描述。图7和图8是例示第一实施方式中的矩阵计算处理的概要的流程图。

如图7所示,dlu111等待直到计算开始定时为止(步骤s1中的否)。计算开始定时例如可以是研究者向信息处理装置1输入用于开始计算第一矩阵ma和第二矩阵mb的乘积的输入的定时。

当计算开始定时到来(步骤s1中的是)时,dlu111例如通过沿行方向按m和n的最小公倍数并且沿列方向按n分割第一矩阵ma,来生成一个或更多个第一分割矩阵(s2)。dlu111例如通过沿行方向按m并且沿列方向按m和n的最小公倍数分割第二矩阵mb来生成一个或更多个第二分割矩阵(s3)。

然后,dlu111例如将一个或更多个第一分割矩阵存储在dpu的存储单元中,使得在第一矩阵ma中位于同一列的一个或更多个第一分割矩阵被存储于在dlu111中设置于不同列的dpu中(s4)。dlu111例如将一个或更多个第二分割矩阵存储在dpu的存储单元中,使得在第二矩阵mb中位于同一行的一个或更多个第二分割矩阵被存储于在dlu111中设置于不同行的dpu中(s5)。

如图8所示,dlu111例如将存储在存储单元中的、一个或更多个第一分割矩阵与一个或更多个第二分割矩阵的第一乘积与存储在针对每个dpu的存储单元中的第一结果矩阵相加(s11)。

然后,针对每个dpu,dlu111例如将存储在存储单元中的一个或更多个第一分割矩阵发送至沿行方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu(s12)。针对每个dpu,dlu111例如将存储在存储单元中的一个或更多个第二分割矩阵发送至沿列方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu(s13)。

响应于从其它dpu接收到一个或更多个第一分割矩阵和一个或更多个第二分割矩阵,dlu111例如将所接收的一个或更多个第一分割矩阵和所接收的一个或更多个第二分割矩阵的第二乘积与存储在针对每个dpu的存储单元中的第一结果矩阵相加(s14)。

然后,dlu111确定是否在按环状方式彼此连接的每个dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第一分割矩阵计算的乘积加至第一结果矩阵,并且确定是否在按环状方式彼此连接的各dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第二分割矩阵计算的乘积加至第一结果矩阵(s15)。结果,当确定该乘积被加至按环状方式彼此连接的每个dpu的第一结果矩阵(步骤s15中的“是”)时,dlu111结束矩阵计算处理。当确定该乘积未被加至按环状方式彼此连接的每个dpu的第一结果矩阵(步骤s15中的“否”)时,dlu111执行步骤s12和后续步骤中的处理。

即,dlu111确定用于保持子矩阵的dpu,使得多个dpu使用同一子矩阵的定时彼此不交叠。

结果,dlu111可以抑制每个dpu中发生等待时间。因此,dlu111可以有效地(高速地)计算第一矩阵ma和第二矩阵mb的乘积。

步骤s4和步骤s5的处理的具体示例

接下来,对步骤s4和步骤s5中的处理的具体示例进行描述。图9至图11是例示步骤s4和步骤s5的处理的具体示例的图。在图9至11所示的示例中,第一矩阵ma、第二矩阵mb,以及第三矩阵mc分别对应于图3和图4中描述的第一矩阵ma、第二矩阵mb,以及第三矩阵mc。在图9所示的示例中,第一矩阵ma中的符号a0等表示在步骤s2的处理中生成的分割矩阵(第一分割矩阵),而第二矩阵mb中的符号b0等表示在步骤s3的处理中生成的分割矩阵(第二分割矩阵)。在图9所示的示例中,第三矩阵mc中的符号c0等表示要存储在dpu中的子矩阵。

在图9所示的示例中,根据第一矩阵ma中的分割矩阵的位置,在每个dpu中存储沿行方向的分割矩阵的数量为一并且沿列方向的分割矩阵的数量为三的子矩阵。在图9所示的示例中,根据第二矩阵mb中的分割矩阵的位置,在每个dpu中存储沿行方向的分割矩阵的数量为二并且沿列方向的分割矩阵的数量为一的子矩阵。因此,例如,将包括分割矩阵a0、a1以及a2的子矩阵、包括分割矩阵b0和b4的子矩阵、以及子矩阵c0存储在dpu00中。例如,将包括分割矩阵a3、a4以及a5的子矩阵、包括分割矩阵b1和b5的子矩阵、以及子矩阵c1存储在dpu01中。例如,将包括分割矩阵a12、a13以及a14的子矩阵、包括分割矩阵b8和b12的子矩阵、以及子矩阵c0存储在dpu04中。

具体来说,在图9所示的示例中,子矩阵c0通过将分割矩阵a0、a1、a2、a3、a4、a5、a6、a7、a8、a9、a10以及a11和分割矩阵b0、b4、b8、b12、b16、b20、b24、b28、32、b36、b40以及b44相乘并且相加来计算。在图9所示的示例中,子矩阵c4通过将分割矩阵a12、a13、a14、a15、a16、a17、a18、a19、a20、a21、a22以及a23和分割矩阵b0、b4、b8、b12、b16、b20、b24、b28、32、b36、b40以及b44相乘并且相加来计算。

即,当分割矩阵被存储在dpu中时(如图9所示),dpu00和dpu04例如在计算子矩阵c0和子矩阵c4时分别按相同顺序使用分割矩阵b0、b4、b8、b12、b16、b20、b24、b28、b32、b36、b40以及b44。由此,在该情况下,当在dpu00中计算子矩阵c0时,可能发生用于处理dpu04的等待时间。类似地,在该情况下,当在dpu04中计算子矩阵c4时,可能发生用于处理dpu00的等待时间。

因此,dlu111根据下面的表达式1,改变图9所示的第一矩阵ma的分割矩阵的、其位置为从顶部起第y和从左侧起第x的分割矩阵(下文中还称为“a[y][x]”)的布置(s4)。应注意到,下面表达式1中的l是指示m(dlu111中的沿列方向设置的dpu的数量)和n(dlu111中的沿行方向设置的dpu的数量)的最小公倍数的常数。

a[y][(x+y*(l/n))%l]···(1)

具体来说,如图10所示,dlu111例如将分割矩阵a12、a13、a14、a15、a16、a17、a18、a19、a20、a21、a22以及a23重新设置成分割矩阵a22、a23、a12、a13、a14、a15、a16、a17、a18、a19、a20以及a21的顺序,然后将重新设置的分割矩阵存储在dpu中(s4)。

即,dlu111例如使用“2”作为要沿每一行移动的分割矩阵的数量,该“2”通过将作为第一矩阵ma中的列数的“12”除以作为第一矩阵ma中的行数的“6”而计算出。因而,如图10所示,dlu111例如指定“2”作为包括在第一矩阵ma的第二行中的要移动的分割矩阵的数量,指定“4”作为包括在第一矩阵ma的第三行中的要移动的分割矩阵的数量,以及指定“6”作为包括在第一矩阵ma的第四行中的要移动的分割矩阵的数量。

结果,dlu111可以在dpu中存储一个或更多个第一分割矩阵,使得在第一矩阵ma中位于同一列中的一个或更多个第一分割矩阵被存储在不同的dpu中。

如图9所示,当分割矩阵被存储在dpu中时,dpu00和dpu01在计算子矩阵c0和子矩阵c1时分别按相同顺序使用分割矩阵a0、a1、a2、a3、a4、a5、a6、a7、a8、a9、a10以及a11。由此,在该情况下,当例如在dpu00中计算子矩阵c0时,可能发生用于处理dpu01的等待时间。按相同方式,在该情况下,在计算子矩阵c1时,可以在dpu01中发生用于处理dpu00的等待时间。

因此,dlu111根据下面的表达式2,改变图9所示第二矩阵mb的分割矩阵的、其位置为从顶部起第y和从左侧起第x的分割矩阵(下文中还称为“b[y][x]”)的布置(s5)。

b[(l-y+x*(l/m))%l][x]···(2)

具体来说,如图10所示,dlu111例如将分割矩阵b1、b5、b9、b13、b17、b21、b25、b29、b33、b37、b41以及b45重新设置成分割矩阵b37、b41、b45、b1、b5、b9、b13、b17、b21、b25、b29以及b33的顺序,然后将重新设置的分割矩阵存储在dpu中。

即,dlu111例如使用“3”作为要沿每一行移动的分割矩阵的数量,该“3”通过将作为第二矩阵mb中的行数的“12”除以作为第二矩阵mb中的列数的“4”而计算出。因此,dlu111例如指定“3”作为包括在第二矩阵mb的第二列中的要移动的分割矩阵的数量,并且指定“6”作为包括在第二矩阵mb的第三列中的要移动的分割矩阵的数量,如图10所示。

结果,dlu111可以在dpu中存储一个或更多个第二分割矩阵,使得在第二矩阵mb中位于同一行中的一个或更多个第二分割矩阵被存储在第二矩阵mb中的不同dpu中。

dlu111例如可以根据下面的表达式3在步骤s4的处理中改变第一矩阵ma中的分割矩阵的布置。

a[y][((l-1)-x+(n-y)*(l/n))%l]···(3)

具体来说,如图11所示,dlu111例如将分割矩阵a0、a1、a2、a3、a4、a5、a6、a7、a8、a9、a10以及a11重新设置成分割矩阵a11、a10、a9、a8、a7、a6、a5、a4、a3、a2、a1以及a0的顺序,然后将重新设置的分割矩阵存储在dpu中。dlu111例如将分割矩阵a12、a13、a14、a15、a16、a17、a18、a19、a20、a21、a22以及a23重新设置成分割矩阵a21、a20、a19、a18、a17、a16、a15、a14、a13、a12、a23以及a22的顺序,然后将重新设置的分割矩阵存储在dpu中。

dlu111例如可以根据下面的表达式4在步骤s5的处理中改变第二矩阵mb中的分割矩阵的布置。

b[((l-1)-y+(m-x)*(l/m))%l][x]···(4)

具体来说,如图11所示,dlu111例如将分割矩阵b0、b4、b8、b12、b16、b20、b24、b28、b32、b36、b40以及b44重新设置成分割矩阵b44、b40、b36、b32、b28、b24、b20、b16、b12、b8、b4以及b0的顺序,然后将重新设置的分割矩阵存储在dpu中。dlu111例如将分割矩阵b1、b5、b9、b13、b17、b21、b25、b29、b33、b37、b41以及b45重新设置成分割矩阵b33、b29、b25、b21、b17、b13、b9、b5、b1、b45、b41以及b37的顺序,然后将重新设置的分割矩阵存储在dpu中。

步骤s11至步骤s15的处理的具体示例

接下来,对步骤s1至步骤s15中的处理的具体示例进行描述。图12至图14是例示步骤s1至步骤s15的处理的具体示例的图。图12中的符号a0等对应于图9等中描述的分割矩阵a0。图12中的dpu00等对应于图2等中描述的dpu00等。下面基于已经执行了在步骤s4和步骤s5中重新设置图11所示分割矩阵的假定来进行描述。

在图12所示的示例中,例如,将分割矩阵a9、a10以及a11、分割矩阵b40和b44、以及子矩阵c0存储在dpu00中。图12中所示的dpu00将存储在dpu00中的分割矩阵a11和分割矩阵b44相乘,并将计算结果加至子矩阵c0。分割矩阵a9和a10以及分割矩阵b40被存储在图12所示的dpu00中。即,分割矩阵a9和a10以及分割矩阵b40被存储在dpu00中,作为随后要相乘和相加的分割矩阵。

然后,如图13所示,dpu00将分割矩阵a10和分割矩阵b40相乘,并将计算结果加至子矩阵c0。即,dpu00将在图12所示状态下等待的分割矩阵的、最早存储在dpu00中的分割矩阵的组合相乘和相加。

图13所示的dpu00已经接收到在图12所示状态下存储在与dpu00形成环状结构的dpu01中的分割矩阵a8以及存储在也与dpu00形成环状结构的dpu04中的分割矩阵b36。图13所示的dpu00已经向各与dpu00形成环状结构的dpu03和dpu20发送了已经在图12所示状态下执行了相乘和相加的分割矩阵a11和分割矩阵b44。

然后,如图14所示,dpu00将分割矩阵a9和分割矩阵b36相乘,并将计算结果加至子矩阵c0。即,dpu00将在图13所示状态下等待的分割矩阵的、最早存储在dpu00中的分割矩阵的组合相乘和相加。

图14所示的dpu00已经接收到在图13所示状态下存储在与dpu00形成环状结构的dpu01中的分割矩阵a7以及存储在也形成环状结构的dpu04中的分割矩阵b32。图14所示的dpu00已经向各与dpu00形成环状结构的dpu03和dpu20发送了已经在图13所示状态下执行了相乘和相加的分割矩阵a10和分割矩阵b40。

即,dpu00可以通过根据环状结构重复循环分割矩阵来接收在计算子矩阵c0中需要的全部分割矩阵。因此,dpu00可以在不访问存储器112的情况下计算子矩阵c0。

第一实施方式的细节

接下来,对第一实施方式的细节进行描述。图15至图18是例示第一实施方式中的矩阵计算处理的细节的流程图。图19至图30是例示第一实施方式中的矩阵计算处理的细节的图。参照图19至图30,对图15至图18所示的矩阵计算处理进行描述。

如图15所示,信息处理装置1的第一矩阵分割单元121等待直到计算开始定时(步骤s31中的“否”)为止。当计算开始定时到来(步骤s31中的是)时,第一矩阵分割单元121例如通过沿行方向按将m和n的最小公倍数与一整数(下文中还称为“第一整数”)相乘而获取的数并且沿列方向按将n与一整数(下文中还称为“第二整数”)相乘而获取的数分割第一矩阵ma,来生成一个或更多个第一分割矩阵(s32)。

具体来说,如图19所示,第一矩阵分割单元121例如通过沿行方向按m和n的最小公倍数的一倍并且沿列方向按n的一倍分割第一矩阵ma,来生成一个或更多个第一分割矩阵。即,在该情况下,与图9所示的分割矩阵相比,第一矩阵分割单元121将第一矩阵ma分割成第一分割矩阵的数量的一倍。

信息处理装置1的第二矩阵分割单元122例如通过沿行方向按将m与一整数(下文中还称为“第三整数”)相乘而获取的数并且沿列方向按将m和n的最小公倍数与一整数(下文中还称为“第四整数”)相乘而获取的数分割第二矩阵mb,来生成一个或更多个第二分割矩阵(s33)。

具体来说,如图19所示,第二矩阵分割单元122例如通过沿行方向按m的两倍并且沿列方向按m和n的最小公倍数的两倍分割第二矩阵mb来生成一个或更多个第二分割矩阵。即,在该情况下,第二矩阵分割单元122将第二矩阵mb分割成如图9所示第二分割矩阵的数量的四倍。

然后,信息处理装置1的矩阵存储单元123例如将一个或更多个第一分割矩阵存储在dpu的存储单元中,使得在第一矩阵ma中位于同一列中的针对每第二整数的第一分割矩阵被存储于在dlu111中设置于不同列的dpu中,并且由沿行方向的数是第一整数而沿列方向的数是第二整数的第一分割矩阵所形成的子矩阵被存储在dpu的存储单元中(s34)。

即,当第一矩阵分割单元121将第一矩阵ma分割成大于dpu的数量的第一分割矩阵数量时,矩阵存储单元123例如在至少一个dpu中存储包括多个第一分割矩阵的子矩阵。

矩阵存储单元123例如将一个或更多个第二分割矩阵中的、沿行方向的数是m而沿列方向的数是m和n的最小公倍数的一个或更多个第二分割矩阵存储在dpu的存储单元中,使得在第二矩阵mb中位于同一行的一个或更多个第二分割矩阵被存储于在dlu111中设置于不同行的dpu中(s35)。

即,当在s33的处理中生成的一个或更多个第二分割矩阵的数量大于dpu的数量时,dlu111响应于每个dpu在其中存储至少一个或更多个第二分割矩阵,而可以开始在形成环状结构的dpu之间循环分割矩阵。因而,在s35的处理中,dlu111例如仅将所生成的一个或更多个第二分割矩阵中的一部分存储在dpu的存储单元中并执行后续处理。

具体来说,如图20所示,矩阵存储单元123例如将图19所示的一个或更多个第二分割矩阵中的、位于第一行至第十二行并且位于第一列至第四列中的第二分割矩阵存储在dpu的存储单元中。

然后,如图16所示,矩阵计算单元124将存储在存储单元中的、一个或更多个第一分割矩阵与一个或更多个第二分割矩阵的第一乘积与存储在针对每个dpu的存储单元中的第一结果矩阵相加(s41)。

具体来说,如图20所示,信息处理装置1的矩阵计算单元124例如将在步骤s34的处理中存储的第一分割矩阵和在步骤s35的处理中存储的第二分割矩阵(在步骤s33的处理中生成的一个或更多个第二分割矩阵的一部分)的第一乘积与第一结果矩阵(图19所示的第三矩阵mc中的位于第一列至第四列的子矩阵)相加。

结果,矩阵计算单元124可以响应于完成将第二矩阵mb的一部分存储到dpu中而无需等待完成将整个第二矩阵mb存储到dpu中,开始计算第一矩阵ma和第二矩阵mb的一部分的乘积。当矩阵计算单元124计算第一矩阵ma与第二矩阵mb的一部分的乘积时,矩阵存储单元123可以将第二矩阵mb的另一部分存储在dpu中。

因此,信息处理装置1可以将第二矩阵mb存储在dpu中,并且彼此并行地计算第一矩阵ma和第二矩阵mb的乘积。结果,信息处理装置1可以有效地(高速地)计算第一矩阵ma和第二矩阵mb的乘积。

在步骤s35的处理中,矩阵存储单元123例如可以将一个或更多个第二分割矩阵存储在dpu的存储单元中,使得在第二矩阵mb中位于同一行中的针对每第三整数的第二分割矩阵被存储于在dlu111中设置于不同列的dpu中,并且由沿行方向的数是第三整数而沿列方向的数是第四整数的第二分割矩阵所形成的子矩阵被存储在dpu的存储单元中。在该情况下,dlu111在将一个或更多个第二分割矩阵全部存储在dpu的存储单元中之后,执行后续处理。下面,对步骤s34至步骤s41中的处理进行详细描述。

步骤s34至步骤s41的处理的细节

接下来,对步骤s3至步骤s41中的处理的细节进行描述。图17和图18数是例示步骤s34至步骤s41的处理的细节的流程图。

首先,对dpu的配置进行描述。图21是例示dpu00的配置的图。如图21所示,dpu00包括16个设置的运算元件(下文中还称为“dpe”或“单位运算元件”)。在dpu00中,dpe形成环状结构tr31。

具体来说,在图21所示的示例中,例如,dpe0连接至dpe15和dpe2,而dpe1连接至dpe0和dpe2。结果,dpe0例如可以共享(引用)由形成环状结构tr31的其它dpe存储的矩阵。省略了对图21中包括的其它配置的描述。

下面,对dpe的配置进行描述。图22是例示dpe0的配置的图。如图22所示,例如,dpe0包括被配置成在其中存储子矩阵等的寄存器dpe0a(下文中还称为“单位存储单元dpe0a”)以及被配置成计算子矩阵的乘积的运算元件dpe0b。即,包括在dpe0至dpe15中的寄存器充当dpu00的存储单元。包括在dpe0至dpe15中的寄存器下文中还统称为“单位存储单元dpea”。

接下来,对步骤s34至步骤s41中的处理的流程图进行描述。

矩阵计算单元124针对每个dpu,通过沿行方向和列方向按k(k是1或大于1的整数)分割存储在各dpu中的一个或更多个第一分割矩阵,来生成一个或更多个单位分割值(s61)。即,当k是每个dpu中设置的dpe的数量时,矩阵计算单元124例如通过将存储在各dpu中的一个或更多个第一分割矩阵分割成256(16×16)个部分,来生成一个或更多个单位分割值。具体来说,矩阵计算单元124例如通过将第一矩阵ma中的、作为存储在dpu00中的分割矩阵的分割矩阵a0、a1以及a2分割成256个部分,来生成一个或更多个单位分割值。

矩阵计算单元124将一个或更多个单位分割值存储在dpe的单位存储单元dpea中,使得存储在各dpu中的一个或更多个第一分割矩阵中的、位于同一列的一个或更多个单位分割值被存储在针对每个dpu的同一dpe的单位存储单元dpea中(s62)。

矩阵计算单元124针对每个dpu,通过沿列方向按k分割存储在各dpu中的一个或更多个第二分割矩阵,来生成一个或更多个单位分割矩阵(s63)。即,例如,当k是每个dpu中设置的dpe的数量时,矩阵计算单元124通过沿列方向将存储在各dpu中的一个或更多个第二分割矩阵分割成16个部分,来生成一个或更多个单位分割矩阵。具体来说,矩阵计算单元124例如通过沿列方向将第二矩阵mb中的、作为存储在dpu00中的分割矩阵的分割矩阵b0和b1分割成16个部分,来生成一个或更多个单位分割矩阵。

然后,矩阵计算单元124针对每个dpu在dpe的单位存储单元dpea中存储一个或更多个单位分割矩阵(s64)。

接下来,如图18所示,矩阵计算单元124将存储在单位存储单元dpea中的一个或更多个单位分割值中的、与每个dpe的标识信息相对应的单位分割值和存储在单位存储单元dpea中的一个或更多个单位分割矩阵的第三乘积与存储在针对每个dpe的单位存储单元dpea中的第二结果矩阵相加(s71)。

然后,针对每个dpe,矩阵计算单元124将存储在单位存储单元dpea中的一个或更多个单位分割矩阵发送至按环状方式彼此连接的其它dpe中的、直接连接至该dpe的dpe(s72)。

然后,针对每个dpe,矩阵计算单元124将从另一dpe接收的单位分割矩阵和存储在单位存储单元dpea中的一个或更多个单位分割值中的、与已经首先存储了单位分割矩阵的其它dpe的标识信息相对应的单位分割值的第四乘积与存储在单位存储单元dpea中的第二结果矩阵相加(s73)。

矩阵计算单元124确定在按环状方式彼此连接的每个dpe中根据存储在各dpe中的一个或更多个单位分割矩阵计算出的乘积是否被加至第二结果矩阵(s74)。结果,当确定该乘积被加至按环状方式彼此连接的每个dpe中的第二结果矩阵(步骤s74中的“是”)时,矩阵计算单元124结束步骤s34至步骤s41的处理。当确定该乘积未被加至按环状方式彼此连接的每个dpe中的第二结果矩阵(步骤s74中的“否”)时,则矩阵计算单元124再次在后续步骤中执行步骤s72中的处理。

步骤s61至步骤s74中的处理的具体示例

接下来,对步骤s61至步骤s74中的处理的具体示例进行描述。图23至图28是例示步骤s61至步骤s74的处理的具体示例的图。具体来说,图23至图28是例示在dpu00中执行的步骤s61至步骤s74的处理的具体示例的图。在图23至图28中,仅例示了单位分割值和单位分割矩阵的一部分。

矩阵计算单元124例如将作为存储在dpu00中的第一矩阵ma中的分割矩阵的分割矩阵a0、a1以及a2分割成256个部分,并且生成256个单位分割值(s61)。然后,矩阵计算单元124将所生成的256个单位分割值中的位于同一列中的单位分割值存储在dpe的每个单位存储单元dpea中(s62)。

具体来说,如图23所示,矩阵计算单元124例如将所生成的256个单位分割值中的单位分割值a00和a01至a0f存储在dpe0中,而将单位分割值a10和a11至a1f存储在dpe1中。

矩阵计算单元124按列方向将作为存储在dpu00中的第二矩阵mb的分割矩阵的分割矩阵b0和b1分割成16个部分,并且生成16个单位分割矩阵(s63)。矩阵计算单元124在dpe的单位存储单元dpea中存储所生成的16个单位分割矩阵(s64)。

具体来说,如图23所示,矩阵计算单元124例如将所生成的16个单位分割矩阵中的、包括值b00至b0f的单位分割矩阵存储在dpe0中,而将包括值b10至b1f的单位分割矩阵存储在dpe1中。

然后,矩阵计算单元124将存储在dpe0中的单位分割值中的、与dpe0的标识信息相对应的单位分割值和存储在dpe0中的单位分割矩阵的第三乘积与存储在dpe0中的第二结果矩阵相加(s71)。每个dpe的标识号例如是添加到dpe末尾的号码。单位分割值中的标识号是添加至存储每个单位分割值的每个位置的号码。

具体来说,如图23所示,矩阵计算单元124在dpe0的标识信息和单位分割值a00的标识信息为“0”时,从存储在dpe0中的单位分割值中指定单位分割值a00。在该情况下,如图23所示,矩阵计算单元124将包括值b00至b0f的单位分割矩阵与存储在dpe0中的单位分割值a00相乘,并将所获取结果与存储在dpe0中的第二结果矩阵c00至c0f相加。

类似地,如图24所示,矩阵计算单元124在dpe1的标识信息和单位分割值a11的标识信息为“1”时,从存储在dpe1中的单位分割值中指定单位分割值a11。在该情况下,如图24所示,矩阵计算单元124将包括值b10至b1f的单位分割矩阵与存储在dpe1中的单位分割值a11相乘,并将所获取结果与存储在dpe1中的第二结果矩阵c10至c1f相加。

然后,矩阵计算单元124例如将存储在各dpe中的一个或更多个单位分割矩阵发送至按环状方式彼此连接的其它单位运算元件中的、直接连接至该dpe的dpe(s72)。

具体来说,如图25所示,矩阵计算单元124例如将存储在dpe1中的包括值b10至b1f的单位分割矩阵发送至dpe2,并将存储在dpe0中的包括值b00至b0f的单位分割矩阵发送至dpe1。

矩阵计算单元124例如将从dpe15接收的单位分割矩阵和存储在dpe15中的单位分割值中的、与已经首先存储了所接收单位分割矩阵的dpe15的标识信息相对应的单位分割值的第四乘积与存储在dpe0中的第二结果矩阵相加(s73)。

具体来说,如图25所示,矩阵计算单元124在dpe15(其中已经首先存储了由dpe0接收的单位分割矩阵)的标识信息和单位分割值a0f的标识信息为“15”时,从存储在dpe0中的单位分割值中指定单位分割值a0f。然后,如图25所示,矩阵计算单元124将包括值bf0至bff的单位分割矩阵与存储在dpe0中的单位分割值a0f相乘,并将所获取结果与存储在dpe0中的第二结果矩阵c00至c0f相加。

类似地,如图26所示,矩阵计算单元124在dpe0(其中已经首先存储了由dpe1接收的单位分割矩阵)的标识信息和单位分割值a10的标识信息为“0”时,从存储在dpe1中的单位分割值中指定单位分割值a10。如图26所示,矩阵计算单元124将包括值b00至b0f的单位分割矩阵与存储在dpe1中的单位分割值a10相乘,并将所获取结果与存储在dpe1中的第二结果矩阵c10至c1f相加。

如果在按环状方式彼此连接的任何dpe中未执行步骤s72和步骤s73中的处理(步骤s74中的“否”),则矩阵计算单元124再次执行步骤s72和后续步骤中的处理。

具体来说,如图27所示,矩阵计算单元124在dpe14(其中已经首先存储了由dpe0接收的单位分割矩阵)的标识信息和单位分割值a0e的标识信息为“14”时,从存储在dpe0中的单位分割值中指定单位分割值a0e。如图27所示,矩阵计算单元124将包括值be0至bef的单位分割矩阵与存储在dpe0中的单位分割值a0e相乘,并将所获取结果与存储在dpe0中的第二结果矩阵c00至c0f相加。

类似地,如图28所示,矩阵计算单元124在dpe15(其中已经首先存储了由dpe1接收的单位分割矩阵)的标识信息和单位分割值a1f的标识信息为“15”时,从存储在dpe1中的单位分割值中指定单位分割值a1f。如图28所示,矩阵计算单元124将包括值bf0至bff的单位分割矩阵与存储在dpe1中的单位分割值a1f相乘,并将所获取结果与存储在dpe1中的第二结果矩阵c10至c1f相加。

结果,矩阵计算单元124可以更有效地计算每个dpu中的矩阵乘积。

返回至图16,针对每个dpu,矩阵发送接收单元125将存储在存储单元中的一个或更多个第一分割矩阵发送至沿行方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu(s42)。针对每个dpu,矩阵发送接收单元125将存储在存储单元中的一个或更多个第二分割矩阵发送至沿列方向按环状方式彼此连接的其它dpu中的、直接连接至该dpu的dpu(s43)。

响应于矩阵发送接收单元125从其它dpu接收到一个或更多个第一分割矩阵和一个或更多个第二分割矩阵,矩阵计算单元124例如将所接收的一个或更多个第一分割矩阵和所接收的一个或更多个第二分割矩阵的第二乘积与存储在针对每个dpu的存储单元中的第一结果矩阵相加(s44)。

矩阵计算单元124确定是否在按环状方式彼此连接的每个dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第一分割矩阵计算的乘积加至第一结果矩阵,并且确定是否在按环状方式彼此连接的每个dpu中将根据存储在各dpu的存储单元中的所述一个或更多个第二分割矩阵计算的乘积加至第一结果矩阵(s45)。

结果,当确定该乘积未加至按环状方式彼此连接的每个dpu中的第一结果矩阵(步骤s45中的“否”)时,矩阵计算单元124再次执行步骤s42和后续步骤中的处理。

当确定该乘积被加至按环状方式彼此连接的每个dpu中的第一结果矩阵(步骤s45中的“是”)时,矩阵计算单元124确定是否针对所有第二分割矩阵执行步骤s34至步骤s45中的处理(s46)。结果,当确定针对所有第二分割矩阵执行步骤s34至步骤s45中的处理(步骤s46中的“是”)时,矩阵计算单元124结束矩阵计算处理。当确定未针对所有第二分割矩阵执行步骤s34至步骤s45中的处理(步骤s46中的“否”)时,矩阵计算单元124再次执行步骤s34和后续步骤中的处理。

具体来说,当第二次执行步骤s35中的处理时(如图29所示),矩阵存储单元123例如仅将图19所示的一个或更多个第二分割矩阵中的、位于第十三行至第二十四行并且位于第一列至第四列中的第二分割矩阵存储在dpu的存储单元中。当第二次执行步骤s41中的处理时,矩阵计算单元124例如将在步骤s34的处理中存储在dpu的存储单元中的第一分割矩阵与在步骤s35的处理中存储在dpu的存储单元中的第二分割矩阵的第一乘积(执行了第二次)与第一结果矩阵(图19所示的第三矩阵mc中的位于第一列至第四列的子矩阵)相加。

当第三次执行步骤s35中的处理时(如图30所示),矩阵存储单元123例如仅将图19所示的一个或更多个第二分割矩阵中的、位于第一行至第十二行并且位于第五列至第八列中的第二分割矩阵存储在dpu的存储单元中。当第三次执行步骤s41中的处理时,矩阵计算单元124例如将在步骤s34的处理中存储在dpu的存储单元中的第一分割矩阵与在步骤s35的处理中存储在dpu的存储单元中的第二分割矩阵的第一乘积(执行了第三次)与第一结果矩阵(图19所示的第三矩阵mc中的位于第五列至第八列的子矩阵)相加。省略了对第四次执行步骤s35等中的处理的情况的具体示例的描述。

结果,信息处理装置1可以有效地(高速地)计算第一矩阵ma和第二矩阵mb的乘积。

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