任务处理系统及方法与流程

文档序号:28161593发布日期:2021-12-24 20:14阅读:114来源:国知局
任务处理系统及方法与流程

1.本技术涉及芯片技术领域,特别是涉及一种任务处理系统及方法。


背景技术:

2.随着人工智能技术的发展,cpu已不能满足现有算法的计算需求,神经网络专用芯片营运而生。实践证明,人工智能计算任务相对于通用处理任务或图像处理任务而言,具有独特的数据结构、存储方式、计算模式等,因而可以设计专用集成电路为人工智能计算任务重新分配芯片计算资源,实现低功耗、低延迟、高吞吐率的计算。npu(neural network processing unit)是一种专用集成电路,可以实现人工智能计算任务,例如神经网络计算,其具有低功耗、高效能、小面积的特点。
3.根据摩尔定律和dennard scaling定律,单核高效能处理器的计算能力会因为物理因素的限制达到瓶颈。为了提高计算并行性,业界的芯片设计逐渐转向多核高效率处理器设计上。不仅如此,随着高性能计算机和数据中心的发展,越来越多的计算资源被集中起来,多芯片协同处理已是常态。为了实现基于npu的高处理性能和高可扩展的ai处理系统,npu芯片间需要支持高效的数据传输。
4.但是目前还没有一种方法和装置能够支持npu芯片间的高效的数据传输。


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种任务处理系统及方法,能够实现多设备之间高效的数据传输及任务处理。
6.一种任务处理系统,所述系统包括:
7.目标接收设备,用于接收通信切片,其中,所述通信切片包括通信描述符和数据块;
8.若所述目标接收设备成功接收所述通信切片时,则对应更新第二存储空间的设备状态以及所述第一存储空间中相应通信切片的数据信息。
9.一种任务处理方法,所述方法包括:
10.发送设备获取当前通信切片,并将所述当前通信切片发送至目标接收设备;
11.目标接收设备在成功接收所述当前通信切片时,则对应更新第二存储空间的设备状态以及所述第一存储空间中相应通信切片的数据信息。
12.上述任务处理系统及方法,目标接收设备成功接收通信切片时,则对应更新第二存储空间的设备状态以及第一存储空间的通信切片的数据信息,该系统可以保证数据传输过程中数据的完整以及设备间的数据的高效传输。
附图说明
13.图1为一个实施例中多设备互联系统的示意图;
14.图2为一个实施例中多设备互联系统的示意图,其中示出了各个设备中任务处理
系统的结构;
15.图3为一个实施例中第二存储空间的示意图;
16.图4为一个实施例中第一存储空间的示意图;
17.图5为一个实施例中任务处理方法的流程示意图;
18.图6为一个实施例中数据通信过程的示意图;
19.图7为一个实施例中任务组处理方法的流程示意图;
20.图8为一个实施例中任务组处理方法的流程示意图;
21.图9为一个实施例中一种任务销毁方法的流程示意图;
22.图10为一个实施例中一种任务销毁方法的流程示意图;
23.图11为一个实施例中计算机设备的内部结构图。
具体实施方式
24.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
25.当数据量较大时,采用单一的设备进行运算很难满足运算的要求,且运算效率较低。因此,在数据量较大时,可以通过多设备协同的方式实现运算。例如,当设备参与神经网络相关的运算,如多个设备协同实现神经网络的训练时,由于神经网络训练过程中涉及的数据量较大,可以通过多个设备协同实现相应的运算。但多个设备之间的协同进行运算,必然会涉及设备之间的通信及数据交互。由于设备之间需要进行频繁的通信或数据交互,通常会带来运算延迟等问题,导致运算效率不佳。基于此,本技术提供了一种多设备互联的系统以及多设备协同运算的任务处理方法,具体可参见下文的描述。
26.图1和图2为一种多设备互联系统的示意图。其中,设备0、设备1、设备2及设备3可以通过任务处理系统实现设备之间的数据传输。该设备可以是芯片、板卡、处理器或处理器核,设备间通信的设备包含但不限于实现芯片之间、板卡之间、处理器或处理器核之间的数据交换。可选地,该设备可以为包含人工智能处理器(ipu)的芯片,其中的人工智能处理器包括但不限于加速处理器apu(accelerated processing unit)、图形处理器gpu(graphics processing unit)、神经网络处理器npu(neural-network processing units)等人工智能处理器。该芯片还可以包含cpu及存储等其他结构,此处不做具体限定。
27.可选地,图1和图2中每个设备包含一个任务处理系统,该任务处理系统可以包含一组发送装置与接收装置。相应的,图1(a)中每一根线都是一个双工的c2c接口(chip to chip interface),线的两头各是一组发送装置与接收装置。可选地,双工里的每个方向都有8个通道(channel)。每个设备中的任务处理系统的具体结构可以参见图2所示。需要说明的是,图1和图2仅以系统包括四个设备举例说明,并不用于限定系统中设备的数量。在可能的实施例中,该系统中设备的数量可以是两个以上,此处不做具体限定。
28.如图2所示,设备0、设备1、设备2、设备3可以均与主机相连。其中每个设备上可以包括一任务处理系统200,每个设备上的任务处理系统200可以包括存储器210、任务处理装置230和用于设备间数据通信的通信模块,通信模块可以包括发送装置220和接收装置240。其中的发送装置220用于将该设备上的数据发送至其他设备,接收装置240用于接收其他设
备传输的数据。
29.可选地,图1和图2中的各个设备可以通过两种方式进行通信:
30.方式一:通过主机实现设备间通信(普通发送模式)。该方式是设备与主机的通信,用于传输设备间的普通数据,且发送控制指令来自于主机。例如,在通过该方式一实现设备0和设备1之间的数据传输时,首先通过主机控制设备0的发送装置220将相关数据发送至设备1,设备1的接收装置240在接收到相关数据之后,返回状态信息给主机。即在方式一的情况下,不同设备之间的数据传送需要主机频繁的介入。
31.方式二:通过各个设备自动触发其上的通信模块实现设备间通信(硬件加速模式)。具体地,在通过方式二实现设备之间的数据传输时,只需要在开始阶段通过主机介入,之后各个设备可以自动触发其上的通信模块进行设备将的数据通信,无需中央处理器介入,从而可以加快数据的传输效率。例如,在通过该方式二实现设备0和设备1之间的数据传输时,首先通过主机控制设备0的发送装置220将相关数据发送至设备1,设备1的接收装置240在接收到相关数据之后,可以直接触发设备1的发送装置220将相关数据传送至设备2。再如,在通过该方式二实现设备0和设备1之间的数据传输时,首先通过中央处理器控制设备0的发送装置220将相关数据发送至设备1,设备1的接收装置240在接收到相关数据之后,设备1的任务处理装置可以根据状态信息触发设备1的发送装置220将相关数据传送至设备2。
32.本技术实施例主要结合上述的方式二所示的硬件加速模式说明本技术的任务的处理方法。在硬件加速模式下,当一任务需要多个设备之间协同完成时,如需要多个设备协同完成一神经网络训练任务时,则可以为该任务分配一个任务标识(task id),该任务标识可以作为该任务在该多设备互联系统中的唯一标识。当在多个设备之间协同处理该任务时,多个设备均可以配置该任务标识(task id)。
33.可选地,该任务所涉及的数据(包括参与运算的输入数据、中间结果数据以及运算结果数据等等)可以在多个设备之间进行传输。进一步地,该任务所涉及的数据可以包括通信数据,各个设备上的任务处理系统可以根据该通信数据,确定任务的任务信息。例如,各个设备上的任务处理系统可以根据该通信数据,使得各个设备按照上述的硬件加速模式进行数据传输,自动将该设备上的数据传输至下一设备。各个设备上的任务处理系统还可以根据该通信数据,确定该任务的任务信息,并根据任务的任务信息执行该任务,获得该任务的执行结果。其中,该任务的任务信息可以包括该任务所涉及数据的数据信息(如数据的存储地址)、该任务的任务规模以及所需的处理器资源信息等等。
34.可选地,该通信数据可以为一通信描述符,其中,通信描述符(通信数据)可以包括:任务标识(task id)以及该任务所涉及数据的源地址和目的地址等信息。各个设备可以根据其获得的通信描述符,从存储器中获得该任务所涉及的数据。可选地,通信描述符还可以包括相应任务模板的任务模板标识,各个设备的任务处理系统还可以根据通信描述符获得相应的任务模板,从而根据该任务模板和通信描述符确定任务的处理信息。其中,任务模板可以用于标识各个任务的任务处理方式(如该任务需包含的运算或转发等操作)等相关信息,该任务模板可以是在进行任务处理之前由驱动软件配置给设备的任务处理系统的。可选地,任务模板可以包括:任务权重、数据信息、任务类型、下一任务模板的标识、任务链标识位等信息。
35.进一步地,当任务的规模较大时,可以将该任务进行拆分,以分批完成该任务在设备间的数据传输。本技术实施例中,每个任务可以包括至少一个子任务(descriptor),每个子任务可以被拆分为至少一个通信切片。此时,该通信描述符还可以包括任务的拆分数量信息(如拆分数量、每个数据块的大小、拆分获得数据块的索引步长等)等等。可选地,每个设备的任务可以进一步被拆解为至少一个通信切片(transfer),此时,多个设备进行可以按照通信切片进行数据传输。该通信切片可以是附带通信描述符和数据的一次传输,每个通信切片中数据的大小可以等于拆分获得的每个数据块的大小。其中,每个通信切片中包含的数据块可以通过通信切片的数据信息进行记录,该通信切片的数据信息用于表示通信切片中数据块的形状信息和地址信息(如目标地址,如图4中标识的dst_addr)等描述数据信息。具体地,数据块的形状信息可以包括数据块大小、数据块编号及数据块步长等信息。
36.再进一步地,每个通信切片可以具有一个切片标识(transfer id),同一任务(task)中的多个通信切片的切片标识可以是单调递增的。下文将结合多设备互联系统的结构说明一个任务的多设备协同执行过程。
37.可选地,如图2所示,每个设备上的存储器210可以用于存储任务所涉及的数据(包括参与运算的输入数据、中间结果数据以及运算结果数据等等)以及数据对应的数据信息(包括目的地址等)、设备状态数据、通信描述符及任务模板等数据。可选地,该存储器可以为dram(dynamic random access memory,动态随机存储器)。在其他可能的实施例中,该存储器可以是采用dram以外的其他存储器,此处不做具体限定。进一步可选地,该第一存储空间和第二存储空间可以是由软件程序(如驱动程序)确定的。进一步地,该存储器210中可以包括第一存储空间和第二存储空间,其中,第一存储空间用于存储通信切片的数据信息,第二存储空间用于存储设备状态数据。
38.在多个设备按照通信切片进行数据传输时,为了便于数据访存,该存储器的第一存储空间和第二存储空间中的数据可以是按照各个通信切片的切片标识进行存储的。如图3所示,第二存储空间中的设备状态数据可以是按照通信切片的传输状态进行存储的。如图4所示,第一存储空间可以是二维格式的存储空间,其中,第一存储空间的纵向可以表示不同的通信切片(切片标识表示为t0~t63),第二存储空间的横向可以表示不同的设备(chip0~chip5)。应当清楚的是,图3和4中仅以64个切片和6个设备为例说明数据的存储方式,并不用于限定具体的通信切片数量和设备数量。
39.当需要在设备之间传输数据时,各个设备上发送装置可以将通信切片发送至其相应的目标接收设备,其中,该目标接收设备可以是一个以上。各个设备还可以在本次传输结束后,相应地更新第二存储空间中的设备状态数据以及第一存储空间中相应位置的数据信息。具体可参见下文中的描述。
40.可选地,每个设备上的接收装置240和发送装置220用于实现不同设备之间的数据传输。为便于表述,本技术实施例将数据的发送端记为发送设备,将数据的接收端记为目标接收设备。在多设备之间进行任务传输时,多个设备的数据收发可以是同时进行的,同一设备即可作为发送设备,也可以作为接收设备。其中,发送设备的发送装置220用于将数据发送到目标接收设备,目标接收设备的接收装置240用于接收发送设备发送的数据。例如,图2中设备0可以作为发送设备,其对应的目标接收设备可以为设备1。再如,图2中的设备1可以作为发送设备,其对应的目标接收设备可以为设备2。此处仅以举例说明,不再一一赘述。
41.具体地,在多个设备之间进行数据通信之前,发送设备的发送装置220可以将任务划分为多个通信切片,设备之间可以按照通信切片进行传输。具体地,发送设备的发送装置220可以根据通信描述符中包含的拆分信息,将该任务划分为至少一个通信切片,多个通信切片对应数据块的数据信息可以存储于第一存储空间,其具体存储方式可参见图4所示。在设备之间进行数据传输时,发送设备的发送装置220可以将通信切片分批传送至目标接收设备。目标接收设备在接收到通信切片后,还可以相应的更新第一存储空间中数据块的数据信息以及第二存储空间中的设备状态数据。可选地,目标接收设备可以计算获得相应的通信切片标识,并根据通信切片标识和设备标识对第一存储空间中的数据信息以及第二存储空间中的设备状态数据的相应位置进行更新。
42.进一步可选地,目标接收设备可以按照如下方式计算通信切片标识:
43.transfer_id=(dst_data_addr-dst_data_base_addr)/segment_stride/segment_number;
44.其中,dst_data_addr可以是指当前通信切片的目标地址,其可以包含于通信描述符中;dst_data_base_addr是指当前通信切片中数据块存储的起始地址;segment_stride是指当前通信切片中数据块对应的索引步长;segment_number是指该任务拆分获得数据块的拆分数量。
45.更进一步可选地,目标接收设备可以根据该通信切片标识transfer id和设备标识chip id确定出偏移量c2c_data_info_addr(如图4所示),从而可以根据该偏移量对第一存储空间中相应位置的数据信息进行更新。
46.例如,在设备间进行数据传输之前,该发送设备的发送装置可以将任务拆分为64个通信切片,并将64个通信切片按照图4所示的方式存储于第一存储空间中,该64个通信切片可以在设备之间进行传输。下面以通信切片t0的传输过程说明设备之间的数据传输,其他通信切片在设备之间与该通信切片t0类似,不再一一赘述。
47.若发送设备为chip0(chip0可以是如图2中的设备0),目标接收设备为chip1(chip1可以是如图2中的设备1),发送设备chip0的发送装置可以根据通信描述符从存储器210中获得该通信切片t0对应的数据块,并将该通信描述符和对应的数据块绑定后作为通信切片t0发送至目标接收设备chip1。之后,目标接收设备chip1成功接收该通信切片t0时,则可以对应更新第二存储空间的设备状态以及所述第一存储空间的通信切片的数据信息。具体地,可以更新图3中第二存储空间中的第一行的lock_status表示的数组中1位置的值。同时可以更新图4中第一存储空间的第一行第一列的chip1_data_info。
48.可选地,每个设备上的接收装置240可以用于接收并存储发送设备传送的通信切片,当接收装置240接收完所有的数据后,则可以启动任务处理装置230,以使得任务处理装置230可以根据接收装置接收到的数据执行相应的任务,获得任务的执行结果。具体地,任务处理装置230可以根据接收的通信描述符获得相应的任务模板,将该通信描述符和任务模板绑定后获得当前任务的任务信息,并根据该当前任务的任务信息对当前任务进行调度执行,以获得执行结果。其中,任务模板可以包括:任务权重、数据信息、任务类型、下一任务模板的标识、任务链标识位等信息,任务模板可以是由软件配置在任务处理装置230中的。
49.可选地,每个设备上的任务处理装置230可以包括任务调度装置和人工智能处理器。其中的任务调度装置可以根据上述通信描述符获得相应的任务模板,并将通信描述符
和相应的任务模板进行绑定获得任务信息。其中,该任务的任务信息可以包括该任务所涉及数据的数据信息(如数据的存储地址)、该任务的任务规模以及所需的处理器资源信息等等。
50.进一步地,当该任务需要人工智能处理器进行运算时,任务调度装置还可以根据任务信息对任务进行调度,以确定人工智能处理器的哪些处理器核参与运算。具体地,任务调度装置根据该任务信息,采用预设的调度算法对该任务进行调度,获得调度信息。人工智能处理器可以根据任务调度装置传送的调度信息执行相关的运算,该相关运算可以包括归并运算(reduce)、全归并运算(all-reduce)、分散归并运算(reduce-scatter)、全聚集(all-gather)等等,此处不做具体限定。
51.可选地,任务处理装置230可以用于触发设备上的发送装置动作,从而实现同一设备上发送装置和接收装置之间数据的转发以及不同设备之间的数据的广播或分发等任务,此种数据的转发或广播或分发任务无需人工智能处理器进行归并等相关运算。任务模板中包括由软件配置好的第一转发标志位和第一转发路径(第一转发路径可以包括下一目标接收设备的标识等等)。可选地,各个设备的下一目标接收设备可以是一个以上,该任务调度装置可以通过其任务模板中的下一目标接收设备的标识确定各个设备需要向哪些下一目标接收设备发送数据。
52.具体地,各个设备上的接收装置240可以将通信描述符传送给任务调度装置,任务调度装置可以根据该通信描述符获取相应的任务模板,并根据任务模板触发设备上的发送装置220的动作,以通过发送装置220将通信数据或运算结果等数据发送至目标接收设备。具体地,任务调度装置可以根据任务模板中的第一转发标志位确定是否触发设备上的发送装置220的动作,以通过发送装置220将接收到的通信切片或运算结果等指定数据发送至下一目标接收设备。当该任务模板中的第一转发标志位为第一标志值(如1)时,则任务调度装置可以触发设备上的发送装置220的动作。当该任务模板中的第一转发标志位为第二标志值(如0)时,则任务调度装置不会触发设备上的发送装置220的动作。本技术实施例中,通过任务调度装置根据通信描述符及其相应的任务模板,自动触发设备上发送装置的转发操作,从而减少了设备与主机之间的交互,能够提高任务的处理效率。
53.可选地,当各个设备之间进行数据广播或分发等操作时,可以将第一转发标志位设置为第一标志位,从而无需启动人工智能处理器。进一步地,当各个设备之间进行数据广播或分发操作时,在目标接收设备成功接收到发送设备传输的数据时,则可以确定该当前的广播或分发任务成功执行;否则,则可以确定该当前的广播或分发任务执行失败。
54.可选地,任务处理装置230还可以实现触发设备上的人工智能处理器启动进行运算。具体地,设备上的接收装置240可以将通信描述符传送给任务调度装置,任务调度装置可以根据该通信描述符获取相应的任务模板,并根据任务模板触发同一设备上的人工智能处理器启动,该人工智能处理器根据相应的数据块进行运算。可选地,人工智能处理器能够根据数据块的目的地址从存储器中读取相应的数据块,并根据该数据块进行运算。该运算可以是归并运算(reduce)、全归并运算(all reduce)、分散归并运算(reduce-scatter)、全聚集(all-gather)等等,此处不做具体限定。
55.进一步地,在触发人工智能处理器启动之前,还需确定该设备是否已接收到参与运算的所有数据,即在进行运算之前需确定参与运算的数据是否完备。即在设备上的发送
装置接收到执行任务所需的所有数据之后,配置核函数发射信息给任务调度装置,任务调度装置启动并触发人工智能处理器启动,以使得人工智能处理器执行上述的任务。其中,核函数发射信息可以包括接收到的各个通信切片的通信描述符。
56.例如,图2中各个设备0-3上的数据需发送至设备0上进行数据归并(reduce)运算时,此时,当设备0的接收装置240接收到来自设备1、设备2和设备3上的数据后,设备0上的任务调度装置可以触发人工智能处理器启动,设备0上的人工智能处理器可以执行相应的归并运算,并获得相应执行结果。其中,该执行结果包括当前的归并任务等运算任务成功执行或执行失败。
57.更进一步地,任务模板中还可以包括第二转发标志位和第二转发路径(第二转发路径可以包括下一目标接收设备的标识等等)。可选地,各个设备的目标接收设备可以是一个以上,该任务调度装置可以通过其任务模板中的目标接收设备的标识确定各个设备需要向哪些目标接收设备发送数据。任务调度装置还可以根据任务模板中的第二转发标志位,确定在人工智能处理器完成运算后,是否需要触发设备上的发送装置,以将运算结果发送至该设备的目标接收设备。
58.该任务模板中的第二转发标志位为第三标志值(如1)时,则任务调度装置可以在人工智能处理器运算完成之后,触发目标接收设备上的发送装置220的动作,以将运算结果发送至其他设备。当该任务模板中的第二转发标志位为第四标志值(如0)时,则任务调度装置不会触发目标接收设备上的发送装置220的动作。本技术实施例中,通过任务调度装置根据通信描述符及其相应的任务模板,自动触发设备上发送装置的转发操作,从而减少了设备与主机之间的交互,能够提高任务的处理效率。
59.可选地,任务调度装置还可以对发送装置的转发操作进行配置。进一步地,发送装置的转发操作可以通过一寄存器的值进行标识,该寄存器的值可以包含于上述的任务模板中。其中,当该寄存器的值为第一设定值时,则表示使用当前描述符进行一次拆分传输,在完成本次传输后,不再启动发送装置进行传输。当该寄存器的值为第二设定值时,则表示本次发送结束之后,切换通信描述符。当该寄存器的值为第三设定值时,则表示连续进行多个通信切片的发送,直至遇到带有标识位e为1的通信切片为止,即发送装置连续发送多个通信切片直至完成任务中的所有通信切片的发送。其中,任务模板中还可以包括标识位e和标识位a,其中,标识位a标识一个子任务(descriptor)的最后一次传输,标识位e表示任务的最后一次传输。当然,在其他实施例中,上述对发送装置的转发操作的配置也可以是驱动软件实现的。
60.可选地,在硬件加速模式下,驱动软件可以首先触发发送设备的发送装置启动,以触发第一次设备传输。发送设备的发送装置启动后,发送设备的发送装置可以从存储器中获取相应的通信描述符和当前任务对应的数据,并根据该通信描述符将当前任务对应的数据拆分为至少一个数据块,将每个数据块和该通信描述符绑定作为一个通信切片。之后,发送设备的发送装置可以将通信切片传送至目标接收设备。目标接收设备在接收到通信切片还可以根据通信切片中的通信描述符获得相应的任务模板,并根据任务模板中的第一转发标志位或第二转发标志位等信息,将其上的通信切片发送至下一目标接收设备,从而实现多个设备之间连续的数据传输。即在硬件加速模式下,发送设备的首次传输由驱动软件触发,之后的传输可以由该发送设备中的任务调度装置自动触发相应的发送装置,具体可参
见下文的描述。
61.可选地,各个设备上的任务处理系统还可以根据任务所涉及到的数据块等执行该任务,获得该任务的执行结果。其中,该任务的执行结果可以包括成功和失败。可选地,各个任务的任务模板中还可以包括当前任务的下一任务模板的标识和任务链标识位,从而本技术实施例的多设备系统还可以包含多个任务的任务组的链式执行,即在当前任务执行后可以直接触发下一任务的执行。
62.具体地,在当前任务执行成功,且当前任务的任务模板中的任务链标识位为第一预设值(如1)时,则系统可以根据该当前任务的任务模板中的下一任务模板的标识,获取下一任务的任务模板,从而系统可以根据下一任务的任务模板获得该下一任务的任务信息,并根据该下一任务的任务信息执行该下一任务。可选地,下一任务可以是归并运算任务(reduce)、全归并运算任务(all reduce)、分散归并运算任务(reduce-scatter)、全聚集任务(all-gather)、广播任务或分发任务等等,此处不做具体限定。
63.图6举例说明了几种任务的数据传输过程。其中,图6(a)示出了设备0将其上的数据a广播给设备1-3的过程,具体地,设备0的发送装置可以将其上的数据分别传输至设备1-3,此种广播任务无需人工智能处理器参与运算。当设备0上的数据a的数据量较大时,设备0可以将该数据a拆分为至少一个数据块,并分别将各个数据块与通信描述符绑定形成通信切片。之后设备0可以连续向其他设备1-3连续发送至少一个通信切片,每个通信切片均用于完成一次不同设备之间的数据拷贝过程。
64.图6(b)示出了将各个设备上的数据发送至一个设备上进行数据归并的操作。设备1-3将其上的数据传送至目标接收设备0上进行归并运算,可选地,设备1-3上的数据可以切分为至少一个数据块,从而形成至少一个通信切片,设备1-3可以向设备0连续发射至少一个通信切片,直至完成各个设备上的数据传输。由于设备间的数据的传输不是同时结束的,因此目标接收设备0在接收到设备1-3的数据后,可以执行设备间的同步操作,以保证该目标接收设备0已经接收到执行归并运算所需的数据。在设备0的接收装置确定接收到所有数据后,该目标接收设备0可以通过任务调度装置触发人工智能处理器执行归并运算。
65.图6(c)示出了全归并的操作。各个设备分别将其上的数据传送至其他设备上进行归并运算。可选地,各个设备上的数据可以切分为至少一个数据块,从而形成至少一个通信切片,各个设备可以向其他设备连续发射至少一个通信切片,直至完成各个设备上的数据传输。由于设备间的数据的传输不是同时结束的,因此每个设备在接收到其他3个设备的数据后,可以执行设备间的同步操作,以保证该目标接收设备已经接收到执行归并运算所需的数据。在各个设备的接收装置确定接收到所有数据后,该各个设备可以通过任务调度装置触发人工智能处理器执行归并运算。之后,各个设备再将其归并运算结果广播给其他设备。
66.图6(d)示出了分散归并的操作。各个设备分别将其上的部分数据传送至其他设备上进行归并运算。可选地,各个设备上的数据可以切分为至少一个数据块,从而形成至少一个通信切片,各个设备可以分别将其上的通信切片传输至其他设备上进行归并运算。由于设备间的数据的传输不是同时结束的,因此每个设备在接收到其他3个设备的数据后,可以执行设备间的同步操作,以保证该目标接收设备已经接收到执行归并运算所需的数据。在各个设备的接收装置确定接收到所有数据后,该各个设备可以通过任务调度装置触发人工
智能处理器执行归并运算。
67.图6(e)示出了全聚集的操作,各个设备分别将其上的数据至其他3个设备。可选地,各个设备上的数据可以切分为至少一个数据块,从而形成至少一个通信切片,各个设备可以向其他设备连续发射至少一个通信切片,直至完成各个设备上的数据传输。
68.可选地,任务处理装置230还用于根据任务模板中的中断标识位和对应的所述通信描述符中的执行状态标识位确定是否上报中断。具体地,目标接收设备的任务处理装置230可以根据任务模板中的中断标识位(interrupt_enable)以及通信描述符中的任务执行状态标识位(e,a)确定是否上报中断。
69.更具体地,任务模板中的中断标识位可以为2位,其可以代表4种情况,分别为00,01,10,11。任务执行状态标识位中的e表示一个任务(task)的最后一次传输,即任务终止(end of task);任务执行状态标识位中的a表示一个子任务(descriptor)的最后一次传输,即子任务终止(end of descriptor)。
70.具体地,任务处理系统200可以根据下表中interrupt_enable的数值以及e,a的信号确定是否上报中断。任务处理系统200还可以在确定上报中断的任务添加至结束队列(finish queue),需要说明是,finish queue中的任务依次上报中断。
[0071][0072]
具体地,当完成该任务(per task),且通信描述符中的任务执行状态标识位(e,a)均为1时,则可以确定需上报中断。当完成该任务的子任务(per descriptor),且通信描述符中的任务执行状态标识位(a)均为1时,则可以确定需上报中断。进一步地,在完成每个通信切片(per transfer)时,也可以上报中断。
[0073]
下面以图2所示的系统举例说明多个设备协同进行神经网络训练时,各个设备可以分别独立计算得到权重的差值,即设备0-3上的初始数据可以分别是权值w1、权值w2、权值w3以及权值w4。在硬件加速模式下,驱动程序可以首先配置设备0的发送装置启动传输,设备0可以将其上的权值w1传输给设备1的接收装置。设备1的接收装置在接收到权值w1后,设备1的任务调度装置可以触发其上的人工智能处理器启动,该人工智能处理器可以进行归并操作,得到部分权值和w1+w2。在完成归并操作之后,设备1可以自动触发其上的发送装置启动,从而设备1可以将部分权值和w1+w2传输至设备2,接着设备2可以根据其接收到的w1+w2进行归并操作,得到部分权值和w1+w2+w3,并在执行归并操作之后将数据传输给设备3。设备3根据接收到的权值部分权值和w1+w2+w3与其本地的权值w4进行加和,得到新的权值w1+w2+w3+w4。之后,设备3触发其上的发送装置开始广播,将新的权值传输给设备0。设备0在接收到新的权值之后,再依次将该新的权值传输给设备1和设备2,完成整个传输过程。设备2在接收到新的权值之后,可以上报中断,通知主机本次传输结束。
[0074]
可选地,本技术的任务处理系统中的任务调度装置还可以在任务执行失败,则生
成异常信号,并销毁所述任务,其中,所述任务包括当前任务和下一任务。具体地,若当前任务执行失败时,将所述当前任务放入预设寄存器,将所述当前任务的通信描述符中的任务有效标识位更新为任务无效对应的数值,以使所述根据所述任务有效标识位销毁所述任务。该预设寄存器用于存储未放入发射队列的任务。
[0075]
下面结合图5说明该任务处理系统的工作过程。如图5所示,本技术提供了一种任务处理方法,以该方法应用于图1和图2中的应用场景中实现硬件加速模式的数据传送为例具体说明该方法的实现步骤。本技术实施例中,设备之间按照通信切片进行数据传输。具体地,该方法可以包括以下步骤:
[0076]
步骤s510,发送设备从存储器中获取通信切片,并将通信切片发送至目标接收设备。
[0077]
其中,该发送设备可以为执行发送操作的设备。如图2所示,每个发送设备均可以包括接收装置和发送装置。其中,接收装置用于获取并缓存所述通信描述符和/或通信切片;发送装置用于将所述通信切片传送至所述目标接收设备。
[0078]
具体地,发送设备的发送装置可以根据通信描述符从存储器中获取相应的数据块,并将该通信描述符和相应的数据块作为当前通信切片发送至目标接收设备。其中,目标接收设备可以是一个以上,如图2所示,目标接收设备可以是3个。在其他实施例中,目标接收设备还可以是5个,如图4所示,系统中共包含chip0-chip5六个设备,其中一个设备可以作为发送设备,其他5个设备可以作为目标接收设备。
[0079]
可选地,当各个设备之间首次进行数据传输时,发送设备的发送装置可以首先根据通信描述符将任务所涉及的数据拆分为至少一个数据块,并将该通信描述符和各个数据块分别绑定形成通信切片。之后,发送设备可以通信切片为单位分批次将数据传送至目标接收设备。可选地,发送设备可以连续将至少一个通信切片发送至目标设备,直至完成当前任务所涉及数据的传输。
[0080]
步骤s520,若所述目标接收设备成功接收所述通信切片时,则对应更新第二存储空间的设备状态以及所述第一存储空间的通信切片的数据信息。
[0081]
可选地,该第一存储空间上可以存储一数据信息表,所述数据信息表的表项用于以二维格式记录通信切片的数据信息,如图4所示,第一存储空间按照所述通信切片的切片标识以二维格式存储任务组的各个设备对应的通信切片的数据信息。该数据信息表中t
x
(t0~t63)表示通信切片的切片标识,可选地,每一切片标识对应一个通信切片。图中的chip
x
_data_info表示每一通信切片的数据信息,通信切片的数据信息涉及数据的形状和地址(segment_size+segment_number+segment_stride+dest_addr)。其中,x为0-n中的任一数值,chip
x
用于表示不同的设备,segment_size表示通信切片的数据块大小,segment_number表示数据块的数量,segment_stride表示数据块步长,dest_addr表示目的地址。
[0082]
其中,第二存储空间为dram上的存储空间,第二存储空间用于记录所述通信切片涉及的设备的状态信息。该第二存储空间上可以存储有任务状态信息表,所述任务状态信息表的表项用于记录任务组涉及的设备的状态信息。其可以采用如图3所示的表格的形式记录每一通信切片涉及的设备的状态信息。该表中t
x
(如图中的t0~t63)表示任务的身份标识,其中,x为0-n中的任一数值。lock_status表示n个设备的状态信息。设备的状态信息可以用于反映该设备是否接收到通信切片。
[0083]
可选地,当目标接收设备成功接收到通信切片的数据块时,该目标接收设备可以计算获得当前通信切片的切片标识,并根据当前通信切片的切片标识和目标接收设备的设备标识,对应更新第二存储空间的设备状态以及第一存储空间中的通信切片的数据信息。其中,目标接收设备可以按照如下方式计算获得当前通信切片的切片标识:
[0084]
transfer_id=(dst_data_addr-dst_data_base_addr)/segment_stride/segment_number;
[0085]
其中,dst_data_addr可以是指当前通信切片的目标地址,其可以包含于通信描述符中;dst_data_base_addr是指当前通信切片中数据块存储的起始地址;segment_stride是指当前通信切片中数据块对应的索引步长;segment_number是指该任务拆分获得数据块的拆分数量。
[0086]
更进一步可选地,目标接收设备可以根据该通信切片标识transfer id和设备标识chip id确定出偏移量c2c_data_info_addr(如图4所示),从而可以根据该偏移量对第一存储空间中相应位置的数据信息进行更新。
[0087]
可选地,目标接收设备的接收装置在成功接收到通信切片时,目标接收设备的任务调度装置可以触发人工智能处理器启动,该人工智能处理器可以计算获得当前通信切片的切片标识(如上文的公式所示),并根据当前通信切片的切片标识和目标接收设备的设备标识,对应更新第二存储空间的设备状态以及第一存储空间中的通信切片的数据信息。当然,在其他实施例中,当目标接收设备成功接收到通信切片时,也可以由软件程序(如驱动)对应更新第二存储空间的设备状态以及第一存储空间中通信切片的数据信息。
[0088]
可选地,设备之间的数据传输可以是同时进行的,此时,每个设备即作为发送设备发送数据,也可以作为目标接收设备接收数据。该设备的发送数据和接收数据可以相同,也可以不同。
[0089]
可选地,在硬件加速模式下,驱动程序可以为每个设备配置相应的通信描述符。在设备间进行数据传输之前,各个设备的发送装置可以根据该通信描述符将任务拆分为至少一个通信切片,各个设备之间可以按照通信切片进行传输。进一步地,为便于各个通信切片的数据块的索引及访存,各个通信切片的数据信息可以按照通信切片进行存储。
[0090]
以下举例说明按照通信切片进行传输时的数据访存及存储状态更新过程:
[0091]
例如,设备的发送装置可以将任务拆分为64个通信切片,其分别标记为t0~t63。该64个通信切片可以在设备之间进行传输,下面以通信切片t0的传输过程说明设备之间的数据传输,其他通信切片在设备之间与该通信切片t0类似,不再一一赘述。
[0092]
若发送设备为chip0(chip0可以是如图2中的设备0),目标接收设备为chip1(chip1可以是如图2中的设备1),发送设备chip0的发送装置可以根据通信切片t0中的通信描述符从存储器210中获得该通信切片对应的数据块,并将该通信切片t0对应的数据块发送至目标接收设备chip1。之后,目标接收设备chip1成功接收该通信切片t0对应的数据块时,则可以对应更新第二存储空间的设备状态以及所述第一存储空间的通信切片的数据信息。具体地,可以更新图3中第二存储空间中的第一行的lock_status表示的数组中1位置的值。同时可以更新图4中第一存储空间的第一行第一列的chip1_data_info。
[0093]
可选地,任务调度装置能够用于触发设备上的发送装置进行动作,以实现数据的广播、分发或转发等操作,此种转发操作无需人工智能处理器进行归并等运算。上述任务处
理方法还可以包括:
[0094]
目标接收设备的接收装置接收并缓存通信切片。可选地,目标接收设备的接收装置可以接收来自至少一个发送设备传输的通信切片。当目标接收设备的接收装置接收到各个发送设备传输的通信切片之后,则目标接收设备的发送装置可以配置核函数发射信息,并将该核函数发射信息传输至任务调度装置,以启动任务调度装置。其中,该核函数发射信息中包含通信切片的通信描述符,以使得任务调度装置能够根据通信描述符确定任务信息。
[0095]
目标接收设备的任务调度装置根据发送装置传送的通信描述符,获得相应的任务模板,并根据通信描述符和任务模板确定任务信息。
[0096]
目标接收设备的发送装置根据任务信息将目标接收设备上的指定数据传送至下一目标接收设备。其中,该目标接收设备上的指令数据可以是目标接收设备的接收装置从发送设备接收到的通信切片,也可以是目标接收设备的人工智能处理器进行运算后获得中间结果数据等等。
[0097]
可选地,目标接收设备的发送装置根据任务信息将目标接收设备上的指定数据传送至下一目标接收设备,可以包括:
[0098]
任务调度装置根据任务模板中的第一转发标志位,确定是否触发目标接收设备上的发送装置的动作,以通过发送装置将所述目标接收设备上的指定数据发送至下一目标接收设备。
[0099]
具体地,任务调度装置可以根据任务模板中的第一转发标志位确定是否触发设备上的发送装置220的动作,以通过发送装置220将通信数据或运算结果等数据发送至下一目标接收设备。当该任务模板中的第一转发标志位为第一标志值(如1)时,则任务调度装置可以触发设备上的发送装置220的动作。当该任务模板中的第一转发标志位为第二标志值(如0)时,则任务调度装置不会触发设备上的发送装置220的动作。本技术实施例中,通过任务调度装置根据通信描述符及其相应的任务模板,自动触发设备上发送装置的转发操作,从而减少了设备与主机之间的交互,能够提高任务的处理效率。
[0100]
可选地,当各个设备之间进行数据广播或分发等操作时,可以将第一转发标志位设置为第一标志位,从而无需启动人工智能处理器。进一步地,当各个设备之间进行数据广播或分发操作时,则在目标接收设备成功接收到发送设备传输的数据时,则可以确定该当前的广播或分发任务成功执行;否则,则可以确定该当前的广播或分发任务执行失败。
[0101]
可选地,目标接收设备的任务调度装置还可以基于一定的调度算法,确定调度信息,以使得人工智能处理器能够根据该任务调度信息执行相关任务。具体地,上述方法还可以包括:
[0102]
任务调度装置根据所述任务信息,确定任务的调度信息;
[0103]
人工智能处理器根据任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。可选地,人工智能处理器能够根据数据块的目的地址从存储器中读取相应的数据块,并根据该数据块进行运算,获得任务的执行结果。其中,任务的执行结果包括成功和失败该运算可以是归并运算(reduce)、全归并运算(all reduce)、分散归并运算(reduce-scatter)、全聚集(all-gather)等等,此处不做具体限定。
[0104]
进一步地,在触发人工智能处理器启动之前,还需确定该设备是否已接收到参与
运算的所有数据,即在进行运算之前需确定参与运算的数据是否完备。当目标接收设备的发送装置接收到执行所述任务所需的数据之后,所述人工智能处理器根据所述任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。
[0105]
例如,图2中各个设备0-3上的数据需发送至设备0上进行数据归并运算时,此时,当设备0的接收装置240接收到来自设备1、设备2和设备3上的数据后,设备0上的任务调度装置可以触发人工智能处理器启动,设备0上的人工智能处理器可以执行相应的归并运算,并获得相应执行结果。其中,该执行结果包括当前的归并任务等运算任务成功执行或执行失败。
[0106]
进一步地,在人工智能处理器完成运算之后,任务调度装置还可以根据任务模板确定是否进行第二转发操作。上述任务处理方法还包括:
[0107]
所述任务调度装置根据任务模板中的第二转发标志位,确定在所述人工智能处理器完成运算后是否触发目标接收设备上的发送装置的动作。
[0108]
任务模板中还可以包括第二转发标志位和第二转发路径(第二转发路径可以包括下一目标接收设备的标识等等)。可选地,各个设备的目标接收设备可以是一个以上,该任务调度装置可以通过其任务模板中的目标接收设备的标识确定各个设备需要向哪些目标接收设备发送数据。任务调度装置还可以根据任务模板中的第二转发标志位,确定在人工智能处理器完成运算后,是否需要触发设备上的发送装置,以将运算结果发送至该设备的目标接收设备。
[0109]
该任务模板中的第二转发标志位为第三标志值(如1)时,则任务调度装置可以在人工智能处理器运算完成之后,触发目标接收设备上的发送装置220的动作,以将运算结果发送至其他设备。当该任务模板中的第二转发标志位为第四标志值(如0)时,则任务调度装置不会触发目标接收设备上的发送装置220的动作。本技术实施例中,通过任务调度装置根据通信描述符及其相应的任务模板,自动触发设备上发送装置的转发操作,从而减少了设备与主机之间的交互,能够提高任务的处理效率。
[0110]
可选地,上述的任务处理方法还可以包括:
[0111]
目标接收设备在当前任务成功执行时,则根据所述当前任务的任务模板中的任务链标识位,获取下一任务模板;并根据所述下一任务模板执行所述任务组中的下一任务。即在当前任务成功执行时,可以通过当前任务的任务模板中的任务链标识位直接触发下一任务的执行,无需主机的介入,从而提高数据传输的效率。
[0112]
具体地,目标接收设备的任务处理系统200可以根据所述当前任务的任务模板中任务链标识位的数值确定是否启动下一任务。例如,在当前任务成功执行,且当前任务模板的任务链标识位的数值为第一预设值(如1)时,表明可以自动触发下一任务的执行,此时目标接收设备的任务处理系统200根据任务链标识位的数值为第一预设值确定启动下一任务。在当前任务执行失败,和/或当前任务模板的任务链标识位的数值为第二预设值(如0)时,表明不会自动触发下一任务的执行。
[0113]
进一步地,目标接收设备的任务处理系统200在确定启动下一任务时,根据所述当前任务模板中的下一任务模板的标识获取下一任务模板。目标接收设备的任务处理系统200中的任务调度装置可以根据所述下一任务模板获取所述下一任务的任务信息;并根据所述下一任务的任务信息对所述下一任务进行调度处理。具体的调度执行过程可参见上文
的描述,此处不再赘述。
[0114]
上述任务处理方法中,通过在任务模板中设置任务链标识位和下一任务模板的模板标识,实现了不间断执行多个任务,在前一任务执行完毕后自动跳转进行下一任务进行处理,这可以提高数据处理效率。
[0115]
可选地,任务处理系统200可以所述还用于根据任务模板中的中断标识位和对应的所述通信描述符中的执行状态标识位确定是否上报中断。具体地,目标接收设备的任务处理系统200可以根据任务模板中的中断标识位(interrupt_enable)以及通信描述符中的任务执行状态标识位(e,a)确定是否上报中断。
[0116]
更具体地,任务模板中的中断标识位(interrupt_enable)为2位,其可以代表4种情况,分别为00,01,10,11。任务执行状态标识位中的e表示任务终止(end of task);任务执行状态标识位中的a表示任务中的作业终止。(end of descriptor)。
[0117]
具体地,任务处理系统200可以根据下表中interrupt_enable的数值以及e,a的信号确定是否上报中断。确定上报中断的任务添加至结束队列(finish queue),需要说明是,finish queue中的任务依次上报中断。
[0118][0119]
可选地,多个任务可以形成一任务链,本技术实施例可以实现对任务链中至少一个任务的连续执行,从而提高任务的处理效率。如图7所示,本技术还提供了一种任务组处理方法,以该方法应用于图1和图2中的应用场景中为例具体说明该方法的实现步骤,该任务处理方法可以根据任务模板中的任务链标识位的值,实现任务组中至少一个任务的连续触发执行,从而提高了任务的处理效率。具体地,该方法可以包括以下步骤:
[0120]
步骤710,根据当前任务的通信描述符获取当前任务的任务模板。
[0121]
其中,通信描述符用于记录通信数据,其主要用于描述设备间任务(chip-to-chip任务)及其涉及的数据需经过过程。可选地,当一任务需要多个设备协同完成时,则该任务可以为设备间任务。每个设备间任务可以对应配置有一通信描述符,可选地,通信描述符可以包括:任务标识(task id)以及该任务所涉及数据的源地址和目的地址以及任务对应的任务模板标识等信息。各个设备的任务处理系统200可以通过队列机制存储通信描述符。
[0122]
各个设备可以解析接收到的当前任务的通信描述符,并根据当前任务的通信描述符中包含的任务模板标识,确定当前任务的任务模板。其中,所述当前任务的任务模板可以配置有当前任务的处理信息,其可以用于获得当前任务的处理信息。可选地,各个任务的任务模板可以是软件(如驱动程序)在进行数据通信之前预先配置给各个设备的任务处理系统的,各个设备的任务处理系统可以存储相应的任务模板。具体地,软件可以将各个任务的任务模板配置给设备的任务调度装置,任务调度装置可以存储相应的任务模板。
[0123]
可选地,任务模板中可以包含多个标识位,如任务模板中可以包括用于标识任务的有效性的有效性标志位、任务链标识位、转发标志位等等。该任务模板还可以包含任务权
重、数据信息、任务类型和下一任务的任务模板标识等信息,此处不做具体限定。
[0124]
步骤720,根据当前任务的任务模板确定是否启动下一任务。若确定启动下一任务,则执行步骤s730。若确定不启动下一任务,则此时可以上报信息至主机,由主机来触发设备之间的数据传输,即由硬件加速模式切换至普通传输模式。或者,在该当前任务执行成功后,即终止设备间的任务传输。
[0125]
其中,任务链是指具有时序的多个任务的组合,该组合可以被称为任务组。具体地,目标接收设备的任务处理系统200可以根据所述当前任务的任务模板中任务链标识位的数值确定是否启动下一任务。例如,当前任务模板的任务链标识位的数值为第一预设值(如1)时,表明可以自动触发下一任务的执行,此时,目标接收设备的任务处理系统200根据任务链标识位的数值为第一预设值确定启动下一任务。当前任务模板的任务链标识位的数值为第二预设值(如0)时,表明不会自动触发下一任务的执行。
[0126]
步骤730,根据所述当前任务模板中的下一任务模板的标识,获取下一任务模板,以使得任务处理系统能够根据该下一任务模板处理下一任务。
[0127]
其中,该下一任务模板被用于当前任务的下一任务的处理,同样的,该下一任务模板可以配置有下一任务的处理信息。可选地,下一任务模板中可以包含多个标识位,如任务模板中可以包括用于标识任务的有效性标志位、任务链标识位、转发标志位等等。该下一任务模板还可以包含任务权重、数据信息、任务类型和下一任务的任务模板标识等信息,此处不做具体限定。
[0128]
具体地,目标接收设备的任务处理系统200在确定启动下一任务时,根据所述当前任务模板中的下一任务模板的标识获取下一任务模板。目标接收设备的任务处理系统200中的任务调度装置可以根据所述下一任务模板获取所述下一任务的任务信息;并根据所述下一任务的任务信息对所述下一任务进行调度处理。目标接收设备的任务处理系统200的任务处理装置中的人工智能处理器可以根据所述下一任务的任务信息进行调度处理,得到所述下一任务的执行结果。
[0129]
上述任务处理方法中,通过在任务模板中设置任务链标识位和下一任务模板的模板标识,实现了不间断执行多个任务,在前一任务执行完毕后自动跳转进行下一任务进行处理,这可以提高数据处理效率。
[0130]
可选地,任务处理系统200还可以根据该当前任务的通信描述符和任务模板获得任务信息。具体地,任务处理系统200的发送装置210获取当前通信描述符,之后,发送装置可以将该通信描述符传送至任务处理装置,任务处理装置可以根据当前任务的通信描述符获取当前任务的任务模板,之后将通信描述符和任务模板进行绑定,得到当前任务的任务信息。任务处理装置可以根据该当前任务的任务信息对该当前任务进行处理,以获得该当前任务的执行结果。该当前任务的执行结果包括成功和失败。
[0131]
可选地,若当前任务的执行结果为成功,且所述当前任务的任务模板中的任务链标识位为第一预设值,则可以直接触发当前任务的下一任务,从而可以实现多个任务的链式执行,提高任务组中多个任务的执行效率。具体地,若当前任务的执行结果为成功,且当前任务的任务模板中的任务链标识位为第一预设值,则可以执行上述的步骤s730,根据所述当前任务模板中的下一任务模板的标识获取下一任务模板,以使得任务处理系统能够根据该下一任务模板处理下一任务。
[0132]
进一步地,在当前任务成功执行,且在当前任务的任务模板中任务链标志位为第二预设值,则该当前任务可能是任务组中的最后一个任务,无需触发下一任务启动。在当前任务执行失败,和/或当前任务模板中任务链标志位为第二预设值,则确定不启动所述下一任务。具体地,在当前任务执行失败时,则无论当前任务的任务模板中的任务链标志位为第一预设值还是第二预设值,均不启动下一任务,以避免当前任务的执行失败导致下一任务执行失败。
[0133]
可选地,该任务组可以包括reduces,reduce-scatter,all-reduce,分发或广播任务中的一种或几种的组合。其中的分发或广播任务可以通过设备的任务处理系统的接收装置和发送装置实现,无需触发人工智能处理器。其中的数据归并运算任务等需要触发任务处理系统的发送装置和接收装置进行数据的转发,并通过任务处理装置触发人工智能处理器进行相应的数据运算。
[0134]
例如,当前任务可以是归并reduces运算,该当前任务的下一任务可以是全归并all-reduce运算,则在确定当前任务的执行结果成功时,则可以通过当前任务的任务模板中的下一任务模板的标识,获得全归并all-reduce任务的任务模板,从而根据该全归并all-reduce任务的任务模板执行该下一任务,以实现任务组中多个任务的链式连续执行。
[0135]
再如,当前任务可以是广播或分发任务,当前任务的下一任务可以是运算任务。图6(b)示出的为将数据a、数据b、数据c、数据d在设备0(目标接收设备)上归并的过程。其中,数据a在设备0上,数据b在设备1上,数据c在设备2上,数据d在设备3上。为实现该过程,首先确定任务组,其中的“设备1将数据b发送至设备0,设备2将数据c发送至设备0,设备3将数据d发送至设备0”为当前任务;“设备0将数据a,数据b,数据c,数据d进行归并”为下级任务。其中的数据a、数据b、数据c和数据d可以是一个通信切片的数据块。
[0136]
执行当前任务:设备1的任务处理系统的发送装置将数据b发送至设备0的任务处理系统的接收装置,设备2的任务处理系统的发送装置将数据c发送至设备0的任务处理系统的接收装置,设备3的任务处理系统的发送装置将数据d发送至设备0的任务处理系统的接收装置;设备0接收数据b、数据c以及数据d之后,执行同步操作。
[0137]
在当前任务执行完成成功之后,且当前任务的任务模板中的任务标识链为1时,则可以执行下一任务:并将数据a,数据b,数据c,数据d进行归并。具体地,任务处理系统的任务调度器可以将下一任务发送至人工智能处理器,该人工智能处理器能够执行数据a、数据b、数据c和数据d的归并任务。
[0138]
在本技术一个实施例中提出了一任务组处理方法。所述任务组包含多个任务,所述多个任务形成任务链,任务链的任务按照次序被执行。例如,需将多个其他片上传输的数据进行归并的任务即为一种任务组。该任务组中数据归并任务的执行需依赖于多个其他片传输数据的执行结果。下面以该任务处理方法应用于图2中的应用环境应用场景为例具体说明该方法的实现步骤。如图8所示,该方法包括以下步骤:
[0139]
步骤s810,若当前任务成功执行,则任务调度装置可以根据当前任务的任务模板,获取所述当前任务的下一任务的下一任务模板,以启动所述下一任务。
[0140]
可选地,目标接收设备的任务处理系统200根据获取的当前任务的通信描述符,获取当前任务模板;根据当前任务的通信描述符和当前任务模板,获取所述当前任务的任务信息。进一步地,任务处理系统200可以根据当前任务的任务信息执行所述当前任务,获得
所述当前任务的执行结果;所述当前任务的执行结果包括成功和失败。在设备上的任务调度装置确定当前任务成功执行,则任务调度装置可以根据当前任务的任务模板,获取所述当前任务的下一任务的下一任务模板。
[0141]
其中,当前任务的任务模板可以包括下一任务模板的标识,下一任务模板的标识用于指明下一任务模板。具体地,目标接收设备的任务处理系统200在确定当前任务成功执行,则目标接收设备的任务调度装置可以根据当前任务的任务模板中的下一任务模板的标识,获取所述当前任务的下一任务的下一任务模板。
[0142]
可选地,当前任务或下一任务可以是归并运算任务(reduce)、全归并运算任务(all reduce)、分散归并运算任务(reduce-scatter)、全聚集任务(all-gather)、广播任务或分发任务等等,此处不做具体限定。
[0143]
步骤s820,根据所述下一任务模板,确定所述下一任务的任务信息。
[0144]
其中,所述下一任务的任务信息用于执行所述下一任务。具体地,任务处理装置230的任务调度装置可以根据所述下一任务模板,确定所述下一任务的任务信息,并将所述下一任务的任务信息获取任务数据,以使目标接收设备执行所述下一任务。
[0145]
本实施例的任务处理方法,通过在任务模板中增设下一任务模板,使任务处理时可自动切换任务,该方法可以不仅提高了任务的处理效率,且可以保证具有依赖关系的任务在执行时逻辑正确。
[0146]
可选地,当前任务的任务模板包括任务链标识位;上述方法还包括:
[0147]
在当前任务成功执行,则根据当前任务模板中任务链标志位的数值确定是否启动下一任务,任务链标识位用于指示各个通信任务执行完毕后是否需要启动下一任务。
[0148]
具体地,在当前任务成功执行,且当前任务模板中任务链标志位为第一预设值,则确定启动下一任务;在当前任务执行失败,和/或当前任务模板中任务链标志位为第二预设值,则确定不启动下一任务。
[0149]
可选地,本技术的任务处理系统还可以在任务执行失败,则生成异常信号,并销毁所述任务,其中,所述任务包括当前任务和下一任务。具体地,若当前任务执行失败时,将所述当前任务放入预设寄存器,将所述当前任务的通信描述符中的任务有效标识位更新为任务无效对应的数值,以使所述根据所述任务有效标识位销毁所述任务。该预设寄存器用于存储未放入发射队列的任务。
[0150]
可选地,如图9所示,该任务处理方法还包括:
[0151]
步骤s910,根据通信描述符中的任务有效标识位,确定所述任务是否有效。
[0152]
步骤s920,若所述任务无效,则销毁所述任务。
[0153]
具体地,目标接收设备的任务调度装置可以通过上述方法确定未开始处理的任务是否有效,若确定某一任务无效,更新该某一通信描述符中任务有效标识位,可选地,可设置该标识位数值为1时,任务有效;数值为0时,任务无效(需销毁)。之后,将这些未开始处理的任务放入指定寄存器,任务调度装置200从该指定寄存器读取未开始处理的任务,有效标识位为0的直接销毁,有效标识位为1的重新放入任务调度装置200的任务队列。
[0154]
在其中一个实施例中,如图10所示,还提出了一种任务销毁方法,所述方法包括:
[0155]
步骤s1001,当接收到暂停指令时,识别未处理任务中需销毁的任务。
[0156]
步骤s1002,将所述需销毁的通信描述符的任务有效位修改为无效,之后将所有所
述未处理任务的任务放入寄存器。
[0157]
步骤s1003,从所述寄存器中读取所述未处理任务的通信描述符,若某一未处理任务的通信描述符的任务有效位为无效,则销毁所述某一未处理任务。
[0158]
应该理解的是,虽然图5、图7-图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图5、图7-图10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0159]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
[0160]
可选地,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行上述的任务组处理方法,如图7和图8所示。具体地,存储介质中的计算机程序被处理器执行时实现如下步骤:
[0161]
若当前任务成功执行,则根据所述当前任务的任务模板,确定所述当前任务的下一任务的下一任务模板,以启动所述下一任务;
[0162]
根据所述下一任务模板,获取所述下一任务的任务信息,以对所述下一任务进行处理,其中,所述下一任务的任务信息用于执行所述下一任务。
[0163]
应当清楚地是,该存储介质中的计算机程序被处理器执行时,其实现的各个方法步骤与上述实施例中任务组处理方法中各个步骤的执行基本一致,具体可参见上文的描述,此处不做赘述。
[0164]
可选地,本技术实施例还提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图11所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种任务组处理方法,具体参见上文的图7和图8。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、
触控板或鼠标等。
[0165]
本领域技术人员可以理解,图11中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0166]
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0167]
依据以下条款能够更好地理解本技术的内容:
[0168]
a1、一种任务处理系统,所述系统包括:
[0169]
目标接收设备,用于接收通信切片,其中,所述通信切片包括通信描述符和数据块;
[0170]
若所述目标接收设备成功接收所述通信切片时,则对应更新第二存储空间的设备状态以及所述第一存储空间中相应通信切片的数据信息。
[0171]
a2、根据条款a1所述的系统,所述第一存储空间按照通信切片的切片标识以二维格式存储各个设备对应的通信切片的数据信息。
[0172]
a3、根据条款a1或a2所述的系统,所述目标接收设备在成功接收所述当前通信切片时,则根据所述当前通信切片的切片标识和所述目标设备的设备标识,对应更新第二存储空间的设备状态以及所述第一存储空间中相应通信切片的数据信息。
[0173]
a4、根据条款a1-a3任一项所述的系统,所述目标接收设备包括:
[0174]
接收装置,用于获取并缓存所述通信描述符和/或通信切片;
[0175]
任务调度装置,用于根据所述发送装置传送的通信描述符,获得所述任务模板,并根据所述通信描述符和所述任务模板确定所述任务信息;以及
[0176]
发送装置,用于根据所述任务信息将所述目标接收设备上的指定数据传送至下一目标接收设备。
[0177]
a5、根据条款a4所述的系统,所述任务模板中包括第一转发标志位;
[0178]
所述任务调度装置用于根据所述任务模板中的第一转发标志位,确定是否触发目标接收设备上的发送装置的动作,以通过所述发送装置将所述目标接收设备上的指定数据发送至下一目标接收设备。
[0179]
a6、根据条款a4或a5所述的系统,所述目标接收设备还包括人工智能处理器;
[0180]
所述任务调度装置还用于根据所述任务信息,确定任务的调度信息;
[0181]
人工智能处理器用于根据所述任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。
[0182]
a7、根据条款a6所述的系统,当所述发送装置接收到执行所述任务所需的数据之后,所述人工智能处理器根据所述任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。
[0183]
a8、根据条款a7所述的系统,所述任务模板中还包括第二转发标志位;
[0184]
所述任务调度装置用于根据任务模板中的第二转发标志位,确定在所述人工智能处理器完成运算后是否触发所述目标接收设备上的发送装置的动作。
[0185]
a9、根据条款a1-a8任一项所述的系统,若所述目标接收设备在当前任务成功执行
时,则根据所述当前任务的任务模板中的任务链标识位,获取下一任务模板;并根据所述下一任务模板执行所述任务组中的下一任务。
[0186]
a10、根据条款a1-a9任一项所述的系统,所述当前任务或下一任务包括归并任务、全归并任务、分散归并任务、全聚集任务、广播任务或分发任务中的任一种。
[0187]
a11、根据条款a4所述的系统,所述任务调度装置还用于根据任务模板中的中断标志位和对应的所述通信描述符中的执行状态标识位确定是否上报中断。
[0188]
a12、根据条款a4所述的系统,所述任务调度装置在根据所述任务模板中的有效性标志位确定任务无效时,则生成异常信号,并销毁所述任务。
[0189]
a13、根据条款a12所述的系统,所述任务调度装置在生成异常信号之后,将所述任务的通信描述符中的任务有效标志位更新为任务无效对应的数值,以使所述根据所述任务有效标志位销毁所述通信任务。
[0190]
a14、根据条款a1-a13中任一项所述的系统,所述系统还包括发送设备,用于将所述当前通信切片发送至所述目标接收设备。
[0191]
a15、根据条款a14所述的系统,所述发送设备还用于获取所述通信数据,根据所述通信描述符将任务拆解为至少一个通信切片;其中,所述通信切片包含所述通信切片的数据块和所述通信描述符。
[0192]
a16、一种任务处理方法,所述方法包括:
[0193]
发送设备获取通信切片,并将通信切片发送至目标接收设备;
[0194]
目标接收设备在成功接收所述通信切片时,则对应更新第二存储空间的设备状态以及所述第一存储空间中相应通信切片的数据信息。
[0195]
a17、根据条款a16所述的方法,所述方法还包括:
[0196]
当目标接收设备成功接收到通信切片的数据块时,该目标接收设备计算获得当前通信切片的切片标识,并根据当前通信切片的切片标识和目标接收设备的设备标识,对应更新第二存储空间的设备状态以及第一存储空间中的通信切片的数据信息。
[0197]
a18、根据条款a16或a17所述的方法,所述第一存储空间按照通信切片的切片标识以二维格式存储各个设备对应的通信切片的数据信息。
[0198]
a19、根据条款a16-a18任一项所述的方法,所述方法还包括:
[0199]
目标接收设备的接收装置接收并缓存通信切片;
[0200]
目标接收设备的任务调度装置根据发送装置传送的通信描述符,获得相应的任务模板,并根据通信描述符和任务模板确定任务信息;
[0201]
目标接收设备的发送装置根据任务信息将目标接收设备上的指定数据传送至下一目标接收设备。
[0202]
a20、根据条款a19所述的方法,目标接收设备的发送装置根据任务信息将目标接收设备上的指定数据传送至下一目标接收设备,包括:
[0203]
任务调度装置根据任务模板中的第一转发标志位,确定是否触发目标接收设备上的发送装置的动作,以通过发送装置将所述目标接收设备上的指定数据发送至下一目标接收设备。
[0204]
a21、根据条款a19所述的方法,所述方法还包括:
[0205]
上述方法还可以包括:
[0206]
任务调度装置根据所述任务信息,确定任务的调度信息;
[0207]
人工智能处理器根据任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。
[0208]
a22、根据条款a21所述的方法,所述方法还包括:
[0209]
当目标接收设备的发送装置接收到执行所述任务所需的数据之后,所述人工智能处理器根据所述任务调度装置传送的调度信息执行所述任务,获得任务的执行结果。
[0210]
a23、根据条款a21或a22所述的方法,所述方法还包括:
[0211]
所述任务调度装置根据任务模板中的第二转发标志位,确定在所述人工智能处理器完成运算后是否触发目标接收设备上的发送装置的动作。
[0212]
a24、根据条款a16-a23任一项所述的方法,所述方法还包括:
[0213]
目标接收设备在当前任务成功执行时,则根据所述当前任务的任务模板中的任务链标识位,获取下一任务模板;并根据所述下一任务模板执行所述任务组中的下一任务。
[0214]
a25、根据条款a16-a24任一项所述的方法,所述方法还包括:
[0215]
目标接收设备根据任务模板中的中断标识位和对应的所述通信描述符中的执行状态标识位确定是否上报中断。
[0216]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1