一种计算图的节点划分方法、装置、计算机可读存储介质

文档序号:153087 发布日期:2021-10-26 浏览:31次 >En<

阅读说明:本技术 一种计算图的节点划分方法、装置、计算机可读存储介质 (Method and device for partitioning nodes of computation graph and computer-readable storage medium ) 是由 不公告发明人 于 2020-04-26 设计创作,主要内容包括:本公开涉及一种计算图的节点划分方法、装置、计算机可读存储介质。可以将支持机器学习处理器且能够融合在一起的节点或者算子划分在对应的子图内,经过融合以后,可以总揽全局进行底层的优化,从而避免了每个节点或者算子一个一个进行计算,造成输入输出开销较大,以及底层也没法联系上下文进行优化的问题。(The disclosure relates to a method and a device for partitioning nodes of a computational graph and a computer-readable storage medium. The nodes or operators which support the machine learning processor and can be fused together are divided into corresponding sub-graphs, and after fusion, bottom layer optimization can be performed overall, so that the problems that input and output expenses are large due to the fact that each node or operator is calculated one by one, and the bottom layer cannot be optimized in connection with context are solved.)

一种计算图的节点划分方法、装置、计算机可读存储介质

技术领域

本披露涉及计算机领域。更具体地,涉及一种计算图的节点划分方法、装置、计算机可读存储介质。

背景技术

Pytorch是一个流行的深度学习框架,由于深度学习网络中会有机器学习处理器无法支持的算子,因此无法保证完整的网络模型都能在机器学习处理器上运行。在现有技术的计算图中,每个节点或者算子需要一个一个进行计算,造成输入输出开销较大,以及底层也没法联系上下文进行优化。

在这样的情况下,在本领域中迫切需要解决上述的至少部分技术问题。

发明内容

本公开的发明人认识到,在计算图中,如果不进行融合计算优化的话,网络计算速度会受限。而如果要对Pytorch网络调用机器学习处理器的融合模式,则因为存在机器学习处理器不支持的节点或者算子而无法将网络融合为一个融合节点或者算子。

现有技术中的矛盾决定了需要采用一种算法来选择网络中可以被融合的节点或者算子的集合,该节点或者算子的集合分别融合了多个节点或者算子。

根据本公开的第一方面,提供一种计算图的节点划分方法,可以包括:

将支持机器学习处理器且能够融合在一起的节点划分在对应的子图内;将不支持机器学习处理器的节点进行单独处理。

根据本公开的第二方面,提供一种对应于算子的节点划分装置,可以包括:处理器,其配置用于执行程序指令;以及存储器,其配置用于存储程序指令,当程序指令由处理器加载并执行时,使得装置执行上述的方法。

根据本公开的第三方面,提供一种计算机可读存储介质,其中存储有程序指令,程序指令适于由处理器加载并执行上述的方法。

借助于上述的技术方案,可以将支持机器学习处理器且能够融合在一起的节点或者算子划分在对应的子图内。经过融合以后,底层的优化就可以总揽全局。避免了将每个节点(算子)一个一个进行计算,减小了输入输出(IO)开销,并且底层也可以联系上下文进行优化。

附图说明

通过结合附图,可以更好地理解本公开的上述特征,并且其众多目的,特征和优点对于本领域技术人员而言是显而易见的,其中相同的附图标记表示相同的元件,其中:

图1是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图2是示出现有技术中节点计算方法的示意图;

图3A是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图3B是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图3C是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图3D是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图4A是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图4B是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图4C是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图4D是示出根据本公开一个实施例的计算图的节点划分方法的示意图;

图5示意性示出根据本公开一个实施例的一种组合处理装置的结构图;以及

图6示意性示出根据本公开一个实施例的一种板卡的结构示意图。

具体实施方式

关于在本公开的实施例中提到的术语“算子”和“节点”,需要说明的是,术语“算子”是从计算机计算层面来说的(或者从软件层面或者算法层面来说的),术语“节点”是一个更形象的说法(从图形层面或者更加直观的层面来说的),从所指的内容上来讲,术语“算子”和“节点”实际上是同一回事。即,在本公开的实施例中,可以认为术语“算子”和“节点”具有相同的含义,是从不同的侧面进行的描述。

在本公开的实施例中出现的术语“最大弱连通的凸子图”,目的是用尽可能少的弱连通凸子图去划分原图。其中“弱连通”性的定义是,如果一个有向图的所有有向边被替换为无向边,所得的无向图是连通图,则这个有向图具有弱连通性。“凸子图”的定义是,对于子图中任意两个节点,它们之间的任何路径都只经过子图中的节点而不经过原图中的其他节点,则这是凸子图。

通过对Pytorch网络逐层运行,将每个“算子”视作一个计算图的“节点”,将数据的流动方向视作有向边,遍历由这些有向边构成的整个静态无环有向计算图(在Pytorch中可以在底层获得C++的表示),得到每个节点的运行设备信息,即,每个节点的运行设备是否是支持机器学习处理器的运行设备,以及如果支持机器学习处理器的话,是哪种机器学习处理器。

节点节点

在本公开的一个实施例中的,图1是示出根据本公开一个实施例的计算图的节点划分方法100的示意图,该计算图的节点划分方法100可以包括下面的步骤,例如由处理器执行下面的步骤:

步骤102,将支持机器学习处理器且能够融合在一起的节点划分在对应的子图内;发明人根据上述信息(每个节点的运行设备信息)来划分用于融合的子图。而划分的子图能够支持机器学习处理器且能够融合计算的前提是:(1)对于融合子图中任意两个节点AB,不存在从A到B的计算路径经过子图外的节点,(2)融合子图具有弱连通性,也就是若将子图转换为无环图,则这是一个连通图。

步骤104,将不支持机器学习处理器的节点进行单独处理。

在本公开的一个实施例中,机器学习处理器可以包括一种或多种机器学习处理器。例如,机器学习处理器可以包括第一机器学习处理器和第二机器学习处理器等。

在本公开的一个实施例中,其中步骤102,将支持机器学习处理器且能够融合在一起的节点划分在对应的子图内可以包括:

步骤106,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内。

在本公开的一个实施例中,步骤106,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内可以包括:

步骤108,以没有前驱节点的节点作为起始节点,遍历所述起始节点的后继节点,在从后继节点到起始节点的反向遍历过程中没有其他路径返回起始节点的情况下,起始节点和后继节点划分在同一子图内。因为融合的过程是逐步进行的,在从起始节点到后继节点的融合过程中有可能会碰到有多个后继节点的情况。

可选地,所述起始节点的后继节点包括一个或多个后继节点。

可选地,当起始节点的后继节点包括多个时,在遍历所述起始节点的后继节点时,可以按照所述后继节点对应的算子的逻辑顺序的先后遍历,可选地,也可以按照所述后继节点对应的算子的逻辑顺序的反向顺序遍历,本公开对此不作任何限制。

可选地,从后继节点到起始节点的反向遍历指的是反向深度遍历。

可选地,在从后继节点到起始节点的反向遍历过程中没有其他路径返回起始节点的情况下,起始节点和后继节点划分在同一子图内,指的是依次访问起始节点的每个后继节点,对每个被访问到的后继节点进行反向遍历,如果不存在从该后继节点返回到起始结点的其他路径,则将该后继节点与起始节点划分到同一个子图中,也就是每个后继节点是单独判断的,且从该后继节点反向到起始节点的路径是唯一的。

在本公开的一个实施例中,步骤106,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内还可以包括:

步骤110,将子图融合为新的起始节点,沿着新的起始节点出发的有向边遍历所述新的起始节点的后继节点,在从新的起始节点的后继节点到新的起始节点的反向遍历过程中没有其他路径返回新的起始节点的情况下,将新的起始节点和新的起始节点的后继节点划分在新的子图内,重复上述步骤,直至将支持机器学习处理器且能够融合在一起的所有节点划分在同一最大弱连通的凸子图内。

在本公开的一个实施例中,步骤106,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内可以包括:

步骤112,以没有前驱节点的节点作为起始节点,沿着有向边遍历所述起始节点对应的后继节点,在从后继节点到起始节点的反向遍历过程中具有其他路径返回起始节点的情况下,则从起始节点到后继节点的访问结束。需要说明的是,在从后继节点到起始节点的反向遍历过程中具有其他路径返回起始节点的情况下,则从起始节点到后继节点的访问结束指的是依次访问起始节点的每个后继节点,对每个被访问到的后继节点进行反向遍历,如果存在从该后继节点返回到起始结点的其他路径,则将从起始节点到该后继节点的访问结束。也就是每个后继节点是单独判断的,且具有其他路径返回起始节点的情况,是指从后继节点到起始节点的反向遍历过程中,经历了其他的路径,即,从该后继节点到起始节点的路径并不是唯一的。关于从该后继节点到起始节点的路径不是唯一的情况,在下面的实施例1和实施例2中还要具体的说明,在此不再赘述。

在本公开的一个实施例中,步骤106,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内可以包括:

步骤114,以后继节点作为新的起始节点,沿着新的起始节点出发的有向边遍历新的起始节点的后继节点;在从新的起始节点的后继节点到新的起始节点的反向遍历过程中没有其他路径返回新的起始节点的情况下,新的起始节点和新的起始节点的后继节点划分在同一子图内;在从新的起始节点的后继节点到新的起始节点的反向遍历过程中具有其他路径返回新的起始节点的情况下,则从新的起始节点到新的起始节点的后继节点的访问结束。

图2是示出现有技术中节点计算方法的示意图。为了描述的方便,图2、图3A-3D以及图4A-4D中支持机器学习处理器的节点用实心圆圈“●”表示,不支持机器学习处理器的节点用空心圆圈“○”表示。在图2中,节点E是没有前驱计算的节点,节点A是节点E的后继节点,节点D和节点B是节点A的后继节点,节点C是节点D和节点B的后继节点。在现有技术的计算方法的示意图当中,先进行节点E的计算,然后沿着有向边EA再进行节点A的计算,然后从节点A出发,分成两条有向边AD和AB,分别进行节点D和节点B的计算,最后再进行节点C的计算。在现有技术的情况下,输入输出(IO)的开销比较大,计算效率比较低,例如节点E的输出是节点A的输入,节点A的输出,又是节点D和节点B的输入,节点D和节点B的输出,又是节点C的输入,而节点D是不支持机器学习处理器的节点。当计算沿着有向边AD运行到节点D的时候,因为节点D是不支持机器学习处理器的,需要将从节点A传来的数据拷贝到例如中央处理器中进行处理。在例如中央处理器处理结束之后,再将处理完的数据从节点D沿着有向边DC传给节点C,或者说将数据从节点D拷贝出到节点C上。

在现有技术当中并没有考虑将这些节点例如节点E、节点A等,进行融合,来提高计算效率,以减少IO的开销。

根据本公开的思想,可以用一个并查集(或其他类似的可以保存同类节点的数据结构)记录分段结果。

划分的步骤可以如下:

(1)从计算图中所有没有前驱的节点开始,广度遍历所有图中剩余的节点(若有在后续步骤中被删除的节点例如节点D,则跳过),

(2)对于每个任意节点,例如节点A,如果该节点是支持机器学习处理器的节点,例如可以在MLU上运行,则遍历以它为起点的所有后继节点(若有在后续步骤中被增加到这个节点的有向边也要遍历),需要说明的是,节点与节点之间是通过有向边连接的,如在实施例当中提到的,沿着有向边的遍历,实际上就是指沿着有向边从一个节点到下一个节点的遍历,或者说从一个起始节点到它的后继节点的遍历。

(3)对于访问到的有向边的终点,例如节点B,检查是否可以通过反向深度遍历(从有向边的终点向起点方向的遍历)寻找到另一条计算路径可以从A抵达B,如有,则结束这条有向边的遍历;如无,则将节点A、B并入一个集合AB(说明它们在一个融合子图内),将节点B的所有入边例如AB与出边例如BC添加到节点A上,删除节点B与它的有向边,完成这条边的遍历。

本公开的节点(算法)划分的合理性在于:

正确性:连通性是算法添加节点过程的自然结果;

凸性(对于融合子图中任意两个节点A、B,不存在从节点A到B的计算路径经过子图外的节点)可由反证法得到证明;

最优性:可由反证法得到证明;

稳定性:有向图中节点拓扑排序具有稳定性,且使用了固定的遍历顺序。

下面结合图3A-3D和图4A-4D描述融合的步骤。

需要指出的是,在本公开的各个实施例中,实心圆圈“●”表示支持机器学习处理器的节点,是后面需要考虑是否能够进一步融合的节点,而空心圆圈“○”表示的节点是不支持机器学习处理器的节点,是需要进行单独处理的节点,例如将不支持机器学习处理器的节点由中央处理器、语音处理器、可编程逻辑处理器和/或图像处理器进行处理。

实施例1

进行融合计算的时候,先从节点F开始(节点F是没有前驱计算节点的节点,也就是在本公开这个实施例中的起始节点),从节点F出发有两条有向边,一条是通向节点G的有向边FG,另一条是通向节点H的有向边FH。可以认为节点G和节点H是节点F的后继节点,节点I是节点H的后继节点,节点J是节点G和节点I的后继节点,节点K是节点J的后继节点。

例如,以没有前驱节点的节点F作为起始节点,沿着有向边遍历后继节点,实际上也就是从一个节点遍历到它的后继节点,在本公开的说明书中描述的沿着有向边的遍历与从一个节点到下一个节点的遍历实际上是一回事:节点G和节点H。在从后继节点,例如节点G和节点H,到起始节点(节点F)的反向遍历过程中没有其他路径返回起始节点(节点F)的情况下,起始节点(节点F)和后继节点(例如节点G和节点H)可以划分在同一子图{F,G,H}内,如在图3B所示的,或者说将节点F,G,H并入一个集合FGH中。子图{F,G,H}作为新的起始节点,在从新的起始节点{F,G,H}向后继节点J和后继节点I进行融合,在从后继节点J反向遍历到起始节点{F,G,H}的过程中发现有可能经过节点I(如在图3B所示的)返回到起始节点,以没有前驱节点的节点(例如{F,G,H})作为起始节点,沿着有向边遍历后继节点J,在从后继节点J到起始节点(例如{F,G,H})的反向遍历过程中具有其他路径(例如经由节点I)返回起始节点(例如{F,G,H})的情况下,则从起始节点(例如{F,G,H})到后继节点J的访问结束。如在图3B所示的。可选地,所述经过的节点可以是不支持机器学习处理器的节点,也可以是支持机器学习处理器的节点,如是支持机器学习处理器的节点时,可以和起始节点{F,G,H}是相同的设备,也可以是不同的设备,本申请对此不作任何限制,只要是后继节点反向遍历过程中存在其他路径可以返回到起始节点,与此路径中节点设备信息无关。继续访问起始节点的另一个后继节点I,节点I因为是不支持机器学习处理器的节点,也就是需要单独处理的节点,不可能与新的起始节点{F,G,H}或者节点J划分在同一子图内。在一个可选地实施例中,节点I如果是支持机器学习处理器的节点,且没有其他路径可以从后继节点I返回到起始节点,所以此时节点I可能和起始节点{F,G,H}划分在一个子图中(图中未标出此情形);在一个可能的实施例中,当后继节点I为支持机器学习处理器的节点,且节点I的设备信息与起始节点{F,G,H}的设备信息一致,则节点I可以和其实节点划分在一个子图中(图中未标出此情形)。

此时,可以认为节点F,G,H划分在了最大弱连通的凸子图内了,而节点J可以认为是没有前驱计算的节点,节点J可以认为是后面继续进行融合计算的新的起始节点。需要说明的是,后继节点和没有前驱计算的节点都是相对而言的,例如图3C中,后继节点J是节点F,G,H的后继节点,但在后继节点J不能与节点F,G,H融合在同一子图的情况下,该后继节点J又成为了后面融合计算的没有前驱计算的节点,即新的起始节点。即,节点J与新的起始节点{F,G,H}并没有划分在同一子图内,这时候可以把节点J作为下一个新的起始节点开始后继的融合步骤。如在图3C中所示的,新的起始节点J与它的后继节点K是可以划分在同一子图内的,这是因为在从后继节点K向起始节点J的反向遍历过程中,没有其他路径返回到起始节点J,因此可以将起始节点J与后继节点K划分在同一子图内,或者说将节点J、K并入一个集合JK中了。即,可以认为节点J,K划分在了另一最大弱连通的凸子图内了。

最后,在图3D中所示的,节点F,G,H组成一个最大弱连通的凸子图,节点J,K构成另一个最大弱连通的凸子图,节点I是不支持机器学习处理器的节点,是需要单独处理的。

在图3A到图3D的实施例中,节点K是节点J的后继节点,但是节点K也是节点J的唯一后续节点。在不同的实施中,后继节点可能是唯一的,也可能是不唯一的。

实施例2

进行融合计算的时候,先从节点F开始(节点F是没有前驱计算节点的节点,也就是在本公开这个实施例中的起始节点),从节点F出发有两条有向边,一条是通向节点G的有向边FG,另一条是通向节点H的有向边FH。可以认为节点G和节点H是节点F的后继节点,节点L是节点H的后继节点,节点I是节点L的后继节点,节点J是节点G和节点I的后继节点,节点K是节点J的后继节点。

例如,以没有前驱节点的节点F作为起始节点,沿着有向边FG和FH遍历后继节点,例如节点G和节点H,在从后继节点例如节点G和节点H到起始节点(节点F)的反向遍历过程中没有其他路径返回起始节点(节点F)的情况下,起始节点(节点F)和后继节点(例如节点G和节点H)划分在同一子图{F,G,H}内,如在图4A所示的。或者说将节点F,G,H并入一个集合FGH中了。

子图{F,G,H}作为新的起始节点,将子图{F,G,H}融合为新的起始节点,沿着新的起始节点出发的有向边遍历新的起始节点的后继节点,即,在从新的起始节点{F,G,H}向后继节点J和后继节点L进行融合,在从新的起始节点{F,G,H}的后继节点L到新的起始节点{F,G,H}的反向遍历过程中没有其他路径返回新的起始节点{F,G,H}的情况下,将新的起始节点{F,G,H}和新的起始节点的后继节点L划分在新的子图内{F,G,H,L}内。或者说将节点F,G,H,L并入一个集合FGHL中了。在图4A到图4D的实施例中,根据节点对应的算子执行的逻辑顺序,假设节点L是比节点J具有更优先的处理顺序,因此先判断对节点L是否进行融合。重复上述步骤,直至将支持机器学习处理器且能够融合在一起的所有节点划分在同一最大弱连通的凸子图内。在从后继节点J反向遍历到起始节点{F,G,H,L}的过程中发现有可能经过不支持机器学习处理器的节点I。这时可以认为后继节点J与新的起始节点{F,G,H,L}不能划分在同一子图内。节点I因为是不支持机器学习处理器的节点,也就是需要单独处理的节点,不可能与新的起始节点{F,G,H,L}或者节点J划分在同一子图内。此时,可以认为节点F,G,H,L划分在了最大弱连通的凸子图内了。即,可以认为子图{F,G,H,L}是一个比子图{F,G,H}更大的弱连通的凸子图。

以没有前驱节点的节点(例如{F,G,H,L})作为起始节点,沿着有向边遍历后继节点J,在从后继节点J到起始节点(例如{F,G,H,L})的反向遍历过程中具有其他路径(例如经由节点I)返回起始节点(例如{F,G,H,L})的情况下,则从起始节点(例如{F,G,H,L})到后继节点J的访问结束。如在图4B所示的。意味着节点{F,G,H,L}与后继节点J不能融合在一个字图内。

节点J与新的起始节点{F,G,H,L}并没有划分在同一子图内,这时候可以把节点J作为下一个新的起始节点开始后继的融合步骤。如在图4B中所示的,新的起始节点J与它的后继节点K是可以划分在同一子图内的,这是因为在从后继节点K向起始节点J的反向遍历过程中,没有其他路径返回起始节点J,因此可以将起始节点J与后继节点K划分在同一子图内。可以认为节点J,K划分在了另一最大弱连通的凸子图内了。即,以后继节点(例如节点J)作为新的起始节点,沿着新的起始节点出发的有向边例如JK,遍历新的起始节点的后继节点(例如节点K);

在从新的起始节点的后继节点(例如节点K)到新的起始节点(例如节点J)的反向遍历过程中没有其他路径返回新的起始节点的情况下,新的起始节点(例如节点J)和新的起始节点的后继节点(例如节点K)划分在同一子图内(例如{J,K}),或者说将节点J、K并入一个集合JK中了。如图4C所示的。

最后,在图4D中所示的,节点F,G,H,L组成一个最大弱连通的凸子图,节点J,K构成另一个最大弱连通的凸子图,节点I是不支持机器学习处理器的节点,是需要单独处理的。

在本公开的一个实施例中,其中子图和最大弱连通的凸子图可以是有向图。

在本公开的一个实施例中,其中运行节点的划分方法是用于Pytorch框架的。

在本公开的一个实施例中,将节点划分方法的划分结果保存在并查集、普通集合或者链表中。

通过这种Pytorch中本来没有的算法,可以支持CPU,MLU异构的混合网络计算,可以划分原网络得到最少的、尽可能大的融合子图,尽可能的将MLU支持的算子进行融合,且每一张子图都符合可以融合的前提,从而最大限度的通过融合计算增强性能,提高计算速度,达到即使存在MLU不支持的算子,也能尽可能提高计算效率的目的。

图5是示出根据本公开实施例的一种组合处理装置500的结构图。如图所示,该组合处理装置500包括具有前述计算图的节点划分装置502,其可以配置用于执行前述结合附图所描述的计算图的节点划分方法。在一个或多个实施例中,该计算图的节点划分装置502也可以是计算输入数据的梯度的芯片、集成电路。另外,该组合处理装置还包括通用互联接口504和其他处理装置506。根据本公开的计算图的节点划分装置502可以通过通用互联接口504与其他处理装置506进行交互,共同完成用户指定的操作。

根据本公开的方案,该其他处理装置可以包括中央处理器(“CPU”)、图形处理器(“GPU”)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器,其数目可以不做限制而是根据实际需要来确定。在一个或多个实施例中,该其他处理装置可以包括前述的基准硬件平台或基准运算装置,从而其可以与包括测试硬件平台的计算图的节点划分装置形成一个测试的系统。在一个或多个实施例中,该其他处理装置可以作为本公开的计算图的节点划分装置(其可以具体化为人工智能相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运,完成对本机器学习运算装置的开启、停止等的基本控制;其他处理装置也可以和机器学习相关运算装置协作共同完成运算任务。

根据本公开的方案,该通用互联接口可以用于在计算图的节点划分装置与其他处理装置间传输数据和控制指令。例如,该计算图的节点划分装置可以经由通用互联接口从其他处理装置中获取所需的输入数据,写入该计算图的节点划分装置片上的存储装置(或称存储器)。进一步,该计算图的节点划分装置可以经由通用互联接口从其他处理装置中获取控制指令,写入计算图的节点划分装置片上的控制缓存。替代地或可选地,通用互联接口也可以读取计算图的节点划分装置的存储模块中的数据并传输给其他处理装置。

可选的,该组合处理装置还可以包括存储装置508,其可以分别与计算图的节点划分装置和其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存计算图的节点划分装置和其他处理装置的数据,尤其那些在计算图的节点划分装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。

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

在一些实施例里,本公开还公开了一种芯片,其包括了上述计算图的节点划分装置或组合处理装置。在另一些实施例里,本公开还公开了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,本公开还公开了一种板卡,其包括了上述芯片封装结构。参阅图6,其提供了前述的示例性板卡,上述板卡除了包括上述芯片602以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件604、接口装置606和控制器件608。

存储器件与芯片封装结构内的芯片通过总线连接,用于存储数据。存储器件可以包括多组存储单元610。每一组存储单元与芯片通过总线连接。可以理解,每一组存储单元可以是DDR SDRAM(“Double Data Rate SDRAM,双倍速率同步动态随机存储器”)。

DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,存储器件可以包括4组存储单元。每一组存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。

在一个实施例中,每一组存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在芯片中设置控制DDR的控制器,用于对每个存储单元的数据传输与数据存储的控制。

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

控制器件与芯片电连接。控制器件用于对芯片的状态进行监控。具体地,芯片与控制器件可以通过SPI接口电连接。控制器件可以包括单片机(Micro Controller Unit,MCU)。在一个或多个实施例中,芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,芯片可以处于多负载和轻负载等不同的工作状态。通过控制装置可以实现对芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。

在一些实施例里,本公开还公开了一种电子设备或装置,其包括了上述板卡。根据不同的应用场景,电子设备或装置可以包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。

根据应用场景的不同,本公开的计算图的节点划分装置、或者含有该计算图的节点划分装置的组合处理装置、计算输入数据的梯度的芯片、以及对应的计算机可读存储介质、计算输入数据的梯度的集成电路可以应用在数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备等等设备。交通工具包括飞机、轮船和/或车辆;家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;医疗设备包括核磁共振仪、B超仪和/或心电图仪。

另外,还需要指出的是,在本公开的申请文件中提到的术语“数据”应当做广义的理解,可以包括图形、图像、视频、音频等。

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

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

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

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

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

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

在本公开的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

依据以下条款可更好地理解前述内容:

条款A1、一种计算图的节点划分方法,包括:

将支持机器学习处理器且能够融合在一起的节点划分在对应的子图内;

将不支持机器学习处理器的节点进行单独处理。

条款A2、根据条款A1的方法,机器学习处理器包括一种或多种机器学习处理器。

条款A3、根据条款A2的方法,其中将支持机器学习处理器且能够分别融合在一起的节点划分在对应的子图内包括:

将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内。

条款A4、根据条款A3的方法,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内包括:

以没有前驱节点的节点作为起始节点,沿着有向边遍历后继节点,在从后继节点到起始节点的反向遍历过程中没有其他路径返回起始节点的情况下,起始节点和后继节点划分在同一子图内。

条款A5、根据条款A4的方法,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内还包括:

将子图融合为新的起始节点,沿着新的起始节点出发的有向边遍历新的起始节点的后继节点,在从新的起始节点的后继节点到新的起始节点的反向遍历过程中没有其他路径返回新的起始节点的情况下,将新的起始节点和新的起始节点的后继节点划分在新的子图内,重复上述步骤,直至将支持机器学习处理器且能够融合在一起的所有节点划分在同一最大弱连通的凸子图内。

条款A6、根据条款A5的方法,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内包括:

以没有前驱节点的节点作为起始节点,沿着有向边遍历后继节点,在从后继节点到起始节点的反向遍历过程中具有其他路径返回起始节点的情况下,则从起始节点到后继节点的访问结束。

条款A7、根据条款A6的方法,将支持机器学习处理器且能够融合在一起的节点划分在对应最大弱连通的凸子图内包括:

以后继节点作为新的起始节点,沿着新的起始节点出发的有向边遍历新的起始节点的后继节点;

在从新的起始节点的后继节点到新的起始节点的反向遍历过程中没有其他路径返回新的起始节点的情况下,新的起始节点和新的起始节点的后继节点划分在同一子图内;

在从新的起始节点的后继节点到新的起始节点的反向遍历过程中具有其他路径返回新的起始节点的情况下,则从新的起始节点到新的起始节点的后继节点的访问结束。

条款A8、根据条款A1-7的方法,其中将不支持机器学习处理器的节点进行单独处理包括:

将不支持机器学习处理器的节点由中央处理器、语音处理器、可编程逻辑处理器和/或图像处理器进行处理。

条款A9、根据条款A1-7的方法,其中子图和最大弱连通的凸子图是有向图。

条款A10、根据条款A1-7的方法,其中运行节点的划分方法是用于Pytorch框架的。

条款A11、根据条款A1-7的方法,将节点划分方法的划分结果保存在并查集、普通集合或者链表中。

条款A12、一种计算图的节点划分装置,可以包括:

处理器,其配置用于执行程序指令;以及

存储器,其配置用于存储程序指令,当程序指令由处理器加载并执行时,使得装置执行根据条款A1-11的方法。

条款A13、一种计算机可读存储介质,其中存储有程序指令,程序指令适于由处理器加载并执行根据条款A1-11的方法。

22页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:针对HPCG基准测试的两层分块多色并行优化方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!