一种并行计算的系统转让专利

申请号 : CN201811177771.2

文献号 : CN109445752B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 任鹏举樊珑赵博然宗鹏陈赵文哲陈飞陈霸东郑南宁

申请人 : 西安交通大学

摘要 :

一种并行计算的系统,包括输入端口,第一交换网络,计算阵列,第二交换网络和输出端口,其中:第一交换网络用于从输入端口接收输入数据,并根据计算阵列的不同计算模式对输入数据进行排序并输出排序后的输入数据;计算阵列用于根据不同计算模式对所述排序后的输入数据进行并行计算并输出中间数据;第二交换网络用于根据不同输出模式对所述中间数据进行排序并通过所述输出端口输出排序后的中间数据。本公开巧妙的将计算机体系结构中的交换网络应用于并行计算的系统,并根据不同的计算模式、输出模式,对输入或输出数据进行任意所需的排序,使得输入数据进入计算阵列后,通过计算阵列完成多种运算操作。

权利要求 :

1.一种并行计算的系统,包括:

输入端口,第一交换网络,计算阵列,第二交换网络和输出端口,其中:所述第一交换网络用于:从所述输入端口接收输入数据,并根据计算阵列的不同计算模式对所述输入数据进行排序并输出排序后的输入数据;

所述计算阵列用于:根据不同计算模式对所述排序后的输入数据进行并行计算并输出中间数据;

所述第二交换网络用于:根据不同输出模式对所述中间数据进行排序并通过所述输出端口输出排序后的中间数据。

2.如权利要求1所述的系统,其中:

所述不同计算模式包括:卷积、矩阵乘法、转置、矩阵的其他变换。

3.如权利要求1所述的系统,其中:

所述第一交换网络、第二交换网络包括无阻塞网络。

4.如权利要求1所述的系统,其中:

对于所述第一交换网络或第二交换网络,通过改变各交换网络中各个交换单元所对应的开关的控制字实现对输入数据或中间数据的排序。

5.如权利要求1所述的系统,其中:

所述输入端口、输出端口分别包括输入全局缓存、输出全局缓存。

6.如权利要求1所述的系统,其中:

所述第一交换网络包括第一BENES网络、第二BENES网络至第k BENES网络,所述第二交换网络包括第k+1 BENES网络,其中k为正整数。

7.如权利要求1所述的系统,其中:

若所述输入数据的规模较小或者维度较低时,则将所述计算阵列划分成多块计算单元,所述多块计算单元用于同时完成多组所述输入数据的计算;

若所述输入数据的规模较大或者维度较高时,则将所述输入数据按照分段或分层或分块的方式划分,并且划分后的输入数据分批次通过所述计算阵列进行计算。

8.如权利要求1所述的系统,其中:

若所述输入数据的个数小于所述输入端口的个数,则为多余的输入端口填充无关数据且不通过所述第一交换网络对所述填充的无关数据进行排序。

9.如权利要求6所述的系统,其中:

所述输入端口包括第一输入全局缓存至第k输入全局缓存,所述第一输入全局缓存至第k输入全局缓存分别用于存储第一操作数至第k操作数,缓存的数据位宽为需要进行顺序重排的输入数据的个数乘以每个数的位宽。

10.如权利要求6所述的系统,其中:

对于第一BENES至第k+1 BENES网络,其中,每一个BENES网络中各级开关通过两种方式完成连接,连接输入端的前半部分采用逆均匀洗牌方式逐级搭建,连接输出端的后半部分采用均匀洗牌方式逐级搭建。

说明书 :

一种并行计算的系统

技术领域

[0001] 本公开属于计算领域,特别涉及一种并行计算的系统。

背景技术

[0002] 随着人工智能算法不断更新,尤其在神经网络算法的硬件实现过程中,对输入数据及输出数据的发送方式要求也越来越多。然而,目前涉及人工智能的数据处理系统的数据输入与输出方式固定,不能够在工作中实时的对输入或输出数据顺序进行任意所需的数据排列,因而只能完成单一的计算模式。
[0003] 因此,一种可对数据灵活排序的结构对于计算系统有着重要的意义。

发明内容

[0004] 为了解决上述技术问题,本公开揭示了一种并行计算的系统,包括:
[0005] 输入端口,第一交换网络,计算阵列,第二交换网络和输出端口,其中:
[0006] 所述第一交换网络用于:从所述输入端口接收输入数据,并根据计算阵列的不同计算模式对所述输入数据进行排序并输出排序后的输入数据;
[0007] 所述计算阵列用于:根据不同计算模式对所述排序后的输入数据进行并行计算并输出中间数据;
[0008] 所述第二交换网络用于:根据不同输出模式对所述中间数据进行排序并通过所述输出端口输出排序后的中间数据。
[0009] 优选的,
[0010] 所述不同计算模式包括:卷积、矩阵乘法、转置、矩阵的其他变换。
[0011] 优选的,
[0012] 所述第一交换网络、第二交换网络包括无阻塞网络,例如基于CLOS或BENES或其他架构的无阻塞网络。
[0013] 优选的,
[0014] 对于所述第一交换网络或第二交换网络,通过改变各交换网络中各个交换单元所对应的开关的控制字实现对输入数据或中间数据的排序。
[0015] 优选的,
[0016] 所述输入端口、输出端口分别包括输入全局缓存、输出全局缓存。
[0017] 优选的,
[0018] 所述第一交换网络包括第一BENES网络、第二BENES网络至第k BENES网络,所述第二交换网络包括第k+1BENES网络,其中k为正整数。
[0019] 优选的,
[0020] 若所述输入数据的规模较小或者维度较低时,则将所述计算阵列划分成多块计算单元,所述多块计算单元用于同时完成多组所述输入数据的计算;
[0021] 若所述输入数据的规模较大或者维度较高时,则将所述输入数据按照分段或分层或分块的方式划分,并且划分后的输入数据分批次通过所述计算阵列进行计算。
[0022] 优选的,
[0023] 若所述输入数据的个数小于所述输入端口的个数,则为多余的输入端口填充无关数据且不通过所述第一交换网络对所述填充的无关数据进行排序。
[0024] 优选的,
[0025] 所述输入端口包括第一输入全局缓存至第k输入全局缓存,所述第一输入全局缓存至第k输入全局缓存分别用于存储第一操作数至第k操作数,缓存的数据位宽为需要进行顺序重排的输入数据的个数乘以每个数的位宽。
[0026] 优选的,
[0027] 对于第一BENES至第k+1BENES网络,其中,每一个BENES网络中各级开关通过两种方式完成连接,连接输入端的前半部分采用逆均匀洗牌方式逐级搭建,连接输出端的后半部分采用均匀洗牌方式逐级搭建。
[0028] 通过上述技术方案,本公开实现了一种可对输入数据、输出数据灵活排序,并且充分释放系统的不同计算能力的技术方案。

附图说明

[0029] 图1是本公开一个实施例中所提供的一种并行计算的系统的结构示意图;
[0030] 图2是本公开一个实施例中所提供的一种基于BENES网络的并行计算系统的结构示意图;
[0031] 图3是本公开另一个实施例中所提供的一种基于BENES网络的并行计算系统的结构示意图;
[0032] 图4是本公开一个实施例中规模为16×16的BENES网络结构及其交换单元的结构示意图;
[0033] 图5是本公开一个实施例中规模为16×16的BENES网络对输入进行转置排列时各级开关的状态及控制字。

具体实施方式

[0034] 为了使本领域技术人员理解本公开所披露的技术方案,下面将结合实施例及有关附图,对各个实施例的技术方案进行描述,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。本公开所采用的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,“包括”和“具有”以及它们的任何变形,意图在于覆盖且不排他的包含。例如包含了一系列步骤或单元的过程、或方法、或系统、或产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、系统、产品或设备固有的其他步骤或单元。
[0035] 在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本公开的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其他实施例互斥的独立的或备选的实施例。本领域技术人员可以理解的是,本文所描述的实施例可以与其他实施例相结合。
[0036] 参见图1,在一个实施例中,本公开揭示了一种并行计算的系统,包括:
[0037] 输入端口,第一交换网络,计算阵列,第二交换网络和输出端口,其中:
[0038] 所述第一交换网络用于:从所述输入端口接收输入数据,并根据计算阵列的不同计算模式对所述输入数据进行排序并输出排序后的输入数据;
[0039] 所述计算阵列用于:根据不同计算模式对所述排序后的输入数据进行并行计算并输出中间数据;
[0040] 所述第二交换网络用于:根据不同输出模式对所述中间数据进行排序并通过所述输出端口输出排序后的中间数据。
[0041] 就该实施例而言,其巧妙的将计算机体系结构中的交换网络应用于并行计算的系统,并根据不同的计算模式、输出模式,对输入或输出数据进行任意所需的排序,使得输入数据进入计算阵列后,通过计算阵列完成多种运算操作。能够理解,上述技术方案极大地提高了系统的灵活性和功能性,丰富了数据的传输方式,简化了多种矩阵乘、行列转换等计算的复杂度,使整个系统可配置完成多种类型的计算。
[0042] 显而易见的,上述实施例不仅可以在人工智能领域中实现丰富的计算模式,而且可以用于更广泛的数据计算领域从而充分释放计算阵列的计算能力,甚至可以用于通信领域中互连系统以改善其并发性。
[0043] 就所述中间数据而言,中间数据可以是计算阵列得到的一个中间结果,也可以是计算阵列得到的一个最终结果,例如:
[0044] 当需要处理的矩阵规模较大,计算阵列无法完成整个矩阵乘法的运算时,则需要对矩阵进行分块,此时计算阵列每次输出的中间数据为中间结果;又或者进行卷积神经网络的卷积运算时,当计算阵列无法一次计算全部的输入通道时,则对输入通道进行分组,每次计算阵列完成一组的计算并输出中间数据,此时计算阵列每次输出的中间数据为中间结果;
[0045] 类似的,当矩阵规模较小,使得在计算阵列上能够映射整个矩阵并进行乘法操作时,计算阵列输出的为最终结果;当卷积计算的输入通道较小时,计算阵列上能够映射所有的输入通道并完成卷积计算,则计算阵列输出的为最终结果。
[0046] 在另一个实施例中,
[0047] 所述不同计算模式包括:卷积、矩阵乘法、转置、矩阵的其他变换。
[0048] 对于该实施例而言,当处于不同计算模式时,所述实施例利用第一交换网络可以对输入数据进行各种排序处理,以有利于卷积、矩阵乘法、转置、矩阵的其他变换等不同计算的需要。能够理解,卷积正是当前人工智能领域中常规的计算模式,但是现有技术仅能固定用于某计算模式,而无法灵活的适应于不同计算模式。本实施例正是通过相关交换网络巧妙的结合计算阵列后方能实现上述技术效果。
[0049] 此外,在另一个实施例中,不同的输出模式包括以一维的形式输出排序后的中间数据,或者以多维的形式输出排序后的中间数据,或者以其他形式输出排序后的中间数据。
[0050] 在另一个实施例中,
[0051] 所述第一交换网络、第二交换网络包括无阻塞网络。
[0052] 能够理解,采用无阻塞网络有利于所述并行计算的系统的实时性和并发性。
[0053] 优选的,无阻塞网络包括:CLOS或BATCHER Banyan或基于Banyan的多通路网络,或其他架构的无阻塞网络。
[0054] 理想的,现有技术中以及未来技术发展中,对于任何无阻塞网络,只要其能够实现根据不同计算模式、输出模式来重新对相关输入数据、中间数据进行排序,那么其均适用于本公开所揭示的技术方案。无论采用何种无阻塞网络,只需要考虑其交换单元的结构,交换单元的连接方式等,对数据按照不同方式排序即可。
[0055] 在另一个实施例中,
[0056] 对于所述第一交换网络或第二交换网络,通过改变各交换网络中各个交换单元所对应的开关的控制字实现对输入数据或中间数据的排序。
[0057] 就该实施例而言,各个交换单元是各个交换网络中的基本单元,其可以实现为开关,例如数字开关。当实现为数字开关时,以数字开关所包括的0和1的两种状态而言,两种工作状态可以分别为交叉和直通,通过改变该开关的控制字即可完成两种工作状态的切换。
[0058] 在另一个实施例中,具体的,可以设定为:所述开关的输入的控制字为“0”时,该开关为直通状态,开关所对应的输出端与输入端的顺序保持一致;当所述开关的输入的控制字为“1”时,该开关为交叉状态,开关所对应的输出端与输入端的顺序相反。
[0059] 在另一个实施例中,
[0060] 所述输入端口、输出端口分别包括输入全局缓存、输出全局缓存。
[0061] 能够理解,全局缓存有利于数据的存储和控制。
[0062] 在另一个实施例中,
[0063] 所述第一交换网络包括第一BENES网络、第二BENES网络至第k BENES网络,所述第二交换网络包括第k+1BENES网络,其中k为正整数。
[0064] 就该实施例而言,其给出了一种相关交换网络的具体实施例。能够理解,为了更方便系统进行计算,输入端口最好与第一交换网络匹配,即输入端口的数量要以各个输入端口与第一交换网络中的BENES网络一一对应。然而,后文会描述输入端口数量的其他情形,详见后文。
[0065] 在另一个实施例中,
[0066] 若所述输入数据的个数小于所述输入端口的个数,则为多余的输入端口填充无关数据且不通过所述第一交换网络对所述填充的无关数据进行排序。
[0067] 能够理解,所述输入数据的个数小于所述输入端口的个数时,本实施例能够通过填充无关数据来充分利用所述输入端口,但同时能够避免对所述填充的无关数据进行排序,从而在充分利用输入端口和排序所需计算资源方面取得平衡。
[0068] 在另一个实施例中,
[0069] 若所述输入数据的规模较小或者维度较低时,则将所述计算阵列划分成多块计算单元,所述多块计算单元用于同时完成多组所述输入数据的计算;
[0070] 若所述输入数据的规模较大或者维度较高时,则将所述输入数据按照分段或分层或分块的方式划分,并且划分后的输入数据分批次通过所述计算阵列进行计算。
[0071] 显而易见,该实施例的目的在于最大化利用所述系统的计算能力。同时,其表明计算阵列具备可配置的能力,即计算阵列可以按需划分为多块计算单元;以及进一步表明输入数据不仅可以按照不同计算模式排序,而且可以根据需要划分,例如分段或分层或分块,以便在某些场景下分批次的被计算阵列所计算。
[0072] 在另一个实施例中,
[0073] 所述输入端口包括第一输入全局缓存至第k输入全局缓存,所述第一输入全局缓存至第k输入全局缓存分别用于存储第一操作数至第k操作数,缓存的数据位宽为需要进行顺序重排的输入数据的个数乘以每个数的位宽。
[0074] 就该实施例而言,通常的计算方式大多为k取2或者3,即以双操作数或3操作数较为常见,多操作数则较为少见。双操作数的计算场景通常为:两个输入缓存分别用于存储乘数和被乘数,缓存的数据位宽为需要进行顺序重排的输入数据个数乘以每个数的位宽。另外,多操作数与双操作数的计算完全相同,如,双操作数的乘法计算示例为a1×a2=b的话,多操作数则为a1×a2×a3×……an=b。其中,a1至an本身可以为一维或多维数组。根据要求的计算方式,各个数据可以被分配到计算阵列中相应的计算单元,完成计算后,得到新的一维或多维数组b。
[0075] 在另一个实施例中,
[0076] 所述系统还进一步包括寄存器。
[0077] 这有利于在交换网络的各级间对数据进行存储以保证时序收敛,且有利于形成流水线结构。以所述交换网络采用BENES网络为例,虽然BENES网络搭建时可以占用少量的寄存器与逻辑资源,但极大地提高了系统的灵活性和功能性,丰富了数据的传输方式,简化了多种矩阵乘、行列转换等计算的复杂度,有利于系统被配置以完成多种类型的计算方式。
[0078] 在另一个实施例中,
[0079] 对于第一BENES至第k+1BENES网络,其中,每一个BENES网络中各级开关通过两种方式完成连接,连接输入端的前半部分采用逆均匀洗牌方式逐级搭建,连接输出端的后半部分采用均匀洗牌方式逐级搭建。
[0080] 对于该实施例,能够理解,根据BENES网络自身的特性,对于N×N的BENES网络而言,其具备2log2N-1级开关,所述BENES网络中各级开关通过寻径算法完成连接,为保证BENES网络具有一定递归特性,各级开关中、连接相应输入端的前半部分可以采用逆均匀洗牌方式逐级搭建,各级开关中、连接相应输出端的后半部分则可以采用均匀洗牌方式逐级搭建。
[0081] 其中,N的大小应满足为2的指数次方且大于等于需要顺序重排的输入数据的最大数目;一个2×2的开关由两个二选一的数据选择器搭建完成。
[0082] 其中,逆均匀洗牌方式和均匀洗牌方式两种均为连接函数,为计算机体系结构中多个交换单元之间互联的一种方式,以均匀洗牌为例:将输入端二进制编号整体左移一位,原先的最高位移动到最低位,这样的一次操作成为一次均匀洗牌。举例:8个数的排序,以第3个数为例,二进制编号为011,洗牌后,则为110,即连接下一级交换单元的6号输入端口。逆均匀洗牌则为整体右移,原先最低位移动到最高位。
[0083] 在另一个实施例中,参见图2,其中所述输入全局缓存的个数取决于计算需要的所述输入全局缓存的个数,其示例为k个,包括第一输入全局缓存、第二输入全局缓存至第k输入全局缓存;所述BENES网络的个数为k+1个,包括第一BENES网络、第二BENES网络至第k+1BENES网络;其中,所述前k个BENES网络处于所述k个输入全局缓存和所述计算阵列之间,所述第k+1个BENES网络处于所述计算阵列和所述输出全局缓存之间。
[0084] 如前所述,所述BENES网络的交换单元作为基本单元,为一个2×2的开关,该开关有两种工作状态分别为交叉和直通,通过改变该开关的控制字可完成两种工作状态的切换。
[0085] 在另一个实施例中,参见图3,其公开了一种基于BENES网络的并行计算系统,具体包括:两个输入全局缓存,三个N×N的BENES网络,计算阵列和输出全局缓存。输入数据由输入全局缓存进入到BENES网络,根据计算模式对输入数据顺序的排列要求,产生控制信号的值,控制信号的位宽等于BENES网络中2×2开关的个数,按顺序每一位对应控制一个开关的连接状态。输入数据经过BENES网络后,就完成对输入数据的排列。按照点对点对应相乘的方式将输入数据分配到计算阵列的每个计算单元中完成计算,就能得到相应的中间数据。无论中间数据是一个中间结果还是最终结果,所述中间数据可根据输出模式的要求,进入输出端的BENES网络进行顺序的重排或不变,最后存储到输出全局缓存中。
[0086] 如前所述,BENES网络的规模为N×N,其中N应为2的指数次方。确定BENES网络的规模后,可得到网络的级数为2 log2N-1,每一级由N/2个2×2的开关构成;一个2×2的开关内部由两个二选一的数据选择器构成,通过输入的控制字对两个选择器进行控制,完成对两个输入数据位置的排列;网络中各级开关通过寻径算法完成连接,连接输入端的前半部分采用逆均匀洗牌方式逐级搭建,连接输出端的后半部分采用均匀洗牌方式逐级搭建。
[0087] 参见图4,在另一个实施例中,其公开了一个16×16的BENES网络结构及其交换单元,网络的级数为7,每级有8个2×2的开关,网络的前四级之间采用逆均匀洗牌的寻径算法进行连接,后四级采用均匀洗牌的寻径算法进行连接;一个2×2的开关根据控制字的不同可分为两种工作模式:交叉或直通;每个开关在输出端插入寄存器,相当于在网络的各级间对数据进行存储以保证综合时的时序收敛,且形成流水线结构;网络的输入端口数为16,因此,当矩阵运算的规模小于或等于4×4时,通过变换BENES网络中各交换单元的控制字可对输入矩阵内的数据进行任意的行列转换。
[0088] 参见图5,在另一个实施例中,其公开了一个16×16的BENES网络对一个4×4的矩阵A进行转置排列,该BENES网络为输入端口一侧的BENES网络,其中:
[0089] 假设从输入缓存的一个地址中读取数据,该数据以初始固定的排列方式从低位到高位按图中所示分别对应矩阵A中的16个数:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16。
[0090] 对于一个2×2开关的工作状态:输入的控制字为“0”时,开关为直通状态;输入的控制字为“1”时,开关为交叉状态。那么,16×16的BENES网络则共有56个2×2开关,因此网络的总控制字位宽为56bit。进一步,对所有开关进行从左至右、从上至下的编号,其中,每个开关的控制字根据编号一一对应总控制字的bit位置。如此,通过调整总控制字的值来改变每个开关的状态,可以得到图中所示的控制字矩阵。对于控制字矩阵而言,其中每个控制字的位置对应分配到:相同位置的16×16的BENES网络中的开关上。
[0091] 如图5所示,本实施例正是利用所述BENES网络及其开关机制,本实施例通过排序实现了矩阵A的转置操作,得到A的转置矩阵AT。
[0092] 尽管以上结合附图对本公开的实施方案进行了描述,但本公开并不局限于上述的具体实施方案和应用领域,上述的具体实施方案仅仅是示意性的、指导性的,而不是限制性的。本领域的普通技术人员在本说明书的启示下和在不脱离本公开权利要求所保护的范围的情况下,还可以做出很多种的形式,这些均属于本公开保护之列。