任务迁移的方法、装置、计算机设备及可读存储介质与流程

文档序号:26003848发布日期:2021-07-23 21:21阅读:65来源:国知局
任务迁移的方法、装置、计算机设备及可读存储介质与流程

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



背景技术:

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

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

然而,上述分配过程中由于亲和性绑定原则的因素,往往会导致任务需要长时间的等待,进而严重影响任务的执行效率。



技术实现要素:

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

第一方面,提供了一种任务迁移的方法,所述方法包括:

当检测到可迁移任务满足预设迁移条件时,根据所述可迁移任务的任务属性,在各节点中确定与所述可迁移任务相匹配的目标节点,所述任务属性包括执行所述可迁移任务所需的运算单元的目标数目;

将所述可迁移任务迁移至所述目标节点,以通过所述目标节点执行所述可迁移任务。

作为一种可选的实施方式,所述根据所述可迁移任务的任务属性,在各节点中确定与所述可迁移任务相匹配的目标节点,包括:

如果各节点中存在包含所述目标数目个空闲的运算单元的候选节点,则在所述候选节点中,将与所述可迁移任务所期望的运算单元所属的节点之间的距离最小的候选节点,确定为目标节点;

如果所述各节点中不存在包含所述目标数目个空闲的运算单元的候选节点,则将包含待执行的任务的总数目最小的第一运算单元的节点,确定为目标节点,所述第一运算单元为执行的任务的任务属性与所述可迁移任务的任务属性相同的运算单元。

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

如果所述可迁移任务所期望的第二运算单元中执行的任务的任务属性与所述可迁移任务的任务属性不相同,则确定所述可迁移任务满足所述预设迁移条件;

如果所述第二运算单元中执行的任务的任务属性与所述可迁移任务的任务属性相同,则判断所述第二运算单元中待执行的任务的总数目是否大于或等于第一预设数目阈值;

如果所述第二运算单元中待执行的任务的总数目大于或等于所述第一预设数目阈值,则确定所述可迁移任务满足所述预设迁移条件。

作为一种可选的实施方式,当检测到可迁移任务满足预设迁移条件时,根据所述可迁移任务的任务属性,在各节点中确定与所述可迁移任务相匹配的目标节点之前,所述方法还包括:

获取各运算单元中期望执行的任务的数目;

如果所述各运算单元中期望执行的任务的数目之间的最大差值大于或等于第二预设数目阈值,则执行所述当检测到可迁移任务满足预设迁移条件时,根据所述可迁移任务的任务属性,在各节点中,确定与所述可迁移任务相匹配的目标节点的步骤。

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

获取待执行的目标任务,并确定所述目标任务的任务类型、任务执行时长、所述目标任务所期望的第三运算单元所属的节点的最小跨节点访存延时和所述第三运算单元中期望执行的任务的数目;

如果所述任务类型为计算密集型,和/或所述任务执行时长大于所述最小跨节点访存延时,和/或所述第三运算单元中期望执行的任务的数目大于或等于第三预设数目阈值,则确定所述目标任务为可迁移任务,并根据预设的亲和性掩码修改规则,修改所述目标任务的亲和性掩码。

作为一种可选的实施方式,所述将所述可迁移任务迁移至所述目标节点之前,所述方法还包括:

如果所述目标节点与所述可迁移任务所期望的运算单元所在的节点不相同,则在所述可迁移任务的使用掩码中,将所述目标节点对应的位置为1,并将所述可迁移任务所期望的运算单元所在的节点对应的位置为0。

作为一种可选的实施方式,所述将所述可迁移任务迁移至所述目标节点之前,所述方法还包括:

如果所述可迁移任务的亲和性掩码和使用掩码中,所述目标节点对应的位均为1,则执行所述将所述可迁移任务迁移至所述目标节点的步骤。

第二方面,提供了一种任务迁移的装置,所述装置包括:

第一确定模块,用于当检测到可迁移任务满足预设迁移条件时,根据所述可迁移任务的任务属性,在各节点中确定与所述可迁移任务相匹配的目标节点,所述任务属性包括执行所述可迁移任务所需的运算单元的目标数目;

迁移模块,用于将所述可迁移任务迁移至所述目标节点,以通过所述目标节点执行所述可迁移任务。

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

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

本申请实施例提供了一种任务迁移的方法、装置、计算机设备及可读存储介质。当cpu检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点。其中,任务属性包括执行可迁移任务所需的运算单元的目标数目。然后,cpu将可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。这样,当可迁移任务所期待的运算单元无法执行该可迁移任务,或者该可迁移任务需要等待较长时间才可以被该可迁移任务所期待的运算单元执行时,cpu可以将该可迁移任务迁移至目标节点,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。

附图说明

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

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

图3为本申请实施例提供的一种任务迁移的装置的结构示意图;

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

具体实施方式

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

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

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

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

本申请实施例提供了一种任务迁移方法,该方法可以应用于一芯片中,该芯片可以包括至少一个处理器,可选地,该芯片可以是具有异构多处理器的芯片,该芯片可以包含采用numa架构智能处理器和通用处理器,该通用处理器可以是cpu(centralprocessingunit,中央处理器),该智能处理器可以是加速器,或者ipu(intelligentprocessingunit,智能处理单元),或者gpu(graphicsprocessingunit,图形单元),也可以为其他类型的智能处理器,本申请实施例不作限定。具体的,该方法可以应用于芯片中,该芯片中的cpu(centralprocessingunit,中央处理器)可以执行上述的任务迁移方法,以将多个任务调度至智能处理器上进行处理。当然,在其他实施例中,该芯片的智能处理器也可以执行上述的任务迁移方法。本申请实施例的任务迁移方法的具体执行过程可参见后文的描述。

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

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

当某一任务被调度至软件队列后,处理器可以根据执行该任务所需的运算单元的数目,在存储该任务的任务数据的存储单元所属的节点中,为该任务分配该任务所期望的运算单元,并将该任务所期望的各运算单元的等待引用计数(即clu_wait_ref)加1。例如,如图1所示,该任务所需的运算单元的数目为2,存储该任务的任务数据的存储单元为存储单元1,则处理器可以在节点1中将运算单元1和运算单元2确定为该任务所期望的运算单元,并将运算单元1和运算单元2的等待引用计数加1。

当处理器确定执行该任务的运算单元后,该任务被调度至硬件队列,并将执行该任务的各运算单元的真正引用计数(即clu_real_ref)加1。例如,如图1所示,处理器确定执行该任务的运算单元为运算单元1和运算单元2后,处理器可以将运算单元1和运算单元2的真正引用计数加1。

当该任务执行完成时,该任务所期望的各运算单元的等待引用计数减1,同时,执行该任务的各运算单元的真正引用计数减1。例如,运算单元1和运算单元2执行完该任务后,处理器可以将运算单元1和运算单元2的等待引用计数和真正引用计数减1。如果该任务所期望的运算单元发生迁移时,该任务所期望的各源运算单元的等待引用计数减1,该任务所期望的各目的运算单元的等待引用计数加1。例如,如图1所示,该任务所期待的运算单元由运算单元1和运算单元2迁移至运算单元3和运算单元4,则处理器将运算单元1和运算单元2的等待引用计数减1,并将运算单元3和运算单元4的等待引用计数加1。

为了便于理解,首先,本申请实施例对本申请提供的一种可迁移任务的确定方法进行介绍,具体处理过程如下。

步骤一,获取待执行的目标任务,并确定目标任务的任务类型、任务执行时长、目标任务所期望的第三运算单元所属的节点的最小跨节点访存延时和第三运算单元中期望执行的任务的数目。

在实施中,当某一任务被调度至软件队列后,处理器需要确定某一任务(即目标任务)是否为可迁移任务。相应的,处理器可以获取该目标任务的任务类型、任务执行时长、该目标任务所期望的第三运算单元所属的节点的最小跨节点访存延时和第三运算单元中期望执行的任务的数目(即第三运算单元的等待引用计数)等。其中,任务类型可以包括访存密集型(即任务中i/o(input/output,输入/输出)指令较多,执行时需要频繁读写存储单元中的数据的任务)和计算密集型(即任务中计算指令较多,执行时需要占用大量运算资源的任务),还可以包括其他任务类型,本申请实施例不作限定。然后,处理器可以判断该目标任务的任务类型是否为计算密集型、该目标任务的任务执行时长是否大于最小跨节点访存延时、以及第三运算单元的等待引用计数是否大于或等于第三预设数目阈值。其中,该第三预设数目阈值可以由技术人员根据经验进行设置。

步骤二,如果任务类型为计算密集型,和/或任务执行时长大于最小跨节点访存延时,和/或第三运算单元中期望执行的任务的数目大于或等于第三预设数目阈值,则确定目标任务为可迁移任务,并根据预设的亲和性掩码修改规则,修改目标任务的亲和性掩码。

在实施中,如果该目标任务的任务类型为计算密集型,和/或该目标任务的任务执行时长大于最小跨节点访存延时,和/或第三运算单元的等待引用计数大于或等于第三预设数目阈值,则说明该目标任务进行迁移后不会对该目标任务的执行效率产生影响、且该目标任务所期望的第三运算单元较为繁忙可能会影响该目标任务的执行效率。因此,处理器可以确定该目标任务为可迁移任务。然后,处理器可以根据预设的亲和性掩码修改规则,修改该目标任务的亲和性掩码。其中,该目标任务的亲和性掩码(affinity)用于表示各节点中可执行该目标任务的节点,亲和性掩码中包括该智能处理器包含的节点的总数目个位,每个位唯一对应一个节点,如果某一位为1,则表示该位对应的节点可以执行该目标任务,如果某一位为0,则表示该位对应的节点不可以执行该目标任务;亲和性掩码修改规则可以由技术人员根据可迁移任务的迁移范围进行设置。

例如,亲和性掩码修改规则为可迁移任务可以迁移至所有的节点,该目标任务的原亲和性掩码为0001,如果该目标任务为可迁移任务,则处理器可以根据亲和性掩码修改规则,将目标任务的亲和性掩码修改为1111。又如,亲和性掩码修改规则为可迁移任务可以迁移至节点3和节点4,该目标任务的原亲和性掩码为0001,如果该目标任务为可迁移任务,则处理器可以根据亲和性掩码修改规则,将目标任务的亲和性掩码修改为1101。

为了便于理解,其次,本申请实施例对本申请提供的一种迁移条件的判断方法进行介绍,具体处理过程如下。

步骤一,如果可迁移任务所期望的第二运算单元中执行的任务的任务属性与可迁移任务的任务属性不相同,则确定可迁移任务满足预设迁移条件。

在实施中,当某一运算单元被分配执行某一任务后,该运算单元仅可以执行任务属性与该任务的任务属性相同的任务。其中,任务属性为执行任务所需的运算单元的数目。基于上述原理,当处理器确定某一任务为可迁移任务后,处理器可以获取该可迁移任务的任务属性和可迁移任务所期望的第二运算单元中执行的任务的任务属性。然后,处理器可以判断第二运算单元中执行的任务的任务属性与可迁移任务的任务属性是否相同。如果第二运算单元中执行的任务的任务属性与可迁移任务的任务属性不相同,则说明该第二运算单元无法执行该可迁移任务,处理器可以确定可迁移任务满足预设迁移条件。这样,后续处理器可以将该可迁移任务迁移至可执行该可迁移任务的其他节点。如果第二运算单元中执行的任务的任务属性与可迁移任务的任务属性相同,则处理器执行步骤二。

步骤二,如果第二运算单元中执行的任务的任务属性与可迁移任务的任务属性相同,则判断第二运算单元中待执行的任务的总数目是否大于或等于第一预设数目阈值。

在实施中,如果第二运算单元中执行的任务的任务属性与可迁移任务的任务属性相同,则说明该第二运算单元可以执行该可迁移任务。然后,处理器可以进一步判断第二运算单元中待执行的任务的总数目(即第二运算单元的真正引用计数)是否大于或等于第一预设数目阈值。其中,第一预设数目阈值可以由技术人员根据经验进行设置。如果第二运算单元中待执行的任务的总数目小于第一预设数目阈值,则说明该可迁移任务无需等待较长时间就可以被第二运算单元执行,处理器可以确定该可迁移任务不满足预设迁移条件。如果第二运算单元中待执行的任务的总数目大于或等于第一预设数目阈值,则处理器执行步骤三。

步骤三,如果第二运算单元中待执行的任务的总数目大于或等于第一预设数目阈值,则确定可迁移任务满足预设迁移条件。

在实施中,如果第二运算单元中待执行的任务的总数目大于或等于第一预设数目阈值,则说明该可迁移任务需要等待较长时间才可以被第二运算单元执行。相应的,处理器可以确定该可迁移任务满足预设迁移条件,这样,该处理器将该可迁移任务迁移至其他节点,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。如果第二运算单元中待执行的任务的总数目小于第一预设数目阈值,则说明该可迁移任务无需等待较长时间就可以被第二运算单元执行。相应的,处理器可以确定该可迁移任务不满足预设迁移条件。

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

步骤201,当检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点。其中,任务属性包括执行可迁移任务所需的运算单元的目标数目。

在实施中,当某一任务被调度至芯片中的软件队列后,处理器可以判断该任务是否为可迁移任务。如果该任务为可迁移任务,则处理器可以进一步检测该可迁移任务是否满足预设迁移条件。当处理器检测到该可迁移任务满足预设迁移条件时,可以根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点。其中,该可迁移任务的任务属性包括执行该可迁移任务所需的运算单元的目标数目。可选地,目标任务所需的运算单元的目标数目可以通过任务标识符进行表示,该任务标识符可以是block任务或union任务等等,此处不做具体限定。当该任务标识符为union任务时,则系统可以根据union的值确定运算单元的目标数目。例如,当union=1时,则表明运行该目标任务需要一个节点中的四个运算单元。当union=2时,则表明运行该目标任务需要两个节点中的八个运算单元。当union=3时,则表明运行该目标任务需要三个节点中的十二个运算单元。当union=4时,则表明运行该目标任务需要四个节点中的十六个运算单元。当该任务标识符为block任务时,则表明运行该目标任务需要1个运算单元。

可选的,处理器根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点的具体处理过程如下。

步骤一,如果各节点中存在包含目标数目个空闲的运算单元的候选节点,则在候选节点中,将与可迁移任务所期望的运算单元所属的节点之间的距离最小的候选节点,确定为目标节点。

在实施中,当处理器检测到该可迁移任务满足预设迁移条件时,可以优先判断各节点中是否存在包含目标数目个空闲的运算单元(即真正引用计数等于0的运算单元)的候选节点。如果存在候选节点,则处理器可以在候选节点中,将与可迁移任务所期望的运算单元所属的节点之间的距离最小的候选节点,确定为目标节点,这样,后续处理器可以将该可迁移任务迁移至该目标节点,通过该目标节点中的空闲的运算单元执行该可迁移任务,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。

例如,该可迁移任务所期待的运算单元所属的节点为节点1,候选节点为节点1和节点2,节点1与节点1和节点2之间的距离分别为0和1,则目标节点为节点1。又如,该可迁移任务所期待的运算单元所属的节点为节点1,候选节点为节点2和节点4,节点1与节点2和节点4之间的距离分别为1和2,则目标节点为节点2。

需要说明的是,如果候选节点中存在多个距离最小的候选节点,则处理器可以按照节点标识由小到大的顺序或由大到小的顺序,在多个距离最小的候选节点中,确定目标节点。或者,候选节点中存在多个距离最小的候选节点时,可以随机从上述多个候选节点中选择其中一个作为目标节点,此处不做具体限定。

步骤二,如果各节点中不存在包含目标数目个空闲的运算单元的候选节点,则将包含待执行的任务的总数目最小的第一运算单元的节点,确定为目标节点。其中,第一运算单元为执行的任务的任务属性与可迁移任务的任务属性相同的运算单元。

在实施中,当某一运算单元被分配执行某一任务后,该运算单元仅可以执行任务属性与该任务的任务属性相同的任务。基于上述原理,如果各节点中不存在包含目标数目个空闲的运算单元的候选节点,则处理器可以进一步在各节点中,确定执行的任务的任务属性与可迁移任务的任务属性相同的第一运算单元。然后,处理器可以在各第一运算单元中确定待执行的任务的总数目最小(即真正引用计数最小)的第一运算单元,并将确定出的待执行的任务的总数目最小的第一运算单元所属的节点,作为目标节点。这样,后续处理器可以将该可迁移任务迁移至该目标节点,通过该目标节点中的目标运算单元执行该可迁移任务,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。例如,执行可迁移任务所需的运算单元的数目为3,节点1中执行的任务所需的运算单元的数目为3的运算单元为运算单元1至运算单元3,且运算单元1至运算单元3中待执行的任务的总数目10,节点2中执行的任务所需的运算单元的数目为3的运算单元为运算单元6至运算单元8,且运算单元6至运算单元8中待执行的任务的总数目15,节点4中执行的任务所需的运算单元的数目为3的运算单元为运算单元13至运算单元15,且运算单元13至运算单元15中待执行的任务的总数目5,则目标节点为运算单元13至运算单元15所属的节点4。

作为一种可选的实施方式,由于任务的迁移会影响其他任务的执行。因此,当处理器检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点之前,处理器可以判断智能处理器中的运算单元是否出现负载不均,具体的处理过程如下。

步骤一,获取各运算单元中期望执行的任务的数目。

在实施中,处理器可以获取各运算单元中期望执行的任务的数目(即各运算单元的等待引用计数)。然后,处理器可以在各运算单元的等待引用计数中确定最大等待引用计数和最小等待引用计数。之后,处理器可以计算最大等待引用计数和最小等待引用计数的差值(即最大差值),并判断该最大差值是否大于或等于第二预设数目阈值。其中,第二预设数目阈值可以由技术人员根据经验进行设置。如果最大差值小于第二预设数目阈值,则说明该智能处理器中的运算单元未出现负载不均,处理器无需进行任务的迁移。如果最大差值大于或等于第二预设数目阈值,则说明该智能处理器中的运算单元负载不均,处理器执行步骤二。

步骤二,如果各运算单元中期望执行的任务的数目之间的最大差值大于或等于第二预设数目阈值,则当检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中,确定与可迁移任务相匹配的目标节点。

在实施中,如果最大差值大于或等于第二预设数目阈值,则说明中的运算单元负载不均,当处理器检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中,确定与可迁移任务相匹配的目标节点。其中,当处理器检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中,确定与可迁移任务相匹配的目标节点的处理过程与步骤201类似,此处不再赘述。

步骤202,将可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。

在实施中,处理器确定出目标节点后,可以将该可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。

作为一种可选的实施方式,处理器将可迁移任务迁移至目标节点之前,处理器还可以修改该可迁移任务的使用掩码,具体处理过程为:如果目标节点与可迁移任务所期望的运算单元所在的节点不相同,则在可迁移任务的使用掩码中,将目标节点对应的位置为1,并将可迁移任务所期望的运算单元所在的节点对应的位置为0。

在实施中,可迁移任务的使用掩码(usage_mask)用于表示各节点中确定执行该可迁移任务的节点,使用掩码中包括该芯片包含的节点的总数目个位,每个位唯一对应一个节点,如果某一位为1,则表示该位对应的节点确定执行该可迁移任务,如果某一位为0,则表示该位对应的节点不执行该可迁移任务。当处理器确定出该可迁移任务的目标节点后,可以判断该目标节点与可迁移任务所期望的运算单元所在的节点是否相同。如果该目标节点与可迁移任务所期望的运算单元所在的节点相同,则处理器无需修改该可迁移任务的使用掩码。如果该目标节点与可迁移任务所期望的运算单元所在的节点不相同,则处理器可以在可迁移任务的使用掩码中,将目标节点对应的位置为1,并将可迁移任务所期望的运算单元所在的节点对应的位置为0。例如,可迁移任务所期望的运算单元所在的节点为节点1,则可迁移任务的原使用掩码为0001。假设目标节点为节点2,则可迁移任务的修改后的使用掩码为0010。

作为一种可选的实施方式,处理器将可迁移任务迁移至目标节点之前,处理器还可以根据可迁移任务的亲和性掩码和使用掩码判断是否可以将可迁移任务迁移至目标节点,具体的处理过程为:如果可迁移任务的亲和性掩码和使用掩码中,目标节点对应的位均为1,则将可迁移任务迁移至目标节点。

在实施中,处理器将可迁移任务迁移至目标节点之前,处理器可以判断可迁移任务的亲和性掩码和使用掩码中,目标节点对应的位是否均为1。如果可迁移任务的亲和性掩码和使用掩码中,目标节点对应的位均为1,则说明该可迁移任务可以迁移至目标节点。相应的,处理器可以将可迁移任务迁移至目标节点。如果可迁移任务的亲和性掩码中,目标节点对应的位置为0,则说明该可迁移任务不可以迁移至目标节点。

本申请实施例提供了一种任务迁移的方法。当处理器检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点。其中,任务属性包括执行可迁移任务所需的运算单元的目标数目。然后,处理器将可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。这样,当可迁移任务所期待的运算单元无法执行该可迁移任务,或者该可迁移任务需要等待较长时间才可以被该可迁移任务所期待的运算单元执行时,处理器可以将该可迁移任务迁移至目标节点,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。

本申请实施例还提供了一种任务迁移的装置,如图3所示,该装置包括:

第一确定模块310,用于当检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点,任务属性包括执行可迁移任务所需的运算单元的目标数目;

迁移模块320,用于将可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。

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

如果各节点中存在包含目标数目个空闲的运算单元的候选节点,则在候选节点中,将与可迁移任务所期望的运算单元所属的节点之间的距离最小的候选节点,确定为目标节点;

如果各节点中不存在包含目标数目个空闲的运算单元的候选节点,则将包含待执行的任务的总数目最小的第一运算单元的节点,确定为目标节点,第一运算单元为执行的任务的任务属性与可迁移任务的任务属性相同的运算单元。

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

第二确定模块,用于如果可迁移任务所期望的第二运算单元中执行的任务的任务属性与可迁移任务的任务属性不相同,则确定可迁移任务满足预设迁移条件;

判断模块,用于如果第二运算单元中执行的任务的任务属性与可迁移任务的任务属性相同,则判断第二运算单元中待执行的任务的总数目是否大于或等于第一预设数目阈值;

第三确定模块,用于如果第二运算单元中待执行的任务的总数目大于或等于第一预设数目阈值,则确定可迁移任务满足预设迁移条件。

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

获取模块,用于获取各运算单元中期望执行的任务的数目;

第四确定模块,用于如果各运算单元中期望执行的任务的数目之间的最大差值大于或等于第二预设数目阈值,则触发第一确定模块310执行当检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中,确定与可迁移任务相匹配的目标节点的步骤。

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

第五确定模块,用于获取待执行的目标任务,并确定目标任务的任务类型、任务执行时长、目标任务所期望的第三运算单元所属的节点的最小跨节点访存延时和第三运算单元中期望执行的任务的数目;

修改模块,用于如果任务类型为计算密集型,和/或任务执行时长大于最小跨节点访存延时,和/或第三运算单元中期望执行的任务的数目大于或等于第三预设数目阈值,则确定目标任务为可迁移任务,并根据预设的亲和性掩码修改规则,修改目标任务的亲和性掩码。

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

设置模块,用于如果目标节点与可迁移任务所期望的运算单元所在的节点不相同,则在可迁移任务的使用掩码中,将目标节点对应的位置为1,并将可迁移任务所期望的运算单元所在的节点对应的位置为0。

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

第六确定模块,用于如果可迁移任务的亲和性掩码和使用掩码中,目标节点对应的位均为1,则触发迁移模块320执行将可迁移任务迁移至目标节点的步骤。

本申请实施例提供了一种任务迁移的装置。当cpu检测到可迁移任务满足预设迁移条件时,根据可迁移任务的任务属性,在各节点中确定与可迁移任务相匹配的目标节点。其中,任务属性包括执行可迁移任务所需的运算单元的目标数目。然后,cpu将可迁移任务迁移至目标节点,以通过目标节点执行可迁移任务。这样,当可迁移任务所期待的运算单元无法执行该可迁移任务,或者该可迁移任务需要等待较长时间才可以被该可迁移任务所期待的运算单元执行时,cpu可以将该可迁移任务迁移至目标节点,从而减少该可迁移任务的等待时长,提高该可迁移任务的执行效率。

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

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

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

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

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

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

所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述人工智能处理器可以是任何适当的硬件处理器,比如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所述的方法,所述将所述可迁移任务迁移至所述目标节点之前,所述方法还包括:

如果所述目标节点与所述可迁移任务所期望的运算单元所在的节点不相同,则在所述可迁移任务的使用掩码中,将所述目标节点对应的位置为1,并将所述可迁移任务所期望的运算单元所在的节点对应的位置为0。

条款a7、根据条款a1所述的方法,所述将所述可迁移任务迁移至所述目标节点之前,所述方法还包括:

如果所述可迁移任务的亲和性掩码和使用掩码中,所述目标节点对应的位均为1,则执行所述将所述可迁移任务迁移至所述目标节点的步骤。

条款a8、一种任务迁移的装置,该装置包括:

第一确定模块,用于当检测到可迁移任务满足预设迁移条件时,根据所述可迁移任务的任务属性,在各节点中确定与所述可迁移任务相匹配的目标节点,所述任务属性包括执行所述可迁移任务所需的运算单元的目标数目;

迁移模块,用于将所述可迁移任务迁移至所述目标节点,以通过所述目标节点执行所述可迁移任务。

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

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

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

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