CN116382880B - 任务执行方法、装置、处理器、电子设备及存储介质 - Google Patents
任务执行方法、装置、处理器、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116382880B CN116382880B CN202310665909.8A CN202310665909A CN116382880B CN 116382880 B CN116382880 B CN 116382880B CN 202310665909 A CN202310665909 A CN 202310665909A CN 116382880 B CN116382880 B CN 116382880B
- Authority
- CN
- China
- Prior art keywords
- task
- subtask
- chip
- execution
- subtasks
- 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
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004364 calculation method Methods 0.000 claims abstract description 72
- 230000015654 memory Effects 0.000 claims description 32
- 238000012545 processing Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 9
- 238000013473 artificial intelligence Methods 0.000 abstract description 156
- 230000008569 process Effects 0.000 description 9
- 230000001276 controlling effect Effects 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000001105 regulatory effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- 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
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及一种任务执行方法、装置、处理器、电子设备及存储介质,属于人工智能技术领域。该任务执行方法包括根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;根据AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,子任务列表中包括从执行文件中的不同批尺寸的子任务中选择得到的多个子任务;将子任务列表中各个子任务包含的指令,分发给AI芯片执行。该任务执行方法使得允许在前期编译的时候,无需生成包含各种batch尺寸任务量的执行文件,而是可以仅生成包含几种指定batch尺寸任务量的执行文件,从而可以极大提高处理器的运行效率,同时,也可以节约执行文件所需的存储空间。
Description
技术领域
本申请属于人工智能技术领域,具体涉及一种任务执行方法、装置、处理器、电子设备及存储介质。
背景技术
通常AI(Artificial Intelligence,人工智能)网络中的执行batch(批处理任务)和编译batch的尺寸是不同的。在为AI网络进行编译的时候会提供一个最大批处理任务量的尺寸max batch,编译器会基于这个max batch来编译生成执行文件。而在真正需要执行AI网络的时候,用户通过上传指定不同的执行batch(尺寸小于等于max batch)来运行AI网络。
目前常用的处理方式是,在用户传入小于等于max batch的执行batch后,从编译器生成的执行文件中找到batch尺寸与用户传入的执行batch尺寸相同的任务量(tile),从而执行对应的硬件指令。其中,为了能够从编译器生成的执行文件中找到batch尺寸与执行batch尺寸相同的任务量(tile),在编译的时候,需要根据max batch依次生成包含各种batch尺寸(1batch~max batch)任务量的执行文件,例如,假设max batch为4batch,则需要在编译期生成包含1batch任务量、2batch任务量、3batch任务量、4batch任务量的执行文件。这种方式会导致编译时间大大增加,并且,如果max batch的值很大,那么在编译期需要基于该max batch生成的任务量种类就更多,这会导致编译生成的执行文件需占用的存储空间非常大,例如,若max batch为1000 batch,则需要编译生成包含1000个不同batch尺寸任务量的执行文件,可能导致磁盘无法存储空间占用量过大的相应执行文件。
发明内容
鉴于此,本申请的目的在于提供一种任务执行方法、装置、处理器、电子设备及存储介质,以改善目前为了执行AI网络对应的计算任务而存在的处理效率低以及所需存储空间大的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种任务执行方法,包括:根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致; 将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务。
相较于依赖在编译期生成足够多种类的任务量,并在运行时从编译生成的执行文件中选一个任务量与用户需求量相同的任务来执行的处理方式,本申请实施例中,通过选择执行文件中的不同批尺寸的子任务来组成总任务,即利用多个子任务来拼凑成总任务,使得允许在编译期无需依次生成包含各种batch尺寸任务量的执行文件,而是可以仅生成包含几种不同指定batch尺寸任务量的执行文件,有利于降低编译处理难度,缩短编译时间,可以提高处理器的运行效率,同时,由于允许生成的执行文件包含的batch尺寸任务量种类减少,也可以节约很大的存储空间。
结合第一方面实施例的一种可能的实施方式,根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,包括:根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表。
其中,通过按照指定策略来选择所需的子任务集合,可以根据需求进行灵活选择所需的子任务列表,具备更好的适用性以及灵活性。
结合第一方面实施例的一种可能的实施方式,所述指定策略包括:从执行文件中的不同批尺寸的子任务中选择使所述硬件设备启动次数最少的子任务集合,或者,从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合。
其中,通过选择使硬件设备启动次数最少的子任务集合,可以减少任务执行过程中硬件设备的启动次数,或者,通过选择包含最大子任务的子任务集合,有利于提高任务执行过程中硬件一次启动的使用时间,提高硬件利用率,也有利于提高并行处理能力。
结合第一方面实施例的一种可能的实施方式,根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务,包括:根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
其中,在确定AI芯片中硬件设备需要执行的计算任务时,将AI芯片中硬件设备的数量考虑在内,通过利用多个硬件设备来共同执行该总任务,这样使得每个硬件设备所执行的计算任务的任务量会变少,从而提高运行效率。
结合第一方面实施例的一种可能的实施方式,根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务,包括:若所述总任务不能被均分给每个所述硬件设备,根据所述AI芯片中硬件设备的数量,向上调整所述总任务的大小,以使调整后的所述总任务能被均分给每个所述硬件设备;根据调整后的所述总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
其中,通过向上调整所述总任务的大小,以使调整后的总任务能被均分给每个硬件设备,这样使得每个硬件设备需要执行的计算任务相同,能够充分利用并均衡硬件设备的硬件计算资源,同时,使得各个硬件设备执行任务所需的时间一致,便于同步控制。
结合第一方面实施例的一种可能的实施方式,将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,包括:根据所述AI芯片中硬件设备的数量,对所述子任务列表中的各个子任务包含的指令进行复制,根据所述AI芯片中除目标硬件设备的其他硬件设备的设备信息,对复制出的指令中包含的设备信息进行修改,得到修改过设备信息的指令;将修改后的各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中包含所述目标硬件设备在内的每个硬件设备均执行修改后的各个子任务包含的指令完成对应的子任务。
其中,通过对子任务列表中的各个子任务包含的指令进行复制,并对其中的设备信息进行修改,使得修改后的指令能够被对应的硬件设备执行,这样使得可以同时利用多个硬件设备来并行执行该计算任务,提高执行效率,同时也可减少与AI芯片的交互次数。
结合第一方面实施例的一种可能的实施方式,所述子任务列表中各个子任务是根据对原始总任务向上调整后的总任务而确定的;在将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行之后,所述方法还包括:控制所述AI芯片将对于所述子任务列表中各个子任务的执行结果,存储到临时缓存;控制所述AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为所述原始总任务指定的缓存空间。
其中,若子任务列表中各个子任务是根据向上调整后的总任务而确定的,则先将AI芯片对于该子任务列表的执行结果,存储到临时缓存,之后再从中选择原始总任务大小的执行结果,存储到为原始总任务指定的缓存空间,从而可以保证即便对原始总任务进行过向上调整才得到总任务的大小,也不对会原始总任务对应最终的存储结果带来影响,保证方案执行的准确性。
第二方面,本申请实施例还提供了一种任务执行装置,包括:处理模块和发送模块;处理模块,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;发送模块,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务包含的指令完成对应的子任务。
第三方面,本申请实施例还提供了一种处理器,包括:内核和收发器;内核,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;收发器,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务包含的指令完成对应的子任务。
第四方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储计算机程序;所述处理器,用于调用存储于所述存储器中的计算机程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第五方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请实施例提供的技术方案可包括以下有益效果:
可解决编译时所采用的批处理任务尺寸与实际运行AI网络时所需执行的任务量不同的问题,本申请通过在编译生成的执行文件中,选取不同任务量的子任务来组合拼凑成需要执行的总任务,从而执行对应的指令,这有利于提升编译处理效率,缩短编译时间,可以提高处理器的运行效率。并且,由于在运行时组合拼出总任务的这种方式允许编译生成的执行文件信息量减少,因此还可以节约执行文件的存储空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种任务执行方法的流程示意图。
图2示出了本申请实施例提供的又一种任务执行方法的流程示意图。
图3示出了本申请实施例提供的一种任务执行装置的模块示意图。
图4示出了本申请实施例提供的一种电子设备的结构示意图。
附图标记:100-任务执行装置;110-处理模块;120-发送模块;200-电子设备;210-收发器;220-存储器;230-通讯总线;240-处理器。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
在通过AI(Artificial Intelligence,人工智能)网络进行数据处理、计算前,通常需要在编译期采用AI编译器为AI网络进行编译,还需要在运行时决定AI网络对应的计算任务,并将对应计算任务的实际任务量分配给用于执行计算任务的硬件设备。AI网络运行时通常是按批(至少1batch)进行数据处理的,因此通常以批处理任务(batch)的大小(也称为批尺寸)来描述任务量。
鉴于目前常采用的方式是:在运行时,用户指定一个小于等于max batch的实际需求总任务量,然后从编译器生成的执行文件中找到一个batch尺寸与用户指定的执行batch(即总任务量)尺寸相同的任务量(tile块),从而执行对应的指令,这要求在编译期需要根据max batch,依次生成包含各种batch尺寸(1 batch ~max batch)任务量的执行文件,从而导致编译时间长以及执行文件需占用的存储空间非常大,使得处理效率低,以及可能导致磁盘难以存储空间占用量过大的执行文件。
为改善上述问题,本申请实施例提供了一种任务执行方法、装置、处理器、电子设备及存储介质。本申请实施例中,通过选择执行文件中的不同批尺寸(batch size)的子任务(tile)来组成总任务,从而使得在编译的时候,无需根据max batch依次生成包含各种batch尺寸任务量的执行文件,而是可以仅生成包含几种不同指定batch尺寸任务量的执行文件。基于本申请的构思,假设max batch为100batch,在编译时可以仅生成包含几种不同指定batch尺寸任务量的执行文件,例如,生成包含1batch子任务量的执行文件,生成包含2batch子任务量的执行文件,生成包含4batch子任务量的执行文件、生成包含10batch子任务量的执行文件等,而无需依次生成1batch~100 batch范围内的共100种子任务量的执行文件。
这样,通过本申请的原理,在需要执行AI网络时,不论用户实际上传指定的执行batch数据任务量有多大,都可以根据用户传入的执行batch(即总任务量),通过选择执行文件中的不同批尺寸的子任务,来组成用户所需的总任务量,并将用于拼凑出总任务的各子任务所对应的指令,分发给AI芯片执行,从而使AI芯片中的硬件设备执行指令对相应任务量的数据进行处理。采用本申请实施例中通过选择执行文件中的不同批尺寸的子任务(tile)来组成总任务的方式,使得在编译期允许仅生成包含少量指定batch尺寸任务量的执行文件,无需根据max batch依次生成包含各种batch尺寸任务量的执行文件,这可以提升编译效率,并节约执行文件的存储空间,有利于提高处理器的运行效率,可优化AI网络的运行效率。
本申请实施例提供的一种任务执行方法,可以应用于需要运行AI网络(例如用于目标检测、自然语言处理的各类神经网络模型)的场景,可以应用于处理器,该处理器可以是同构的处理器,也可以是异构的处理器。该处理器可以是任何常规的处理器,比如可以是中央处理器。
为了更好的理解,下面将结合图1,对本申请实施例提供的任务执行方法进行说明。
S1:根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务。
根据用户传入的待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务。其中,AI芯片中硬件设备待执行的计算任务的任务量小于或等于总任务的任务量。
作为一种实施方式,可以是处理器中的内核,根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务。
在根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务时,可以结合多种因素考虑,如总任务量的多少、硬件设备当前的空闲状态等因素。不同考虑因素下,所确定的AI芯片中硬件设备需要执行的计算任务的任务量不同,例如,当总任务由一个硬件设备来完成时,计算任务的任务量等于总任务的任务量,当总任务由多个硬件设备来完成时,单个硬件设备需要执行的计算任务的任务量小于总任务的任务量。
关于AI芯片中用于执行计算任务的硬件设备的数量,可以由人工进行配置,也可以在预设规则的情况下自动根据规则来判断当前允许调用多少硬件设备来运行AI网络,例如,可以根据待执行的总任务的任务量,来确定需要运行AI网络模型的硬件设备的数量,在待执行的任务量少的情况下,调用一个硬件设备可能就足以满足需求,在任务量多的情况下,可能需要多个硬件设备并行运行。
例如,对于用AI网络识别不同人脸图像的场景下,如果只需要识别一张图或者少量的图就行(任务量较少),此时用一个硬件设备来运行该AI网络就能满足运算需求;而对于一些需要在短时间内进行大量识别的场景,即需要对大量的图像进行识别,或对计算结果的实时性要求高的场景,可以用多个硬件设备并行运行AI网络来进行处理。
一种可选实施方式下,上述S1可以包括:根据待执行的总任务和AI芯片中硬件设备的数量,确定每个硬件设备需要执行的计算任务。其中,可利用多个硬件设备来共同执行总任务,从而完成对应任务量的硬件指令在硬件设备上的执行,这样使得每个硬件设备所执行的计算任务的任务量会变少,硬件计算资源可被均衡,从而提高运行效率。
可选地,在根据待执行的总任务和AI芯片中硬件设备的数量,确定每个硬件设备需要执行的计算任务时,可以根据待执行的总任务以及每个硬件设备当前的空闲状态来确定,例如,假设用户指定的总任务的batch尺寸为31,硬件设备的数量为4,在分配任务时,处于空闲状态的硬件设备可以多分一些计算任务,处于繁忙状态的硬件设备可以少分一些计算任务。若均处于空闲状态,为了充分利用硬件的执行资源,可以将该31batch的总任务尽可能的均分给每个硬件设备,例如,可以是其中3个硬件设备各自分得8batch的计算任务,1个硬件设备分得7batch的计算任务。在该种实施方式下,一部分硬件设备需要执行的计算任务的任务量是8batch,另一部分硬件设备需要执行的计算任务的任务量是7batch。
可选地,在根据待执行的总任务和AI芯片中硬件设备的数量,确定每个硬件设备需要执行的计算任务时,还可以是:若总任务不能被均分给每个硬件设备,则根据AI芯片中硬件设备的数量,向上调整总任务的大小,以使调整后的总任务能被均分给每个硬件设备,之后根据向上调整后的总任务和AI芯片中硬件设备的数量,确定每个硬件设备需要执行的计算任务。
为了更好理解,还是以待执行上述的31batch的总任务,且待运行AI网络的AI芯片中有4个硬件设备为例,由于31batch的总任务无法被均分给每个硬件设备,所以需要向上调整总任务的大小,例如,将其从31batch的总任务调整为32batch的总任务,以使调整后的总任务能被均分给每个硬件设备,此时,每个硬件设备需要执行的计算任务为8batch。
可以理解的是,是否向上调整总任务的大小,需要考虑诸如调整后能否提高执行效率等因素,如果调整后能够带来正收益,则可以考虑向上调整总任务的大小。
AI网络被编译后,编译得到的执行文件中的计算任务,可以在需要运行该执行文件对应的AI网络模型时,被提供给对应的硬件设备。
其中,执行文件(executable)包含指定尺寸任务量(此处指编译期所用的任务量)的计算任务,而计算任务中包含计算所需的各种指令,这些指令能够被AI芯片中对应的目标硬件设备识别并执行,从而完成对应的计算任务。目标硬件设备为默认执行该总任务的硬件设备,可以为AI芯片中任一硬件设备。
在编译AI网络时,会将AI网络中包含的各种操作(如卷积运算、池化运算、激活、归一化、分类处理等操作)编译成目标硬件设备能够执行的各种执行文件,其中,执行文件中包含多个指定批尺寸的子任务(tile),每个子任务中均包含用于完成该子任务所需的各种指令,指令中包含执行该指令的目标硬件设备的设备信息。
AI芯片可以是为了承担繁重的AI计算任务而设计的专用的计算加速芯片(或称加速器),如,图形处理器(Graphic Processing Unit,GPU)、张量处理器(Tensor ProcessingUnit,TPU)等,当然,也可以是其他面向AI计算任务的处理器。可选的,一个AI芯片可以包含多个硬件设备,该多个硬件设备中的任一个,都可以按实际需求被选定作为目标硬件设备来执行计算任务。可选的,一个硬件设备可以包含多种硬件执行单元,比如一个AI芯片中的一个硬件设备可以包含但不限于:用于通用计算的第一单元(CU,Compute engine Unit)、用于AI加速计算的第二单元(TU,Tensor Unit)、用于数据搬运的第三单元(DMA,DirectMemory Access)等。AI芯片中的一个硬件设备也可以视为含有多个硬件执行单元的计算集群。不同类型的硬件设备所包含的硬件执行单元的数量可以不同,且种类也可以不同。
S2:根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表。
在确定了AI芯片中硬件设备需要执行的计算任务后,便可根据AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表。
其中,该子任务列表包括多个子任务,该多个子任务是从事先生成的执行文件提供的不同批尺寸的子任务中选择得到的,且该子任务列表中的多个子任务的任务量之和与硬件设备需要执行的计算任务的任务量一致。
在一些应用场景下,考虑到AI芯片的片上内存(读写速度优于片上内存之外的其他普通内存)容量很小,可能无法支持运行整个AI网络涉及的所有操作同时访问,为了让AI网络执行时所占用的内存在片上内存的容量范围内,会将AI网络进行子网划分,划分为多个子网,并以子网为单位进行指令编译以及执行,即,编译过程基于为AI网络划分得到的子网而进行的,会基于为AI网络划分得到的不同子网而编译得到子网对应的指令。每个AI子网可以有各自对应的子任务列表,使得执行子网的数据处理任务所占用的内存不超过片上内存允许的容量,以此提升AI网络的任务执行效率。对于AI网络中的多个子网(一个子网有一个或多个操作),AI网络中的每个子网的计算任务均有可能成为本申请的总任务,在运行时,每个AI子网可以有各自对应的子任务列表。
示例性的,在一些应用场景下,一个AI网络的其中一个子网的计算任务R需要该子网中所有类型的操作都参与,若该子网中有3种类型的操作,在为这种任务R编译出相应指令得到这种任务R包含的3种操作所对应的执行文件后,在运行时通过用户需求确定出关于该种任务R,本次待执行的总任务量(例如100batch)的情况下,可通过选取执行文件中为该种任务R所生成的不同批尺寸的子任务,来拼凑出该任务R本次的总任务量(100batch),以此得到该种任务R本次的总任务量对应的子任务列表。假设从执行文件提供的关于该子网的子任务中,选了其中5种批尺寸的子任务来拼凑出100batch任务量的任务R,每种批尺寸的子任务都有可能涉及不止一种(例如该子网的3种)操作的指令。通过从编译得到的执行文件中选择子任务组成子任务列表的方式,可以确定AI网络的子网指令执行序列。
一种可选实施方式下,S2的实现过程可以是:根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所需的子任务列表。其中,不同的指定策略所选择的子任务不同,从而得到的子任务列表也不同。
示例性的,假设一个硬件设备需要执行的计算任务的任务量为8batch,执行文件中可供选择的子任务分别是1 batch的子任务(记为tile0),2 batch的子任务(记为tile1),4 batch的子任务(记为tile2),5 batch的子任务(记为tile3),可以按照指定策略来进行子任务的选取从而组合得到8batch的子任务列表,例如,可选择2个4 batch的子任务,来得到8batch的计算任务(即tile2+tile2);也可以选择1个1 batch的子任务+1个2batch的子任务+1个5 batch的子任务,得到8batch的计算任务(即tile0+tile1+til3);也可以选择8个1 batch的子任务,得到8batch的计算任务(即8个tile0)等。
对于一个AI网络中的不同子网的计算任务,可采用相同的指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合。
可选地,指定策略可以包括:从执行文件中的不同批尺寸的子任务中选择使硬件设备启动次数最少的子任务集合,或者,从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合。不同的选择方式所得到的子任务集合不同。
继续以一个硬件设备需执行8batch的计算任务,且执行文件中可供选择的子任务分别是1 batch的子任务(tile0),2 batch的子任务(tile1),4 batch的子任务(tile2),5batch的子任务(tile3)的示例为例,如果指定策略为从执行文件中的不同批尺寸的子任务中,选择使硬件设备启动次数最少的子任务集合,则可以通过经典算法-回溯算法,选择2个4 batch的子任务,这种情况下启动硬件的次数为2次,其中,硬件设备一次仅能执行一个子任务,从而得到的子任务列表如表1所示。
表1
如果指定策略为从执行文件中的不同批尺寸的子任务中,选择包含最大子任务的子任务集合,则可以通过经典算法-贪心算法,选择5batch的子任务+2batch的子任务+1batch的子任务,这种情况下启动硬件的次数为3次,得到的子任务列表可如表2所示。其中,经典算法-贪心算法在每次选择子任务时,都会根据待分配的剩余任务量从可供选择的子任务中选择小于剩余任务量的最大子任务。该例中,供选择的子任务为:1 batch的子任务(tile0),2 batch的子任务(tile1),4 batch的子任务(tile2),5 batch的子任务(tile3);对于8batch的计算任务,第一次选择时优选最大的5 batch子任务,此时,剩余任务量为3 batch,因此,第二次选择2 batch的子任务,第三次选择1 batch的子任务。
通过从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合,这样可以提高硬件一次启动的使用时间,有利于提高并行处理能力。
表2
可以理解的是,根据不同需求按照其他的指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,也有可能得到如表3所示的子任务列表,或者,其他的子任务列表。
表3
需要说明的是,在将上述的31batch的总任务,分给4个硬件设备执行的情况下,如果不将31batch的总任务向上调整为32batch的总任务,此时,总任务便无法均分给每个硬件设备,例如,其中3个硬件设备各自分得8batch的计算任务,其中1个硬件设备分得7batch的计算任务。如果指定策略为从执行文件中的不同批尺寸的子任务中选择使硬件设备启动次数最少的子任务集合,且执行文件中可供选择的子任务仅有1 batch的子任务(tile0),4batch的子任务(tile2),那么对于7batch的计算任务,需要选择1个4 batch 的tile2+3个1batch的 tile0,此时硬件设备的最小启动次数为4次。如果将31batch的总任务向上调整为32batch的总任务,此时每个硬件设备分8batch的计算任务。对于8batch的计算任务,仍按从执行文件中的不同批尺寸的子任务中选择使硬件设备启动次数最少的子任务集合来进行子任务的选取,需要选择2个4 batch 的tile2,此时硬件设备的最小启动次数为2次。可以看出,向上调整总任务的大小后,能够带来正收益,比如能够减少硬件设备的启动次数。
可以理解的是,生成子任务列表与执行子任务列表中各个子任务包含的指令的这两个过程可以是不连续的。在生成子任务列表以后,子任务列表可以被暂存,并在需要执行子任务列表中的子任务对应的指令时被使用。
S3:将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行。
在根据AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表后,可将子任务列表中各个子任务包含的指令,分发给AI芯片执行,以使AI芯片中的硬件设备执行各个子任务包含的指令来完成对应的子任务,进而完成总任务。
可以理解的是,总任务可以是由一个硬件设备完成,也可以由多个硬件设备共同完成,假设总任务量为20 batch,且一个硬件设备每次执行的计算任务为5batch的子任务,如果由一个硬件设备完成,则需要执行4次,才能将该总任务执行完成。这种情况下,在将子任务包含的指令分发给AI芯片中的硬件设备时,可分4次发送,以使该硬件设备每次执行指令完成5batch的计算任务。可选的,在发送子任务包含的指令时,可一并发送地址信息,地址信息可用于确定待处理任务量(例如待识别图像)的数据所在的位置。硬件设备可基于收到的子任务的指令以及地址信息,执行指令对相应位置的数据进行计算处理,从而完成计算任务。
为了能够提高执行效率,总任务可以由多个(例如4个)硬件设备来共同完成,这样一次执行便可完成该总任务。在该种实施方式下,S3的实现过程可以是,根据AI芯片中硬件设备的数量,对子任务列表中的各个子任务包含的指令进行复制,根据AI芯片中除目标硬件设备外的其他硬件设备的设备信息,对复制出的指令中包含的设备信息进行修改,得到修改过设备信息的指令;将修改过设备信息后的各个子任务包含的指令,分发给AI芯片执行,以使AI芯片中包含目标硬件设备在内的每个硬件设备均能执行修改后的各个子任务包含的指令,从而完成对应的子任务。以此便可实现同时利用多个硬件设备来共同执行该总任务。
假设AI芯片中能够执行AI网络对应的计算任务的硬件设备的总数量为4(假设4个硬件设备分别记为硬件设备0、硬件设备1、硬件设备2、硬件设备3,其中,硬件设备0为目标硬件设备),则可以将针对目标硬件设备生成的计算任务中的指令复制3份,针对其中一份复制的指令,根据硬件设备1的设备信息来修改该份复制的指令,使得修改后的该份复制的指令能够被硬件设备1执行,同理,根据硬件设备2、硬件设备3的设备信息来分别修改另外两份复制的指令,使得修改后的指令能够被硬件设备2、硬件设备3执行。
为了更好的理解,结合上述表2所示的子任务列表为例,对于32batch的总任务,如果由一个硬件设备来完成,则需要重复执行4次该子任务列表,每次执行该子任务列表中的一个子任务时,都启动一次硬件设备,该子任务列表中由于有3个子任务,则由一个硬件设备执行一次该子任务列表的情况下,需要启动该硬件设备3次(每次启动时执行表2中的一个tile块的子任务),即由一个硬件设备执行4次该子任务列表总共需要启动硬件设备12次。而如果利用4个硬件设备来并行完成,则只需要启动三次硬件设备即可,每个硬件设备的执行关系可以如表4所示。
表4
从表4可以看出,在采用多个硬件设备并行处理的情况下,每个硬件设备都会执行一次子任务列表,子任务列表中tile3的一次执行,其实是执行了5batch * 4=20batch,tile1的一次执行,其实是执行了2batch*4=8batch,tile0的一次执行,其实是执行了1batch*4=4batch。从表4可看出,该例执行的总任务量是:20batch+8batch+4batch=32batch,仅需要启动3次硬件设备即可完成。
若子任务列表中的各个子任务是根据(对原始总任务)向上调整后的总任务而确定的,在S3之后,该方法还包括:控制AI芯片将对于子任务列表中各个子任务的执行结果,存储到临时缓存;并控制AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为原始总任务指定的缓存空间。在该种实施方式下,由于向上调整总任务,会使调整后的总任务的任务量相对原始总任务变大,比如将31batch的原始总任务向上调整为32batch的总任务,这样就会额外多出用户并不知道的1 batch的计算任务,所以需要处理这部分额外的任务量。由于用户在为总任务分配用于存储执行结果的缓存空间时,仅会为其知晓的31batch的总任务分配缓存空间,但是总任务在真正被执行的时候被向上调整变成了32batch,并且由于是基于向上调整后的总任务得到的子任务列表,所以需要先将AI芯片对于子任务列表中各个子任务的执行结果,存储到为32batch总任务创建的临时缓存,之后,再从临时缓存中获取原始总任务大小(该例中为31batch数据的任务)的执行结果,存储到为原始总任务(31batch)指定的缓存空间。
其中,相对于AI芯片的片上内存而言,此处的临时缓存以及指定的缓存空间,可以为AI芯片的普通内存,例如可以是GPU的DDR(Double Data Rate SDRAM,双倍速率同步动态随机存储器)中的空间。
可以理解的是,如果没有向上调整过总任务,则在存储AI芯片的执行结果时,可直接将AI芯片的执行结果存储到为原始总任务指定的缓存空间。
为了更好的理解上述的任务执行方法,一种实施方式下,该任务执行方法的流程原理图如图2所示。可以理解的是,图2所示的仅为本申请实施例提供的众多实施例中的一种,因此,不能将图2所示的任务执行方法,理解为是对本申请的限制。
AI计算领域的一些应用场景下,各类型的AI网络可能会处理各种各样的任务数据(例如待处理的二维图片、三维图片、视频、文本、音频等任务数据)。在AI计算软件的初始化阶段,编译器会将AI网络或子网中的各类操作编译成可供驱动器调用的若干个小模板(即,执行文件中可供选择的不同任务量的子任务),每个模板对应一个大小不同(即,批尺寸不同)的数据形状,在正式运行时,驱动器根据AI计算软件实际接收的图片或视频的大小(即,用户提供或指定的总任务量),从编译出来的若干个模板中选取合适的模板来拼凑成实际需要处理的数据量(对应得到子任务列表)。其中,对于任务模板的划分,可以一张图作为切分粒度,不对一张完整的图再做切分(例如有些不能被随意切割大小的图像),这种时候任务模板的大小类似于图像的张数,只需要考虑一个维度的因素来拼成总任务。可选的,在每次将模板(即含有指令的子任务)发送给硬件执行前,可以配置好此次执行的坐标(用于描述待处理的子任务对应的待处理数据所在的位置),硬件设备得到模板中的计算指令后,可对收到或确定位置的数据(例如图像、视频等)进行计算处理,得到计算处理结果并存放到指定的缓存位置,还可通过驱动器将结果返回输出给用户。
基于同样的发明构思,本申请实施例还提供了一种处理器,该处理器包括内核和收发器。
内核,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,该多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;
收发器,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务。
可选地,内核用于根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
可选地,若所述总任务不能被均分给每个所述硬件设备,内核用于:根据所述AI芯片中硬件设备的数量,向上调整所述总任务的大小,以使调整后的所述总任务能被均分给每个所述硬件设备;根据调整后的所述总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
可选地,内核用于:根据所述AI芯片中硬件设备的数量,对所述子任务列表中的各个子任务包含的指令进行复制, 根据所述AI芯片中除目标硬件设备的其他硬件设备的设备信息,对复制出的指令中包含的设备信息进行修改,得到修改过设备信息的指令;并通过收发器将修改后的各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中包含所述目标硬件设备在内的每个硬件设备均执行修改后的各个子任务包含的指令完成对应的子任务。
可选地,内核用于根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表。
可选地,若所述子任务列表中各个子任务为根据向上调整后的总任务而确定,内核还用于控制所述AI芯片将所述AI芯片的执行结果,存储到临时缓存;控制所述AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为所述原始总任务指定的缓存空间。
本申请实施例所提供的处理器,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,处理器实施例部分未提及之处,可参考前述方法实施例中相应内容。
基于同样的发明构思,本申请还提供了一种任务执行装置100,如图3所示。该任务执行装置100包括:处理模块110和发送模块120。
处理模块110,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致。
发送模块120,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务。
可选地,处理模块110,用于根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
可选地,处理模块110,用于若所述总任务不能被均分给每个所述硬件设备,根据所述AI芯片中硬件设备的数量,向上调整所述总任务的大小,以使调整后的所述总任务能被均分给每个所述硬件设备;根据调整后的所述总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
可选地,处理模块110,用于根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表。
可选地,处理模块110,还用于根据所述AI芯片中硬件设备的数量,对所述子任务列表中的各个子任务包含的指令进行复制, 根据所述AI芯片中除目标硬件设备的其他硬件设备的设备信息,对复制出的指令中包含的设备信息进行修改,得到修改过设备信息的指令,并通过发送模块120将修改后的各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中包含所述目标硬件设备在内的每个硬件设备均执行修改后的各个子任务包含的指令完成对应的子任务。
可选地,若所述子任务列表中各个子任务为根据向上调整后的总任务而确定,处理模块110还用于:控制所述AI芯片将所述AI芯片的执行结果,存储到临时缓存;控制所述AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为所述原始总任务指定的缓存空间。
本申请实施例所提供的任务执行装置100,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
基于同样的发明构思,本申请实施例还提供一种电子设备。如图4所示,图4示出了本申请实施例提供的一种电子设备200的结构框图。电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。收发器210、存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图3中所示的软件功能模块,即任务执行装置100。其中,任务执行装置100包括至少一个可以软件或固件(Firmware)的形式存储于存储器220中或固化在电子设备200的操作系统(Operating System,OS)中的软件功能模块。处理器240,用于执行存储器220中存储的软件功能模块或计算机程序。例如,处理器240,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;根据AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,子任务列表包括多个子任务,多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与计算任务的任务量一致;将子任务列表中各个子任务包含的指令,分发给AI芯片执行,以使AI芯片中的硬件设备执行各个子任务包含的指令完成对应的子任务。
其中,存储器220可以是但不限于:随机存取存储器(RandomAccessMemory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于智能手机、平板、电脑、工控机、车载设备、服务器、智能穿戴设备、边缘计算盒子等。
本申请实施例还提供了一种非易失性的计算机可读存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的任务执行方法。前述的计算机可读存储介质包括但不限于:电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。更具体但非穷举的例如可包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。围绕发明构思的实现原理以及产生的技术效果可相互参照。在不冲突的情况下,本申请中的各实施例或实施方式可相互组合。
在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (9)
1.一种任务执行方法,其特征在于,包括:
根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;
根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;
将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务;
根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,包括:
根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表,其中,所述指定策略包括:从执行文件中的不同批尺寸的子任务中选择使所述硬件设备启动次数最少的子任务集合,或者,从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合。
2.根据权利要求1所述的方法,其特征在于,根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务,包括:
根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
3.根据权利要求2所述的方法,其特征在于,根据待执行的总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务,包括:
若所述总任务不能被均分给每个所述硬件设备,根据所述AI芯片中硬件设备的数量,向上调整所述总任务的大小,以使调整后的所述总任务能被均分给每个所述硬件设备;
根据调整后的所述总任务和所述AI芯片中硬件设备的数量,确定每个所述硬件设备需要执行的计算任务。
4.根据权利要求3所述的方法,其特征在于,将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,包括:
根据所述AI芯片中硬件设备的数量,对所述子任务列表中的各个子任务包含的指令进行复制;
根据所述AI芯片中除目标硬件设备外的其他硬件设备的设备信息,对复制出的指令中包含的设备信息进行修改,得到修改过设备信息的指令;
将修改后的各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中包含所述目标硬件设备在内的每个硬件设备,均执行修改后的各个子任务包含的指令完成对应的子任务。
5.根据权利要求1-4任一项所述的方法,其特征在于,若所述子任务列表中的各个子任务是根据对原始总任务向上调整后的总任务而确定的;在将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行之后,所述方法还包括:
控制所述AI芯片将对于所述子任务列表中各个子任务的执行结果,存储到临时缓存;
控制所述AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为所述原始总任务指定的缓存空间。
6.一种任务执行装置,其特征在于,包括:
处理模块,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;
发送模块,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务;
所述处理模块,用于根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表,其中,所述指定策略包括:从执行文件中的不同批尺寸的子任务中选择使所述硬件设备启动次数最少的子任务集合,或者,从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合。
7.一种处理器,其特征在于,包括:
内核,用于根据待执行的总任务,确定AI芯片中硬件设备需要执行的计算任务;以及根据所述AI芯片中硬件设备需要执行的计算任务,确定对应的子任务列表,其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述计算任务的任务量一致;
收发器,用于将所述子任务列表中各个子任务包含的指令,分发给所述AI芯片执行,以使所述AI芯片中的硬件设备执行各个子任务的指令完成对应的子任务;
所述内核,用于根据AI芯片中硬件设备需要执行的计算任务,按照指定策略从执行文件中的不同批尺寸的子任务中选择所需的子任务集合,得到所述子任务列表,其中,所述指定策略包括:从执行文件中的不同批尺寸的子任务中选择使所述硬件设备启动次数最少的子任务集合,或者,从执行文件中的不同批尺寸的子任务中选择包含最大子任务的子任务集合。
8.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储计算机程序;
所述处理器,用于执行所述存储器中的计算机程序,以执行如权利要求1-5中任一项所述的方法。
9.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,所述计算机程序被处理器运行时,执行权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310665909.8A CN116382880B (zh) | 2023-06-07 | 2023-06-07 | 任务执行方法、装置、处理器、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310665909.8A CN116382880B (zh) | 2023-06-07 | 2023-06-07 | 任务执行方法、装置、处理器、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116382880A CN116382880A (zh) | 2023-07-04 |
CN116382880B true CN116382880B (zh) | 2023-08-11 |
Family
ID=86979175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310665909.8A Active CN116382880B (zh) | 2023-06-07 | 2023-06-07 | 任务执行方法、装置、处理器、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116382880B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076092B (zh) * | 2023-10-13 | 2024-01-19 | 成都登临科技有限公司 | 多维数据任务的处理方法、装置、电子设备及存储介质 |
CN117093352B (zh) * | 2023-10-13 | 2024-01-09 | 之江实验室 | 基于模板的计算集群作业调度系统及方法、装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304866B1 (en) * | 1997-06-27 | 2001-10-16 | International Business Machines Corporation | Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads |
US10417043B1 (en) * | 2017-07-06 | 2019-09-17 | Binaris Inc | Systems and methods for executing tasks adaptively |
CN110866167A (zh) * | 2019-11-14 | 2020-03-06 | 北京知道创宇信息技术股份有限公司 | 任务分配方法、装置、服务器和存储介质 |
CN111142938A (zh) * | 2019-11-20 | 2020-05-12 | 深圳先进技术研究院 | 一种异构芯片的任务处理方法、任务处理装置及电子设备 |
CN111488205A (zh) * | 2019-01-25 | 2020-08-04 | 上海登临科技有限公司 | 面向异构硬件架构的调度方法和调度系统 |
CN113672307A (zh) * | 2021-07-06 | 2021-11-19 | 浙江大华技术股份有限公司 | 数据处理方法、电子设备和计算机可读存储介质 |
WO2021244045A1 (zh) * | 2020-05-30 | 2021-12-09 | 华为技术有限公司 | 一种神经网络的数据处理方法及装置 |
CN113918233A (zh) * | 2021-09-13 | 2022-01-11 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
WO2022166851A1 (zh) * | 2021-02-07 | 2022-08-11 | 合肥本源量子计算科技有限责任公司 | 量子计算机操作系统、量子计算机及可读存储介质 |
CN115576699A (zh) * | 2022-11-25 | 2023-01-06 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
EP4170498A2 (en) * | 2022-03-10 | 2023-04-26 | Beijing Baidu Netcom Science Technology Co., Ltd. | Federated learning method and apparatus, device and medium |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9411658B2 (en) * | 2013-02-21 | 2016-08-09 | Vmware, Inc. | Token-based adaptive task management for virtual machines |
US11243816B2 (en) * | 2014-03-30 | 2022-02-08 | UniversiteitGent | Program execution on heterogeneous platform |
-
2023
- 2023-06-07 CN CN202310665909.8A patent/CN116382880B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6304866B1 (en) * | 1997-06-27 | 2001-10-16 | International Business Machines Corporation | Aggregate job performance in a multiprocessing system by incremental and on-demand task allocation among multiple concurrently operating threads |
US10417043B1 (en) * | 2017-07-06 | 2019-09-17 | Binaris Inc | Systems and methods for executing tasks adaptively |
CN111488205A (zh) * | 2019-01-25 | 2020-08-04 | 上海登临科技有限公司 | 面向异构硬件架构的调度方法和调度系统 |
CN110866167A (zh) * | 2019-11-14 | 2020-03-06 | 北京知道创宇信息技术股份有限公司 | 任务分配方法、装置、服务器和存储介质 |
CN111142938A (zh) * | 2019-11-20 | 2020-05-12 | 深圳先进技术研究院 | 一种异构芯片的任务处理方法、任务处理装置及电子设备 |
WO2021244045A1 (zh) * | 2020-05-30 | 2021-12-09 | 华为技术有限公司 | 一种神经网络的数据处理方法及装置 |
WO2022166851A1 (zh) * | 2021-02-07 | 2022-08-11 | 合肥本源量子计算科技有限责任公司 | 量子计算机操作系统、量子计算机及可读存储介质 |
CN113672307A (zh) * | 2021-07-06 | 2021-11-19 | 浙江大华技术股份有限公司 | 数据处理方法、电子设备和计算机可读存储介质 |
CN113918233A (zh) * | 2021-09-13 | 2022-01-11 | 山东产研鲲云人工智能研究院有限公司 | 一种ai芯片控制方法、电子设备及ai芯片 |
EP4170498A2 (en) * | 2022-03-10 | 2023-04-26 | Beijing Baidu Netcom Science Technology Co., Ltd. | Federated learning method and apparatus, device and medium |
CN115576699A (zh) * | 2022-11-25 | 2023-01-06 | 成都登临科技有限公司 | 数据处理方法、装置、ai芯片、电子设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
基于深度强化学习的计算卸载和缓存策略研究;丁可可;《中国优秀硕士学位论文全文数据库 信息科技辑》(第1期);I136-1398 * |
Also Published As
Publication number | Publication date |
---|---|
CN116382880A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116382880B (zh) | 任务执行方法、装置、处理器、电子设备及存储介质 | |
CN111897639B (zh) | 图像增广方法、装置、计算机设备及存储介质 | |
US20200342322A1 (en) | Method and device for training data, storage medium, and electronic device | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
CN111488205B (zh) | 面向异构硬件架构的调度方法和调度系统 | |
US11003429B1 (en) | Compile-time scheduling | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
WO2017206852A1 (zh) | 处理器计算资源的分配方法、装置及终端 | |
CN112162854A (zh) | 一种cpu-gpu间计算任务调度方法、系统及介质 | |
US20210158131A1 (en) | Hierarchical partitioning of operators | |
US11175919B1 (en) | Synchronization of concurrent computation engines | |
US9105208B2 (en) | Method and apparatus for graphic processing using multi-threading | |
CN116431315B (zh) | 批处理任务的处理方法、装置、电子设备及存储介质 | |
CN111598768B (zh) | 图像优化处理方法、装置、计算机设备及存储介质 | |
US10353591B2 (en) | Fused shader programs | |
US10922146B1 (en) | Synchronization of concurrent computation engines | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN111338803A (zh) | 一种线程处理方法和装置 | |
CN115775199A (zh) | 数据处理方法和装置、电子设备和计算机可读存储介质 | |
WO2022252091A1 (zh) | 一种计算模型的处理方法及装置 | |
US20220309606A1 (en) | Dynamically reconfigurable register file | |
US20120137300A1 (en) | Information Processor and Information Processing Method | |
CN111475998B (zh) | 延迟获取远程资源的电子设计自动化(eda)过程的混合执行 | |
CN113918290A (zh) | 一种api调用方法以及装置 | |
CN114546630A (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 |