掌桥专利:专业的专利平台
掌桥专利
首页

任务分配方法、装置、计算机设备及可读存储介质

文献发布时间:2023-06-19 11:35:49


任务分配方法、装置、计算机设备及可读存储介质

技术领域

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

背景技术

目前,在面向人工智能应用的芯片设计中普遍采用NUMA(Non Uniform MemoryAccess Architecture,非均匀存取结构)架构。基于NUMA架构的芯片通常包含具有多个运算单元的处理器和多个存储单元。其中,多个运算单元通常划分为多个运算单元组,每个运算单元组分配有至少一个存储单元,一个运算单元组及其对应的存储单元构成一个节点。这样,一个节点中的运算单元所需要数据的读写都可以通过本节点中的存储单元实现。

在芯片运行过程中,需要将待执行的任务分配到某一节点中执行,具体的分配过程为:先确定执行该任务所需的内存大小,然后根据各节点对应的存储单元,确定内存剩余空间满足该内存大小的目标节点。例如,可以将内存剩余空间最大的节点作为目标节点,或者,可以在内存剩余空间大于该内存大小的节点中,随机选择一个节点作为目标节点。然后,将该任务分配至目标节点进行执行。

然而,上述确定出的目标节点可能并不适合执行该任务,从而影响任务执行的效率。

发明内容

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

第一方面,提供了一种任务分配方法,所述方法包括:

获取待执行的目标任务,并确定所述目标任务的任务属性,所述任务属性包括执行所述目标任务所需的目标内存空间和所需的运算单元的目标数目;

在各节点中,确定内存剩余空间大于或等于所述目标内存空间的第一节点,得到第一节点集合;

根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合;

在所述第一节点集合和所述第二节点集合中,确定目标节点,并通过所述目标节点执行所述目标任务。

作为一种可选的实施方式,所述在所述第一节点集合和所述第二节点集合中,确定目标节点,包括:

如果所述第一节点集合和所述第二节点集合中存在共同包含的候选节点,则在所述候选节点中确定目标节点。

作为一种可选的实施方式,所述在所述候选节点中确定目标节点,包括:

如果所述候选节点的数目为一个,则将所述候选节点作为目标节点;

如果所述候选节点的数目为多个,则在多个所述候选节点中,确定满足预设匹配条件的匹配节点,并将所述匹配节点作为目标节点。

作为一种可选的实施方式,所述根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合,包括:

针对每个节点,判断该节点包含的运算单元执行的任务中,是否存在所需的运算单元的数目与所述目标数目相同的任务;

针对每个节点,判断该节点中空闲的运算单元的数目是否大于或等于所述目标数目;

如果该节点包含的运算单元执行的任务中,存在所需的运算单元的数目与所述目标数目相同的任务,或者该节点中空闲的运算单元的数目大于或等于所述目标数目,则将该节点确定为第二节点;

将确定出的第二节点构成第二节点集合。

作为一种可选的实施方式,所述在所述第一节点集合和所述第二节点集合中,确定目标节点,包括:

如果所述第一节点集合和所述第二节点集合中不存在共同包含的候选节点,则在所述第一节点集合和所述第二节点集合中,确定节点组合;其中,所述节点组合包括一个第一节点和一个第二节点;

确定每个节点组合对应的跨节点访存延时;

在跨节点访存延时最小的候选节点组合中,确定目标节点组合,并将所述目标节点组合包含的第一节点和第二节点作为目标节点。

作为一种可选的实施方式,所述在跨节点访存延时最小的候选节点组合中,确定目标节点组合,包括:

如果所述候选节点组合的数目为一个,则将所述候选节点组合确定为目标节点组合;

如果所述候选节点组合的数目为多个,则在多个所述候选节点组合包含的节点中,确定满足预设匹配条件的匹配节点,并将所述匹配节点所属的候选节点组合,确定为目标节点组合。

作为一种可选的实施方式,所述通过所述目标节点执行所述目标任务,包括:

将所述目标任务的任务数据拷贝至所述目标节点组包含的第一节点的存储单元中,并将所述目标任务分配至所述目标节点组包含的第二节点。

作为一种可选的实施方式,所述确定满足预设匹配条件的匹配节点,包括:

将存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

作为一种可选的实施方式,所述确定满足预设匹配条件的匹配节点,包括:

如果存在包含所述目标数目个空闲的运算单元的第二节点,则将存在包含所述目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含所述目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,所述目标运算单元为执行的任务所需的运算单元的数目为所述目标数目的运算单元。

作为一种可选的实施方式,所述任务属性还包括所述目标任务的任务类型,所述任务类型包括访存密集型和计算密集型;所述确定满足预设匹配条件的匹配节点,包括:

如果所述目标任务的任务类型为访存密集型,则确定存储单元的访存带宽使用率最低的第一节点,作为匹配节点;

如果所述目标任务的任务类型为计算密集型,则判断是否存在包含所述目标数目个空闲的运算单元的第二节点;

如果存在包含所述目标数目个空闲的运算单元的第二节点,则将存在包含所述目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含所述目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,所述目标运算单元为执行的任务所需的运算单元的数目为所述目标数目的运算单元。

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

如果所述目标任务的数目为多个,则通过多级流水方式对所述目标任务进行任务分配处理、任务数据拷贝处理和任务执行处理。

第二方面,提供了一种任务分配方法,所述方法包括:

第一确定模块,用于获取待执行的目标任务,并确定所述目标任务的任务属性,所述任务属性包括执行所述目标任务所需的目标内存空间和所需的运算单元的目标数目;

第二确定模块,用于在各节点中,确定内存剩余空间大于或等于所述目标内存空间的第一节点,得到第一节点集合;

第三确定模块,用于根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合;

第四确定模块,用于在所述第一节点集合和所述第二节点集合中,确定目标节点,并通过所述目标节点执行所述目标任务。

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

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

本申请实施例提供了一种任务分配方法、装置、计算机设备及可读存储介质。处理器获取待执行的目标任务,并确定目标任务的任务属性。其中,任务属性包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目。然后,处理器在各节点中,确定内存剩余空间大于或等于目标内存空间的第一节点,得到第一节点集合,并根据目标数目,在各节点中,确定与目标任务相匹配的第二节点,得到第二节点集合。之后,处理器在第一节点集合和第二节点集合中,确定目标节点,并通过目标节点执行目标任务。本方案中,处理器根据执行目标任务所需的目标内存空间和所需的运算单元的目标数目,来确定用于执行目标任务的目标节点,与传统技术仅根据内存剩余空间确定节点的方式相比,提高了确定出的节点与目标任务的匹配度,从而提高了任务的执行效率。

附图说明

图1为本申请实施例提供的一种NUMA架构的智能处理器的示意图;

图2为本申请实施例提供的一种任务分配的方法的流程示意图;

图3为本申请实施例提供的一种多级流水处理的示意图;

图4为本申请实施例提供的一种任务分配的装置的结构示意图;

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

具体实施方式

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

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

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

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

本申请实施例提供了一种任务分配方法,该方法可以应用于一芯片中,该芯片可以包括至少一个处理器,可选地,该芯片可以是具有异构多处理器的芯片,该芯片可以包含采用NUMA架构的智能处理器和通用处理器,该通用处理器可以是CPU(central processingunit,中央处理器),该智能处理器可以是加速器,或者IPU(Intelligent ProcessingUnit,智能处理单元),或者GPU(Graphics Processing Unit,图形单元),也可以为其他类型的智能处理器,本申请实施例不作限定。具体的,该方法可以应用于上述芯片中,该芯片中的CPU(central processing unit,中央处理器)可以执行上述的任务分配方法,以将多个任务调度至智能处理器上进行处理。当然,在其他实施例中,该芯片的智能处理器也可以执行上述的任务调度方法。本申请实施例的任务分配方法的具体执行过程可参见后文的描述。

可选地,该NUMA架构的智能处理器可以包含具有多个运算单元和多个存储单元。多个运算单元通常划分为多个运算单元组,每个运算单元组分配有至少一个存储单元,一个运算单元组及其对应的存储单元构成一个节点。一个节点中的运算单元所需要数据的读写都可以通过本节点中的存储单元实现,不同节点之间通过通信接口实现数据的读写。

图1为本申请实施例提供的一种NUMA架构的智能处理器的示意图。如图1所示,该智能处理器包含具有16个运算单元的处理器和4个存储单元,该芯片中划分出4个节点,每个节点包含4个运算单元和1个存储单元。图1仅以示意的方式提供了一种芯片的示意图,在其他可能实现的方式中,各个节点还可以包含四个以上的运算单元和1个存储单元,该存储单元可以包括多个子存储单元。例如,各个节点可以包括四个子节点,即每个节点可以包括16个运算单元。每个子节点包含四个运算单元和1个子存储单元,四个子节点的排布方式可以按照四个节点的方式排布。进一步地,上述任务分配方法可以在单个节点的各个子节点之间执行,其执行过程具体可参见下文关于任务分配方法的描述。

应当清楚的是,本申请实施例仅以举例方式说明,并不对芯片中运算单元的数量做具体限定。

本申请实施例中,处理器在获取到待执行的目标任务后,先确定目标任务的任务属性。其中,任务属性包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目。然后,基于目标任务的任务属性,处理器在各节点中确定用于执行目标任务的目标节点,进而通过目标节点执行目标任务。与传统技术仅根据内存剩余空间确定节点的方式相比,本申请提高了确定出的节点与目标任务的匹配度,从而提高了任务的执行效率。

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

步骤201,获取待执行的目标任务,并确定目标任务的任务属性。

在实施中,当处理器需要为某一待执行的任务(即目标任务)分配执行该目标任务的节点时,处理器可以获取目标任务的任务属性。其中,任务属性可以包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目。例如,目标任务的任务属性中,目标内存空间为2MB(表示该目标任务的任务数据需要占用存储单元中2MB的内容空间)目标数目为2(表示需要2个运算单元并行执行该目标任务)。可选地,目标任务所需的运算单元的目标数目可以通过任务标识符进行表示,该任务标识符可以是Block任务或Union任务等等,此处不做具体限定。当该任务标识符为Union任务时,则处理器可以根据Union的值确定运算单元的目标数目。例如,当Union=1时,则表明运行该目标任务需要一个节点中的四个运算单元。当Union=2时,则表明运行该目标任务需要两个节点中的八个运算单元。当Union=3时,则表明运行该目标任务需要三个节点中的十二个运算单元。当Union=4时,则表明运行该目标任务需要四个节点中的十六个运算单元。当该任务标识符为Block任务时,则表明运行该目标任务需要1个运算单元。

步骤202,在各节点中,确定内存剩余空间大于或等于目标内存空间的第一节点,得到第一节点集合。

在实施中,处理器可以实时监控各存储单元的剩余存储空间,从而确定各节点的剩余存储空间。例如,一个节点可以包含一个存储单元,则该存储单元的剩余存储空间即为该节点的剩余存储空间。又如,一个节点也可以包含多个存储单元,则多个存储单元的剩余存储空间的和值即为该节点的剩余存储空间。处理器得到该目标任务的任务数据所需的目标内存空间后,可以分别将每个节点的剩余存储空间与目标内存空间进行对比,如果该节点的内存剩余空间大于或等于目标内存空间,则说明该节点的存储单元可以存储该目标任务的任务数据,处理器可以判定该节点为第一节点。如果该节点的内存剩余空间小于目标内存空间,则说明该节点的存储单元不能存储该目标任务的任务数据,该处理器可以判定该节点不是第一节点。这样,处理器可以得到第一节点集合。

可以理解的是,第一节点集合包含内存剩余空间大于或等于目标内存空间的全部节点。例如,目标内存空间为5MB,节点1中的剩余存储空间为10MB,节点2中的剩余存储空间为1MB,节点3中的剩余存储空间为3MB,节点4中的剩余存储空间为7MB,则处理器可以确定节点1和节点4为第一节点。

步骤203,根据目标数目,在各节点中,确定与目标任务相匹配的第二节点,得到第二节点集合。

在实施中,处理器确定出目标数目后,可以在各节点中,确定能够提供目标数目个用于执行该目标任务的运算单元的节点,作为与目标任务相匹配的第二节点,从而得到第二节点集合。可选的,处理器根据目标数目,在各节点中,确定与目标任务相匹配的第二节点的处理过程如下。

步骤一、针对每个节点,判断该节点包含的运算单元执行的任务中,是否存在所需的运算单元的数目与目标数目相同的任务。

在实施中,当某一运算单元被分配执行某一任务后,该运算单元仅可以执行所需的运算单元的数目与该任务所需的运算单元的数目相同的任务。基于上述原理,针对每个节点,处理器可以判断该节点中各运算单元执行的任务中,是否存在所需的运算单元的数目与目标数目相同的任务。

步骤二、针对每个节点,判断该节点中空闲的运算单元的数目是否大于或等于目标数目。

在实施中,处理器还可以通过目标数目个空闲的运算单元执行该目标任务。因此,针对每个节点,处理器可以判断该节点中包含的空闲的运算单元(即当前未执行任务、且不存在等待执行的任务的运算单元)的数目是否大于或等于目标数目。

步骤三、如果该节点包含的运算单元执行的任务中,存在所需的运算单元的数目与目标数目相同的任务,或者该节点中空闲的运算单元的数目大于或等于目标数目,则将该节点确定为第二节点。

在实施中,针对每个节点,如果该节点包含的运算单元执行的任务中,存在所需的运算单元的数目与目标数目相同的任务,或者,该节点中空闲的运算单元的数目大于或等于目标数目,则说明该节点可以执行该目标任务,相应的,该处理器可以判定该节点为第二节点。如果该节点包含的运算单元执行的任务中,不存在所需的运算单元的数目与目标数目相同的任务,并且,该节点中空闲的运算单元的数目小于目标数目,则说明该节点无法执行该目标任务,相应的,该处理器可以判定该节点不是第二节点。

例如,目标数目为3,节点1中空闲的运算单元的数目为1,运算单元1上执行的任务所需的运算单元的数目为1,运算单元2至运算单元4上执行的任务所需的运算单元的数目为3,节点2中空闲的运算单元的数目为0,运算单元5至运算单元8上执行的任务所需的运算单元的数目为2,节点3中空闲的运算单元的数目为3,运算单元9至运算单元12上执行的任务所需的运算单元的数目为1,节点4中空闲的运算单元的数目为2,运算单元13至运算单元16上执行的任务所需的运算单元的数目为2,则处理器可以确定节点1和节点3为第二节点。

步骤四、将确定出的第二节点构成第二节点集合。

在实施中,基于上述步骤一至步骤三的处理,处理器可以确定出一个或多个第二节点,从而可以将确定出的第二节点构成第二节点集合。承接上例,可以将确定出来的节点1和节点3构成第二节点集合。

其中,上述步骤一和步骤二的处理过程不区分先后顺序。

步骤204,在第一节点集合和第二节点集合中,确定目标节点,并通过目标节点执行目标任务。

在实施中,处理器得到第一节点集合和第二节点集合后,可以在第一节点集合和第二节点集合中,确定目标节点。然后,处理器可以通过目标节点执行目标任务。其中,上述步骤202和步骤203的处理过程可以不区分先后顺序。可选的,针对不同的情况,处理器确定出的目标节点的结果也不同,具体如情况1和情况2。

情况1、如果第一节点集合和第二节点集合中存在共同包含的候选节点,则在候选节点中确定目标节点。

在实施中,处理器得到第一节点集合和第二节点集合后,可以进一步判断第一节点集合和第二节点集合中是否存在共同包含的节点(即候选节点)。如果第一节点集合和第二节点集合中存在共同包含的候选节点,则说明该目标任务可以在一个节点中完成处理,相应的,处理器可以在候选节点中确定目标节点。针对候选节点数目的不同,处理器在在候选节点中确定出的目标节点结果也不同。具体如情况11和情况12。

情况11,如果候选节点的数目为一个,则将候选节点作为目标节点。

在实施中,如果候选节点的数目为一个,则处理器可以直接将该候选节点作为目标节点。

情况12,如果候选节点的数目为多个,则在多个候选节点中,确定满足预设匹配条件的匹配节点,并将匹配节点作为目标节点。

在实施中,如果候选节点的数目为多个,则处理器可以在多个候选节点中,将满足预设匹配条件的节点(即匹配节点),作为目标节点。其中,处理器确定匹配节点的过程后续会进行详细说明。

可选的,针对情况1,在确定目标节点之后,处理器可以通过目标节点执行目标任务,其执行过程为:处理器将目标任务的任务数据拷贝至目标节点的存储单元中,目标节点中用于执行该目标任务的运算单元可以从相应的存储单元中获取目标任务的任务数据,并根据该目标任务的任务数据执行该目标任务,获得任务的执行结果。进一步地,目标节点中用于执行该目标任务的运算单元还可以将任务的执行结果存储至目标节点的存储单元中。可选地,上述处理器对目标任务的执行过程可以是对语音数据、图像数据或文本等自然语言数据的处理过程,此处不做具体限定。

在实施中,基于情况1的处理过程,处理器可以确定出唯一一个目标节点。相应的,处理器可以将目标任务的任务数据拷贝至目标节点的存储单元中,并根据目标数目,在目标节点中确定用于执行目标任务的目标数目个运算单元。

情况2、如果第一节点集合和第二节点集合中不存在共同包含的候选节点,则处理器在第一节点集合和第二节点集合中,确定节点组合。其中,节点组合包括一个第一节点和一个第二节点。然后,处理器确定每个节点组合对应的跨节点访存延时。之后,处理器在跨节点访存延时最小的候选节点组合中,确定目标节点组合,并将目标节点组合包含的第一节点和第二节点作为目标节点。

在实施中,如果第一节点集合和第二节点集合中不存在共同包含的候选节点,则说明处理器需要选择两个节点分别用于存储该目标任务的任务数据和执行该目标任务。相应的,处理器可以将第一节点集合中的任一第一节点与第二节点集合中的任一第二点节点进行组合,得到多个节点组合。其中,每个节点组合包含一个第一节点和一个第二节点。这样,处理器可以确定出由第一节点集合和第二节点集合构成的全部节点组合。例如,第一节点集合包含2个节点,第二节点集合包含3个节点,则处理器可以得到的6个节点组合。

可选的,处理器中可以预先存储有各节点之间的跨节点访存延时,针对每个节点组合,处理器可以查询该节点组合包含的两个节点之间的跨节点访存延时,从而得到该节点组合对应的跨节点访存延时。然后,处理器可以在各节点组合中,确定跨节点访存延时最小的节点组合(即候选节点组合)。之后,处理器可以在候选节点组合中确定目标节点组合,并将目标节点组合包含的第一节点和第二节点作为目标节点。针对候选节点组合数目的不同,处理器在候选节点组合中确定出的目标节点组合结果也不同,具体如情况21和情况22。

情况21,如果候选节点组合的数目为一个,则将候选节点组合确定为目标节点组合。

在实施中,如果候选节点组合的数目为一个,则处理器可以直接将该候选节点组合作为目标节点组合。

情况22,如果候选节点组合的数目为多个,则在多个候选节点组合包含的节点中,确定满足预设匹配条件的匹配节点,并将匹配节点所属的候选节点组合,确定为目标节点组合。

在实施中,如果候选节点组合的数目为多个,则针对候选节点组合包含的每个节点,处理器可以判断该节点与目标任务是否满足预设匹配条件。如果该节点与目标任务满足预设匹配条件,则处理器可以判定该候选节点为匹配节点,并将该匹配节点所属的候选节点组合,确定为目标节点组合。如果该节点与目标任务不满足预设匹配条件,则处理器判定该节点所属的候选节点组合不是目标节点组合。其中,处理器确定匹配节点的过程后续会进行详细说明。

可选的,针对情况2,处理器可以在确定目标节点之后,通过目标节点执行目标任务的执行过程为:将目标任务的任务数据拷贝至目标节点组包含的第一节点的存储单元中,目标节点组合包含的第二节点中用于执行该目标任务的运算单元可以从第一节点的存储单元中获取目标任务的任务数据,并根据该目标任务的任务数据执行该目标任务,获得任务的执行结果。进一步地,目标节点组合的第二节点中用于执行该目标任务的运算单元还可以将任务的执行结果存储至第一节点的存储单元中。可选地,上述处理器对目标任务的执行过程可以是对语音数据、图像数据或文本等自然语言数据的处理过程,此处不做具体限定。

在实施中,基于情况2的处理过程,处理器可以确定出一个目标节点组合,其中,目标节点组合中的第一节点用于存储目标任务的任务数据,目标节点组合中的第二节点用于执行目标任务。因此,处理器可以将目标任务的任务数据拷贝至目标节点组的第一节点的存储单元中,并根据目标数目,在目标节点组合的第二节点中,确定用于执行目标任务的目标数目个运算单元。后续,第二节点中的运算单元在执行目标任务的过程中,可以跨节点访问该第一节点的存储单元,以读写该目标任务的任务数据。

作为一种可选的实施方式,基于上述情况12和情况22,本申请实施例提供了几种确定满足预设匹配条件的匹配节点的方式,具体如下。

方式一、将存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

在实施中,处理器可以获取第一节点中的存储单元的访存带宽使用率,其中,访存带宽使用率为该节点中已使用的访存带宽与该节点的全部访存带宽的比值。然后,处理器可以在第一节点中将访存带宽使用率最低的第一节点,作为匹配节点。

其中,对于情况12,处理器可以首先在各候选节点中确定第一节点。然后,处理器可以在确定出的第一节点中,进一步确定匹配节点。对于情况22,处理器可以首先在各候选节点组合包含的节点中确定第一节点。然后,处理器可以在确定出的第一节点中,进一步确定匹配节点。

方式二、如果存在包含目标数目个空闲的运算单元的第二节点,则将存在包含目标数目个空闲的运算单元的第二节点,作为匹配节点;如果不存在包含目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,目标运算单元为执行的任务所需的运算单元的数目为目标数目的运算单元。

在实施中,处理器可以判断各第二节点中是否存在包含目标数目个空闲的运算单元的第二节点。如果各第二节点中存在包含目标数目个空闲的运算单元的第二节点,则处理器可以将包含目标数目个空闲的运算单元的第二节点,确定为匹配节点。如果各第二节点中不存在包含目标数目个空闲的运算单元的第二节点,则针对各第二节点包含的每个运算单元,处理器可以获取该运算单元中待执行的任务的总时长、以及该运算单元中待执行的任务所需的运算单元的数目。然后,处理器可以在各运算单元中,确定待执行的任务所需的运算单元的数目为目标数目的目标运算单元。之后,处理器可以在目标运算单元中,确定待执行的任务的总时长最小的目标运算单元,并将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点。

其中,对于情况12,处理器可以首先在各候选节点中确定第二节点。然后,处理器可以在确定出的第二节点中,进一步确定匹配节点。对于情况22,处理器可以首先在各候选节点组合包含的节点中确定第二节点。然后,处理器可以在确定出的第二节点中,进一步确定匹配节点。

可选的,该目标任务的任务属性还可以包括目标任务的任务类型。其中,该任务类型可以包括访存密集型和计算密集型,还可以包括其他类型,本申请实施例不作限定。相应的,处理器可以根据目标任务的任务类型,确定满足预设匹配条件的匹配节点。具体如下。

方式三、如果目标任务的任务类型为访存密集型,则确定存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

在实施中,如果目标任务的任务类型为访存密集型,则说明目标任务通常需要频繁读写数据。基于此,处理器可以确定存储单元的访存带宽使用率最低的第一节点,作为匹配节点。方式三的具体处理过程可以参见上述方式一的说明,此处不再赘述。

方式四、如果目标任务的任务类型为计算密集型,则判断是否存在包含目标数目个空闲的运算单元的第二节点;如果存在包含目标数目个空闲的运算单元的第二节点,则将存在包含目标数目个空闲的运算单元的第二节点,作为匹配节点;如果不存在包含目标数目个空闲的运算单元的第二节点,则将包含目标运算单元的第二节点,作为匹配节点。其中,目标运算单元为待执行的任务的总时长最小、且执行的任务所需的运算单元的数目为目标数目的运算单元。

在实施中,如果目标任务的任务类型为计算密集型,则说明目标任务通常需要消耗较多的运算资源。基于此,处理器可以判断各第二节点中是否存在包含目标数目个空闲的运算单元的第二节点。如果各第二节点中存在包含目标数目个空闲的运算单元的第二节点,则处理器可以将包含目标数目个空闲的运算单元的第二节点,确定为匹配节点。如果各第二节点中不存在包含目标数目个空闲的运算单元的第二节点,则针对各第二节点包含的每个运算单元,处理器可以获取该运算单元中待执行的任务的总时长、以及该运算单元中待执行的任务所需的运算单元的数目。然后,处理器可以在各运算单元中,确定待执行的任务所需的运算单元的数目为目标数目的目标运算单元。之后,处理器可以在目标运算单元中,确定待执行的任务的总时长最小的目标运算单元,并将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点。方式四的具体处理过程可以参见上述方式二的说明,此处不再赘述。

方式五、处理器根据访存带宽使用率和运算单元,确定满足预设匹配条件的匹配节点。

在实施中,对于情况12,针对每个候选节点,处理器可以根据该候选节点中存储单元的访存带宽使用率,确定该候选节点的第一得分。然后,处理器可以根据该候选节点中空闲的运算单元的数目是否大于或等于目标数目以及目标运算单元上等待执行的任务的数目,确定该候选节点的第二得分。之后,处理器可以根据访存带宽使用率对应的权重、运算单元对应的权重、第一得分和第二得分,确定加权得分,并将加权得分最高的候选节点确定为匹配节点。对于情况22,针对每个节点组合,处理器可以根据该节点组合中第一节点的存储单元的访存带宽使用率,确定该节点组合的第一得分。然后,处理器可以根据该节点组合中第二节点的空闲的运算单元的数目是否大于或等于目标数目以及目标运算单元上等待执行的任务的数目,确定该节点组合的第二得分。之后,处理器可以根据访存带宽使用率对应的权重、运算单元对应的权重、第一得分和第二得分,确定加权得分,并将加权得分最高的节点组合确定目标节点组合。

作为一种可选的实施方式,如果目标任务的数目为多个,则处理器可以通过多级流水方式对目标任务进行任务分配处理、任务数据拷贝处理和任务执行处理。

在实施中,基于本申请实施例提供的任务分配方法,目标任务的执行过程大致可以分为三个阶段:内存和运算单元结合的任务分配处理、任务数据拷贝处理和任务执行处理。由于任务在设备端运行时,需要等待任务数据从主机端拷贝到设备端。因此,如果目标任务的数目为多个,为了提高各目标任务的执行效率,处理器可以通过多级流水方式对目标任务进行任务分配处理、任务数据拷贝处理和任务执行处理。也即,对于后一个目标任务,处理器可以在前一个任务进行任务数据拷贝处理时,开始进行后一个任务的任务分配处理,在前一个任务的任务执行处理时,同时进行后一个任务的任务数据拷贝处理,以此类推。例如,如图3所示,处理器在第一任务进行任务数据拷贝处理时,开始进行第二任务的任务分配处理,在第一任务进行任务执行处理时,开始进行第二任务的任务数据拷贝处理。之后,处理器在第二任务进行任务数据拷贝处理时,开始进行第三任务的任务分配处理,在第二任务进行任务执行处理时,开始进行第三任务的任务数据拷贝处理,以此类推。

本申请实施例提供了一种任务分配方法。处理器获取待执行的目标任务,并确定目标任务的任务属性。其中,任务属性包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目。然后,处理器在各节点中,确定内存剩余空间大于或等于目标内存空间的第一节点,得到第一节点集合,并根据目标数目,在各节点中,确定与目标任务相匹配的第二节点,得到第二节点集合。之后,处理器在第一节点集合和第二节点集合中,确定目标节点,并通过目标节点执行目标任务。本方案中,根据执行目标任务所需的目标内存空间和所需的运算单元的目标数目,来确定用于执行目标任务的目标节点,与传统技术仅根据内存剩余空间确定节点的方式相比,提高了确定出的节点与目标任务的匹配度,从而提高了任务的执行效率。

本申请实施例还提供了一种任务分配装置,如图4所示,该装置包括:

第一确定模块410,用于获取待执行的目标任务,并确定目标任务的任务属性,任务属性包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目;

第二确定模块420,用于在各节点中,确定内存剩余空间大于或等于目标内存空间的第一节点,得到第一节点集合;

第三确定模块430,用于根据目标数目,在各节点中,确定与目标任务相匹配的第二节点,得到第二节点集合;

第四确定模块440,用于在第一节点集合和第二节点集合中,确定目标节点,并通过目标节点执行目标任务。

作为一种可选的实施方式,第四确定模块440,具体用于:

如果第一节点集合和第二节点集合中存在共同包含的候选节点,则在候选节点中确定目标节点。

作为一种可选的实施方式,第四确定模块440,具体用于:

如果候选节点的数目为一个,则将候选节点作为目标节点;

如果候选节点的数目为多个,则在多个候选节点中,确定满足预设匹配条件的匹配节点,并将所述匹配节点作为目标节点。

作为一种可选的实施方式,第三确定模块430,具体用于:

针对每个节点,判断该节点包含的运算单元执行的任务中,是否存在所需的运算单元的数目与目标数目相同的任务;

针对每个节点,判断该节点中空闲的运算单元的数目是否大于或等于目标数目;

如果该节点包含的运算单元执行的任务中,存在所需的运算单元的数目与目标数目相同的任务,或者该节点中空闲的运算单元的数目大于或等于目标数目,则将该节点确定为第二节点;

将确定出的第二节点构成第二节点集合。

作为一种可选的实施方式,第四确定模块440,具体用于:

如果第一节点集合和第二节点集合中不存在共同包含的候选节点,则在第一节点集合和第二节点集合中,确定节点组合;其中,节点组合包括一个第一节点和一个第二节点;

确定每个节点组合对应的跨节点访存延时;

在跨节点访存延时最小的候选节点组合中,确定目标节点组合,并将目标节点组合包含的第一节点和第二节点作为目标节点。

作为一种可选的实施方式,第四确定模块440,具体用于:

如果候选节点组合的数目为一个,则将候选节点组合确定为目标节点组合;

如果候选节点组合的数目为多个,则在多个候选节点组合包含的节点中,确定满足预设匹配条件的匹配节点,并将匹配节点所属的候选节点组合,确定为目标节点组合。

作为一种可选的实施方式,第四确定模块440,具体用于:

将目标任务的任务数据拷贝至目标节点组包含的第一节点的存储单元中,并将目标任务分配至目标节点组包含的第二节点。

作为一种可选的实施方式,第四确定模块440,具体用于:

将存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

作为一种可选的实施方式,第四确定模块440,具体用于:

如果存在包含目标数目个空闲的运算单元的第二节点,则将存在包含目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,目标运算单元为执行的任务所需的运算单元的数目为目标数目的运算单元。

作为一种可选的实施方式,任务属性还包括目标任务的任务类型,任务类型包括访存密集型和计算密集型;第四确定模块440,具体用于:

如果目标任务的任务类型为访存密集型,则确定存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

如果目标任务的任务类型为计算密集型,则判断是否存在包含目标数目个空闲的运算单元的第二节点;

如果存在包含目标数目个空闲的运算单元的第二节点,则将存在包含目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,目标运算单元为执行的任务所需的运算单元的数目为目标数目的运算单元。

作为一种可选的实施方式,装置还包括:

处理模块,用于如果目标任务的数目为多个,则通过多级流水方式对目标任务进行任务分配处理、任务数据拷贝处理和任务执行处理。

本申请实施例提供了一种任务分配装置。CPU获取待执行的目标任务,并确定目标任务的任务属性。其中,任务属性包括执行目标任务所需的目标内存空间和所需的运算单元的目标数目。然后,CPU在各节点中,确定内存剩余空间大于或等于目标内存空间的第一节点,得到第一节点集合,并根据目标数目,在各节点中,确定与目标任务相匹配的第二节点,得到第二节点集合。之后,CPU在第一节点集合和第二节点集合中,确定目标节点,并通过目标节点执行目标任务。本方案中,根据执行目标任务所需的目标内存空间和所需的运算单元的目标数目,来确定用于执行目标任务的目标节点,与传统技术仅根据内存剩余空间确定节点的方式相比,提高了确定出的节点与目标任务的匹配度,从而提高了任务的执行效率。

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

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

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

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

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

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

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic RandomAccess Memory)、静态随机存取存储器SRAM(Static Random-Access Memory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。

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

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

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

条款A1,对应权1;条款A2,对应权2;条款A3,对应权3;条款A4,对应权4;条款A5,对应权5;条款A6,对应权6;条款A7,对应权7;条款A8,对应权8;条款A9,对应权9;条款A10,对应权10;条款A11,对应权11;条款A12,对应权12;条款A13,对应权13;条款A14,对应权14。

例如,条款A1、一种任务分配方法,所述方法包括:

获取待执行的目标任务,并确定所述目标任务的任务属性,所述任务属性包括执行所述目标任务所需的目标内存空间和所需的运算单元的目标数目;

在各节点中,确定内存剩余空间大于或等于所述目标内存空间的第一节点,得到第一节点集合;

根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合;

在所述第一节点集合和所述第二节点集合中,确定目标节点,并通过所述目标节点执行所述目标任务。

条款A2、根据条款A1所述的方法,所述在所述第一节点集合和所述第二节点集合中,确定目标节点,包括:

如果所述第一节点集合和所述第二节点集合中存在共同包含的候选节点,则在所述候选节点中确定目标节点。

条款A3、根据条款A2所述的方法,所述在所述候选节点中确定目标节点,包括:

如果所述候选节点的数目为一个,则将所述候选节点作为目标节点;

如果所述候选节点的数目为多个,则在多个所述候选节点中,确定满足预设匹配条件的匹配节点,并将所述匹配节点作为目标节点。

条款A4、根据条款A1所述的方法,所述根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合,包括:

针对每个节点,判断该节点包含的运算单元执行的任务中,是否存在所需的运算单元的数目与所述目标数目相同的任务;

针对每个节点,判断该节点中空闲的运算单元的数目是否大于或等于所述目标数目;

如果该节点包含的运算单元执行的任务中,存在所需的运算单元的数目与所述目标数目相同的任务,或者该节点中空闲的运算单元的数目大于或等于所述目标数目,则将该节点确定为第二节点;

将确定出的第二节点构成第二节点集合。

条款A5、根据条款A1所述的方法,所述在所述第一节点集合和所述第二节点集合中,确定目标节点,包括:

如果所述第一节点集合和所述第二节点集合中不存在共同包含的候选节点,则在所述第一节点集合和所述第二节点集合中,确定节点组合;其中,所述节点组合包括一个第一节点和一个第二节点;

确定每个节点组合对应的跨节点访存延时;

在跨节点访存延时最小的候选节点组合中,确定目标节点组合,并将所述目标节点组合包含的第一节点和第二节点作为目标节点。

条款A6、根据条款A5所述的方法,所述在跨节点访存延时最小的候选节点组合中,确定目标节点组合,包括:

如果所述候选节点组合的数目为一个,则将所述候选节点组合确定为目标节点组合;

如果所述候选节点组合的数目为多个,则在多个所述候选节点组合包含的节点中,确定满足预设匹配条件的匹配节点,并将所述匹配节点所属的候选节点组合,确定为目标节点组合。

条款A7、根据条款A5所述的方法,所述通过所述目标节点执行所述目标任务,包括:

将所述目标任务的任务数据拷贝至所述目标节点组包含的第一节点的存储单元中,并将所述目标任务分配至所述目标节点组包含的第二节点。

条款A8、根据条款A3或条款A6所述的方法,所述确定满足预设匹配条件的匹配节点,包括:

将存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

条款A9、根据条款A3或6所述的方法,所述确定满足预设匹配条件的匹配节点,包括:

如果存在包含所述目标数目个空闲的运算单元的第二节点,则将存在包含所述目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含所述目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,所述目标运算单元为执行的任务所需的运算单元的数目为所述目标数目的运算单元。

条款A10、根据条款A3或条款A6所述的方法,所述任务属性还包括所述目标任务的任务类型,所述任务类型包括访存密集型和计算密集型;所述确定满足预设匹配条件的匹配节点,包括:

如果所述目标任务的任务类型为访存密集型,则确定存储单元的访存带宽使用率最低的第一节点,作为匹配节点。

如果所述目标任务的任务类型为计算密集型,则判断是否存在包含所述目标数目个空闲的运算单元的第二节点;

如果存在包含所述目标数目个空闲的运算单元的第二节点,则将存在包含所述目标数目个空闲的运算单元的第二节点,作为匹配节点;

如果不存在包含所述目标数目个空闲的运算单元的第二节点,则将包含待执行的任务的总时长最小的目标运算单元的第二节点,作为匹配节点,所述目标运算单元为执行的任务所需的运算单元的数目为所述目标数目的运算单元。

条款A11、根据条款A1所述的方法,所述方法还包括:

如果所述目标任务的数目为多个,则通过多级流水方式对所述目标任务进行任务分配处理、任务数据拷贝处理和任务执行处理。

条款A12、一种任务分配方法,所述方法包括:

第一确定模块,用于获取待执行的目标任务,并确定所述目标任务的任务属性,所述任务属性包括执行所述目标任务所需的目标内存空间和所需的运算单元的目标数目;

第二确定模块,用于在各节点中,确定内存剩余空间大于或等于所述目标内存空间的第一节点,得到第一节点集合;

第三确定模块,用于根据所述目标数目,在所述各节点中,确定与所述目标任务相匹配的第二节点,得到第二节点集合;

第四确定模块,用于在所述第一节点集合和所述第二节点集合中,确定目标节点,并通过所述目标节点执行所述目标任务。

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

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

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

相关技术
  • 一种制卡任务的分配方法、一种制卡任务的获取方法、计算机装置及计算机可读存储介质
  • 任务分配方法、装置、计算机可读存储介质及电子设备
技术分类

06120112986592