数据处理方法、装置、设备及介质与流程
未命名
10-09
阅读:125
评论:0
1.本技术涉及计算机技术领域,尤其涉及数据处理方法、装置、设备及介质。
背景技术:
2.随着人工智能技术的发展,对人工智能技术的要求也越来越高,包括对数据处理速度要求越来越快,数据处理量也越来越多。
3.在现有技术中,为了能够有效提高处理器的利用率,会尽量减少数据输入输出操作。其中一种方式是对执行计算任务的多个算子融合,完成融合的算子可在不需要进行算子之间的数据输入输出的情况下执行计算任务。然而,当前算子融合计算并不能满足所有数据类型,此外有的硬件提供方的产品也对算子融合进行限制。
技术实现要素:
4.为解决或改善现有技术中存在的问题,本技术各实施例提供了数据处理方法、装置、设备及介质。
5.第一方面,在本技术的一个实施例中,提供了一种数据处理方法。应用于计算节点,该方法包括:
6.响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;
7.若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系;
8.根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。
9.第二方面,本技术的一个实施例中,提供了一种数据处理装置,所述装置包括:
10.算子确定模块,用于响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;
11.关系确定模块,用于若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系;
12.重排模块,用于根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。
13.第三方面,在本技术的一个实施例中,提供了一种电子设备,包括存储器及处理器;其中,
14.所述存储器,用于存储程序;
15.所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现第一方面所述的方法。
16.第四方面,在本技术的一个实施例中,提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的方法。
17.本技术实施例提供的技术方案,在执行数据处理过程中,可能需要多个算子参与数据处理。为了提高处理能力,对多个算子进行融合。具体来说,接收到数据处理请求后,确定用于执行该请求的需要融合的第一级联算子和第二级联算子。当第一级联算子输出的计算结果符合第一数据处理规律,而第二级联算子输入的数据符合第二数据处理规律,并且第一数据处理规律与第二数据处理规律不同的时候,对第一级联算子输出的计算结果按照数据重排关系进行重排序,进而,将重排后得到的输入数据作为与第一级联算子具有融合关系的第二级联算子的输入,从而能够满足算子融合计算需求。通过上述方式,针对限制算子融合的场景中,根据需要融合的第一级联算子和第二级联算子之间的数据重排关系,对第一级联算子的输出结果进行数据重排序,从而满足第二级联算子的输入需求,能够有效解决无法进行算子融合处理数据的问题,进而提高各种数据类型的算子融合能力以及数据处理能力。
附图说明
18.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本技术实施例提供的数据处理方法的流程示意图;
20.图2a为本技术实施例提供的第一多线程寄存器存储计算结果的示意图;
21.图2b为本技术实施例提供的第二多线程寄存器存储输入数据的示意图;
22.图3为本技术实施例举例说明数据重排后对应关系的示意图;
23.图4为本技术实施例举例说明的协调矩阵的示意图;
24.图5为本技术实施例提供的一种数据处理装置的示意图;
25.图6为本技术实施例提供的一种电子设备的结构示意图。
具体实施方式
26.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述。
27.在本技术的说明书、权利要求书及上述附图中描述的一些流程中,包含了按照特定顺序出现的多个操作,这些操作可以不按照其在本文中出现的顺序来执行或并行执行。操作的序号如101、102等,仅仅是用于区分各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。此外,下文描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
28.随着人工智能技术的发展,用于为人工智能技术提供算力支持的硬件(比如,通用图形处理器(general-purpose computing on graphics processing units,gpgpu))性能也在不断提升。处理对硬件性能进行升级之外,还在尝试各种算法改进来实现人工智能数据处理小、处理能力的提升。在实际应用中,可能需要多个算子先后执行计算任务,在执行计算任务过程中,前一个算子执行完计算任务后,输出计算结果,并将该计算结果通过输入输出接口发送到内存当中,当下一个算子有计算需求的时候,会从内存将上一个算子的计算结果通过输入输出接口发送到下一个算子的寄存器中,进而将计算结果作为下一个算子的输入。在前一个算子和下一个算子之间传输数据,需要多次进行数据输入输出,造成不必要的数据传输开销、内存访问开销等,直接影响数据处理效率。因此,现提出一种进行算子融合的方案。具体来说,算子融合主要通过对计算图上存在数据依赖的“生产者-消费者”算子进行融合,从而提升中间tensor数据的访存局部性,以此来解决内存墙问题。这种融合技术也统称为“buffer融合”。换言之,需要融合的两个级联算子之间可以实现不经过内存进行数据传输,也就是,前一个级联算子输出结果可以直接作为后一个级联算子的输入。然而,当前能够支持算子融合的硬件类型有限,算子能够支持融合的数据类型也有限,这就导致算子融合技术难以得到广泛应用,数据处理效率提升受限于硬件类型、数据类型等各种因素。例如,fp16/tf32/float64不同的数据类型之间从数据的读取到中间结果的输出,其数据排布规律有着非常大的差异,这种差异导致大部分数据类型在前一个级联算子(比如,gemm)的输出无法满足下一个级联算子的输入格式要求,也就意味着前一个级联算子无法与下一个算子融合为一个大算子执行计算。因此,需要一种能够克服有需要融合的级联算子之间数据处理受限的方案。
29.术语解释:
30.通用矩阵乘法(general matrix to matrix multiplication,gemm):它代表全局矩阵到矩阵的乘法,它本质上将两个输入矩阵乘法在一起,得到一个输出矩阵。
31.级联gemm:将多个gemm算子融合成一个算子的优化方法。
32.算子(operator):数据库中对数据进行计算的一种操作符。
33.下面将结合具体实施例对本技术实现的技术方案进行解释说明。
34.如图1为本技术实施例提供的数据处理方法的流程示意图。该方法的执行主体可以是计算节点。从图1中可以看到具体包括如下步骤:
35.101:响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子。
36.102:若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系。
37.103:根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。
38.这里所说的级联算子可以理解为需要融合的算子,比如前文所述,将两个gemm级联算子融合为一个算子,从而有效提高数据处理能力。
39.这里所说的数据处理规律可以理解为计算硬件(比如,通用图形处理器gpgpu)针对存储在寄存器中各种数据类型的数据处理顺序。不同计算硬件针对相同矩阵的数据处理
顺序不同,或者,相同计算硬件针对不同数据类型(比如,fp16/tf32)的数据处理顺序不同。因此,若要使得不同计算硬件执行相同的数据处理顺序,就需要对线程寄存器中的矩阵元素顺序做出适应性调整,也就是前文所说的重排。
40.这里所说的计算结果,是由第一级联算子(比如,gemm1)执行计算任务后输出的结果,这个计算结果可以以矩阵形式存储在线程寄存器中,一般来说会分布在多条线程寄存器中。这里所说的输入数据是将要输入到第二级联算子执行计算任务的数据。该输入数据也可以是以矩阵形式存储在对应的线程寄存器中,并且该线程寄存器可以为多线程寄存器。
41.在实际应用中,当接收到数据处理请求后,会调用相应的机器学习模型执行该数据处理任务。在该机器学习模型中,涉及多个算子共同完成该数据处理任务。为了提高算子的数据处理能力,则可以对部分算子进行融合。具体来说,如两个算子为相邻算子,也就是前一个算子(比如,第一级联算子)的输出数据可以直接作为下一个算子(比如,第二级联算子)的输入数据,则认为这两个算子是需要融合的。当然,这里仅作为举例说明。在实际应用中,需要融合的可以是多个算子,比如,第一级联算子的输出数据作为第二级联算子的输入数据,同时,第二级联算子的输出数据又作为第三级联算子的输入数据,则可知,第一级联算子、第二级联算子和第三级联算子需要融合。这里仅作为举例说明,并不构成对本技术技术方案的限制,在实际应用中用户可以根据实际应用需求选择对多少个算子进行融合,选择对哪些算子进行融合。
42.在确定哪些算子需要融合之后,还需要进一步判断哪些级联算子能够融合,哪些级联算子不能融合。对于能够融合的算子直接融合并执行计算任务。如检查发现不同级联算子之间的数据处理规律不同,则可知这两个级联算子无法直接融合,需要对其进行进一步优化处理。将在下述实施例中展开说明,这里就不再重复赘述。
43.这里所说的第一数据处理规律是指经由第一级联算子处理后得到的计算结果符合第一数据处理规律,并且按照第一数据处理规律存储到第一多线程寄存器中。这里所说的第二数据处理规律是指将要输入第二级联算子的数据,按照第而数据处理规律存储在第二多线程寄存器中。进而,判断第一数据处理规律与第二数据处理规律是否相同。若第一数据处理规律与第二数据处理规律不同,则表示第一级联算子与第二级联算子无法直接融合为一个算子,需要进行数据重排。这个重排过程,具体来说,就是将第一级联算子输出的计算结果重排为符合第二数据处理规律的输入数据,从而使得第一级联算子和第二级联算子之间实现融合。
44.这里需要说明的是,在执行数据重排的时候,可以在线程寄存器内完成数据重排任务,也可以在共享内存中完成重排任务,具体将在下述实施例中展开说明,这里就不再重复赘述。
45.通过上述方案,当有算子需要融合的时候,若出现两个算子分别对应的计算硬件不同(比如,gpgpu类型不同)、待处理数据类型不同所导致的算子无法融合的情况,可以针对需要融合的第一级联算子和第二级联算子之间的传输数据进行数据重排。从而,使得第一级联算子输出的计算结果符合第二数据处理规律的输入数据,进而第一级联算子与第二级联算子可以融合为一个算子执行数据处理任务。融合后的算子在处理数据的时候,不需要反复读写内存,有效提高(比如人工智能场景中)数据处理能力。
46.在本技术的一个或者多个实施例中,所述确定需要融合的第一级联算子和第二级联算子,包括:确定用于执行所述数据处理请求的机器学习模型;根据所述机器学习模型中多个算子的执行流程,从所述多个算子中确定需要融合的第一级联算子和第二级联算子。
47.在机器学习模型中(比如,复杂的深度神经网络模型)中,会包含有多个算子。这些算子按顺序执行相应的数据处理任务。在有的情况下,机器学习模型中两个算子之间还有其他数据处理步骤(比如,转换),表示前一个算子的输出数据不能直接作为下一个算子的输入数据,前一个算子与后一个算子无法进行算子融合;在有的情况下,机器学习模型中两个算子先后连续执行计算任务,前一个算子的输出数据能够作为后一个算子的输入数据,因此,前一个算子(也就是第一级联算子)和后一个算子(也就是第二级联算子)之间需要融合。通过在机器学习模型中选择需要融合的算子进而采用对应的方式进行融合(比如,不需要数据重排直接融合,或者通过数据重排后再融合),从而能够有效提升机器学习模型的数据处理能力。
48.在本技术的一个或者多个实施例中,所述若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系,包括:
49.根据所述第一级联算子的计算结果的数据类型,确定所述第一数据处理规律;
50.根据所述第二级联算子的输入数据的数据类型类型,确定所述第二数据处理规律;
51.若所述第一数据处理规律与所述第二数据处理规律不同,则根据所述第一数据处理规律和所述第二数据处理规律,确定所述计算结果与所述输入数据的所述数据重排关系。
52.基于上述实施例,在确定需要融合的第一级联算子和第二级联之后,进一步还需要判断计算结果的第一数据处理规律和输入数据的第二数据处理规律是否相同。具体判断过程如下:
53.确定第一级联算子所输出的计算结果的数据类型(比如,浮点数据tf32),以及,第二级联算子所输入的输入数据的数据类型;根据计算结果的数据类型确定该计算结果在寄存器中存储规律,以及计算过程(比如,对寄存器中数据处理顺序)的处理规律,进而将存储规律、处理规律等作为数据处理规律。若寄存器的存储规律相同、处理规律也相同,则表示计算结果和输入数据之间不需要数据重排,可直接进行算子融合。若寄存器的存储规律不同,和/或数据处理规律不同,则需要先将计算结果进行数据处理。进而,整理第一数据处理规律、第二数据处理规律之间数据对应关系,比如,第一数据处理规律为对寄存器中的数据逐行连续存储处理,第二数据处理规律为对寄存器中数据分组(比如,间隔处理)计算处理。则根据不同寄存器中存储以及数据处理规律,确定计算结果与输入数之间的数据重排关系。通过上述数据处理规律的总结,能够实现对计算结果与输入数据之间的数据转换,从而使得第一级联算子的计算结果可以作为第二级联算子的输入,从而满足第一级联算子和第二级联算子融合条件。
54.在本技术的一个或者多个实施例中,所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:
55.利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到
所述计算结果;
56.将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
57.根据所述数据重排关系,对所述计算结果重排处理,将重排后得到的所述输入数据按照所述第二数据处理规律存储到第二多线程寄存器。
58.如图2a为本技术实施例提供的第一多线程寄存器存储计算结果的示意图。从图2a中可以看到,将第一级联算子执行对待计算数据的计算任务得到的计算结果,该计算结果按照多第一数据处理规律存储在第一多线程寄存器中。这里的线程有多个,包括t0、t1、t2
……
tn;在每个线程中,存储有数据32个,包括:c0、c1、c2
……
c31。
59.如图2b为本技术实施例提供的第二多线程寄存器存储输入数据的示意图。从图2b中可以看到,将第二级联算子对应的输入数据,该输入数据按照多第一数据处理规律存储在第二多线程寄存器中。这里的线程有多个,包括newt0、newt1、newt2
……
newtn;在每个线程中,存储有数据32个,其中newt0包括:t0:c0、t0:c2、t2:c0
……
tn:c2。第二寄存器中的新线程newt去第一多线程寄存器的每个线程中间隔的两个数据,newt1、newt2
……
newtn与第一多线程寄存器之间的数据重排关系类似,就不再一一展开说明。
60.可知,为了满足第一级联算子和第二级联算子的数据处理需求,在第一级联算子的寄存器中和第二级联算子的寄存器中的存储顺序不同。在存储的时候,根据数据重排后的顺序存储在第二多线程寄存器中,从而使得第二多线程寄存器中的数据可以直接输入到第二级联算子,以便后续进行算子融合。
61.在本技术的一个或者多个实施例中,当所述计算结果和所述输入数据为存储在多线程寄存器中的矩阵时,
62.所述确定所述计算结果与所述输入数据的所述数据重排关系,包括:
63.对所述第一多线程寄存器中的所述计算结果拆分,得到第一重排分组矩阵;
64.对所述第二多线程寄存器中的所述输入数据拆分,得到第二重排分组矩阵;
65.根据所述第一数据处理规律和所述第二数据处理规律,确定所述第一重排分组矩阵中矩阵元素与所述第二重排分组矩阵中矩阵元素的对应关系;
66.根据所述对应关系,确定所述计算结果与所述输入数据的所述数据重排关系。
67.在实际应用中,算子执行数据处理的时候,会按照一定的数据处理规律进行处理。比如,会对第一多线程寄存器中存储内容进行分组。具体来说:
68.按照四个线程四个数据(矩阵元素)为一组。按照前文所述的重排过程,对分组数据进行分组拆分以及数据重排。假设,第一级联算子对应的第一多线程寄存器进行拆分,得到第一重排分组矩阵accum vreg中t0~t3线程,在重排分组矩阵中每行线程中包含有4个矩阵元素,比如t0:{c0,c1,c2,c3}、t1:{c0,c1,c2,c3}。
69.采用同样的方式,对第二多线程寄存器中的输入数据进行拆分,也是按照四个线程四个数据(也就是四个矩阵元素)的方式进行拆分,得到第二重排分组矩阵a1 vreg。根据数据处理规律可知,第二重排分组矩阵中矩阵元素为从第一重排分组矩阵中间隔选取矩阵元素组合得到的。在本实施例中的对应关系为:第一重排分组矩阵中的第一线程t0中矩阵元素c0对应于第二重排分组中第一个线程newt0中第一个矩阵元素位置;第一重排分组矩阵中的第一线程t0中矩阵元素c2对应于第二重排分组矩阵中第一线程newt0中第二个矩阵元素位置;第一重排分组矩阵中的矩阵元素第三线程t2中矩阵元素c0对应于第二重排分组
中第一线程newt0中第三个矩阵元素位置;第一重排分组矩阵中的矩阵元素第三线程t2中矩阵元素c2对应于第二重排分组中第一线程newt0中第四个矩阵元素位置;这样就得到第二重排分组矩阵中第一线程newt0中全部矩阵元素。采用相同的方式,可以确定newt1、newt2、newt3中各矩阵元素之间的对应关系。这里需要说明的是,这里所说的数据处理规律为举例说明,并不构成对本技术技术方案的限制,在实际应用中用户可以根据需要对数据处理规律进行相应调整。
70.按照前文举例来说的数据重排关系,重排后得到的第二重排分组矩阵中包含的线程行数,以及每一行线程中包含的矩阵元素个数与第一重排分组矩阵相同,比如:new t0:{t0:c0,t0:c2,t2:c0,t2:c2}、new t1:{t0:c1,t0:c3,t2:c1,t2:c3}。
71.如图3为本技术实施例举例说明数据重排后对应关系的示意图。如前文所述,在第一多线程寄存器、第二多线程寄存器中,按照四个线程、四个矩阵元素拆分得到分组,进而,按照数据重排关系进行重排处理。对于其他分组,可以通过增加相应偏置量来解决。
72.例如:计算结果拆分后得到第三重排分组矩阵accum vreg1中t0~t3,包含的矩阵元素如下:
73.t0:{c4,c5,c6,c7}t1:{c4,c5,c6,c7}t2:{c4,c5,c6,c7}t3:{c4,c5,c6,c7}。
74.在确定对应关系的时候,增加偏置量,具体来说,c4对应于第四重排分组中第一线程的第一个矩阵元素位置,c4对应的位置为该线程起始位置a+4,增加四个偏置量。同理,c5、c6、c7也分别增加相应偏置量。
75.在本技术的一个或者多个实施例中,所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:
76.根据所述数据重排关系,生成用于表示重排顺序的重排协调矩阵;
77.基于所述重排协调矩阵中矩阵元素,生成用于执行重排任务的重排编码;
78.基于所述重排编码对所述计算结果中各元素执行重排任务,生成符合所述第二数据处理规律的输入数据。
79.在实际应用中,确定数据重排关系之后,执行数据重排任务。然而,在执行数据重排任务的时候,在每一轮重排迭代中,每个线程拿出1个矩阵元素供其他线程获取;每个线程从其他线程获取1个矩阵元素,从而确保重排前后每个线程中矩阵元素数量不变。因为一轮交换中,一个线程只能拿出1个矩阵元素,所以在这轮交换中,其他线程只能获取该线程的这个矩阵元素,不能获取该线程拥有的其他的矩阵元素。因此,可能出现多个线程的取数请求的情况,也就是可能出现一轮交换中多个线程企图同时获取同一个线程拥有的不同矩阵元素的情况。因此,需要根据数据重排关系设定重排执行过程,比如,生成用于表示重排顺序的重排协调矩阵,从而实现错开重排交换矩阵元素,避免出现矩阵元素交换冲突、矩阵元素交换错误等问题。具体生成过程将在下述实施例中展开说明,这里就不再重复赘述。
80.在得到重排协调矩阵之后,还要基于该矩阵得到可被执行的重排编码,从而使得计算机能够自动执行重排任务。执行重排任务的时候,直接在寄存器中执行数据重排任务,不需要将寄存器中的数据传输到内存中,避免数据输入输出开销,能够有效提高融合后算子的计算效率。
81.在本技术的一个或者多个实施例中,所述根据所述数据重排关系,生成重排协调矩阵,包括:
82.确定所述第一重排分组矩阵和所述第二重排分组矩阵中各矩阵元素对应的线程索引和迭代索引;
83.根据所述线程索引和所述迭代索引,确定所述第一重排分组矩阵中矩阵元素对应的第一重排元素索引,以及所述第二重排分组矩阵中矩阵元素对应的第二重排元素索引;
84.根据所述数据重排关系,生成包含所述第一重排元素索引、所述第二重排元素索引,以及第二线程索引的协调矩阵元素;
85.基于所述第二线程索引,对所述协调矩阵元素进行全排列得到所述重排协调矩阵。
86.在实际应用中,矩阵中每一行都有其对应的线程索引,每个矩阵元素也都有自己的元素索引信息。
87.假设,矩阵中线程对应的线程索引为ti,其中t表示线程,i表示该线程的序号(第几个线程),线程中的矩阵元素的元素索引标记为vij,其中,i表示该线程的序号,j表示该矩阵元素在线程ti中的位置,也可以用表示该矩阵元素的迭代顺序。
88.基于上述索引表示方式,可以确定第一重排分组矩阵中各矩阵元素分别对应的第一重排元素索引和第二重排元素索引,进而,根据数据重排关系(比如,上文所述的第一重排矩阵与第二重排矩阵的数据重排关系),得到协调矩阵元素。
89.例如,如图4为本技术实施例举例说明的协调矩阵的示意图。假设协调矩阵记为矩阵h(n
×
m),在该协调矩阵中,每个矩阵元素是有证书构成的三元组(p
ij
,q
ij
,r
ij
)(i∈{o,1...n},j∈{0,1...m}),表示线程ti在第j轮的交换中要从被线程t(pij)获取其持有的第qij个数,并且该数将成为整个重排结束后线程ti持有的第rij个数。
90.使得h(n
×
m)的每一列元素中的p不重复,即此时,在第j轮矩阵元素的交换中,线程ti请求t(pij)的第qij个数,不会出现请求冲突;对应地,线程t(pij)应该向外提供自己持有的第qij个数。
91.如图4所示,在确定协调矩阵元素后,基于第二线程索引对协调矩阵元素全排列后,得到重排协调矩阵。第一轮交换数值时,第二重排分组矩阵的线程t0要求从第一重排分组矩阵的线程t0取第0个矩阵元素,第二重排分组矩阵的线程t1要求从第一重排分组矩阵的线程t0取第1个矩阵元素,而一轮交换中,线程t0只能向外提供一个矩阵元素,所以这个安排存在冲突。所以可以按照图4所示协调矩阵进行数据重排。从图4中可以看到,i表示线程数,j表示在该协调矩阵中的位置。举例来说,i为0的线程,对应的三元组矩阵元素包括:(0,0,0)、(0,2,1)、(2,0,2)、(2,2,3)。可以看到,错开取数请求后,可以得到一种无冲突的重排。每一列的三元组中的第一个矩阵元素均不重复,也就是p不重复。按照图4所示的安排交换矩阵元素,不会出现取数冲突的情况。能够有效提高数据重排的工作效率和准确率。
92.在本技术的一个或者多个实施例中,所述基于所述重排协调矩阵,生成用于执行重排任务的重排编码,包括:
93.基于线程将所述协调矩阵元素中所述第一重排元素索引、所述第二重排元素索引和所述第二线程索引分别拆分,得到符合数据重排关系的表达式;
94.基于所述符合数据重排关系的表达式生成用于执行重排任务的重排编码。
95.在实际应用中,通过上述方式生成协调矩阵之后,进一步需要将该协调矩阵转变为可以被执行的编码。由于将该协调矩阵整体进行编码难度较大,故选择将其分解为多个
子关系。具体来说,
96.把协调矩阵元素拆分为三个一一映射关系:f、g和h,分别表达在第j轮迭代中,第i个线程如何算出自己的p、q和r。
97.pij=f(i,j),i,pij∈{0,1
…
n},j∈{0,1
…
m}
98.qij=g(i,j),i∈{0,1
…
n},j,qij∈{0,1
…
m}
99.rij=h(i,j),i∈{0,1
…
n},j,rij∈{0,1
…
m}
100.需要说明的是,处理f,g和h编码的方法一样,下面只介绍如何处理f。f是一个二元函数,可以进一步拆分为m个一元函数f0(i)、f1(i)...fm(i)。例如,可以得到如下表达式
101.f0(i)=((i&2)>>1)+((i&1)<<1)
102.这些一元函数可以通过观察输入与输出的规律,用加、减和位运算指令表达出来。可以编码前文所述协调矩阵中各个矩阵元素的对应函数。完成后,可以将这些信息转化为cuda代码,进行快速重排。
103.在本技术的一个或者多个实施例中,还提供一种重排方式,也就是利用共享内存重排。所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:
104.利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;
105.将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
106.将所述第一多线程寄存器中的所述计算结果存储到共享内存;
107.在所述共享内存中,基于所述数据重排关系将计算结果重排处理,得到所述输入数据;
108.将所述输入数据按照第二数据处理规律存储到所述第二多线程寄存器。
109.在实际应用中,除了可以在寄存器中实现数据重排任务外,还可以在共享内存中实现数据重排任务。具体来说,在第一级联算子计算得到计算结果后,将第一计算结果按照第一数据处理规律存储到第一多线程寄存器中。进而,由该多线程寄存器将其中的计算结果发送给共享内存。在共享内存中,按照前文所说的数据重排关系对共享内存中的计算结果进行重排处理。这里需要说明的是,在共享内存中进行数据重排的时候,可以按照前文所述的方式进行分组重排,也可以是单线程重排。若单线程重排,则最单个线程中所有矩阵元素进行全排列,即便采用单线程重排,也需要按照数据处理规则进行重排。
110.例如,将执行单元warp中所有寄存器中的计算结果写回共享内存share memory中,按照数据重排关系在share memory中完成数据重排,在满足下一次gemm(也就是第二级联算子)的输入格式之后,由warp中的各个线程对应的重排后的数据传输回寄存器做下一次数据处理操作。
111.通过上述方案,在执行数据处理过程中,可能需要多个算子参与数据处理。为了提高处理能力,对多个算子进行融合。具体来说,接收到数据处理请求后,确定用于执行该请求的需要融合的第一级联算子和第二级联算子。当第一级联算子输出的计算结果符合第一数据处理规律,而第二级联算子输入的数据符合第二数据处理规律,并且第一数据处理规律与第二数据处理规律不同的时候,对第一级联算子输出的计算结果按照数据重排关系进行重排序,进而,将重排后得到的输入数据作为与第一级联算子具有融合关系的第二级联
算子的输入,从而能够满足算子融合计算需求。通过上述方式,针对限制算子融合的场景中,根据需要融合的第一级联算子和第二级联算子之间的数据重排关系,对第一级联算子的输出结果进行数据重排序,从而满足第二级联算子的输入需求,能够有效解决无法进行算子融合处理数据的问题,进而提高各种数据类型的算子融合能力以及数据处理能力。
112.为了便于理解,下面将通过具体实施例举例说明数据处理方案。
113.下面以某款gpgpu为例,在该gpgpu上实现数据类型为tf32精度的级联gemm时需要处理的数据重排问题为例进行介绍。
114.在数据类型为tf32时,第一级联算子gemm的计算结果存储在寄存器accum vreg中,第二级联算子gemm的输入数据存储在寄存器a1 vreg中。寄存器accum vreg的数据布局与寄存器a1 vreg要求的布局不一样,因此,需要对accum vreg中的矩阵单元进行重排,调整各矩阵元素在寄存器a1 vreg中的位置。
115.因为由accum vreg到a1 vreg的数据重排呈现出四个线程一组的特点,这里仅举例说明前四个线程的处理方法。其他线程处理方式与此类似,可根据实际情况增加偏移量。
116.假设,在accum vreg中t0~t3线程持有数据布局如下:
117.t0:{c0,c1,c2,c3}
118.t1:{c0,c1,c2,c3}
119.t2:{c0,c1,c2,c3}
120.t3:{c0,c1,c2,c3}
121.按照数据重排关系重排后,将输入数据存储在a1 vreg中newt0~newt3线程布局如下:
122.new t0:{t0:c0,t0:c2,t2:c0,t2:c2}
123.new t1:{t0:c1,t0:c3,t2:c1,t2:c3}
124.new t2:{t1:c0,t1:c2,t3:c0,t3:c2}
125.new t3:{t1:c1,t1:c3,t3:c1,t3:c3}
126.可参见图3中所示的数据重排关系进行重排。
127.进一步,可以提取出一个初步的shflsync指令的协调矩阵,具体如下:
128.可以看到,第一轮交换数值时,第二重排分组矩阵的线程t0要求从第一重排分组矩阵的线程t0取第0个矩阵元素,第二重排分组矩阵的线程t1要求从第一重排分组矩阵的线程t0取第1个矩阵元素,而一轮交换中,线程t0只能向外提供一个矩阵元素,所以这个安排存在冲突。
129.进而,按照图4所示协调矩阵进行数据重排。从图4中可以看到,i表示线程数,j表示在该协调矩阵中的位置。可以看到,错开取数请求后,可以得到一种无冲突的重排。每一列的三元组中的第一个矩阵元素均不重复,也就是p不重复。按照图4所示的安排交换矩阵元素,不会出现取数冲突的情况。能够有效提高数据重排的工作效率和准确率。
130.在得到协调矩阵之后,进一步基于协调矩阵进行编码,以便利用该编码执行数据重排任务。需要说明的是,若基于整个协调矩阵进行编码,则编码过程较为复杂,因此,可以对协调矩阵中矩阵元素进行函数转换。具体来说,f是一个二元函数,可以进一步拆分为m个一元函数f0(i)、f1(i)...fm(i)。
131.这些一元函数可以通过观察输入与输出的规律,用加、减和位运算指令表达出来。
132.进而,得到的编码如下:
133.float unshuffled[4];//重排前矩阵
[0134]
float shuffled[4];//重排后矩阵
[0135]
int p0=
……
//f0
[0136]
int q0=
……
//g0
[0137]
int r0=
……
//h0
[0138]
……
[0139]
通过上述实施例,对需要融合但是不满足融合条件的级联算子之间的数据传输关系进行转换,也就是,对第一级联算子的计算结果进行数据重排得到符合第二级联算子的输入需求的输入数据,使得第一级联算子与第二级联算子实现融合,能够有效提高数据处理效率,解决算子无法融合的问题。更进一步地,利用上述实施例,还能够解决因为数据类型或者计算硬件类型差异等引起寄存器中存储差异、数据处理差异等问题。使得机器学习模型中更多的算子能够融合计算。
[0140]
基于同样的思路,本技术实施例还提供一种数据处理装置。如图5为本技术实施例提供的一种数据处理装置的示意图。从图5中可也看到,该装置包括:
[0141]
算子确定模块51,用于响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;
[0142]
关系确定模块52,用于若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系;
[0143]
重排模块53,用于根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。
[0144]
可选地,算子确定模块51,用于确定用于执行所述数据处理请求的机器学习模型;
[0145]
根据所述机器学习模型中多个算子的执行流程,从所述多个算子中确定需要融合的第一级联算子和第二级联算子。
[0146]
可选地,关系确定模块52,用于根据所述第一级联算子的计算结果的数据类型,确定所述第一数据处理规律;
[0147]
根据所述第二级联算子的输入数据的数据类型类型,确定所述第二数据处理规律;
[0148]
若所述第一数据处理规律与所述第二数据处理规律不同,则根据所述第一数据处理规律和所述第二数据处理规律,确定所述计算结果与所述输入数据的所述数据重排关系。
[0149]
可选地,重排模块53,用于利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;
[0150]
将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
[0151]
根据所述数据重排关系,对所述计算结果重排处理,将重排后得到的所述输入数据按照所述第二数据处理规律存储到第二多线程寄存器。
[0152]
可选地,当所述计算结果和所述输入数据为存储在多线程寄存器中的矩阵时,
[0153]
重排模块53,用于对所述第一多线程寄存器中的所述计算结果拆分,得到第一重排分组矩阵;
[0154]
对所述第二多线程寄存器中的所述输入数据拆分,得到第二重排分组矩阵;
[0155]
根据所述第一数据处理规律和所述第二数据处理规律,确定所述第一重排分组矩阵中矩阵元素与所述第二重排分组矩阵中矩阵元素的对应关系;
[0156]
根据所述对应关系,确定所述计算结果与所述输入数据的所述数据重排关系。
[0157]
可选地,重排模块53,用于根据所述数据重排关系,生成用于表示重排顺序的重排协调矩阵;
[0158]
基于所述重排协调矩阵中矩阵元素,生成用于执行重排任务的重排编码;
[0159]
基于所述重排编码对所述计算结果中各元素执行重排任务,生成符合所述第二数据处理规律的输入数据。
[0160]
可选地,重排模块53,用于确定所述第一重排分组矩阵和所述第二重排分组矩阵中各矩阵元素对应的线程索引和迭代索引;
[0161]
根据所述线程索引和所述迭代索引,确定所述第一重排分组矩阵中矩阵元素对应的第一重排元素索引,以及所述第二重排分组矩阵中矩阵元素对应的第二重排元素索引;
[0162]
根据所述数据重排关系,生成包含所述第一重排元素索引、所述第二重排元素索引,以及第二线程索引的协调矩阵元素;
[0163]
基于所述第二线程索引,对所述协调矩阵元素进行全排列得到所述重排协调矩阵。
[0164]
可选地,重排模块53,用于基于线程将所述协调矩阵元素中所述第一重排元素索引、所述第二重排元素索引和所述第二线程索引分别拆分,得到符合数据重排关系的表达式;
[0165]
基于所述符合数据重排关系的表达式生成用于执行重排任务的重排编码。
[0166]
可选地,重排模块53,用于利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;
[0167]
将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
[0168]
将所述第一多线程寄存器中的所述计算结果存储到共享内存;
[0169]
在所述共享内存中,基于所述数据重排关系将计算结果重排处理,得到所述输入数据;
[0170]
将所述输入数据按照第二数据处理规律存储到所述第二多线程寄存器。
[0171]
本技术一个实施例还提供一种电子设备。该电子设备为计算单元中主节点电子设备。如图6为本技术实施例提供的一种电子设备的结构示意图。该电子设备包括存储器601、处理器602及通信组件603;其中,
[0172]
所述存储器601,用于存储程序;
[0173]
所述处理器602,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于:
[0174]
响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;
[0175]
若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数
据重排关系;
[0176]
根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。
[0177]
可选地,处理器602用于确定用于执行所述数据处理请求的机器学习模型;
[0178]
根据所述机器学习模型中多个算子的执行流程,从所述多个算子中确定需要融合的第一级联算子和第二级联算子。
[0179]
可选地,处理器602用于根据所述第一级联算子的计算结果的数据类型,确定所述第一数据处理规律;
[0180]
根据所述第二级联算子的输入数据的数据类型类型,确定所述第二数据处理规律;
[0181]
若所述第一数据处理规律与所述第二数据处理规律不同,则根据所述第一数据处理规律和所述第二数据处理规律,确定所述计算结果与所述输入数据的所述数据重排关系。
[0182]
可选地,处理器602用于利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;
[0183]
将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
[0184]
根据所述数据重排关系,对所述计算结果重排处理,将重排后得到的所述输入数据按照所述第二数据处理规律存储到第二多线程寄存器。
[0185]
当所述计算结果和所述输入数据为存储在多线程寄存器中的矩阵时,
[0186]
可选地,处理器602用于对所述第一多线程寄存器中的所述计算结果拆分,得到第一重排分组矩阵;
[0187]
对所述第二多线程寄存器中的所述输入数据拆分,得到第二重排分组矩阵;
[0188]
根据所述第一数据处理规律和所述第二数据处理规律,确定所述第一重排分组矩阵中矩阵元素与所述第二重排分组矩阵中矩阵元素的对应关系;
[0189]
根据所述对应关系,确定所述计算结果与所述输入数据的所述数据重排关系。
[0190]
可选地,处理器602用于根据所述数据重排关系,生成用于表示重排顺序的重排协调矩阵;
[0191]
基于所述重排协调矩阵中矩阵元素,生成用于执行重排任务的重排编码;
[0192]
基于所述重排编码对所述计算结果中各元素执行重排任务,生成符合所述第二数据处理规律的输入数据。
[0193]
可选地,处理器602用于确定所述第一重排分组矩阵和所述第二重排分组矩阵中各矩阵元素对应的线程索引和迭代索引;
[0194]
根据所述线程索引和所述迭代索引,确定所述第一重排分组矩阵中矩阵元素对应的第一重排元素索引,以及所述第二重排分组矩阵中矩阵元素对应的第二重排元素索引;
[0195]
根据所述数据重排关系,生成包含所述第一重排元素索引、所述第二重排元素索引,以及第二线程索引的协调矩阵元素;
[0196]
基于所述第二线程索引,对所述协调矩阵元素进行全排列得到所述重排协调矩阵。
[0197]
可选地,处理器602用于基于线程将所述协调矩阵元素中所述第一重排元素索引、
所述第二重排元素索引和所述第二线程索引分别拆分,得到符合数据重排关系的表达式;
[0198]
基于所述符合数据重排关系的表达式生成用于执行重排任务的重排编码。
[0199]
可选地,处理器602用于利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;
[0200]
将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;
[0201]
将所述第一多线程寄存器中的所述计算结果存储到共享内存;
[0202]
在所述共享内存中,基于所述数据重排关系将计算结果重排处理,得到所述输入数据;
[0203]
将所述输入数据按照第二数据处理规律存储到所述第二多线程寄存器。
[0204]
上述存储器601可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令。存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。
[0205]
进一步地,本实施例中的所述处理器602可以具体是:可编程交换处理芯片,该可编程交换处理芯片中配置有数据复制引擎,能对接收到的数据进行复制。
[0206]
上述处理器602在执行存储器中的程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面各实施例的描述。进一步,如图6所示,电子设备还包括:电源组件604等其它组件。
[0207]
本技术实施例还提供一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行图1或图2对应实施例所述的方法。
[0208]
基于上述实施例,在执行数据处理过程中,可能需要多个算子参与数据处理。为了提高处理能力,对多个算子进行融合。具体来说,接收到数据处理请求后,确定用于执行该请求的需要融合的第一级联算子和第二级联算子。当第一级联算子输出的计算结果符合第一数据处理规律,而第二级联算子输入的数据符合第二数据处理规律,并且第一数据处理规律与第二数据处理规律不同的时候,对第一级联算子输出的计算结果按照数据重排关系进行重排序,进而,将重排后得到的输入数据作为与第一级联算子具有融合关系的第二级联算子的输入,从而能够满足算子融合计算需求。通过上述方式,针对限制算子融合的场景中,根据需要融合的第一级联算子和第二级联算子之间的数据重排关系,对第一级联算子的输出结果进行数据重排序,从而满足第二级联算子的输入需求,能够有效解决无法进行算子融合处理数据的问题,进而提高各种数据类型的算子融合能力以及数据处理能力。
[0209]
本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
[0210]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其
中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0211]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0212]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
技术特征:
1.一种数据处理方法,其特征在于,所述方法包括:响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系;根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。2.根据权利要求1所述的方法,其特征在于,所述确定需要融合的第一级联算子和第二级联算子,包括:确定用于执行所述数据处理请求的机器学习模型;根据所述机器学习模型中多个算子的执行流程,从所述多个算子中确定需要融合的第一级联算子和第二级联算子。3.根据权利要求2所述的方法,其特征在于,所述若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系,包括:根据所述第一级联算子的计算结果的数据类型,确定所述第一数据处理规律;根据所述第二级联算子的输入数据的数据类型类型,确定所述第二数据处理规律;若所述第一数据处理规律与所述第二数据处理规律不同,则根据所述第一数据处理规律和所述第二数据处理规律,确定所述计算结果与所述输入数据的所述数据重排关系。4.根据权利要求1至3中任一项所述的方法,其特征在于,所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;根据所述数据重排关系,对所述计算结果重排处理,将重排后得到的所述输入数据按照所述第二数据处理规律存储到第二多线程寄存器。5.根据权利要求4所述的方法,其特征在于,当所述计算结果和所述输入数据为存储在多线程寄存器中的矩阵时,所述确定所述计算结果与所述输入数据的所述数据重排关系,包括:对所述第一多线程寄存器中的所述计算结果拆分,得到第一重排分组矩阵;对所述第二多线程寄存器中的所述输入数据拆分,得到第二重排分组矩阵;根据所述第一数据处理规律和所述第二数据处理规律,确定所述第一重排分组矩阵中矩阵元素与所述第二重排分组矩阵中矩阵元素的对应关系;根据所述对应关系,确定所述计算结果与所述输入数据的所述数据重排关系。6.根据权利要求5中任一项所述的方法,其特征在于,所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:根据所述数据重排关系,生成用于表示重排顺序的重排协调矩阵;基于所述重排协调矩阵中矩阵元素,生成用于执行重排任务的重排编码;基于所述重排编码对所述计算结果中各元素执行重排任务,生成符合所述第二数据处
理规律的输入数据。7.根据权利要求6所述的方法,其特征在于,所述根据所述数据重排关系,生成重排协调矩阵,包括:确定所述第一重排分组矩阵和所述第二重排分组矩阵中各矩阵元素对应的线程索引和迭代索引;根据所述线程索引和所述迭代索引,确定所述第一重排分组矩阵中矩阵元素对应的第一重排元素索引,以及所述第二重排分组矩阵中矩阵元素对应的第二重排元素索引;根据所述数据重排关系,生成包含所述第一重排元素索引、所述第二重排元素索引,以及第二线程索引的协调矩阵元素;基于所述第二线程索引,对所述协调矩阵元素进行全排列得到所述重排协调矩阵。8.根据权利要求7所述的方法,其特征在于,所述基于所述重排协调矩阵,生成用于执行重排任务的重排编码,包括:基于线程将所述协调矩阵元素中所述第一重排元素索引、所述第二重排元素索引和所述第二线程索引分别拆分,得到符合数据重排关系的表达式;基于所述符合数据重排关系的表达式生成用于执行重排任务的重排编码。9.根据权利要求4所述的方法,其特征在于,所述根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,包括:利用所述第一级联算子执行对所述数据处理请求对应的待计算数据的计算,得到所述计算结果;将所述计算结果按照所述第一数据处理规律存储在第一多线程寄存器;将所述第一多线程寄存器中的所述计算结果存储到共享内存;在所述共享内存中,基于所述数据重排关系将计算结果重排处理,得到所述输入数据;将所述输入数据按照第二数据处理规律存储到所述第二多线程寄存器。10.一种数据处理装置,其特征在于,所述装置包括:算子确定模块,用于响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;关系确定模块,用于若所述第一级联算子的计算结果的第一数据处理规律与所述第二级联算子的输入数据的第二数据处理规律不同,则确定所述第一级联算子与所述第二级联算子之间的数据重排关系;重排模块,用于根据所述数据重排关系,将所述第一级联算子的计算结果重排为符合所述第二数据处理规律的输入数据,以便基于所述第二级联算子执行对所述输入数据的数据处理。11.一种电子设备,包括存储器及处理器;其中,所述存储器,用于存储程序;所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以用于实现上述权利要求1至9中任一项所述的方法。12.一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至9中任一项所述的方法。
技术总结
本申请实施例提供数据处理方法、装置、设备及介质。该方法包括:响应于数据处理请求,确定需要融合的第一级联算子和第二级联算子;若第一级联算子的计算结果的第一数据处理规律与第二级联算子的输入数据的第二数据处理规律不同,则确定第一级联算子与第二级联算子之间的数据重排关系;根据数据重排关系,将第一级联算子的计算结果重排为符合第二数据处理规律的输入数据,以便基于第二级联算子执行对输入数据的数据处理。根据需要融合的第一级联算子和第二级联算子之间的数据重排关系,对第一级联算子的输出结果数据重排序,从而满足第二级联算子的输入需求,能够有效解决无法进行算子融合处理数据问题,提高各种数据类型的算子融合能力。子融合能力。子融合能力。
技术研发人员:彭亮 张章 王楠
受保护的技术使用者:阿里巴巴(中国)有限公司
技术研发日:2023.06.01
技术公布日:2023/10/7
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
