CN117632442B - 任务处理方法以及相关设备 - Google Patents
任务处理方法以及相关设备 Download PDFInfo
- Publication number
- CN117632442B CN117632442B CN202410101869.9A CN202410101869A CN117632442B CN 117632442 B CN117632442 B CN 117632442B CN 202410101869 A CN202410101869 A CN 202410101869A CN 117632442 B CN117632442 B CN 117632442B
- Authority
- CN
- China
- Prior art keywords
- array
- target
- thread
- dimension
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 32
- 238000012545 processing Methods 0.000 claims abstract description 699
- 238000000034 method Methods 0.000 claims abstract description 86
- 238000006243 chemical reaction Methods 0.000 claims abstract description 76
- 230000008569 process Effects 0.000 claims description 50
- 230000015654 memory Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 13
- 239000002699 waste material Substances 0.000 abstract description 11
- 230000009467 reduction Effects 0.000 description 96
- 239000011159 matrix material Substances 0.000 description 48
- 238000013473 artificial intelligence Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000010801 machine learning Methods 0.000 description 11
- 238000003491 array Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 5
- 238000001514 detection method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012935 Averaging Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000004927 fusion Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000007500 overflow downdraw method Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种任务处理方法以及相关设备,可以获取针对待处理数组的数据处理任务;基于线程的参考数据处理量和线程块的参考尺寸,确定参考数组处理长度;当待处理数组在关联维度上对应的数组长度大于参考数组处理长度时,对待处理数组进行数组转换处理,得到目标数组;基于目标维度的维度类型和目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定目标尺寸的线程处理单元;通过各个目标尺寸的线程处理单元分别对目标数组在目标维度上的各个子数组中的元素执行预设数据处理指令,确定并输出对待处理数组的任务处理结果。本申请可以能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种任务处理方法以及相关设备。
背景技术
随着计算机技术的发展,人工智能广泛应用于各个领域,例如智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等。机器学习是人工智能的核心,是使计算机具有智能的根本途径。
目前,现有的机器学习编译器在执行reduce操作(即规约操作)时,通常先将矩阵转化为二维矩阵,然后针对二维矩阵的某一维进行column reduction(列规约)或rowreduction(行规约)。但是,这种数据处理方法没有考虑二维矩阵中每一维的长度,例如,对二维矩阵[3200, 4]和二维矩阵[4, 3200]做row reduction时,如果采用相同的任务处理算法,可能导致reduce的计算性能存在显著的问题,造成计算资源的浪费。
发明内容
本申请实施例提供一种任务处理方法以及相关设备,相关设备可以包括任务处理装置、电子设备、计算机可读存储介质和计算机程序产品,可以针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
本申请实施例提供一种任务处理方法,包括:
获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;
基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;
当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;
基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;
通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;
基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
相应的,本申请实施例提供一种任务处理装置,包括:
任务获取单元,用于获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;
第一确定单元,用于基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;
转换单元,用于当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;
第二确定单元,用于基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;
执行单元,用于通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;
输出单元,用于基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
可选的,在本申请的一些实施例中,所述转换单元可以包括转换子单元、数组确定子单元和返回子单元,如下:
所述转换子单元,用于对所述待处理数组进行数组转换处理,得到转换后数组;
数组确定子单元,用于当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,将所述转换后数组作为新的待处理数组;
返回子单元,用于返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组。
可选的,在本申请的一些实施例中,所述第二确定单元可以包括检测子单元和选取子单元,如下:
所述检测子单元,用于当所述目标维度的维度类型为列维度时,对所述目标数组在列维度上对应的数组长度进行检测;
选取子单元,用于当检测到所述目标数组在列维度上对应的数组长度为预设值时,从预设尺寸的线程处理单元中选取线程块作为用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定单元还可以包括分配子单元和确定子单元,如下:
所述分配子单元,用于当检测到所述目标数组在列维度上对应的数组长度不为预设值时,基于所述目标数组在列维度上对应的数组长度和所述线程块的尺寸,分配用于处理所述数据处理任务的线程块;
确定子单元,用于将所述线程块中的每个线程组确定为用于处理所述目标数组的目标尺寸的线程处理单元;
所述执行单元具体可以用于通过所述线程块中每个线程组,基于所述预设数据处理指令分别对所述目标数组在列维度上的每个子数组中的元素进行数据处理,得到每个线程组对应的数据处理子结果。
可选的,在本申请的一些实施例中,所述任务处理装置还包括对比单元和检测单元,如下:
所述对比单元,用于将所述待处理数组在列维度上对应的数组长度与线程组的尺寸进行对比处理;
检测单元,用于当对比结果为所述待处理数组在列维度上对应的数组长度不小于所述线程组的尺寸时,检测所述待处理数组在关联维度上对应的数组长度是否大于所述参考数组处理长度。
可选的,在本申请的一些实施例中,所述任务处理装置还包括分配单元、处理单元和结果输出单元,如下:
所述分配单元,用于当对比结果为所述待处理数组在列维度上对应的数组长度小于所述线程组的尺寸时,基于所述待处理数组在行维度上对应的数组长度,分配用于处理所述数据处理任务的线程块;
处理单元,用于通过所述线程块中的每个线程,基于所述预设数据处理指令分别对所述待处理数组在行维度上的每个子数组中的元素进行数据处理,得到每个线程对应的数据处理子结果;
结果输出单元,用于基于每个线程对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
可选的,在本申请的一些实施例中,所述任务处理装置还包括第三确定单元,如下:
所述第三确定单元,用于当所述待处理数组在关联维度上对应的数组长度不大于所述参考数组处理长度时,将所述待处理数组确定为目标数组。
可选的,在本申请的一些实施例中,所述第二确定单元可以包括第一确定子单元、对比子单元和第二确定子单元,如下:
所述第一确定子单元,用于当所述目标维度的维度类型为行维度时,基于用于处理所述待处理数组的线程的参考数据处理量和线程组的尺寸,确定目标数组长度;
对比子单元,用于将所述目标数组在列维度上对应的数组长度与所述目标数组长度进行对比;
第二确定子单元,用于基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定子单元具体可以用于当对比结果为所述目标数组在列维度上对应的数组长度不大于所述目标数组长度时,从预设尺寸的线程处理单元中选取线程组作为用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定子单元具体可以用于当对比结果为所述目标数组在列维度上对应的数组长度大于所述目标数组长度时,基于所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸下的线程块。
本申请实施例中,术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
本申请实施例提供的一种电子设备,包括处理器和存储器,所述存储器存储有多条指令,所述处理器加载所述指令,以执行本申请实施例提供的任务处理方法中的步骤。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现本申请实施例提供的任务处理方法中的步骤。
此外,本申请实施例还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被处理器执行时实现本申请实施例提供的任务处理方法中的步骤。
本申请实施例提供了一种任务处理方法以及相关设备,可以获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
本申请可以根据待处理数组对应的数组长度来进行数组转换处理,避免相关数组长度过长导致线程工作量较大的问题;再基于处理后的目标数组在列维度上的数组长度,来分配具体用于处理目标数组的目标尺寸的线程处理单元,从而进行数据处理,这样考虑了数组长度,能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的任务处理方法的场景示意图;
图1b是本申请实施例提供的任务处理方法的流程图;
图1c是本申请实施例提供的任务处理方法的另一流程图;
图1d是本申请实施例提供的任务处理方法的另一流程图;
图2是本申请实施例提供的任务处理方法的另一流程图;
图3是本申请实施例提供的任务处理装置的结构示意图;
图4是本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供一种任务处理方法以及相关设备,相关设备可以包括任务处理装置、电子设备、计算机可读存储介质和计算机程序产品。该任务处理装置具体可以集成在电子设备中,该电子设备可以是终端或服务器等设备。
可以理解的是,本实施例的任务处理方法可以是在终端上执行的,也可以是在服务器上执行,还可以由终端和服务器共同执行的。以上举例不应理解为对本申请的限制。
如图1a所示,以终端和服务器共同执行任务处理方法为例。本申请实施例提供的任务处理系统包括终端10和服务器11等;终端10与服务器11之间通过网络连接,比如,通过有线或无线网络连接等,其中,任务处理装置可以集成在服务器中。
其中,服务器11,可以用于:接收终端10发送的针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定对所述待处理数组的任务处理结果,向终端10发送所述任务处理结果。其中,服务器11可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。
其中,终端10,可以用于:向服务器11发送针对待处理数组的数据处理任务,以使服务器11对该待处理数组进行处理;终端10还可以接收服务器11发送的任务处理结果。其中,终端10可以包括手机、车载终端、飞行器、平板电脑、智能语音交互设备、智能家电、笔记本电脑、或个人计算机(PC,Personal Computer)等。终端10上还可以设置客户端,该客户端可以是应用程序客户端或浏览器客户端等等。
本申请实施例提供的任务处理方法涉及人工智能领域中的机器学习方向。
其中,人工智能(Artificial Intelligence, AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、预训练模型技术、操作/交互系统、机电一体化等。其中,预训练模型又称大模型、基础模型,经过微调后可以广泛应用于人工智能各大方向下游任务。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
其中,机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
本实施例将从任务处理装置的角度进行描述,该任务处理装置具体可以集成在电子设备中,该电子设备可以是服务器或终端等设备。
可以理解的是,在本申请的具体实施方式中,涉及到用户信息等相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
如图1b所示,该任务处理方法的具体流程可以如下:
101、获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令。
其中,待处理数组可以是包括行维度和列维度的二维数组,也可以是两个维度以上的数组。若待处理数组为两个维度以上的数组,可以先将其转换为两个维度的数组。
其中,数据处理任务具体可以是对待处理数组进行column reduction(列规约)或row reduction(行规约)的任务。column reduction为针对二维矩阵的第0维进行reduce操作;row reduction为针对二维矩阵的第1维进行reduce操作。其中,reduce操作(规约操作)是一种数据处理操作,具体用于将一个集合中的所有元素通过某种规约函数进行合并,得到一个汇总结果;例如,求和、求最大值或最小值、求平均数、求元素总个数、将所有元素汇总到一个列表,这些都属于规约操作。在实际应用中,可以根据具体需求自定义规约函数,以实现不同的功能。
本实施例中,目标维度可以是行维度,也可以是列维度。在row reduction的数据处理任务中,目标维度为行维度,则待处理数组在目标维度上的子数组具体为待处理数组的各行;在column reduction的数据处理任务中,目标维度为列维度,则待处理数组在目标维度上的子数组具体为待处理数组的各列。其中,本实施例对子数组中元素的类型具体不作限制,可以是数字,也可以是字符串等。
其中,预设数据处理指令可以是执行reduce操作,如求和、求最大值或最小值、求平均数、求元素总个数。
102、基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程。
其中,线程的参考数据处理量具体为线程的任务处理上限,即最多处理的数据数量。线程块的参考尺寸为用于处理该待处理数组的物理GPU(graphics processing unit,图形处理器)的block size(线程块尺寸)上限。
其中,参考数组处理长度可以由线程的参考数据处理量、以及线程块的参考尺寸融合得到,这种融合方式有多种,本实施例对此不作限制。比如,该融合方式可以是相乘等。
其中,线程块为Block,它可以包括多个线程组;线程组为Warp,一个线程组可以包括多个线程,且一个Warp中的线程必然在同一个Block中。具体地,Block为一组共享SM上特定资源的线程;Warp是GPU上最基本的执行/调度单元,一个Warp包括32个thread(线程),这些thread以不同的数据执行相同的指令。其中,SM(Streaming MultiProcessor,流式多处理器)为GPU上的执行计算单元,每个SM有自己的控制单元、寄存器、缓存、以及指令流水线。
103、当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联。
其中,若关联维度为行维度,则待处理数组在关联维度上对应的数组长度为该待处理数组的行数;若关联维度为列维度,则待处理数组在关联维度上对应的数组长度为该待处理数组的列数。
其中,关联维度具体为与目标维度关联的维度,这种关联是指目标维度上子数组包含的元素个数与关联维度有关。具体地,若目标维度为行维度,则关联维度为列维度;若目标维度为列维度,则关联维度为行维度。例如,若目标维度为行维度,则待处理数组在目标维度上的子数组为待处理数组的每一行,每一行包含的元素个数与关联维度(列维度)对应的数组长度(即列数)相同。又例如,若目标维度为列维度,则待处理数组在目标维度上的子数组为待处理数组的每一列,每一列包含的元素个数与关联维度(行维度)对应的数组长度(即行数)相同。
其中,数组转换处理可以是对待处理数组的形状进行变化,以使得数组在关联维度上对应的数组长度不大于参考数组处理长度。例如,待处理数组的形状shape为[9,100],经过数组转换处理后,得到的目标数组的形状可以是[3,300]。
本实施例中,对数组转换处理的具体方式不作限制。在一实施例中,该数组转换处理的方式可以是对关联维度的数组长度进行开平方处理,基于开平方后的数值确定转换后数组在关联维度的数组长度、以及在目标维度的数组长度,从而基于确定到的数组长度进行数组转换处理。具体地,可以基于转换后数组在关联维度的数组长度、以及在目标维度的数组长度,来确定对待处理数组的切分位置,再基于该切分位置对待处理数组进行切分,得到多个切分后数组,再将切分后数组进行拼接,得到转换后数组。
例如,关联维度为行维度,待处理数组记为[a,b],a为行数,b为列数,对该待处理数组进行数组转换处理,具体可以是将其变为形状为[√a,√a * b]的数组。具体地,a=9,b=100,对于待处理数组[9,100],对9进行开根号得到3,则每个切分后数组占三行,将待处理数组切分为三个数组,第一个数组是该待处理数组的第1行到第3行,第二个数组是该待处理数组的第4行到第6行,第三个数组为该待处理数组的第7行至第9行,再将切分后的三个数组进行拼接,得到[3,300]的数组,拼接顺序可以根据实际情况设置。
其中,具体地,对a进行开平方操作,如果根号a不是整数,则可以对根号a向上取整,将根号a向上取整的数记为A,将待处理数组从[a, b]转化为[A, A * b]。需要说明的是,如果根号a不等于A,还需要先对待处理数组进行pad操作(因为a * b的元素个数小于A* A * b),再对其进行数组转换操作。
又例如,关联维度为列维度,对待处理数组[a,b]进行数组转换处理,具体可以是将其变为形状为[a*√b,√b]的数组。具体地,a=100,b=16,对于待处理数组[100,16],对16进行开根号得到4,则每个切分后数组占四列,将待处理数组切分为四个数组,第一个数组是该待处理数组的第1列到第4列,第二个数组是该待处理数组的第5列到第8列,第三个数组为该待处理数组的第9列至第12列,第四个数组为该待处理数组的第13列至第16列,再将切分后的四个数组进行拼接,得到[400,4]的数组,拼接顺序可以根据实际情况设置。
其中,具体地,对b进行开平方操作,如果根号b不是整数,则可以对根号b向上取整,将根号b向上取整的数记为B,将待处理数组从[a, b]转化为[a*B,B]。需要说明的是,如果根号b不等于B,还需要先对待处理数组进行pad操作(因为a * b的元素个数小于a * B *B),再对其进行数组转换操作。
其中,pad操作为填充操作,它可以在矩阵的边界上填充一些值,以增加矩阵的大小,通常都用“0”来进行填充的。
需要说明的是,待处理数组中包含的元素和目标数组包含的元素的数量相同,具体地,元素的值不变,只是在数组中的位置发生了变化。
可选地,本实施例中,步骤“对所述待处理数组进行数组转换处理,得到目标数组”,可以包括:
对所述待处理数组进行数组转换处理,得到转换后数组;
当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,将所述转换后数组作为新的待处理数组;
返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组。
在一具体实施例中,数据处理任务为对待处理数组[a,b]执行column reduction,目标维度为列维度,关联维度为行维度,首先需要判断待处理数组在行维度上对应的数组长度a是否大于参考数组处理长度,若a大于参考数组处理长度,需要进行数组转换,这是为了保证每个线程的任务量在一个合理的范围,避免单个线程的任务过重,导致整体吞吐量下降的问题。若a大于参考数组处理长度,则说明一列数据过多,需要进行数组转换。
其中,可以将每个线程任务的上限定为n(即上述实施例中的线程的参考数据处理量),将物理GPU的block size上限记为x(即上述实施例中线程块的参考尺寸),选取n * x作为数组第0维的上限,即待处理数组[a,b]中a的上限(具体为上述实施例中的参考数组处理长度)。当a大于n * x时,对待处理数组进行数组转换处理,将其变为[√a,√a * b]。如果√a仍大于数组第0维的上限(即n * x),继续对数组进行转换,直到数组的第0维小于或等于数组第0维的上限。
这样进行数组转换之后,能够保证第0维小于等于n * x,这限制了一次columnreduction工作量的上限,提高处理效率,此时将转换后数组重新记为[a, b],将该转换后数组确定为目标数组,再对目标数组进行下一步处理。
在另一具体实施例中,数据处理任务为对待处理数组[a,b]执行row reduction,目标维度为行维度,关联维度为列维度,首先需要判断待处理数组在列维度上对应的数组长度b是否大于参考数组处理长度,若b大于参考数组处理长度,需要进行数组转换,这是为了保证每个线程的任务量在一个合理的范围,避免单个线程的任务过重,导致整体吞吐量下降的问题。若b大于参考数组处理长度,则说明一行数据过多,需要进行数组转换。
其中,可以将每个线程任务的上限定为n(即上述实施例中的线程的参考数据处理量),将物理GPU的block size上限记为x(即上述实施例中线程块的参考尺寸),选取n * x作为数组第1维的上限,即待处理数组[a,b]中b的上限(具体为上述实施例中的参考数组处理长度)。当b大于n * x时,对待处理数组进行数组转换处理,将其变为[a*√b,√b]。如果√b仍大于数组第1维的上限(即n * x),继续对数组进行转换,直到数组的第1维小于或等于数组第1维的上限。
这样进行数组转换之后,能够保证第1维小于等于n * x,此时将转换后数组重新记为[a, b],将该转换后数组确定为目标数组,再对目标数组进行下一步处理。
可选地,本实施例中,所述目标维度的维度类型为行维度;步骤“当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组”之前,还可以包括:
将所述待处理数组在列维度上对应的数组长度与线程组的尺寸进行对比处理;
当对比结果为所述待处理数组在列维度上对应的数组长度不小于所述线程组的尺寸时,检测所述待处理数组在关联维度上对应的数组长度是否大于所述参考数组处理长度。
其中,当目标维度的维度类型为行维度,即该数据处理任务为对待处理数组进行row reduction的任务时,在判断是否需要进行数组转换处理之前,可以先检查列维度上对应的数组长度。
具体地,在row reduction中,可以先检查待处理数组[a,b]中列维度上的数组长度b的值,如果b小于warp size(即线程组的尺寸),则说明要执行的row reduction非常小,此时可以用一个线程来处理一行的row reduction;如果b不小于warp size,则继续检测待处理数组[a,b]在列维度上的数组长度是否大于参考数组处理长度。
可选地,本实施例中,该任务处理方法还可以包括:
当对比结果为所述待处理数组在列维度上对应的数组长度小于所述线程组的尺寸时,基于所述待处理数组在行维度上对应的数组长度,分配用于处理所述数据处理任务的线程块;
通过所述线程块中的每个线程,基于所述预设数据处理指令分别对所述待处理数组在行维度上的每个子数组中的元素进行数据处理,得到每个线程对应的数据处理子结果;
基于每个线程对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
其中,当待处理数组[a,b]在列维度上对应的数组长度小于线程组的尺寸,即b小于warp size时,可以根据待处理数组在行维度上对应的数组长度a以及线程块的尺寸block size,来分配用于执行数据处理任务的block的个数。每个block包括多个线程,可以用一个线程来处理一行的row reduction,从而得到每个线程对应的数据处理子结果。
其中,这里的预设数据处理指令具体为执行row reduction操作。待处理数组在行维度上的每个子数组为待处理数组的每一行。
具体地,可以尽可能选择较大的block size,以Nvidia GPU为例,可以选择1024作为block size,因此一个block可以完成1024行的row reduction。若a不大于1024,则可以只用一个block完成针对待处理数组[a,b]的数据处理任务;若a大于1024,则需要两个及以上个block来完成针对待处理数组[a,b]的数据处理任务,block的个数由a确定。例如,可以用a除以block size,将得到的值向上取整,即为所需用到的block的个数;比如,a为2000,则只需要2个block即可完成row reduction。
104、基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块。
其中,线程为最小尺寸的线程处理单元,线程组次之,线程块最大。具体地,线程组一般可以包括32个线程,线程块一般可以包括32个线程组。
其中,预设尺寸的线程处理单元可以包括单个线程、一种或多种尺寸下的线程组、以及一种或多种尺寸下的线程块。其中,不同尺寸下的线程组包含的线程数量不同,不同尺寸下的线程块包含的线程组的数量不同。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”之前,还可以包括:
当所述待处理数组在关联维度上对应的数组长度不大于所述参考数组处理长度时,将所述待处理数组确定为目标数组。
其中,当待处理数组在关联维度上对应的数组长度不大于参考数组处理长度时,不需要进行数组转换,可以直接基于目标维度的维度类型和目标数组在列维度上对应的数组长度,进行线程处理单元的确定。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当所述目标维度的维度类型为列维度时,对所述目标数组在列维度上对应的数组长度进行检测;
当检测到所述目标数组在列维度上对应的数组长度为预设值时,从预设尺寸的线程处理单元中选取线程块作为用于处理所述目标数组的目标尺寸的线程处理单元。
其中,预设值可以是1。当目标数组在列维度上对应的数组长度为1时,说明该目标数组只有1列,这表明此时数组可能正在做reduce求和的过程,此时可以利用一个SIMT架构硬件上的block来对这一列数据执行reduce操作。其中,reduce求和,是指对矩阵[a,b]的第0维、第1维同时进行reduce,reduce的结果是一个数。SIMT(Single instruction,multiplethreads,单指令多线程)是指多个线程并行地用不同的数据,执行相同的指令。
其中,当目标维度的维度类型为列维度,即该数据处理任务为对待处理数组进行column reduction的任务时,在对待处理数组进行数组转换处理之后,可以根据处理后的目标数组在列维度上对应的数组长度是否等于1,来确定具体的任务处理方案。需要说明的是,若待处理数组不需要进行数组转换处理,则可以直接判断待处理数组在列维度上对应的数组长度是否等于1,以确定具体的任务处理方案。
具体地,当目标数组在列维度上对应的数组长度不为1时,则可以用一个block来同时完成多列数据的column reduction。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当所述目标维度的维度类型为行维度时,基于用于处理所述待处理数组的线程的参考数据处理量和线程组的尺寸,确定目标数组长度;
将所述目标数组在列维度上对应的数组长度与所述目标数组长度进行对比;
基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元。
其中,线程的参考数据处理量具体为线程的任务处理上限,即最多处理的数据数量。目标数组长度可以由参考数据处理量和线程组的尺寸融合得到,该融合方式有多种,本实施例对此不作限制。比如,该融合方式可以是相乘。若将参考数据处理量记为n,将线程组的尺寸记为warp_size,则目标数组长度可以是n * warp_size。
其中,当目标维度的维度类型为行维度,即该数据处理任务为对待处理数组进行row reduction的任务时,在确定目标数组之后,可以基于目标数组在列维度上对应的数组长度是否大于n * warp_size,来确定具体的任务处理方案。具体地,当目标数组在列维度上对应的数组长度大于n * warp_size时,可以采用一个block处理一行数据;当目标数组在列维度上对应的数组长度不大于n * warp_size时,可以采用一个warp处理一行数据;其中,可以将目标数组的列数除以warp内的线程数,来决定每个线程的工作量。例如,若目标数组的列数为1024,一个warp包含32个线程,每个线程处理32个元素;具体可以将一行的数据映射到32个线程,warp中的线程会同时执行相同的指令,但它们会在不同的数据元素上进行操作。比如,第0个线程处理第0个数据、第32个数据···,第1个线程处理第1个数据、第33个数据···,以此类推;又比如,第0个线程可以处理前32个元素,第1个线程可以处理接下来的32个元素,以此类推。
可选地,本实施例中,步骤“基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当对比结果为所述目标数组在列维度上对应的数组长度不大于所述目标数组长度时,从预设尺寸的线程处理单元中选取线程组作为用于处理所述目标数组的目标尺寸的线程处理单元。
其中,具体地,当目标数组在列维度上对应的数组长度不大于n * warp_size时,可以采用一个warp处理一行数据,通过每个线程组warp,分别对目标数组每一行执行reduce操作。
其中,当采用一个warp处理一行数据时,应选择尽可能大的block size,这样一个block可以处理更多行的数据。
可选地,本实施例中,步骤“基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当对比结果为所述目标数组在列维度上对应的数组长度大于所述目标数组长度时,基于所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸下的线程块。
其中,具体地,当目标数组在列维度上对应的数组长度大于n * warp_size时,可以采用一个block处理一行数据。通过每个线程块block,分别对目标数组每一行执行reduce操作;其中,可以将目标数组的列数除以block内的线程数,来决定每个线程的工作量。例如,若目标数组的列数为2048,一个block包含32个warp,一个warp包含32个线程,则一个block包含1024个线程,每个线程处理2个元素。
其中,当采用一个block处理一行数据时,可以根据目标数组中行的长短来选择block size,行的长短即目标数组在列维度上对应的数组长度。目标数组的行越长,则需要选取更大的block size;反之,目标数组的行越短,则选取更小的block size。
105、通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果。
其中,这里目标尺寸的线程处理单元可以是单个线程,也可以是线程组或线程块。
其中,在column reduction中,目标维度为列,可以通过各个目标尺寸的线程处理单元分别对目标数组的每一列进行reduce操作。在row reduction中,目标维度为行,可以通过各个目标尺寸的线程处理单元分别对目标数组的每一行进行reduce操作。
可选地,本实施例中,步骤“通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果”之前,还可以包括:
当检测到所述目标数组在列维度上对应的数组长度不为预设值时,基于所述目标数组在列维度上对应的数组长度和所述线程块的尺寸,分配用于处理所述数据处理任务的线程块;
将所述线程块中的每个线程组确定为用于处理所述目标数组的目标尺寸的线程处理单元;
步骤“通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果”,可以包括:
通过所述线程块中每个线程组,基于所述预设数据处理指令分别对所述目标数组在列维度上的每个子数组中的元素进行数据处理,得到每个线程组对应的数据处理子结果。
其中,预设值可以为1,当目标数组在列维度上对应的数组长度不为1时,则可以用一个block来同时完成多列数据的column reduction,block中的每个线程组用来处理一列数据的column reduction。具体地,可以根据目标数组在列维度上对应的数组长度和线程块的尺寸,确定用于处理该数据处理任务的线程块的目标数量,从而分配目标数量的线程块给该数据处理任务。例如,可以用目标数组在列维度上对应的数组长度除以线程块的尺寸,将得到的值向上取整即为需要分配的线程块的目标数量,其中,线程块的尺寸可以是线程块包含的线程组的个数。
具体地,一个block可以包括32个线程组,则一个block可以同时处理32列数据的column reduction。若目标数组在列维度上对应的数组长度较长,可以分配多一点的block来进行处理。例如,目标数组有60列,则可以分配2个block来进行处理。
106、基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
其中,可以将每个线程处理单元对应的数据处理子结果进行融合,来得到任务处理结果。这里的融合具体可以是拼接处理,例如,可以按照每个线程处理单元对应处理的行或列的排列顺序,来对各个数据处理子结果进行拼接。
具体地,column reduction的任务处理中,每个线程处理单元完成的是每一列的reduce,记目标数组为[a,b],则最后得到的任务处理结果为[b],包含b个元素,这b个元素分别是每个线程处理单元对应的数据处理子结果。
在row reduction的任务处理中,每个线程处理单元完成的是每一行的reduce,记目标数组为[a,b],则最后得到的任务处理结果为[a],包含a个元素,这a个元素分别是每个线程处理单元对应的数据处理子结果。
例如,对128 * 100的目标数组进行column reduction,每个线程处理单元处理一列的reduce,最后每个线程处理单元分别输出一个结果,再将各个线程处理单元输出的结果汇集到最终结果的行中,得到的最终的结果为一个100个元素的tensor(张量)。
本实施例中,在将column/row reduction划分为SIMT硬件架构上的并行任务时,能够充分结合矩阵的shape(形状大小),生成一种高效的、充分利用硬件资源的划分方案,大大提升AI运算的训练/推理中reduce操作的执行效率,缩短运行时间。
在对矩阵[a,b](即待处理数组)执行column reduction时,可以先尝试对矩阵的任务进行切分。这是因为执行column reduction时,为了避免atomic(原子)操作,需要用固定数量的线程完成一列数据的column reduction。例如:如果对矩阵[102400,32]执行column reduction,当采用一个warp完成一列数据的column reduction时。由于一列数据包含102400个元素,而一个warp只有32个线程,会导致单个线程的任务过重,整体吞吐量下降。
如图1c所示,展示了本申请提供的column reduction任务划分方法。为了保证每个线程的任务量在一个合理的范围,当一列数据过多时,需要对矩阵进行切分操作。本申请可以将每个线程任务的上限定为n,将物理GPU的block size上限记为x,选取n * x作为矩阵第0维的上限,即矩阵[a,b]中a的上限。当a大于n * x时,对矩阵进行转换,变为[√a,√a* b]。如果√a仍大于矩阵第0维的上限(即n * x),继续对矩阵进行切分,直到矩阵的第0维小于或等于矩阵第0维的上限。矩阵转换以后,能够保证第0维小于等于n * x。此时将转换后的矩阵重新记为[a, b],并对矩阵进行下一步处理。
当b等于1时,表明此时矩阵可能正在做reduce求和的过程,此时可以通过一个SIMT架构硬件上的block来一列数据对执行reduce操作。其中,可以将矩阵的行数除以block内的线程数,来决定每个线程的工作量。
如果b不等于1,表明此时在做一个一般场景的reduce,此时选取一个小矩阵[a,b1]作为SIMT架构硬件上的block来执行reduce操作,即:使用一个block来同时完成多列数据的column reduction。以Nvidia的GPU硬件为例,由于一个block最多包含32个warp,每个warp包含32个线程,可以使用一个warp处理一列数据(即a个元素的reduce操作),则b1最大为32,且为了保证高效,通常选择尽可能大的block,因此将32作为b1的值。
如图1d所示,展示了本申请提供的row reduction任务划分方法,具体描述如下:
在对矩阵[a,b]执行row reduction时,首先检查b的值,如果b小于warp_size(线程组的尺寸),则说明要执行的row reduction非常小,此时可以用一个线程来处理一行的row reduction。此时可以尽可能选择较大的block size,以Nvidia GPU为例,可以选择1024作为block size。因此一个block可以完成1024行的row reduction。
当矩阵的列数大于warp size时,尝试对矩阵进行切分操作,通过判断b是否大于x*n来确定是否对矩阵进行切分。这种切分操作和column reduction的切分操作类似,主要是为了保证每一行的数据不超过一定的范围。图1d中的n和x和图1c中的n和x的含义相同,分别表示一个线程的任务量上限以及一个block size的上限。
当对矩阵切换完毕以后,接下来执行真正的row reduction操作。如果切分以后矩阵的列数b大于n * warp_size,则采用一个block处理一行,否则采用一个warp处理一行数据。如果采用一个warp处理一行数据时,应选择尽可能大的block size(以Nvidia GPU为例,一个block最多包含32个warp)。如果采用一个block处理一行数据时,应根据行的长短来选择block size。
例如,对矩阵[1024, 1025]执行row reduction,当n=16时,每个线程需要处理16个数据,因此1025个数据需要65个线程。从执行效率的角度考虑,block size的选取只能是warp size的整数倍,因此此时选择96作为block size。由于前面已经完成对矩阵切分的操作,因此按照此方法选取的block size不会超过SIMT架构硬件的block size上限。
其中,选择block size为warp size的整数倍可以确保每个warp都能够充分利用核心的计算能力,并且避免了线程浪费的情况,这种选择可以提高GPU的利用率和执行效率。
具体地,AI编译器或机器学习编译器在执行reduce操作时,通常先将矩阵转化为二维矩阵,然后针对二维矩阵的某一维进行column reduction或row reduction。在目前的相关技术中,机器学习编译器只考虑了二维矩阵的秩,但是较少考虑二维矩阵中每一维的值,例如二维矩阵[3200, 4]和二维矩阵[4, 3200]做row reduction时,如果采用相同的并行任务划分算法,可能导致reduce性能存在显著的问题。
本申请提供了一种在SIMT架构上将Reduce操作划分为多个并行任务的方法,在对column reduction和row reduction进行任务划分时,结合SIMT架构的硬件设计,充分考虑二维矩阵中每一维的值,使reduce的性能相比现有的机器学习编译器存在较大提升。
具体地,本申请提供的column reduction任务处理方法,省去了atomic操作,atomic操作会对性能产生很大的负面影响,这在大部分行数较大(行数大于用于划分大矩阵的小矩阵的行数时)的column reduction上产生明显性能受益。且在待处理数组的行数等于1(较常见,reduce sum将转换成column reduction且row为1)时,能够产生明显性能受益,避免了87.5%的计算资源浪费,性能提升非常明显。
本申请提供的row reduction任务处理方法,由于加入了任务切分,避免了当列数过大时单个线程任务过重的问题;而且,在列数小于warp_size时,产生明显性能受益,且随着列数的减少,受益越来越大,避免了当列数较小时(小于warp_size),显著的计算资源的浪费,大幅度提升了计算性能。
由上可知,本实施例可以获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
本申请可以根据待处理数组对应的数组长度来进行数组转换处理,避免相关数组长度过长导致线程工作量较大的问题;再基于处理后的目标数组在列维度上的数组长度,来分配具体用于处理目标数组的目标尺寸的线程处理单元,从而进行数据处理,这样考虑了数组长度,能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
根据前面实施例所描述的方法,以下将以该任务处理装置具体集成在服务器举例作进一步详细说明。
本申请实施例提供一种任务处理方法,如图2所示,该任务处理方法的具体流程可以如下:
201、服务器获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令。
其中,待处理数组可以是包括行维度和列维度的二维数组,也可以是两个维度以上的数组。若待处理数组为两个维度以上的数组,可以先将其转换为两个维度的数组。
其中,数据处理任务具体可以是对待处理数组进行column reduction(列规约)或row reduction(行规约)的任务。
本实施例中,目标维度可以是行维度,也可以是列维度。在row reduction的数据处理任务中,目标维度为行维度,则待处理数组在目标维度上的子数组具体为待处理数组的各行;在column reduction的数据处理任务中,目标维度为列维度,则待处理数组在目标维度上的子数组具体为待处理数组的各列。其中,本实施例对子数组中元素的类型具体不作限制,可以是数字,也可以是字符串等。
其中,预设数据处理指令可以是执行reduce操作,如求和、求最大值或最小值、求平均数、求元素总个数。
202、服务器基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程。
其中,线程的参考数据处理量具体为线程的任务处理上限,即最多处理的数据数量。线程块的参考尺寸为用于处理该待处理数组的物理GPU(graphics processing unit,图形处理器)的block size(线程块尺寸)上限。
其中,参考数组处理长度可以由线程的参考数据处理量、以及线程块的参考尺寸融合得到,这种融合方式有多种,本实施例对此不作限制。比如,该融合方式可以是相乘等。
203、当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,服务器对所述待处理数组进行数组转换处理,得到转换后数组。
其中,若关联维度为行维度,则待处理数组在关联维度上对应的数组长度为该待处理数组的行数;若关联维度为列维度,则待处理数组在关联维度上对应的数组长度为该待处理数组的列数。
其中,关联维度具体为与目标维度关联的维度,这种关联是指目标维度上子数组包含的元素个数与关联维度有关。具体地,若目标维度为行维度,则关联维度为列维度;若目标维度为列维度,则关联维度为行维度。
204、当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,服务器将所述转换后数组作为新的待处理数组。
205、服务器返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组,所述关联维度与所述目标维度关联。
其中,数组转换处理可以是对待处理数组的形状进行变化,以使得数组在关联维度上对应的数组长度不大于参考数组处理长度。例如,待处理数组的形状shape为[9,100],经过数组转换处理后,得到的目标数组的形状可以是[3,300]。
需要说明的是,待处理数组中包含的元素和目标数组包含的元素的数量相同,具体地,元素的值不变,只是在数组中的位置发生了变化。
可选地,本实施例中,所述目标维度的维度类型为行维度;步骤“当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理”之前,还可以包括:
将所述待处理数组在列维度上对应的数组长度与线程组的尺寸进行对比处理;
当对比结果为所述待处理数组在列维度上对应的数组长度不小于所述线程组的尺寸时,检测所述待处理数组在关联维度上对应的数组长度是否大于所述参考数组处理长度。
其中,当目标维度的维度类型为行维度,即该数据处理任务为对待处理数组进行row reduction的任务时,在判断是否需要进行数组转换处理之前,可以先检查列维度上对应的数组长度。
可选地,本实施例中,该任务处理方法还可以包括:
当对比结果为所述待处理数组在列维度上对应的数组长度小于所述线程组的尺寸时,基于所述待处理数组在行维度上对应的数组长度,分配用于处理所述数据处理任务的线程块;
通过所述线程块中的每个线程,基于所述预设数据处理指令分别对所述待处理数组在行维度上的每个子数组中的元素进行数据处理,得到每个线程对应的数据处理子结果;
基于每个线程对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
其中,当待处理数组[a,b]在列维度上对应的数组长度小于线程组的尺寸,即b小于warp size时,可以根据待处理数组在行维度上对应的数组长度a以及线程块的尺寸block size,来分配用于执行数据处理任务的block的个数。每个block包括多个线程,可以用一个线程来处理一行的row reduction,从而得到每个线程对应的数据处理子结果。
其中,这里的预设数据处理指令具体为执行row reduction操作。待处理数组在行维度上的每个子数组为待处理数组的每一行。
206、服务器基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块。
其中,线程为最小尺寸的线程处理单元,线程组次之,线程块最大。具体地,线程组一般可以包括32个线程,线程块一般可以包括32个线程组。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”之前,还可以包括:
当所述待处理数组在关联维度上对应的数组长度不大于所述参考数组处理长度时,将所述待处理数组确定为目标数组。
其中,当待处理数组在关联维度上对应的数组长度不大于参考数组处理长度时,不需要进行数组转换,可以直接基于目标维度的维度类型和目标数组在列维度上对应的数组长度,进行线程处理单元的确定。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当所述目标维度的维度类型为列维度时,对所述目标数组在列维度上对应的数组长度进行检测;
当检测到所述目标数组在列维度上对应的数组长度为预设值时,从预设尺寸的线程处理单元中选取线程块作为用于处理所述目标数组的目标尺寸的线程处理单元。
其中,预设值可以是1。当目标数组在列维度上对应的数组长度为1时,说明该目标数组只有1列,这表明此时数组可能正在做reduce求和的过程,此时可以利用一个SIMT架构硬件上的block来对这一列数据执行reduce操作。其中,reduce求和,是指对矩阵[a,b]的第0维、第1维同时进行reduce,reduce的结果是一个数。SIMT(Single instruction,multiplethreads,单指令多线程)是指多个线程并行地用不同的数据,执行相同的指令。
其中,当目标维度的维度类型为列维度,即该数据处理任务为对待处理数组进行column reduction的任务时,在对待处理数组进行数组转换处理之后,可以根据处理后的目标数组在列维度上对应的数组长度是否等于1,来确定具体的任务处理方案。需要说明的是,若待处理数组不需要进行数组转换处理,则可以直接判断待处理数组在列维度上对应的数组长度是否等于1,以确定具体的任务处理方案。
具体地,当目标数组在列维度上对应的数组长度不为1时,则可以用一个block来同时完成多列数据的column reduction。
可选地,本实施例中,步骤“基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当所述目标维度的维度类型为行维度时,基于用于处理所述待处理数组的线程的参考数据处理量和线程组的尺寸,确定目标数组长度;
将所述目标数组在列维度上对应的数组长度与所述目标数组长度进行对比;
基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元。
其中,线程的参考数据处理量具体为线程的任务处理上限,即最多处理的数据数量。目标数组长度可以由参考数据处理量和线程组的尺寸融合得到,该融合方式有多种,本实施例对此不作限制。比如,该融合方式可以是相乘。若将参考数据处理量记为n,将线程组的尺寸记为warp_size,则目标数组长度可以是n * warp_size。
其中,当目标维度的维度类型为行维度,即该数据处理任务为对待处理数组进行row reduction的任务时,在确定目标数组之后,可以基于目标数组在列维度上对应的数组长度是否大于n * warp_size,来确定具体的任务处理方案。具体地,当目标数组在列维度上对应的数组长度大于n * warp_size时,可以采用一个block处理一行数据;当目标数组在列维度上对应的数组长度不大于n * warp_size时,可以采用一个warp处理一行数据。
可选地,本实施例中,步骤“基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当对比结果为所述目标数组在列维度上对应的数组长度不大于所述目标数组长度时,从预设尺寸的线程处理单元中选取线程组作为用于处理所述目标数组的目标尺寸的线程处理单元。
其中,具体地,当目标数组在列维度上对应的数组长度不大于n * warp_size时,可以采用一个warp处理一行数据,通过每个线程组warp,分别对目标数组每一行执行reduce操作。
其中,当采用一个warp处理一行数据时,应选择尽可能大的block size,这样一个block可以处理更多行的数据。
可选地,本实施例中,步骤“基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元”,可以包括:
当对比结果为所述目标数组在列维度上对应的数组长度大于所述目标数组长度时,基于所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸下的线程块。
其中,具体地,当目标数组在列维度上对应的数组长度大于n * warp_size时,可以采用一个block处理一行数据。通过每个线程块block,分别对目标数组每一行执行reduce操作。
其中,当采用一个block处理一行数据时,可以根据目标数组中行的长短来选择block size,行的长短即目标数组在列维度上对应的数组长度。目标数组的行越长,则需要选取更大的block size;反之,目标数组的行越短,则选取更小的block size。
207、服务器通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果。
208、服务器基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
具体地,column reduction的任务处理中,每个线程处理单元完成的是每一列的reduce,记目标数组为[a,b],则最后得到的任务处理结果为[b],包含b个元素,这b个元素分别是每个线程处理单元对应的数据处理子结果。
在row reduction的任务处理中,每个线程处理单元完成的是每一行的reduce,记目标数组为[a,b],则最后得到的任务处理结果为[a],包含a个元素,这a个元素分别是每个线程处理单元对应的数据处理子结果。
由上可知,本实施例可以通过服务器获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到转换后数组;当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,将所述转换后数组作为新的待处理数组;返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
本申请可以根据待处理数组对应的数组长度来进行数组转换处理,避免相关数组长度过长导致线程工作量较大的问题;再基于处理后的目标数组在列维度上的数组长度,来分配具体用于处理目标数组的目标尺寸的线程处理单元,从而进行数据处理,这样考虑了数组长度,能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
为了更好地实施以上方法,本申请实施例还提供一种任务处理装置,如图3所示,该任务处理装置可以包括任务获取单元301、第一确定单元302、转换单元303、第二确定单元304、执行单元305以及输出单元306,如下:
(1)任务获取单元301;
任务获取单元,用于获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令。
(2)第一确定单元302;
第一确定单元,用于基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程。
(3)转换单元303;
转换单元,用于当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联。
可选的,在本申请的一些实施例中,所述转换单元可以包括转换子单元、数组确定子单元和返回子单元,如下:
所述转换子单元,用于对所述待处理数组进行数组转换处理,得到转换后数组;
数组确定子单元,用于当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,将所述转换后数组作为新的待处理数组;
返回子单元,用于返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组。
可选的,在本申请的一些实施例中,所述任务处理装置还包括第三确定单元,如下:
所述第三确定单元,用于当所述待处理数组在关联维度上对应的数组长度不大于所述参考数组处理长度时,将所述待处理数组确定为目标数组。
(4)第二确定单元304;
第二确定单元,用于基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块。
可选的,在本申请的一些实施例中,所述第二确定单元可以包括检测子单元和选取子单元,如下:
所述检测子单元,用于当所述目标维度的维度类型为列维度时,对所述目标数组在列维度上对应的数组长度进行检测;
选取子单元,用于当检测到所述目标数组在列维度上对应的数组长度为预设值时,从预设尺寸的线程处理单元中选取线程块作为用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定单元还可以包括分配子单元和确定子单元,如下:
所述分配子单元,用于当检测到所述目标数组在列维度上对应的数组长度不为预设值时,基于所述目标数组在列维度上对应的数组长度和所述线程块的尺寸,分配用于处理所述数据处理任务的线程块;
确定子单元,用于将所述线程块中的每个线程组确定为用于处理所述目标数组的目标尺寸的线程处理单元;
所述执行单元具体可以用于通过所述线程块中每个线程组,基于所述预设数据处理指令分别对所述目标数组在列维度上的每个子数组中的元素进行数据处理,得到每个线程组对应的数据处理子结果。
可选的,在本申请的一些实施例中,所述第二确定单元可以包括第一确定子单元、对比子单元和第二确定子单元,如下:
所述第一确定子单元,用于当所述目标维度的维度类型为行维度时,基于用于处理所述待处理数组的线程的参考数据处理量和线程组的尺寸,确定目标数组长度;
对比子单元,用于将所述目标数组在列维度上对应的数组长度与所述目标数组长度进行对比;
第二确定子单元,用于基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定子单元具体可以用于当对比结果为所述目标数组在列维度上对应的数组长度不大于所述目标数组长度时,从预设尺寸的线程处理单元中选取线程组作为用于处理所述目标数组的目标尺寸的线程处理单元。
可选的,在本申请的一些实施例中,所述第二确定子单元具体可以用于当对比结果为所述目标数组在列维度上对应的数组长度大于所述目标数组长度时,基于所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸下的线程块。
(5)执行单元305;
执行单元,用于通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果。
(6)输出单元306;
输出单元,用于基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
可选的,在本申请的一些实施例中,所述任务处理装置还包括对比单元和检测单元,如下:
所述对比单元,用于将所述待处理数组在列维度上对应的数组长度与线程组的尺寸进行对比处理;
检测单元,用于当对比结果为所述待处理数组在列维度上对应的数组长度不小于所述线程组的尺寸时,检测所述待处理数组在关联维度上对应的数组长度是否大于所述参考数组处理长度。
可选的,在本申请的一些实施例中,所述任务处理装置还包括分配单元、处理单元和结果输出单元,如下:
所述分配单元,用于当对比结果为所述待处理数组在列维度上对应的数组长度小于所述线程组的尺寸时,基于所述待处理数组在行维度上对应的数组长度,分配用于处理所述数据处理任务的线程块;
处理单元,用于通过所述线程块中的每个线程,基于所述预设数据处理指令分别对所述待处理数组在行维度上的每个子数组中的元素进行数据处理,得到每个线程对应的数据处理子结果;
结果输出单元,用于基于每个线程对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
由上可知,本实施例可以由任务获取单元301获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;通过第一确定单元302基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;通过转换单元303当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;通过第二确定单元304基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;由执行单元305通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;通过输出单元306基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
本申请可以根据待处理数组对应的数组长度来进行数组转换处理,避免相关数组长度过长导致线程工作量较大的问题;再基于处理后的目标数组在列维度上的数组长度,来分配具体用于处理目标数组的目标尺寸的线程处理单元,从而进行数据处理,这样考虑了数组长度,能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
本申请实施例还提供一种电子设备,如图4所示,其示出了本申请实施例所涉及的电子设备的结构示意图,该电子设备可以是终端或者服务器等,具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,该电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
由上可知,本实施例可以获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
本申请可以根据待处理数组对应的数组长度来进行数组转换处理,避免相关数组长度过长导致线程工作量较大的问题;再基于处理后的目标数组在列维度上的数组长度,来分配具体用于处理目标数组的目标尺寸的线程处理单元,从而进行数据处理,这样考虑了数组长度,能够针对待处理数组的特点采用具体的任务处理方式,大幅提升了计算性能,避免计算资源的浪费。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种任务处理方法中的步骤。例如,该指令可以执行如下步骤:
获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请实施例所提供的任一种任务处理方法中的步骤,因此,可以实现本申请实施例所提供的任一种任务处理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述任务处理方面的各种可选实现方式中提供的方法。
以上对本申请实施例所提供的一种任务处理方法以及相关设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (14)
1.一种任务处理方法,其特征在于,包括:
获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;
基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;
当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;
基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;
通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;
基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述待处理数组进行数组转换处理,得到目标数组,包括:
对所述待处理数组进行数组转换处理,得到转换后数组;
当所述转换后数组在关联维度上对应的数组长度大于所述参考数组处理长度时,将所述转换后数组作为新的待处理数组;
返回执行所述对所述待处理数组进行数组转换处理,得到转换后数组的步骤,直到所述转换后数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,将所述转换后数组确定为目标数组。
3.根据权利要求1所述的方法,其特征在于,所述基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,包括:
当所述目标维度的维度类型为列维度时,对所述目标数组在列维度上对应的数组长度进行检测;
当检测到所述目标数组在列维度上对应的数组长度为预设值时,从预设尺寸的线程处理单元中选取线程块作为用于处理所述目标数组的目标尺寸的线程处理单元。
4.根据权利要求3所述的方法,其特征在于,所述通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果之前,还包括:
当检测到所述目标数组在列维度上对应的数组长度不为预设值时,基于所述目标数组在列维度上对应的数组长度和所述线程块的尺寸,分配用于处理所述数据处理任务的线程块;
将所述线程块中的每个线程组确定为用于处理所述目标数组的目标尺寸的线程处理单元;
所述通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果,包括:
通过所述线程块中每个线程组,基于所述预设数据处理指令分别对所述目标数组在列维度上的每个子数组中的元素进行数据处理,得到每个线程组对应的数据处理子结果。
5.根据权利要求1所述的方法,其特征在于,所述目标维度的维度类型为行维度;所述当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组之前,包括:
将所述待处理数组在列维度上对应的数组长度与线程组的尺寸进行对比处理;
当对比结果为所述待处理数组在列维度上对应的数组长度不小于所述线程组的尺寸时,检测所述待处理数组在关联维度上对应的数组长度是否大于所述参考数组处理长度。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
当对比结果为所述待处理数组在列维度上对应的数组长度小于所述线程组的尺寸时,基于所述待处理数组在行维度上对应的数组长度,分配用于处理所述数据处理任务的线程块;
通过所述线程块中的每个线程,基于所述预设数据处理指令分别对所述待处理数组在行维度上的每个子数组中的元素进行数据处理,得到每个线程对应的数据处理子结果;
基于每个线程对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
7.根据权利要求1所述的方法,其特征在于,所述基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元之前,还包括:
当所述待处理数组在关联维度上对应的数组长度不大于所述参考数组处理长度时,将所述待处理数组确定为目标数组。
8.根据权利要求1所述的方法,其特征在于,所述基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,包括:
当所述目标维度的维度类型为行维度时,基于用于处理所述待处理数组的线程的参考数据处理量和线程组的尺寸,确定目标数组长度;
将所述目标数组在列维度上对应的数组长度与所述目标数组长度进行对比;
基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元。
9.根据权利要求8所述的方法,其特征在于,所述基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,包括:
当对比结果为所述目标数组在列维度上对应的数组长度不大于所述目标数组长度时,从预设尺寸的线程处理单元中选取线程组作为用于处理所述目标数组的目标尺寸的线程处理单元。
10.根据权利要求8所述的方法,其特征在于,所述基于对比结果,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,包括:
当对比结果为所述目标数组在列维度上对应的数组长度大于所述目标数组长度时,基于所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸下的线程块。
11.一种任务处理装置,其特征在于,包括:
任务获取单元,用于获取针对待处理数组的数据处理任务,所述待处理数组为至少两个维度的数组,所述数据处理任务为对所述待处理数组在目标维度上的子数组中的元素执行预设数据处理指令;
第一确定单元,用于基于用于处理所述待处理数组的线程的参考数据处理量、以及线程块的参考尺寸,确定针对所述待处理数组的参考数组处理长度,所述线程块包括多个线程组,每个线程组包括多个线程;
转换单元,用于当所述待处理数组在关联维度上对应的数组长度大于所述参考数组处理长度时,对所述待处理数组进行数组转换处理,得到目标数组,所述目标数组在所述关联维度上对应的数组长度不大于所述参考数组处理长度,所述关联维度与所述目标维度关联;
第二确定单元,用于基于所述目标维度的维度类型和所述目标数组在列维度上对应的数组长度,从预设尺寸的线程处理单元中确定用于处理所述目标数组的目标尺寸的线程处理单元,所述预设尺寸的线程处理单元包括线程、线程组和线程块;
执行单元,用于通过各个目标尺寸的线程处理单元分别对所述目标数组在目标维度上的各个子数组中的元素执行所述预设数据处理指令,得到每个线程处理单元对应的数据处理子结果;
输出单元,用于基于每个线程处理单元对应的数据处理子结果,确定并输出对所述待处理数组的任务处理结果。
12.一种电子设备,其特征在于,包括存储器和处理器;所述存储器存储有应用程序,所述处理器用于运行所述存储器内的应用程序,以执行权利要求1至10任一项所述的任务处理方法中的操作。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至10任一项所述的任务处理方法中的步骤。
14.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被处理器执行时实现权利要求1至10任一项所述的任务处理方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101869.9A CN117632442B (zh) | 2024-01-25 | 2024-01-25 | 任务处理方法以及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410101869.9A CN117632442B (zh) | 2024-01-25 | 2024-01-25 | 任务处理方法以及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117632442A CN117632442A (zh) | 2024-03-01 |
CN117632442B true CN117632442B (zh) | 2024-04-05 |
Family
ID=90032430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410101869.9A Active CN117632442B (zh) | 2024-01-25 | 2024-01-25 | 任务处理方法以及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117632442B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760427A (zh) * | 2016-01-28 | 2016-07-13 | 中国科学院遥感与数字地球研究所 | 一种高维数据模式分类方法、装置及系统 |
CN112148437A (zh) * | 2020-10-21 | 2020-12-29 | 深圳致星科技有限公司 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
CN113498112A (zh) * | 2020-03-18 | 2021-10-12 | 大唐移动通信设备有限公司 | 一种数据处理的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3355602B2 (ja) * | 1999-01-27 | 2002-12-09 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 多次元配列オブジェクトの処理方法及び装置 |
WO2015151162A1 (ja) * | 2014-03-31 | 2015-10-08 | 楽天株式会社 | 類似度算出システム、類似度算出方法およびプログラム |
-
2024
- 2024-01-25 CN CN202410101869.9A patent/CN117632442B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105760427A (zh) * | 2016-01-28 | 2016-07-13 | 中国科学院遥感与数字地球研究所 | 一种高维数据模式分类方法、装置及系统 |
CN113498112A (zh) * | 2020-03-18 | 2021-10-12 | 大唐移动通信设备有限公司 | 一种数据处理的方法及装置 |
CN112148437A (zh) * | 2020-10-21 | 2020-12-29 | 深圳致星科技有限公司 | 用于联邦学习的计算任务加速处理方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117632442A (zh) | 2024-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Qin et al. | Sigma: A sparse and irregular gemm accelerator with flexible interconnects for dnn training | |
Zhang et al. | A system hierarchy for brain-inspired computing | |
EP3996004A1 (en) | Spiking neural network computing system and method for brain-like intelligence and cognitive computing | |
Srichandan et al. | Task scheduling for cloud computing using multi-objective hybrid bacteria foraging algorithm | |
US20200042856A1 (en) | Scheduler for mapping neural networks onto an array of neural cores in an inference processing unit | |
US20200089535A1 (en) | Data sharing system and data sharing method therefor | |
US20190087708A1 (en) | Neural network processor with direct memory access and hardware acceleration circuits | |
CN110447010A (zh) | 在硬件中执行矩阵乘法 | |
CN110490309A (zh) | 一种用于神经网络的算子融合方法及其相关产品 | |
WO2019001418A1 (zh) | 数据共享系统及其数据共享方法 | |
CN112799726B (zh) | 数据处理装置、方法及相关产品 | |
US20200117988A1 (en) | Networks for distributing parameters and data to neural network compute cores | |
CN114580606A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113821332B (zh) | 自动机器学习系统效能调优方法、装置、设备及介质 | |
JP2021521539A (ja) | ニューラル推論プロセッサのための中央スケジューラおよび命令ディスパッチャ | |
Gu et al. | Improving execution concurrency of large-scale matrix multiplication on distributed data-parallel platforms | |
CN111047045B (zh) | 机器学习运算的分配系统及方法 | |
Gadiyar et al. | Artificial intelligence software and hardware platforms | |
Mousavi Khaneghah et al. | A mathematical multi-dimensional mechanism to improve process migration efficiency in peer-to-peer computing environments | |
CN115860066A (zh) | 一种基于批处理的神经网络推理流水线复用的方法 | |
Campeanu et al. | Component allocation optimization for heterogeneous CPU-GPU embedded systems | |
Bakhthemmat et al. | Decreasing the execution time of reducers by revising clustering based on the futuristic greedy approach | |
Li et al. | Research and implementation of parallel artificial fish swarm algorithm based on ternary optical computer | |
Zhang et al. | Design and implementation of deep neural network for edge computing | |
CN117632442B (zh) | 任务处理方法以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |