CN116431315B - 批处理任务的处理方法、装置、电子设备及存储介质 - Google Patents

批处理任务的处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116431315B
CN116431315B CN202310665911.5A CN202310665911A CN116431315B CN 116431315 B CN116431315 B CN 116431315B CN 202310665911 A CN202310665911 A CN 202310665911A CN 116431315 B CN116431315 B CN 116431315B
Authority
CN
China
Prior art keywords
subtask
task
batch
list
access address
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
Application number
CN202310665911.5A
Other languages
English (en)
Other versions
CN116431315A (zh
Inventor
杨媛静
刘军
王鸥
段茗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Denglin Technology Co ltd
Original Assignee
Chengdu Denglin Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Denglin Technology Co ltd filed Critical Chengdu Denglin Technology Co ltd
Priority to CN202310665911.5A priority Critical patent/CN116431315B/zh
Publication of CN116431315A publication Critical patent/CN116431315A/zh
Application granted granted Critical
Publication of CN116431315B publication Critical patent/CN116431315B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种批处理任务的处理方法、装置、电子设备及存储介质,属于人工智能技术领域。方法包括:获取待执行总任务对应的子任务列表;子任务列表包括多个子任务,多个子任务的任务量之和与待执行总任务的任务量一致,不同子任务对应不同的批尺寸;从批维度确定子任务列表中每个子任务的基坐标和相对坐标,并根据基坐标和相对坐标确定该子任务中指令的访问地址;将子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,从访问地址处获取对应的数据来完成对应的子任务。该方法可改善AI计算任务的处理效率,且可避免因利用多个子任务来组合执行总任务量出错。

Description

批处理任务的处理方法、装置、电子设备及存储介质
技术领域
本申请属于人工智能技术领域,具体涉及一种批处理任务的处理方法、装置、电子设备及存储介质。
背景技术
通常AI(Artificial Intelligence,人工智能)网络中的执行batch(批处理任务)和编译batch的尺寸是不同的。在编译的时候会提供一个最大批处理任务量的尺寸maxbatch,编译器会基于该max batch,针对不同batch尺寸编译生成包含不同batch尺寸任务量的执行文件。在真正执行的时候,用户会通过上传尺寸小于等于max batch的执行batch来运行AI网络。为了在用户传入小于等于max batch的执行batch后,能够从编译器生成的执行文件中找到batch尺寸与该执行batch尺寸相同的任务量,一般在前期编译的时候,需要根据max batch依次生成包含各种batch尺寸(1batch~max batch)任务量的执行文件,例如,假设max batch为5batch,则需要生成包含1batch任务量、2batch任务量、3batch任务量、4batch任务量、5batch任务量的执行文件。这种方式,会导致编译耗时长,并且,如果maxbatch的值很大,那么在编译期需要基于max batch生成的任务量种类就更多,会导致需要编译生成非常大的执行文件,例如,若max batch为2000 batch,则需要生成包含2000个不同batch尺寸任务量的执行文件,可能导致磁盘无法存储空间占用量过大的执行文件。
发明内容
鉴于此,本申请的目的在于提供一种批处理任务的处理方法、装置、电子设备及存储介质,以改善当前执行AI网络对应的计算任务所存在的处理效率低以及所需存储空间大的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种批处理任务的处理方法,包括:获取待执行总任务对应的子任务列表;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务。
本申请实施例中,利用多个子任务来拼凑成总任务,使得在前期编译的时候,无需生成包含各种batch尺寸任务量的执行文件,而是可以仅生成包含指定batch尺寸任务量的执行文件,从而可以极大提高处理器的运行效率,同时,由于生成的执行文件减少,也可以节约很大的存储空间。同时,在获取到待执行总任务对应的子任务列表后,还通过从批维度确定子任务列表中每个子任务中指令的访问地址(即,确定完成子任务列表中每个子任务所需的batch数据在完成该待执行总任务所需的所有batch数据中的绝对坐标),以便从访问地址处获取对应的批处理任务数据来完成对应的子任务,这样,便可确保利用多个子任务来执行总任务量而不会出错。
结合第一方面实施例的一种可能的实施方式,从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址,包括:按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标,所述预设策略包括用于确定所述子任务列表中各个子任务中指令的基坐标以及相对坐标的计算公式;针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
本申请实施例中,根据预设策略包含的计算公式来确定子任务列表中每个子任务中指令的基坐标以及相对坐标,再以此来确定访问地址,例如,访问地址=基坐标+相对坐标,这样可以快速确定每个子任务中指令的访问地址,增加了方案的灵活性。
结合第一方面实施例的一种可能的实施方式,所述预设策略还包括:执行所述子任务列表的硬件设备的数量以及执行策略,不同的执行策略对应的基坐标以及相对坐标的计算公式不同。
本申请实施例中,可以通过设置硬件设备的数量,来实现是由一个硬件设备来执行子任务列表,还是由多个硬件设备并行执行子任务列表,同时,可以通过更改执行策略来选择不同的执行方式,而不同的执行方式对应不同的计算公式,增加了方案的灵活性。
结合第一方面实施例的一种可能的实施方式,若所述硬件设备的数量为一个,所述基坐标以及相对坐标的计算公式如下:
其中,该Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号。
本申请实施例中,采用上述的计算公式便可快速、准确的确定出由一个硬件设备来执行子任务列表中的各子任务时,该子任务列表中每个子任务中指令的访问地址,以保证利用多个子任务来执行总任务量而不会出错。
结合第一方面实施例的一种可能的实施方式,若所述硬件设备的数量为m,m为大于等于2的整数,所述执行策略要求每个硬件设备多次访问的访问地址是连续的;所述基坐标以及相对坐标的计算公式如下:
其中,Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号,avgbatch为每个硬件设备所需执行的所有子任务的批尺寸,idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
本申请实施例中,采用上述计算公式快速、准确的确定出由多个硬件设备来执行子任务列表中每个子任务中时,每个子任务中指令的访问地址,同时,可以保证每个硬件设备多次访问的访问地址是连续的,有利于提高访问效率以及存储效率,还可以使各个硬件设备的性能均衡。
结合第一方面实施例的一种可能的实施方式,若所述硬件设备的数量为m,m为大于等于2的整数,所述执行策略要求一次访问中各个硬件设备之间的访问地址是连续的;所述基坐标以及相对坐标的计算公式如下:
;其中,Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务的已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号;idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
本申请实施例中,采用上述计算公式快速、准确的确定出由多个硬件设备来执行子任务列表中每个子任务中时,每个子任务中指令的访问地址,同时,可以保证一次访问中各个硬件设备之间的访问地址是连续的,从而使得各个硬件设备执行的任务量可以不均衡,这种方式可以支持无需在前期对总任务进行向上调整,从而可以减少执行数据总量,此外,也不会需要处理因向上调整而额外多出的任务量。
第一方面实施例的一种可能的实施方式,所述待执行总任务为原始任务或向上调整后的原始任务;其中,若原始任务被多个硬件设备执行,且原始任务不能被均分给每个硬件设备,向上调整所述原始任务的大小,以使调整后的原始任务被均分给每个硬件设备。
本申请实施例中,若原始任务被多个硬件设备执行,且原始任务不能被均分给每个硬件设备,通过向上调整原始任务的大小,以使调整后的原始任务被均分给每个硬件设备,这样使得每个硬件设备需要执行的计算任务相同,从而能够充分利用硬件设备的硬件资源,同时,使得各个硬件设备执行任务所需的时间一致,便于同步控制。
第二方面,本申请实施例还提供了一种批处理任务的处理装置,包括:获取模块、处理模块以及发送模块;获取模块,用于获取待执行总任务对应的子任务列表;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;处理模块,用于从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;发送模块,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务。
第四方面,本申请实施例还提供了一种处理器,包括:内核以及收发器;内核,用于获取待执行总任务对应的子任务列表,并从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;收发器,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务。
第四方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第五方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请实施例提供的技术方案可包括以下有益效果:
有利于缩短前期编译时间,降低执行文件所需占用的存储空间,且,可以在基于执行文件选取一部分子任务来组成子任务列表从而完成待执行总任务的情况下,确定完成子任务列表中每个子任务所需的batch数据在完成该待执行总任务所需的batch数据中的绝对坐标,以便从对应的访问地址处获取对应的批处理任务数据来完成对应的子任务,这样,便可确保利用多个子任务来执行总任务量而不会出错。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种批处理任务的处理方法的流程示意图。
图2示出了本申请实施例提供的又一种批处理任务的处理方法的流程示意图。
图3示出了本申请实施例提供的一种批处理任务的处理装置的模块框图。
图4示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来区分描述,而不一定要求或者暗示存在任何这种实际的关系或者顺序。再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
目前在编译AI网络的时候,需要根据max batch依次生成包含各种batch尺寸(1batch ~max batch)任务量的执行文件,以便在执行AI网络对应的计算任务时,能够从编译器生成的执行文件中找到batch尺寸与执行batch(即实际需求执行的总任务量)尺寸匹配的任务量(tile),从而导致编译时间大大增加以及执行文件非常大,使得处理效率低,以及可能导致磁盘无法存储如此大的执行文件的问题。
因此,本申请实施例提供了一种批处理任务的处理方法、装置、处理器、电子设备及存储介质,用于改善当前执行AI网络对应的计算任务所存在的处理效率低以及编译生成的执行文件所需存储空间大的问题,本申请实施例中,在执行AI网络对应的计算任务时,不再从编译器生成的执行文件中直接找到batch尺寸与执行batch尺寸完全相同的任务量(tile)来执行,而是通过选择不同批尺寸的子任务(tile)来组成总任务,从而使得允许在前期编译的时候,无需根据max batch依次生成包含各种batch尺寸任务量的执行文件,而是可以仅生成包含指定batch尺寸任务量的执行文件。基于本申请的原理,假设max batch为50batch,在编译时可以仅生成包含指定batch尺寸任务量的执行文件,例如,生成包含1batch子任务量的执行文件,生成包含2batch子任务量的执行文件,生成包含4batch子任务量的执行文件、生成包含10batch子任务量的执行文件等,而无需依次生成包含1batch~50batch范围内的共50种子任务量的执行文件。这样,在执行AI网络对应的计算任务时,可以根据待执行总任务(可以由用户上传待执行总任务)来获取与总任务量对应的子任务列表,该子任务列表包括多个子任务,这多个子任务的任务量之和与待执行总任务的任务量一致。也即,在执行AI网络对应的计算任务时,不论用户实际上传指定的执行batch有多大,都可以通过选择执行文件中的不同批尺寸的子任务,来组成用户所需的总任务量,并将用于拼凑出总任务量的各子任务所对应的指令,分发给AI芯片中的硬件设备执行。其中,不同子任务对应不同的任务量,也即不同子任务对应的批处理任务大小不同,每个子任务的大小表示这个子任务有多少个batch的任务量。
通常情况下,AI网络在处理总任务对应的待处理数据集时,是分批进行处理的(如分批训练或分批推理),因此,在AI领域通常以批处理任务(batch)的大小来描述任务量。批处理任务的大小称为batch size,有时也称为批尺寸。batch size也是机器学习常用的一个参数,表示训练过程中用来训练AI网络的样本数量,在训练模型时,通常会将训练数据集分成多个批次的训练数据,一个批次要处理的样本数据例如可以是一次性要处理的图像数量。AI网络所处理的数据是存在维度属性的,例如存在batch维度。维度也称为轴,例如AI网络通常会处理张量(Tensor)数据,在只有一个维度的张量数据进行分批处理时,分批处理过程中只有一个轴,可能为batch轴,例如用于表示图像张数的轴。
一些应用场景下,可能会通过AI网络处理各种各样的任务数据(例如待处理的二维图片、三维图片、视频、文本等任务数据)。编译器会将AI网络或子网中的各类操作编译成可供驱动器调用的若干个小模板(即,执行文件中可供选择的不同任务量的子任务),每个模板对应一个批尺寸不同的数据形状,在正式运行AI网络时,驱动器根据实际要处理的图片或视频的大小(即,用户提供或指定的总任务量),从编译出来的若干个模板中选取合适的模板来拼凑出实际需要处理的数据量(对应得到子任务列表),在每次将模板(即含有指令的子任务)发送给硬件执行前,配置好此次执行的坐标(用于描述子任务对应的待处理数据所在的位置、访问地址),硬件设备得到模板中的计算指令后,可对收到或确定位置的数据(例如图像、视频等)进行计算处理,并通过驱动器将计算处理结果提供给用户。其中,对于任务模板的划分,若以一张图作为切分粒度,不对一张完整的图再做切分,则只需考虑用于表示图像张数的这个维度的因素。
由于AI网络执行任务是按批进行的,至少为1batch,因此,在执行数据处理任务的时候,需要从batch维度(也可称为批维度、批尺寸维度或批处理任务维度)根据选择的子任务量来达到执行总任务量的任务,为了确保在利用多个子任务来组成总任务后,仍然能够准确将总任务执行完,在获取到待执行总任务对应的子任务列表后,还从批维度确定子任务列表中每个子任务中指令的访问地址,即确定完成子任务列表中每个子任务所需的batch数据在完成待执行总任务所需的所有batch数据中的绝对坐标,从而将子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的batch数据来完成对应的子任务(例如硬件设备根据携带有访问地址的指令直接或间接获取batch数据进行计算,实现对相应数量的图像数据进行处理)。这样,便可实现对于子任务列表中各个子任务的执行调度,确保利用多个子任务来执行总任务量而不会出错。
为了便于理解本申请实施例提供的方案,下面将结合图1,对本申请实施例提供的批处理任务的处理方法进行说明。本申请实施例提供的一种批处理任务的处理方法,可以应用于需要运行AI网络进行数据处理的场景,可以应用于处理器,该处理器可以是同构的处理器,也可以是异构的处理器。该处理器可以是任何常规的处理器,比如可以是中央处理器。
S1:获取待执行总任务对应的子任务列表。
可以从事先生成的执行文件中的不同批尺寸的子任务中选择所需的子任务来得到待执行总任务对应的子任务列表,子任务列表包括多个子任务,这多个子任务的任务量之和与待执行总任务的任务量一致,且不同子任务对应不同的批尺寸。
例如,假设待执行总任务为12batch,完成这12batch任务所需的访问数据对应的访问地址记为batch0~batch11。一些应用场景下,该总任务可由tile1和tile2两种子任务组成,其中,tile1的任务量为2batch,tile2的任务量为1batch,每种子任务需要执行4次,对应的子任务列表如表1所示,表1中的batch0~batch11可视为绝对坐标。
表1
其中,待执行总任务可以由AI芯片中的一个硬件设备执行,也可以由AI芯片中多个硬件设备同时执行,以提高执行效率。例如,上述的表1中的子任务如果由1个硬件设备来执行,则需要执行8次(执行4次tile1和执行4次tile2)。如果由4个硬件设备并行执行,则仅需要执行2次(一次执行tile1,一次执行tile2)。
执行计算任务的硬件设备的数量可以由人工进行配置,例如,可以根据待执行总任务的任务量来确定需要运行网络模型的硬件设备的数量,在待执行的总任务量少的情况下,调用一个硬件设备可能就足以满足需求,在总任务量多的情况下,可能需要多个硬件设备并行运行。
当待执行总任务被多个硬件设备执行时,这多个硬件设备执行的任务量可以相同,也可以不同,例如,假设待执行总任务为31batch,被4个硬件设备执行时,可以是其中3个硬件设备各自执行8 batch的任务量,其中一个硬件设备执行7batch的任务量。
其中,待执行总任务为原始任务或向上调整后的原始任务,若原始任务被多个硬件设备执行,且原始任务不能被均分给每个硬件设备,可以根据硬件设备的数量,向上调整原始任务的大小,以使调整后的原始任务被均分给每个硬件设备。例如,原始任务为31batch,由4个硬件设备执行,由于不能被均分给每个硬件设备,可以将31batch的原始任务向上调整为32batch的原始任务,以使每个硬件设备所需执行的任务量都为8batch。
可以理解的是,是否向上调整总任务的大小,需要考虑诸如调整后能否提高执行效率等因素,如果调整后能够带来正收益,则可以考虑向上调整总任务的大小。例如,调整后,可以使各个硬件设备的性能均衡,和/或,减少硬件设备执行次数等正收益,则可以向上调整总任务的大小。
若执行文件中可供选择的用于组成总任务的子任务的尺寸分别是4 batch的子任务(tile0)、2 batch的子任务(tile1)、1 batch的子任务(tile2)。在将上述的31batch的总任务,分给4个硬件设备执行的情况下,如果不将31batch的总任务向上调整为32batch的总任务,此时,总任务便无法均分给每个硬件设备,例如,其中3个硬件设备各自分得8batch的计算任务,其中1个硬件设备分得7batch的计算任务。对于8batch的计算任务,可以选择2个4 batch 的tile0来组成,此时硬件设备的最小启动次数为2次,而对于7batch的计算任务,即便选择1个4batch的tile0+1个2batch的tile1+1batch的tile2,此时硬件设备的最小启动次数也为3次。可以看出,向上调整总任务的大小后,能够带来正收益,比如能够减少硬件设备的启动次数。
其中,在编译AI网络时,会将AI网络中包含的各种操作(如卷积运算、池化运算、激活、归一化、分类处理等操作)编译成目标硬件设备能够执行的各种执行文件,执行文件中包含多个指定批尺寸的子任务(tile),每个子任务中均包含用于完成该子任务所需的各种指令。AI网络被编译后,得到的执行文件中的子任务(的指令)可以在需要运行该执行文件对应的网络模型时,被提供给对应的硬件设备执行。其中,执行文件(executable)包含计算任务,而计算任务中包含计算所需的各种指令,这些指令能够被AI芯片中对应的硬件设备执行,从而完成对应的计算任务。AI芯片可以是为了承担繁重的计算任务而设计的专用的计算加速芯片(或称加速器),如,图形处理器(Graphic Processing Unit,GPU)、张量处理器(Tensor Processing Unit,TPU)等,当然,也可以是其他面向AI计算任务的处理器。
可选的,一个AI芯片可以包含多个硬件设备,AI芯片中能够用于执行子任务列表对应的计算任务的硬件设备可称为目标计算设备。可选的,一个硬件设备可以包含多种硬件执行单元, AI芯片中的一个硬件设备也可以视为含有多个硬件执行单元的计算集群。不同类型的硬件设备所包含的硬件执行单元的数量可以不同,且种类也可以不同。
S2:从批维度确定所述子任务列表中每个子任务中指令的访问地址。
在获取到待执行总任务对应的子任务列表后,可以从批维度确定子任务列表中每个子任务中指令的访问地址,以便于准确从访问地址处获取对应的批处理任务数据来完成对应的子任务。
可选地,S2的实现过程可以是:从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址,例如,可按照预设策略从批维度确定子任务列表中每个子任务中指令的基坐标以及相对坐标,针对子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。例如,访问地址=基坐标+相对坐标。
预设策略为事先制定的策略,可以包括:用于确定子任务列表中各个子任务中指令的基坐标以及相对坐标的计算公式。此外,还可以包括执行子任务列表的硬件设备的数量以及对应的执行策略,不同的执行策略对应的基坐标以及相对坐标的计算公式不同,从而对应不同的执行方式。
可以理解的是,在一些实施方式中,预设策略也可以不包括执行子任务列表的硬件设备的数量以及对应的执行策略,因此,不能将其理解成对预设策略的唯一限制。通过增设硬件设备的数量以及对应的执行策略这2个参数,使得方案更灵活,可以通过设置硬件设备的数量来选择是由几个硬件设备来执行子任务列表,通过设置执行策略来选择不同的执行方式。
其中,执行子任务列表中子任务的硬件设备的数量不同,对应的执行策略可以不同,例如,若执行子任务列表中子任务的硬件设备为一个,则对应的基坐标以及相对坐标的计算公式可如下:
其中,该Ai表示子任务列表中的第i种子任务的批尺寸,Bi表示第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号,最大取值为子任务列表中子任务的种类数。
为了更好的理解,下面结合表1进行说明。表1的子任务列表共涉及2种子任务(tile1和tile2)。对于tile1来说,其在子任务列表中的种类编号为1,对应的基坐标为初始值,例如为batch0。对于tile2来说,其在子任务列表中的种类编号为2,由于tile1的批尺寸为2,且在执行到tile2时,tile1已被执行了4次,因此,tile2对应的基坐标为batch0(初始值)+batch8=batch8。
第1次执行2batch的tile1(表1中的第1个tile1)时,此时,tile1对应的基坐标为batch0,Ai为2,Bi为0,对应的相对坐标为2*0=batch0,因此,对应的访问地址为batch0(基坐标)+batch0(相对坐标)=batch0,由于tile1的尺寸为2batch,所以此次执行的是batch0~batch1。
第2次执行2batch的tile1(表1中的第2个tile1)时,此时,tile1对应的基坐标为batch0,Ai为2,Bi为1,对应的相对坐标为2*1=batch2,因此,对应的访问地址为batch0+batch2=batch2,由于tile1的尺寸为2batch,所以此次执行的是batch2~batch3。
第3次执行2batch的tile1(表1中的第3个tile1)时,此时,tile1对应的基坐标为batch0,Ai为2,Bi为2,对应的相对坐标为2*2=batch4,因此,对应的访问地址为batch0+batch4=batch4,由于tile1的尺寸为2batch,所以此次执行的是batch4~batch5。
第4次执行2batch的tile1(表1中的第4个tile1)时,此时,tile1对应的基坐标为batch0,Ai为2,Bi为3,对应的相对坐标为2*3=batch6,因此,对应的访问地址为batch0+batch6=batch6,由于tile1的尺寸为2batch,所以此次执行的是batch6~batch7。
至此,表1中的4个tlie1的访问坐标均已确定完毕。接着确定tile2的访问坐标。
第1次执行1batch的tile2(表1中的第1个tile2)时,此时,tile2对应的基坐标为batch8,Ai为1,Bi为0,对应的相对坐标为batch0,因此,对应的访问地址为batch8+batch0=batch8,由于tile2的尺寸为1batch,所以此次执行的是batch8。
第2次执行1batch的tile2(表1中的第2个tile2)时,此时,tile2对应的基坐标为batch8,Ai为1,Bi为1,对应的相对坐标为batch1,因此,对应的访问地址为batch8+batch1=batch9,由于tile2的尺寸为1batch,所以此次执行的是batch9。
第3次执行1batch的tile2(表1中的第2个tile2)时,此时,tile2对应的基坐标为batch8,Ai为1,Bi为2,对应的相对坐标为batch2,因此,对应的访问地址为batch8+batch2=batch10,由于tile2的尺寸为1batch,所以此次执行的是batch10。
第4次执行1batch的tile2(表1中的第2个tile2)时,此时,tile2对应的基坐标为batch8,Ai为1,Bi为3,对应的相对坐标为batch3,因此,对应的访问地址为batch8+batch3=batch11,由于tile2的尺寸为1batch,所以此次执行的是batch11。
至此,表1中的4个tlie1、tlie2的访问坐标均已确定完毕。依次按照上述的访问坐标去获取对应的数据便可执行完对应的子任务,从而便可执行完对应的总任务。
上述仅为利用一个硬件设备来执行子任务列表中的各子任务的情形。若执行子任务列表中的子任务的硬件设备的数量为m个,m为大于等于2的整数。则对应的执行策略可以是以下两种中的任一种:其中一种执行策略要求每个硬件设备多次访问的访问地址是连续的(简称为纵向连续),另一种执行策略要求一次访问中各个硬件设备之间的访问地址是连续的(简称为横向连续)。
为了更好的理解,还是以上述表1为例,假设执行表1中的子任务的硬件设备为4个,分别记为硬件设备0、硬件设备1、硬件设备2、硬件设备3。此时,只需要在不同的硬件设备上各执行一次2batch的tile1,以及在不同的硬件设备上各执行一次1batch的tile2即可。其中,各个硬件设备执行子任务的关系可以如表2或表3所示。
表2
对于表2来说,每个硬件设备多次访问的访问地址是连续的,即纵向连续,例如对于硬件设备0,可以看到该硬件设备两次访问的子任务的访问地址均是连续的,如对于硬件设备0来说,其访问地址是从batch0~batch2。
表3
对于表3来说,一次访问中各个硬件设备之间的访问地址是连续的,即横向连续。
对于纵向连续来说,对应的基坐标以及相对坐标的计算公式如下:
其中,Ai表示子任务列表中的第i种子任务的批尺寸,Bi表示第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号,avgbatch为每个硬件设备所执行的所有子任务的批尺寸,即avgbatch表示将子任务列表中的子任务均分给m个硬件设备执行时,每个硬件设备所分子任务的批尺寸,idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
为了更好的理解,下面结合表1的子任务列表以及表2所示的任务执行关系进行说明。对于表2来说,子任务列表共涉及2种子任务(tile1和tile2)。每个硬件设备都会执行3batch的任务量,即avgbatch为3。对于tile1来说,其在子任务列表中的种类编号为1,对应的基坐标为初始值,例如为batch0。对于tile2来说,其在子任务列表中的种类编号为2,在执行到tile2时,2batch的tile1已被执行了1次,即,Ai为2,Bi为1,基于上述的基坐标公式,可以得出tile2对应的基坐标为batch0(初始值)+batch2=batch2。
对于硬件设备0(对应的idx为0)来说, tile1对应的基坐标为batch0,由于A1为2,B1为0,avgbatch为3,因此,tile1对应的相对坐标为2*0+3*0=batch0。因此,硬件设备0执行tile1对应的访问地址为batch0+batch0=batch0,由于tile1的尺寸为2batch,所以此次实际会执行的是batch0~batch1,即,让硬件设备0基于tile1的指令来访问处理batch0~batch1这两batch的数据。
基于此,硬件设备0执行tile2对应的基坐标为batch2,由于tile2的批尺寸为1,即A2为1,B2为0,avgbatch为3,因此,tile2对应的相对坐标为1*0+3*0=batch0。因此,硬件设备0执行tile2对应的访问地址为batch2(基坐标)+batch0(相对坐标)=batch2,由于tile1的尺寸为1batch,所以此次执行的是batch2的数据。
对于硬件设备1(对应的idx为1)来说,执行tile1对应的基坐标为batch0,因tile1的批尺寸为2,即A1为2,B1为0,avgbatch为3,因此,tile1对应的相对坐标为2*0+3*1=batch3。因此,硬件设备1执行tile1对应的访问地址为batch0+batch3=batch3,由于tile1的尺寸为2batch,所以此次执行的是batch3~batch4。
基于此,硬件设备1执行tile2对应的基坐标为batch2,由于tile2的批尺寸为1,即A2为1,B2为0, avgbatch为3,因此,tile2对应的相对坐标为1*0+3*1=batch3。因此,硬件设备1执行tile2对应的访问地址为batch2+batch3=batch5,由于tile1的尺寸为1batch,所以此次执行的是batch5。
同理,对于硬件设备2(对应的idx为2)来说,执行tile1对应的基坐标为batch0,因tile1的批尺寸为2,即A1为2,B1为0,avgbatch为3,因此,tile1对应的相对坐标为2*0+3*2=batch6。因此,硬件设备2执行tile1对应的访问地址为batch0+batch6=batch6,由于tile1的尺寸为2batch,所以此次执行的是batch6~batch7。
基于此,硬件设备2执行tile2对应的基坐标为batch2,由于tile2的批尺寸为1,即A2为2,B2为0,对应的idx为2,avgbatch为3,因此,tile2对应的相对坐标为1*0+3*2=batch6。因此,硬件设备2执行tile2对应的访问地址为batch2+batch6=batch8,由于tile1的尺寸为1batch,所以此次执行的是batch8。
同理,对于硬件设备3(对应的idx为3)来说,执行tile1对应的基坐标为batch0,因tile1的批尺寸为2,即A1为2,B1为0,avgbatch为3,因此,tile1对应的相对坐标为2*0+3*3=batch9。因此,硬件设备3执行tile1对应的访问地址为batch0+batch9=batch9,由于tile1的尺寸为2batch,所以此次执行的是batch9~batch10。
基于此,硬件设备3执行tile2对应的基坐标为batch2,由于tile2的批尺寸为1,即A2为2,B2为0,对应的idx为3,avgbatch为3,因此,tile2对应的相对坐标为1*0+3*3=batch9。因此,硬件设备3执行tile2对应的访问地址为batch2+batch9=batch11,由于tile1的尺寸为1batch,所以此次执行的是batch11。
可以理解的是,对于纵向连续来说,需要各个硬件设备所执行的任务量一致,如果原始总任务不能被各个硬件设备均分,则需要向上调整原始总任务,以便每个硬件设备所执行的任务量一致。该种实施方式下,由于硬件设备多次访问的访问地址是连续的,这样不仅有利于提高访问效率,而且还可以提高存储效率,使得在存储每个硬件设备所需访问的子任务数据时,可以集中存储。
对于横向连续来说,对应的基坐标以及相对坐标的计算公式如下:
其中,该Ai表示子任务列表中的第i种子任务的批尺寸,Bi表示第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号,idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
为了更好的理解,下面结合表3进行说明。对于表3来说,共涉及2种子任务(tile1和tile2)。对于tile1来说,对应的基坐标为初始值,例如为batch0。对于tile2来说,在执行到tile2时,tile1已被执行了1次,即Bi为1,由于tile1的尺寸为2batch,即Ai为2,基于上述的基坐标公式,可以得出tile2对应的基坐标为0+2*1*4=batch8。
对于硬件设备0(对应的idx为0)来说,执行tile1对应的基坐标为batch0,由于tile1的批尺寸为2,即A1为2,B1为0,对应的idx为0,因此,tile1对应的相对坐标为2*(4*0+0)=batch0。因此,硬件设备0执行tile1对应的访问地址为batch0+batch0=batch0,由于tile1的尺寸为2batch,所以此次执行的是batch0~batch1。
硬件设备0执行tile2对应的基坐标为batch8,由于tile2的批尺寸为1,即A2为1,B2为0,因此,tile2对应的相对坐标为1*(4*0+0)=batch0。因此,硬件设备0执行tile2对应的访问地址为batch8+batch0=batch8,由于tile1的尺寸为1batch,所以此次执行的是batch8。
对于硬件设备1来说,执行tile1对应的基坐标为batch0,由于tile1的批尺寸为2,A1为2,B1为0,对应的idx为1,因此,tile1的相对坐标为2*(4*0+1)=batch2。因此,硬件设备1执行tile1对应的访问地址为batch0+batch2=batch2,由于tile1的尺寸为2batch,所以此次执行的是batch2~batch3。
硬件设备1执行tile2对应的基坐标为batch8,由于tile2的批尺寸为1,A2为1,B2为0,对应的idx为1,因此,tile2的相对坐标为1*(4*0+1)=batch1。因此,硬件设备1执行tile2对应的访问地址为batch8+batch1=batch9,由于tile1的尺寸为1batch,所以此次执行的是batch9。
对于硬件设备2来说,执行tile1对应的基坐标为batch0,由于tile1的批尺寸为2,即A1为2,B1为0,对应的idx为2,因此,tile1的相对坐标为2*(4*0+2)=batch4。因此,硬件设备2执行tile1对应的访问地址为batch0+batch4=batch4,由于tile1的尺寸为2batch,所以此次执行的是batch4~batch5。
硬件设备2执行tile2对应的基坐标为batch8,由于tile2的批尺寸为1,即A2为1,B2为0,对应的idx为3,因此,tile2的相对坐标为1*(4*0+2)=batch2。因此,硬件设备2执行tile2对应的访问地址为batch8+batch2=batch10,由于tile1的尺寸为1batch,所以此次执行的是batch10。
对于硬件设备3来说,此时,tile1对应的基坐标为batch0,由于tile1的批尺寸为2,即A1为2,B1为0,对应的idx为3,因此,tile1的相对坐标为2*(4*0+3)=batch6。因此,硬件设备3执行tile1对应的访问地址为batch0+batch6=batch6,由于tile1的尺寸为2batch,所以此次执行的是batch6~batch7。
硬件设备3执行tile2对应的基坐标为batch8,由于tile2的批尺寸为1,即A2为1,B2为0,对应的idx为3,因此,tile2的相对坐标为1*(4*0+3)=batch3。因此,硬件设备3执行tile2对应的访问地址为batch8+batch3=batch11,由于tile1的尺寸为1batch,所以此次执行的是batch11。
可以理解的是,对于横向连续来说,可以不需要各个硬件设备所执行的任务量一致,如果原始总任务不能被各个硬件设备均分,可以不需要向上调整原始总任务以便每个硬件设备所执行的任务量一致。
为了更好的理解上述的横向连续以及纵向连续访问机制下对于基坐标以及相对坐标的计算公式,下面用一个2batch的子任务(如tile3)和3batch的子任务(如tile4)来完成任务量为112batch的总任务的例子进行示例。利用4个硬件设备执行2batch的tile3五次,执行3batch的tile4六次,便可将该总任务执行完。根据实际情况,可按表4或表5进行调度访问,表4以及表5中的batch0-batch111表示总任务量里面的绝对坐标,可作为获取批处理任务数据进行计算的访问地址依据。
表4
表4对应的执行策略为每个硬件设备多次访问的访问地址是连续的,即纵向连续访问。
表5
表5对应的执行策略为一次访问中各个硬件设备之间的访问地址是连续的,即横向连续访问。
S3:将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片。
在从批维度确定子任务列表中每个子任务中指令的访问地址后,便可将子任务列表中各个子任务包含的携带有访问地址的指令,分发给AI芯片,以使AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务,即从访问地址处获取对应的批处理(batch)任务数据来完成对应的子任务。
若子任务列表中各个子任务为根据向上调整后的总任务而确定,在S3之后,该方法还包括:控制AI芯片将对于子任务列表的执行结果,存储到临时缓存,并控制AI芯片从临时缓存中获取原始总任务大小的执行结果,存储到为原始总任务指定的缓存空间。
在该种实施方式下,由于向上调整总任务,会使调整后的总任务相对原始总任务变大,比如将31batch的总任务调整为32batch的总任务。这样就会额外多出用户并不知道的1 batch的计算任务,所以需要处理这部分额外的任务量。由于用户在分配缓存空间时,仅会为31batch总任务分配执行的缓存空间,但是任务在真正执行的时候会变成32batch,所以需要先将AI芯片的执行结果,存储到临时缓存,之后,再从临时缓存中获取原始总任务大小(如31batch)的执行结果,存储到为原始总任务(31batch)指定的缓存空间。
可以理解的是,如果没有调整总任务,则在存储AI芯片的执行结果时,直接将AI芯片的执行结果存储到为原始总任务指定的缓存空间。
为了更好的理解上述的批处理任务的处理方法,一种实施方式下,该方法的流程原理图如图2所示。可以理解的是,图2所示的仅为本申请实施例提供的众多实施例中的一种,因此,不能将图2所示的方法,理解为是对本申请的限制。
基于同样的发明构思,本申请实施例还提供了一种处理器,该处理器包括内核和收发器。
内核用于获取待执行总任务对应的子任务列表,并从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸。
收发器,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务。
可选地,内核用于按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标;针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
本申请实施例所提供的处理器,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,处理器实施例部分未提及之处,可参考前述方法实施例中相应内容。
基于同样的发明构思,本申请还提供了一种批处理任务的处理装置100,如图3所示。该批处理任务的处理装置100包括:获取模块110、处理模块120和发送模块130。
获取模块110,用于获取待执行总任务对应的子任务列表;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸。
处理模块120,用于从批维度确定所述子任务列表中每个子任务中指令的访问地址。具体的,处理模块120,用于从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址。
发送模块130,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务。
可选地,处理模块120,用于按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标;针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
本申请实施例所提供的批处理任务的处理装置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中存储的可执行模块,例如批处理任务的处理装置100包括的软件功能模块或计算机程序。例如,处理器240,用于获取待执行总任务对应的子任务列表;其中,子任务列表包括多个子任务,多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与待执行总任务的任务量一致,不同子任务对应不同的批尺寸;从批维度确定子任务列表中每个子任务中指令的访问地址;将子任务列表中各个子任务包含的携带有访问地址的指令分发给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 (10)

1.一种批处理任务的处理方法,其特征在于,包括:
获取待执行总任务对应的子任务列表;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;
从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;
将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务;
其中,从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址,包括:
按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标,所述预设策略包括用于确定所述子任务列表中各个子任务中指令的基坐标以及相对坐标的计算公式;
针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
2.根据权利要求1所述的方法,其特征在于,所述预设策略还包括:执行所述子任务列表的硬件设备的数量以及执行策略,不同的执行策略对应的基坐标以及相对坐标的计算公式不同。
3.根据权利要求2所述的方法,其特征在于,若所述硬件设备的数量为一个,所述基坐标以及相对坐标的计算公式如下:
其中,该Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号。
4.根据权利要求2所述的方法,其特征在于,若所述硬件设备的数量为m,m为大于等于2的整数,所述执行策略要求每个硬件设备多次访问的访问地址是连续的;所述基坐标以及相对坐标的计算公式如下:
其中,Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务已被执行的次数,n表示待确定访问地址的子任务在所述子任务列表中的种类编号,avgbatch为每个硬件设备所执行的所有子任务的批尺寸,idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
5.根据权利要求2所述的方法,其特征在于,若所述硬件设备的数量为m,m为大于等于2的整数,所述执行策略要求一次访问中各个硬件设备之间的访问地址是连续的;所述基坐标以及相对坐标的计算公式如下:
其中,Ai表示所述子任务列表中的第i种子任务的批尺寸,Bi表示所述第i种子任务的已被执行的次数;n表示待确定访问地址的子任务在所述子任务列表中的种类编号,idx表示当前准备执行待确定访问地址的子任务的硬件设备的编号x,x的取值为[0,m-1]。
6.根据权利要求1-5中任一项所述的方法,其特征在于,所述待执行总任务为原始任务或向上调整后的原始任务;其中,若原始任务被多个硬件设备执行,且原始任务不能被均分给每个硬件设备,向上调整所述原始任务的大小,以使调整后的原始任务被均分给每个硬件设备。
7.一种批处理任务的处理装置,其特征在于,包括:
获取模块,用于获取待执行总任务对应的子任务列表;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;
处理模块,用于从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;
发送模块,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务;
所述处理模块,用于按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标,所述预设策略包括用于确定所述子任务列表中各个子任务中指令的基坐标以及相对坐标的计算公式;针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
8.一种处理器,其特征在于,包括:
内核,用于获取待执行总任务对应的子任务列表,并从批维度确定所述子任务列表中每个子任务的基坐标和相对坐标,并根据所述基坐标和相对坐标确定该子任务中指令的访问地址;其中,所述子任务列表包括多个子任务,所述多个子任务是从执行文件中的不同批尺寸的子任务中选择得到的,且任务量之和与所述待执行总任务的任务量一致,不同子任务对应不同的批尺寸;
收发器,用于将所述子任务列表中各个子任务包含的携带有访问地址的指令分发给AI芯片,以使所述AI芯片中的硬件设备执行各个子任务包含的携带有访问地址的指令,并基于访问地址获取对应的批处理任务数据来完成对应的子任务;
其中,所述内核,用于按照预设策略从批维度确定所述子任务列表中每个子任务中指令的基坐标以及相对坐标,所述预设策略包括用于确定所述子任务列表中各个子任务中指令的基坐标以及相对坐标的计算公式;针对所述子任务列表中的每个子任务,根据该子任务中指令的基坐标以及相对坐标,确定该子任务中指令的访问地址。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-6中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-6中任一项所述的方法。
CN202310665911.5A 2023-06-07 2023-06-07 批处理任务的处理方法、装置、电子设备及存储介质 Active CN116431315B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310665911.5A CN116431315B (zh) 2023-06-07 2023-06-07 批处理任务的处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310665911.5A CN116431315B (zh) 2023-06-07 2023-06-07 批处理任务的处理方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116431315A CN116431315A (zh) 2023-07-14
CN116431315B true CN116431315B (zh) 2023-08-29

Family

ID=87089328

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310665911.5A Active CN116431315B (zh) 2023-06-07 2023-06-07 批处理任务的处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116431315B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117076092B (zh) * 2023-10-13 2024-01-19 成都登临科技有限公司 多维数据任务的处理方法、装置、电子设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196156A (ja) * 2001-12-28 2003-07-11 Fujitsu Ltd 情報処理装置および情報処理方法
CN101563674A (zh) * 2006-12-21 2009-10-21 国际商业机器公司 对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统
CN107643943A (zh) * 2016-07-20 2018-01-30 大唐移动通信设备有限公司 一种任务栈的管理方法及装置
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115379420A (zh) * 2021-05-21 2022-11-22 华为技术有限公司 用于执行感知任务的通信方法及通信装置
CN115576699A (zh) * 2022-11-25 2023-01-06 成都登临科技有限公司 数据处理方法、装置、ai芯片、电子设备及存储介质
CN116048742A (zh) * 2022-05-30 2023-05-02 荣耀终端有限公司 一种数据处理方法及电子设备
CN116126646A (zh) * 2023-04-13 2023-05-16 紫金诚征信有限公司 一种确定批量数据执行进度的方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11416733B2 (en) * 2018-11-19 2022-08-16 Google Llc Multi-task recurrent neural networks

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003196156A (ja) * 2001-12-28 2003-07-11 Fujitsu Ltd 情報処理装置および情報処理方法
CN101563674A (zh) * 2006-12-21 2009-10-21 国际商业机器公司 对来自多处理器系统上的多线程程序的存储器访问进行管理的方法和系统
CN107643943A (zh) * 2016-07-20 2018-01-30 大唐移动通信设备有限公司 一种任务栈的管理方法及装置
CN115379420A (zh) * 2021-05-21 2022-11-22 华为技术有限公司 用于执行感知任务的通信方法及通信装置
CN116048742A (zh) * 2022-05-30 2023-05-02 荣耀终端有限公司 一种数据处理方法及电子设备
CN114721726A (zh) * 2022-06-10 2022-07-08 成都登临科技有限公司 一种多线程组并行获取指令的方法、处理器及电子设备
CN115576699A (zh) * 2022-11-25 2023-01-06 成都登临科技有限公司 数据处理方法、装置、ai芯片、电子设备及存储介质
CN116126646A (zh) * 2023-04-13 2023-05-16 紫金诚征信有限公司 一种确定批量数据执行进度的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
设备部署方式对云制造中子任务调度的影响;李文翔 等;《计算机工程与设计》;第2857-2861页 *

Also Published As

Publication number Publication date
CN116431315A (zh) 2023-07-14

Similar Documents

Publication Publication Date Title
CN110262901B (zh) 一种数据处理方法及数据处理系统
CN111488205B (zh) 面向异构硬件架构的调度方法和调度系统
CN116431315B (zh) 批处理任务的处理方法、装置、电子设备及存储介质
CN116382880B (zh) 任务执行方法、装置、处理器、电子设备及存储介质
CN108021449B (zh) 一种协程实现方法、终端设备及存储介质
US20130219395A1 (en) Batch scheduler management of tasks
US9471387B2 (en) Scheduling in job execution
WO2015099562A1 (en) Methods and apparatus for data-parallel execution of operations on segmented arrays
CN112711478A (zh) 基于神经网络的任务处理方法、装置、服务器和存储介质
Abbasi et al. A preliminary study of incorporating GPUs in the Hadoop framework
CN116701001A (zh) 目标任务分配方法、装置、电子设备及存储介质
CN115775199A (zh) 数据处理方法和装置、电子设备和计算机可读存储介质
US20020156611A1 (en) Performance simulation process, and multiprocessor application production process, and devices for implementing said processes
CN112783651B (zh) 一种云平台vGPU负载均衡调度方法、介质及装置
CN112433847B (zh) 一种OpenCL内核提交的方法及装置
WO2022252091A1 (zh) 一种计算模型的处理方法及装置
WO2024055168A1 (zh) 一种资源分配方法、处理器和计算平台
CN115292053B (zh) 移动端cnn的cpu、gpu、npu统一调度方法
CN110543351A (zh) 数据处理方法以及计算机设备
US10630957B2 (en) Scalable distributed computation framework for data-intensive computer vision workloads
CN111858036B (zh) 基于FPGA设备的TensorFlow系统加速方法、装置、设备及存储介质
Zhao et al. ISPA: Exploiting Intra-SM Parallelism in GPUs via Fine-Grained Resource Management
Xie et al. Parallel Acceleration of ELAS on ARM
US20130091504A1 (en) Data flows and their interaction with control flows
CN117873712A (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