资源的分配方法、装置、计算机设备及可读存储介质与流程

文档序号:25543357发布日期:2021-06-18 20:40
资源的分配方法、装置、计算机设备及可读存储介质与流程

本申请涉及计算机技术领域,特别是涉及一种资源的分配方法、装置、计算机设备及可读存储介质。



背景技术:

目前,多核处理器以其高性能、低功耗的优势,逐步取代传统的单核处理器成为市场的主流。传统的多核处理器在运行神经网络模型时,会将该神经网络模型中的各神经节点随机分配至该多核处理器的各个核中。

然而,随机分配方式将导致不同核之间的通信开销较大。因此,亟需一种能够降低多核处理器通信开销的方案。



技术实现要素:

基于此,有必要针对上述技术问题,提供一种资源的分配方法、装置、计算机设备及可读存储介质。

第一方面,提供了一种资源的分配方法,所述方法应用于多核处理器中,所述方法包括:

获取目标神经网络模型对应的计算图,所述计算图包括各神经节点的连接关系和时序;

根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组;

将所述多个神经节点组分配至多核处理器包含的各核中,以使所述多核处理器运行所述目标神经网络模型。

作为一种可选的实施方式,所述根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组,包括:

根据所述各神经节点的连接关系和时序,确定所述各神经节点对应的前驱神经节点;

针对所述各神经节点中的每个神经节点,如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,所述第一预设条件为该神经节点不存在对应的前驱神经节点,或者该神经节点对应多个前驱神经节点,或者该神经节点与其他神经节点对应同一前驱神经节点;

如果该神经节点对应的前驱神经节点不满足第一预设条件,则将该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。

作为一种可选的实施方式,所述根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组,包括:

根据所述各神经节点的连接关系和时序,确定所述各神经节点对应的后继神经节点;

针对所述各神经节点中的每个神经节点,如果该神经节点对应的后继神经节点满足第二预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,所述第二预设条件为该神经节点不存在对应的后继神经节点,或者该神经节点对应多个后继神经节点,或者该神经节点与其他神经节点对应同一后继神经节点;

如果该神经节点对应的后继神经节点不满足第二预设条件,则将该神经节点添加至该神经节点对应的后继神经节点所属的神经节点组中。

作为一种可选的实施方式,所述将所述多个神经节点组分配至多核处理器包含的各核中,包括:

针对每个神经节点组,将该神经节点组分配至多核处理器中当前任务量最小的核中。

作为一种可选的实施方式,所述计算图还包括所述各神经节点的运算类型,所述将所述多个神经节点组分配至多核处理器包含的各核中,包括:

根据所述各神经节点的连接关系和时序,确定所述神经节点组的时序;

针对每个神经节点组,如果该神经节点组中包含目标运算类型的神经节点,则在多核处理器包含的核集群中,将未分配有与该神经节点组的时序相同,且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群,并将该神经节点组分配至所述目标核集群中当前任务量最小的核中;

如果该神经节点组未包含目标运算类型的神经节点,则将该神经节点组分配至所述多核处理器中当前任务量最小的核中。

作为一种可选的实施方式,所述方法还包括:

根据所述各神经节点的连接关系和时序,确定所述神经节点组对应的前序神经节点组;

针对每个神经节点组,如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组中添加第一同步算子,并在该神经节点组对应的前序神经节点组中添加与所述第一同步算子对应的第二同步算子,所述第一同步算子和与所述第二同步算子用于执行同步运算。

第二方面,提供了一种资源的分配装置,所述装置应用于多核处理器中,所述装置包括:

获取模块,用于获取目标神经网络模型对应的计算图,所述计算图包括各神经节点的连接关系和时序;

划分模块,用于根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组;

分配模块,用于将所述多个神经节点组分配至多核处理器包含的各核中,以使所述多核处理器运行所述目标神经网络模型。

第三方面,提供了一种计算机设备,包括存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现第一方面中任一项所述方法的步骤。

第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面中任一项所述的方法的步骤。

第五方面,提供了一种芯片系统,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现第一方面任一项所述的方法。

本申请实施例提供了一种资源的分配方法、装置、计算机设备及可读存储介质。计算机设备获取目标神经网络模型对应的计算图。其中,计算图包括各神经节点的连接关系和时序。然后,计算机设备根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组,并将多个神经节点组分配至多核处理器包含的各核中。这样,将具有唯一连接关系的神经节点划分至一个神经节点组,并分配至同一核中,从而保证同一神经节点组内的神经节点无需进行通信,进而降低了多核处理器的通信开销。

附图说明

图1为本申请实施例提供的一种资源的分配方法的流程示意图;

图2为本申请实施例提供的一种神经网络模型的示意图;

图3为本申请实施例提供的一种资源的分配方法的流程示意图;

图4为本申请实施例提供的一种资源的分配方法的示例的流程示意图;

图5为本申请实施例提供的一种资源的分配装置的结构示意图;

图6为本申请实施例提供的一种资源的分配装置的结构示意图;

图7为本申请实施例提供的一种计算机设备的结构示意图。

具体实施方式

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

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

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

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

本申请实施例提供了一种资源的分配方法,该方法可以应用于设置有多核处理器的计算机设备。该多核处理器可以为异构处理器,也可以为同构处理器。该多核处理器包括多个核,多个核可以划分为至少一个核集群(cluster),每个核集群中的核共用相同的内存。

下面将对本申请实施例提供的一种资源的分配方法进行详细的说明。如图1所示,具体步骤如下:

步骤101,获取目标神经网络模型对应的计算图。其中,计算图包括各神经节点的连接关系和时序。

在实施中,当计算机设备需要运行某一神经网络模型(即目标神经网络模型)时,该计算机设备可以获取该目标神经网络模型对应的计算图。其中,该计算图包括该目标神经网络中各神经节点的连接关系和时序。例如,如图2所示,该目标神经网络模型包括神经节点1至神经节点8;各神经节点的连接关系为:神经节点1与神经节点2连接,神经节点2与神经节点3和神经节点5连接,神经节点3与神经节点4连接,神经节点5与神经节点6连接,神经节点4和神经节点6与神经节点7连接,神经节点7与神经节点8连接;各神经节点的时序为:神经节点1→神经节点2→(神经节点3→神经节点4)和(神经节点5→神经节点6)→神经节点7→神经节点8。

步骤102,根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组。

在实施中,计算机设备得到该目标神经网络模型对应的计算图后,可以根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组。其中,计算机设备根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组的方式可以是多种多样的,本申请实施例提供了两种实施方式,具体如下:

实施方式一,计算机设备根据各神经节点对应的前驱神经节点,将各神经节点划分为多个神经节点组,具体处理过程如下:

步骤一,根据各神经节点的连接关系和时序,确定各神经节点对应的前驱神经节点。

在实施中,计算机设备得到该目标神经网络模型对应的计算图后,针对每个神经节点,计算机设备可以将与该神经节点连接,且时序在该神经节点的时序之前的神经节点,确定为该神经节点对应的前驱神经节点。例如,如图2所示,神经节点1为神经节点2的前驱神经节点,神经节点2为神经节点3和神经节点5的前驱神经节点,神经节点3为神经节点4的前驱神经节点,神经节点5为神经节点6的前驱神经节点,神经节点4和神经节点6为神经节点7的前驱神经节点,神经节点7为神经节点8的前驱神经节点。

步骤二,针对各神经节点中的每个神经节点,如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中。其中,第一预设条件为该神经节点不存在对应的前驱神经节点,或者该神经节点对应多个前驱神经节点,或者该神经节点与其他神经节点对应同一前驱神经节点。

在实施中,计算机设备得到各神经节点的前驱神经节点后,针对每个神经节点,该计算机设备可以进一步判断该神经节点对应的前驱神经节点是否满足第一预设条件。其中,第一预设条件为该神经节点不存在对应的前驱神经节点,或者该神经节点对应多个前驱神经节点,或者该神经节点与其他神经节点对应同一前驱神经节点。如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中。例如,如图2所示,神经节点1不存在对应的前驱神经节点,则计算机设备创建神经节点组1,并将神经节点1添加至神经节点组1中;神经节点3和神经节点5对应同一前驱神经节点(即神经节点2),则计算机设备创建神经节点组2和神经节点组3,并将神经节点3添加至神经节点组2中,将神经节点5添加至神经节点组3中;神经节点7对应多个前驱神经节点(即神经节点4和神经节点6),则计算机设备创建神经节点组4,并将神经节点7添加至神经节点组4中。

步骤三,如果该神经节点对应的前驱神经节点不满足第一预设条件,则将该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。

在实施中,如果该神经节点对应的前驱神经节点不满足第一预设条件,则计算机设备可以该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。例如,计算机设备可以将神经节点2添加至神经节点2对应的前驱神经节点(即神经节点1)所属的神经节点组1中,将神经节点4添加至神经节点4对应的前驱神经节点(即神经节点3)所属的神经节点组2中,将神经节点6添加至神经节点6对应的前驱神经节点(即神经节点5)所属的神经节点组3中,将神经节点8添加至神经节点8对应的前驱神经节点(即神经节点7)所属的神经节点组4中。

实施方式二,计算机设备根据各神经节点对应的后继神经节点,将各神经节点划分为多个神经节点组,具体处理过程如下:

步骤一,根据各神经节点的连接关系和时序,确定各神经节点对应的后继神经节点。

在实施中,计算机设备得到该目标神经网络模型对应的计算图后,针对每个神经节点,计算机设备可以将与该神经节点连接,且时序在该神经节点的时序之后的神经节点,确定为该神经节点对应的后继神经节点。例如,如图2所示,神经节点2为神经节点1的后继神经节点,神经节点3和神经节点5为神经节点2的后继神经节点,神经节点4为神经节点3的后继神经节点,神经节点6为神经节点5的后继神经节点,神经节点7为神经节点4和神经节点6的后继神经节点,神经节点8为神经节点7的后继神经节点。

步骤二,针对各神经节点中的每个神经节点,如果该神经节点对应的后继神经节点满足第二预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中。其中,第二预设条件为该神经节点不存在对应的后继神经节点,或者该神经节点对应多个后继神经节点,或者该神经节点与其他神经节点对应同一后继神经节点。

在实施中,计算机设备得到各神经节点的后继神经节点后,针对每个神经节点,该计算机设备可以进一步判断该神经节点对应的后继神经节点是否满足第二预设条件。其中,第二预设条件为该神经节点不存在对应的后继神经节点,或者该神经节点对应多个后继神经节点,或者该神经节点与其他神经节点对应同一后继神经节点。如果该神经节点对应的后继神经节点满足第二预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中。例如,如图2所示,神经节点2对应多个后继神经节点(即神经节点3和神经节点5),则计算机设备创建神经节点组1,并将神经节点2添加至神经节点组1中,神经节点4和神经节点6对应同一后继神经节点(即神经节点7),则计算机设备创建神经节点组2和神经节点组3,并将神经节点4添加至神经节点组2中,将神经节点6添加至神经节点组3中,神经节点8不存在对应的后继神经节点,则计算机设备创建神经节点组4,并将神经节点8添加至神经节点组4中。

步骤三,如果该神经节点对应的后继神经节点不满足第二预设条件,则将该神经节点添加至该神经节点对应的后继神经节点所属的神经节点组中。

在实施中,如果该神经节点对应的后继神经节点不满足第二预设条件,则计算机设备可以该神经节点添加至该神经节点对应的后继神经节点所属的神经节点组中。例如,计算机设备可以将神经节点1添加至神经节点1对应的后继神经节点(即神经节点2)所属的神经节点组1中,将神经节点3添加至神经节点3对应的后继神经节点(即神经节点4)所属的神经节点组2中,将神经节点5添加至神经节点5对应的后继神经节点(即神经节点6)所属的神经节点组3中,将神经节点7添加至神经节点7对应的后继神经节点(即神经节点8)所属的神经节点组4中。

步骤103,将多个神经节点组分配至多核处理器包含的各核中,以使多核处理器运行目标神经网络模型。

在实施中,计算机设备将各神经节点划分为多个神经节点组后,可以将多个神经节点组分配至多核处理器包含的各核中。这样,多核处理可以运行该目标神经网络模型。可选的,计算机设备可以按照神经节点组的时序由前到后或者由后到前的顺序将多个神经节点组分配至多核处理器包含的各核中,也可以按照神经节点组的其他顺序将多个神经节点组分配至多核处理器包含的各核中,本申请实施不作限定。其中,计算机设备将多个神经节点组分配至多核处理器包含的各核中的方式可以是多种多样的,本申请实施例提供了两种可行的实施方式,具体如下:

方式一,针对每个神经节点组,计算机设备将该神经节点组分配至多核处理器中当前任务量最小的核中。

在实施中,计算机设备将各神经节点划分为神经节点组后,针对每个神经节点组,计算机设备可以在多核处理器包含的核中,确定当前任务量最小的目标核,并将该神经节点组分配至该目标核中。其中,核的当前任务量为已分配至该核上的神经节点组的开销之和,每个神经节点组的开销为该神经节点组包含的神经节点的开销之和,每个神经节点的开销可以通过模拟该神经节点在多核处理器上的行为,推算出该神经节点的开销。这样,通过将神经节点组分配至当前任务量最小的核中,从而可以实现各个核的负载均衡,进而提高多核处理器的处理速率。

例如,多核处理器包含两个核,分别为核0和核1,核0和核1的当前任务量均为0,神经节点组1至神经节点组4的开销分别为t1、t2、t3和t4,其中,t2>t3>t1;在t1时刻,由于核0和核1的当前任务量均为0,计算机设备可以将神经节点组1分配至核0或核1,假设计算机设备将神经节点组1分配至核0,此时核0和核1的当前任务量分别为t1和0;在t2时刻,由于核1的当前任务量最小,则计算机设备将神经节点组2分配至核1,此时核0和核1的当前任务量分别为t1和t2;在t3时刻,由于核0的当前任务量最小,则计算机设备将神经节点组3分配至核0,此时核0和核1的当前任务量分别为(t1+t3)和t2;在t4时刻,如果t2>(t1+t3),则核0的当前任务量最小,计算机设备将神经节点组4分配至核0,此时核0和核1的当前任务量分别为(t1+t3+t4)和t2,如果t2<(t1+t3),则核1的当前任务量最小,计算机设备将神经节点组4分配至核1,此时核0和核1的当前任务量分别为(t1+t3)和(t2+t4)。

方式二,计算图还包括各神经节点的运算类型。计算机设备还可以根据神经节点的运算类型,将多个神经节点组分配至多核处理器包含的各核中,具体处理过程如下:

步骤一,根据各神经节点的连接关系和时序,确定神经节点组的时序。

在实施中,计算机设备将各神经节点划分为神经节点组后,可以进一步根据各神经节点组中包含的神经节点的连接关系和时序,确定各神经节点组的时序。例如,如图2所示,神经节点组1至神经节点组4的时序为神经节点组1→(神经节点组2和神经节点组3)→神经节点组4。

步骤二,针对每个神经节点组,如果该神经节点组中包含目标运算类型的神经节点,则在多核处理器包含的核集群中,将未分配有与该神经节点组的时序相同,且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群,并将该神经节点组分配至目标核集群中当前任务量最小的核中。

在实施中,计算机设备得到各神经节点组的时序后,针对每个神经节点组,计算机设备可以进一步判断该神经节点组中是否包含目标运算类型的神经节点。其中,目标运算类型为较为复杂的运算类型(比如卷积运算)。由于目标运行类型的神经节点的开销较大,当多个目标运行类型的神经节点被分配至同一核集群中时,将导致整个核集群的处理速率较低。因此,为了解决上述问题,如果该神经节点组中包含目标运算类型的神经节点,则计算设备可以在各核集群中,将未分配有与该神经节点组的时序相同且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群。然后,计算机设备可以将该神经节点组分配至目标核集群中当前任务量最小的核中。这样,通过将时序相同且包含目标运算类型的神经节点的神经节点组分配至不同的核集群,可以提高各核集群的处理速率,进而提高多核处理器的处理速率。

步骤三,如果该神经节点组未包含目标运算类型的神经节点,则将该神经节点组分配至多核处理器中当前任务量最小的核中。

在实施中,如果该神经节点组未包含目标运算类型的神经节点,则计算机设备可以将该神经节点组分配至多核处理器中当前任务量最小的核中。

例如,如图2所示,多核处理器包括两个核集群,分别为核集群0和核集群1,核集群0包括核0和核1,核集群1包括核2和核3,核0至核3的当前任务量均为0,神经节点3和神经节点5的运算类型均为目标运算类型;在t1时刻,由于核0至核3的当前任务量均为0,计算机设备可以将神经节点组1分配至核0或核1或核2或核3,假设计算机设备将神经节点组1分配至核0,此时核0至核3的当前任务量分别为t1、0、0和0;在t2时刻,核1至核3的当前任务量均为0,计算机可以将神经节点组2分配至核集群0中的核1或核集群1中的核2和核3,假设计算机设备将神经节点组2分配至核2,此时核0至核3的当前任务量分别为t1、0、t2和0;在t3时刻,由于核1和核3的当前任务量均为0,计算机设备可以将神经节点组3分配至核1或核3,但核3所属的核集群1中已分配有神经节点组2,则计算机设备将神经节点组3分配至核1,此时核0至核3的当前任务量分别为t1、t3、t2和0。

作为一种可选的实施方式,计算机设备可以在分配至不同核的神经节点组中添加同步算子,以保证各神经节点组的同步,如图3所示,具体处理过程如下:

步骤301,根据各神经节点的连接关系和时序,确定神经节点组对应的前序神经节点组。

在实施中,计算机设备将各神经节点划分为神经节点组后,计算机设备可以进一步根据各神经节点组中包含的神经节点的连接关系和时序,确定各神经节点组的连接关系和时序。然后,针对每个神经节点组,计算机设备可以将与该神经节点组连接,且时序在该神经节点组的时序之后的神经节点组,确定为该神经节点组的前继神经节点组。例如,神经节点组1为神经节点组2和神经节点组3的前继神经节点组,神经节点组2和神经节点组3为神经节点组4的前继神经节点组。

步骤302,针对每个神经节点组,如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组中添加第一同步算子,并在该神经节点组对应的前序神经节点组中添加与第一同步算子对应的第二同步算子,第一同步算子和与第二同步算子用于执行同步运算。

在实施中,计算机设备得到各神经节点组对应的前序神经节点组后,可以进一步判断该神经节点组与该神经节点组对应的前序神经节点组是否分配至同一核中。如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组的第一个神经节点(即时序最靠前的神经节点)之前添加第一同步算子(即等待同步算子),并在该神经节点组对应的前序神经节点组的最后一个神经节点(即时序最靠后的神经节点)之后添加与第一同步算子对应的第二同步算子(即唤醒同步算子)。其中,第一同步算子和与第二同步算子用于执行同步运算。例如,神经节点组1至神经节点组4分别被分配至核0、核1、核0和核1,则计算机设备需要在神经节点2之后添加唤醒同步算子1,并在神经节点3之前添加与唤醒同步算子1对应的等待同步算子1;计算机设备还需要在神经节点6之后添加唤醒同步算子2,并在神经节点7之前添加与唤醒同步算子2对应的等待同步算子2。

本申请实施例提供了一种资源的分配方法。计算机设备获取目标神经网络模型对应的计算图。其中,计算图包括各神经节点的连接关系和时序。然后,计算机设备根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组,并将多个神经节点组分配至多核处理器包含的各核中。这样,将具有唯一连接关系的神经节点划分至一个神经节点组,并分配至同一核中,从而保证同一神经节点组内的神经节点无需进行通信,进而降低了多核处理器的通信开销。

图4为本申请实施例提供的一种资源的分配方法的示例的流程示意图。如图4所示,具体处理过程如下:

步骤401,获取目标神经网络模型对应的计算图。其中,计算图包括各神经节点的连接关系和时序。

步骤402,根据各神经节点的连接关系和时序,确定各神经节点对应的前驱神经节点。

步骤403a,针对各神经节点中的每个神经节点,如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中。其中,第一预设条件为该神经节点不存在对应的前驱神经节点或该神经节点对应多个前驱神经节点或该神经节点与其他神经节点对应同一前驱神经节点。

步骤403b,如果该神经节点对应的前驱神经节点不满足第一预设条件,则将该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。

步骤404,根据各神经节点的连接关系和时序,确定神经节点组的时序。

步骤405a,针对每个神经节点组,如果该神经节点组中包含目标运算类型的神经节点,则在多核处理器包含的核集群中,将未分配有与该神经节点组的时序相同,且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群,并将该神经节点组分配至目标核集群中当前任务量最小的核中。

步骤405b,如果该神经节点组未包含目标运算类型的神经节点,则将该神经节点组分配至多核处理器中当前任务量最小的核中。

步骤406,根据各神经节点的连接关系和时序,确定神经节点组对应的前序神经节点组。

步骤407,针对每个神经节点组,如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组中添加第一同步算子,并在该神经节点组对应的前序神经节点组中添加与第一同步算子对应的第二同步算子。

步骤401至步骤407的处理过程与步骤101至步骤103的处理过程类型,此处不再赘述。

本申请实施例还提供了一种资源的分配装置,如图5所示,该装置应用于多核处理器中,所述装置包括:

获取模块510,用于获取目标神经网络模型对应的计算图,计算图包括各神经节点的连接关系和时序;

划分模块520,用于根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组;

分配模块530,用于将多个神经节点组分配至多核处理器包含的各核中,以使所述多核处理器运行所述目标神经网络模型。

作为一种可选的实施方式,划分模块520,具体用于:

根据各神经节点的连接关系和时序,确定各神经节点对应的前驱神经节点;

针对各神经节点中的每个神经节点,如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,第一预设条件为该神经节点不存在对应的前驱神经节点,或者该神经节点对应多个前驱神经节点,或者该神经节点与其他神经节点对应同一前驱神经节点;

如果该神经节点对应的前驱神经节点不满足第一预设条件,则将该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。

作为一种可选的实施方式,划分模块520,具体用于:

根据各神经节点的连接关系和时序,确定各神经节点对应的后继神经节点;

针对各神经节点中的每个神经节点,如果该神经节点对应的后继神经节点满足第二预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,第二预设条件为该神经节点不存在对应的后继神经节点,或者该神经节点对应多个后继神经节点,或者该神经节点与其他神经节点对应同一后继神经节点;

如果该神经节点对应的后继神经节点不满足第二预设条件,则将该神经节点添加至该神经节点对应的后继神经节点所属的神经节点组中。

作为一种可选的实施方式,分配模块530,具体用于:

针对每个神经节点组,将该神经节点组分配至多核处理器中当前任务量最小的核中。

作为一种可选的实施方式,计算图还包括各神经节点的运算类型,分配模块530,具体用于:

根据各神经节点的连接关系和时序,确定神经节点组的时序;

针对每个神经节点组,如果该神经节点组中包含目标运算类型的神经节点,则在多核处理器包含的核集群中,将未分配有与该神经节点组的时序相同,且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群,并将该神经节点组分配至目标核集群中当前任务量最小的核中;

如果该神经节点组未包含目标运算类型的神经节点,则将该神经节点组分配至多核处理器中当前任务量最小的核中。

作为一种可选的实施方式,如图6所示,该装置还包括:

确定模块540,用于根据各神经节点的连接关系和时序,确定神经节点组对应的前序神经节点组;

添加模块550,用于针对每个神经节点组,如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组中添加第一同步算子,并在该神经节点组对应的前序神经节点组中添加与第一同步算子对应的第二同步算子,所述第一同步算子和与所述第二同步算子用于执行同步运算。

本申请实施例提供了一种资源的分配装置。计算机设备获取目标神经网络模型对应的计算图。其中,计算图包括各神经节点的连接关系和时序。然后,计算机设备根据各神经节点的连接关系和时序,将各神经节点划分为多个神经节点组,并将多个神经节点组分配至多核处理器包含的各核中。这样,将具有唯一连接关系的神经节点划分至一个神经节点组,并分配至同一核中,从而保证同一神经节点组内的神经节点无需进行通信,进而降低了多核处理器的通信开销。

在一个实施例中,提供了一种计算机设备,如图7所示,包括存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述资源的分配方法步骤。

在一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述资源的分配方法的步骤。

在一个实施例中,一种芯片系统,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现上述资源的分配方法。

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

进一步需要说明的是,虽然图1、图3和图4的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1、图3和图4中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。

另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistiverandomaccessmemory)、动态随机存取存储器dram(dynamicrandomaccessmemory)、静态随机存取存储器sram(staticrandom-accessmemory)、增强动态随机存取存储器edram(enhanceddynamicrandomaccessmemory)、高带宽内存hbm(high-bandwidthmemory)、混合存储立方hmc(hybridmemorycube)等等。

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

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

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

条款a1,对应权1;条款a2,对应权2;条款a3,对应权3;条款a4,对应权4;条款a5,对应权5;条款a6,对应权6;条款a7,对应权7;条款a8,对应权8;条款a9,对应权9;条款a10,对应权10。

例如,条款a1、一种资源的分配方法,所述方法应用于多核处理器中,所述方法包括:

获取目标神经网络模型对应的计算图,所述计算图包括各神经节点的连接关系和时序;

根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组;

将所述多个神经节点组分配至多核处理器包含的各核中,以使所述多核处理器运行所述目标神经网络模型。

条款a2、根据条款a1所述的方法,所述根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组,包括:

根据所述各神经节点的连接关系和时序,确定所述各神经节点对应的前驱神经节点;

针对所述各神经节点中的每个神经节点,如果该神经节点对应的前驱神经节点满足第一预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,所述第一预设条件为该神经节点不存在对应的前驱神经节点,或者该神经节点对应多个前驱神经节点,或者该神经节点与其他神经节点对应同一前驱神经节点;

如果该神经节点对应的前驱神经节点不满足第一预设条件,则将该神经节点添加至该神经节点对应的前驱神经节点所属的神经节点组中。

条款a3、根据条款a1所述的方法,所述根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组,包括:

根据所述各神经节点的连接关系和时序,确定所述各神经节点对应的后继神经节点;

针对所述各神经节点中的每个神经节点,如果该神经节点对应的后继神经节点满足第二预设条件,则创建神经节点组,并将该神经节点添加至创建的神经节点组中,所述第二预设条件为该神经节点不存在对应的后继神经节点,或者该神经节点对应多个后继神经节点,或者该神经节点与其他神经节点对应同一后继神经节点;

如果该神经节点对应的后继神经节点不满足第二预设条件,则将该神经节点添加至该神经节点对应的后继神经节点所属的神经节点组中。

条款a4、根据条款a1所述的方法,所述将所述多个神经节点组分配至多核处理器包含的各核中,包括:

针对每个神经节点组,将该神经节点组分配至多核处理器中当前任务量最小的核中。

条款a5、根据条款a1所述的方法,所述计算图还包括所述各神经节点的运算类型,所述将所述多个神经节点组分配至多核处理器包含的各核中,包括:

根据所述各神经节点的连接关系和时序,确定所述神经节点组的时序;

针对每个神经节点组,如果该神经节点组中包含目标运算类型的神经节点,则在多核处理器包含的核集群中,将未分配有与该神经节点组的时序相同,且包含目标运算类型的神经节点的神经节点组的核集群,确定该神经节点组对应的目标核集群,并将该神经节点组分配至所述目标核集群中当前任务量最小的核中;

如果该神经节点组未包含目标运算类型的神经节点,则将该神经节点组分配至所述多核处理器中当前任务量最小的核中。

条款a6、根据条款a1所述的方法,所述方法还包括:

根据所述各神经节点的连接关系和时序,确定所述神经节点组对应的前序神经节点组;

针对每个神经节点组,如果该神经节点组与该神经节点组对应的前序神经节点组未分配至同一核中,则在该神经节点组中添加第一同步算子,并在该神经节点组对应的前序神经节点组中添加与所述第一同步算子对应的第二同步算子,所述第一同步算子和与所述第二同步算子用于执行同步运算。

条款a7、一种资源的分配装置,所述装置应用于多核处理器中,所述装置包括:

获取模块,用于获取目标神经网络模型对应的计算图,所述计算图包括各神经节点的连接关系和时序;

划分模块,用于根据所述各神经节点的连接关系和时序,将所述各神经节点划分为多个神经节点组;

分配模块,用于将所述多个神经节点组分配至多核处理器包含的各核中,以使所述多核处理器运行所述目标神经网络模型。

条款a8、一种计算机设备,包括存储器及处理器,所述存储器上存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现条款a1至条款a6中任一项所述方法的步骤。

条款a9、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现条款a1至条款a6中任一项所述的方法的步骤。

条款a10、一种芯片系统,包括处理器,所述处理器和存储器耦合,所述存储器存储有程序指令,当所述存储器存储的程序指令被所述处理器执行时实现条款a1至条款a6任一项所述的方法。

以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。

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