调度算子的方法和装置制造方法及图纸

技术编号:34641682 阅读:12 留言:0更新日期:2022-08-24 15:17
本公开提供了一种调度算子的方法和装置,计算机技术领域,尤其涉及任务调度领域。具体实现方案包括:确定与正在执行的目标任务中包括的两个或更多个算子相关的算子信息;以及根据算子信息对两个或更多个算子进行调度,其中,算子信息指示两个或更多个算子中包括的算子是异步算子还是同步算子。子是异步算子还是同步算子。子是异步算子还是同步算子。

【技术实现步骤摘要】
调度算子的方法和装置
[0001]本申请是申请日为2021年11月09日,申请号为202111323084.9的中国专利申请的分案申请。


[0002]本公开涉及计算机
,尤其涉及任务调度领域,具体涉及一种调度算子的方法和装置。

技术介绍

[0003]在各种计算机应用场景中,例如在深度学习框架中,执行器是一个核心组件,用于调度和执行深度学习模型中包含的各个算子。一个良好设计的执行器,可以支持多种硬件设备,覆盖广泛的深度学习模型使用场景,高效地完成算子的调度和执行。
[0004]随着硬件芯片的蓬勃发展,以及前沿深度学习模型的不断加深,使深度学习框架的执行器对硬件的横向扩展性、算子执行效率等方面需求更高。但不同硬件设备的架构设计、执行机制(例如,流(stream)的设计)上存在一定的差异性。此外,不同领域的深度学习模型结构也不同,如自然语言处理(NLP)领域的模型更“宽”,而视觉领域(CV)的模型更“深”,因此对执行器的调度策略要求也不尽相同。

技术实现思路

[0005]本公开提供了一种用于调度算子的方法、装置、电子设备以及存储介质。
[0006]根据本公开的第一方面,提供了一种调度算子的方法,包括:确定与正在执行的目标任务中包括的两个或更多个算子相关的算子信息;以及根据所述算子信息对所述两个或更多个算子进行调度,其中,所述算子信息指示所述两个或更多个算子中包括的算子是异步算子还是同步算子。
[0007]根据本公开的第二方面,提供了一种算子调度装置,包括:确定单元,被配置为确定与正在执行的目标任务中包括的两个或更多个算子相关的算子信息;以及调度单元,被配置为根据所述算子信息对所述两个或更多个算子进行调度,其中,所述算子信息指示所述两个或更多个算子中包括的算子是异步算子还是同步算子。
[0008]根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行上述方法。
[0009]根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行上述方法。
[0010]根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述方法。
[0011]应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特
征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
[0012]附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0013]图1示出了一种关于算子序列的执行顺序的示例示意图;
[0014]图2示出了一种关于算子序列的执行流程的示例示意图;
[0015]图3示出了根据本公开实施例的调度算子的方法的流程图;
[0016]图4示出了根据本公开实施例的根据算子信息为内核分配流的方法的流程图;
[0017]图5示出了根据本公开实施例的为与算子相对应的内核分配多个流的场景的示意图;
[0018]图6示出了根据本公开实施例的根据算子信息为算子指派线程的方法的流程图;
[0019]图7示出了根据本公开实施例的为算子指派线程的场景的示意图;
[0020]图8示出了根据本公开另一实施例的为算子指派线程的方法的流程图;
[0021]图9示出了根据本公开另一实施例的为算子指派线程的场景的示意图;
[0022]图10示出了根据本公开另一实施例的调度算子的方法的流程图;
[0023]图11示出了根据本公开实施例的提供针对不同硬件设备的统一接口的示意图;
[0024]图12示出了根据本公开实施例的算子调度装置的框图;以及
[0025]图13示出了可以用来实施本公开的实施例的示例电子设备的示意性框图。
具体实施方式
[0026]以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0027]在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
[0028]在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
[0029]图1示出了一种关于算子序列的执行顺序的示例示意图。
[0030]如图1所示,电子设备中的执行器正在执行的目标任务包括由多个算子feed_op、OP2、OP3、OP4、OP5、OP6、OP7构成的算子序列。这里,算子指执行器正在执行的目标任务(例如,深度学习模型)中的独立的逻辑计算单元。一般而言,一个目标任务可以看作是多个算子组合而成(例如视觉领域中的卷积算子Conv2D、Conv3D)。每个算子可以具有固定的输入变量(又称为张量)、计算内核(kernel)、输出变量。内核是一个算子在硬件设备上的逻辑计算实现。为了支持多种硬件设备(例如,英伟达的GPU(CUDA)、AMD公司的ROCM硬件(HIP)、异腾芯片(NPU)、百度昆仑芯片(XPU)等硬件设备),一个算子可以包括多内核,每个内核表示某种特定硬件设备上的具体实现。结合硬件来讲,算子首先要在中央处理单元CPU(又称主
机Host端)上执行,然后根据当前的硬件设备类型(例如CUDA设备),调用不同的内核来实现,从而发送一个对应的内核API(应用程序接口)到流上。根据一些实施例,一个算子也可以对应多个内核,并且每个内核对应一种硬件设备。
[0031]如图1中所示,在目标任务开始时,算子feed_op接收需要处理的数据。然后,执行器根据如图1所示的拓扑图的顺序依次执行算子OP2、OP3、OP4、OP5、OP6、OP7。在算子之间还可以存在变量的拷贝操作(又称为拷贝内核),例如从CPU拷贝到图形处理单元GPU(CPU

>GPU)、从GPU拷贝到CPU(GPU

>CPU)或者从GPU拷贝到GPU(GPU

>GPU)。
[0032]在执行器执行算子序列中的当前算子时,一般涉及如下步骤。首先,执行器接收输入变量,该变量数据可以是上一个算子的输出变量,也可以是经拷贝的变量。然后,执行器申请输出变量的内存或显存。接着,执行与当前算子对应的针对特定硬件设备的计算内核,如CPU内本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种调度算子的方法,包括:确定与正在执行的目标任务中包括的两个或更多个算子相关的算子信息;以及根据所述算子信息对所述两个或更多个算子进行调度,包括:根据所述算子信息,为所述两个或更多个算子指派线程;其中,所述算子信息指示所述两个或更多个算子中包括的算子是异步算子还是同步算子;所述为所述两个或更多个算子指派线程包括:在所述算子信息指示由所述两个或更多个算子构成的算子序列中的当前算子是同步算子的情况下,确定当前算子的后续算子是异步算子还是同步算子;在确定当前算子的后续算子是同步算子的情况下,则:确定所述算子序列中当前算子的后续算子的数目;在当前算子的后续算子的数目等于1的情况下,将当前算子的后续算子保留在当前线程中;以及在当前算子的后续算子的数目大于1的情况下,将当前算子的后续算子之一保留在当前线程中,并将该后续算子中的其他算子指派到与所述当前线程不同的至少一个第四线程中;以及在确定当前算子的后续算子是异步算子的情况下,将当前算子的后续算子指派到与所述当前线程和所述第四线程不同的第五线程中。2.根据权利要求1所述的方法,其中,根据所述算子信息对所述两个或更多个算子进行调度包括:根据所述算子信息,为与所述两个或更多个算子相对应的两个或更多个内核分配流。3.根据权利要求2所述的方法,其中,根据所述算子信息为与所述两个或更多个算子相对应的两个或更多个内核分配流包括:将所述两个或更多个内核中的第一内核分配到第一流中;以及将所述两个或更多个内核中的第二内核分配到第二流中,其中所述第一内核与所述两个或更多个算子中的异步算子相对应,所述第二内核与所述两个或更多个算子中的同步算子相对应。4.根据权利要求1所示的方法,其中,为所述两个或更多个算子指派线程包括:在所述算子信息指示由所述两个或更多个算子构成的算子序列中的至少一个第一算子是异步算子的情况下,将所述至少一个第一算子指派到第一线程中;在所述算子信息指示由所述两个或更多个算子构成的算子序列中的至少一个第二算子是同步算子的情况下,将所述至少一个第二算子指派到第二线程中。5.根据权利要求1所述的方法,其中,为所述两个或更多个算子指派线程包括:在所述算子信息指示由所述两个或更多个算子构成的算子序列中的当前算子是异步算子的情况下,确定当前算子的后续算子是异步算子还是同步算子;在所述算子信息指示当前算子的后续算子是异步算子的情况下,将当前算子的后续算子保留在当前线程中;以及在所述算子信息指示当前算子的后续算子是同步算子的情况下,将当前算子的后续算子指派到与所述...

【专利技术属性】
技术研发人员:张留杰刘红雨蓝翔王欢刘铁星陈秋良
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1