CN112631781A - 一种算子执行方法、装置、电子设备及存储介质 - Google Patents

一种算子执行方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN112631781A
CN112631781A CN202011592916.2A CN202011592916A CN112631781A CN 112631781 A CN112631781 A CN 112631781A CN 202011592916 A CN202011592916 A CN 202011592916A CN 112631781 A CN112631781 A CN 112631781A
Authority
CN
China
Prior art keywords
operator
executed
operators
executing
queue
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.)
Pending
Application number
CN202011592916.2A
Other languages
English (en)
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.)
Shanghai Sensetime Intelligent Technology Co Ltd
Original Assignee
Shanghai Sensetime Intelligent 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 Shanghai Sensetime Intelligent Technology Co Ltd filed Critical Shanghai Sensetime Intelligent Technology Co Ltd
Priority to CN202011592916.2A priority Critical patent/CN112631781A/zh
Publication of CN112631781A publication Critical patent/CN112631781A/zh
Pending legal-status Critical Current

Links

Images

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本公开提供了一种算子执行方法、装置、电子设备及存储介质,其中,该方法包括:算子执行方法,其特征在于,包括:响应于接收到待执行的第一算子,确定所述第一算子的状态信息;根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。本公开实施例能够在确定要执行当前的待执行算子后,集中执行当前的待执行算子,提升算子的执行效率。

Description

一种算子执行方法、装置、电子设备及存储介质
技术领域
本公开涉及深度学习技术领域,具体而言,涉及一种算子执行方法、装置、电子设备及存储介质。
背景技术
基于动态图计算模型的神经网络执行数据处理任务时的神经网络结构不固定,造成无法将数据处理过程的不同阶段需要占用的内存量确定下来,进而也无法预先为数据处理过程设定内存回收的节点。当前的内存清理方法为神经网络的计算算子和辅助算子设定内存清理算子;一旦某个计算算子或者辅助算子被执行,即执行与其对应的内存清理算子进行内存清理。该方法存在数据处理效率低的问题。
发明内容
本公开实施例至少提供一种算子执行方法、装置、电子设备及存储介质。
第一方面,本公开实施例提供了一种算子执行方法,包括:响应于接收到待执行的第一算子,确定所述第一算子的状态信息;根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
这样,在接收到第一算子后,能够确定第一算子的状态信息,并基于第一算子的状态信息,确定执行或不执行当前待执行算子,从而能够在确定要执行当前的待执行算子后,集中执行当前的待执行算子,提升算子的执行效率。
一种可能的实施方式中,所述状态信息包括算子类型,所述算子类型包括计算算子、辅助算子和内存清理算子中的至少一项。
一种可能的实施方式中,所述状态信息还包括所述待执行算子中所述算子类型对应的算子数量。
一种可能的实施方式中,所述根据所述状态信息,执行或不执行待执行算子,包括:响应于所述状态信息表征所述第一算子的算子类型为计算算子或内存清理算子,将所述第一算子加入目标队列,所述目标队列为用于存放计算算子的第一队列或用于存放内存清理算子的第二队列。
一种可能的实施方式中,在所述将所述第一算子加入目标队列之后,还包括:响应于所述目标队列中的算子数量达到数量阈值,依次执行所述待执行算子中所述第一队列的算子以及所述第二队列的算子。
这样,使得待执行算子中计算算子和内存清理算子的数量得以控制,使得算子能够保持良性、高效的执行。
一种可能的实施方式中,所述方法应用于一种电子设备,所述数量阈值与所述电子设备的内存呈正相关。
这样,通过电子设备的内存,动态待执行算子的数量阈值,能够保证算子电子设备内存的可靠性。
一种可能的实施方式中,所述根据所述状态信息,执行或不执行待执行算子,包括:
响应于所述状态信息表征所述第一算子的算子类型为辅助算子,依次执行所述待执行算子中第一队列的算子、所述第一算子以及第二队列的算子,所述第一队列用于存放计算算子,所述第二队列用于存放内存清理算子。
这样,保证了辅助算子和计算算子之间的执行顺序,又提升了算子执行的效率。
一种可能的实施方式中,所述执行待执行算子,包括:在执行所述待执行算子中第三算子的过程中,确定对象指针指向的内容是否为空;响应于所述对象指针指向的内容非空,基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子。
一种可能的实施方式中,所述基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子,包括:响应于所述第三算子对应的上下文与所述对象指针指向的内容相同,复用所述对象指针指向的内容,并执行所述第三算子。
这样,通过复用类型相同的算子对应的上下文,减少上下文切换过程中所需要的时间,提升算子的执行效率。
一种可能的实施方式中,所述方法还包括:响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,或者,响应于所述对象指针指向的内容为空,将所述对象指针指向所述第三算子对应的上下文,并执行所述第三算子。
一种可能的实施方式中,所述方法还包括:响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,回收所述对象指针指向的内容所占用的内存。
此处,可以在执行完某种类型的算子之后,将该类型的算子在执行过程中所对应上下文所占用的内存清理掉,从而保证了当前的可用内存能够满足后续的使用需求,提升内存的使用效率。
一种可能的实施方式中,其特征在于,所述上下文包括用于存放局部变量、和/或标志位的数据对象。
第二方面,本公开实施例还提供一种算子执行装置,包括:确定模块,用于响应于接收到待执行的第一算子,确定所述第一算子的状态信息;
处理模块,用于根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
一种可能的实施方式中,所述状态信息包括算子类型,所述算子类型包括计算算子、辅助算子和内存清理算子中的至少一项。
一种可能的实施方式中,所述状态信息还包括所述待执行算子中所述算子类型对应的算子数量。
一种可能的实施方式中,所述处理模块,在根据所述状态信息,执行或不执行待执行算子时,用于:
响应于所述状态信息表征所述第一算子的算子类型为计算算子或内存清理算子,将所述第一算子加入目标队列,所述目标队列为用于存放计算算子的第一队列或用于存放内存清理算子的第二队列。
一种可能的实施方式中,所述处理模块,在将所述第一算子加入目标队列之后,还用于:
响应于所述目标队列中的算子数量达到数量阈值,依次执行所述待执行算子中所述第一队列的算子以及所述第二队列的算子。
一种可能的实施方式中,所述方法应用于一种电子设备,所述数量阈值与所述电子设备的内存呈正相关。
一种可能的实施方式中,所述处理模块,在根据所述状态信息,执行或不执行待执行算子时,用于:
响应于所述状态信息表征所述第一算子的算子类型为辅助算子,依次执行所述待执行算子中第一队列的算子、所述第一算子以及第二队列的算子,所述第一队列用于存放计算算子,所述第二队列用于存放内存清理算子。
一种可能的实施方式中,所述处理模块,在执行待执行算子时,用于:
在执行所述待执行算子中第三算子的过程中,确定对象指针指向的内容是否为空;
响应于所述对象指针指向的内容非空,基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子。
一种可能的实施方式中,所述处理模块,在基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子时,用于:
响应于所述第三算子对应的上下文与所述对象指针指向的内容相同,复用所述对象指针指向的内容,并执行所述第三算子。
一种可能的实施方式中,所述处理模块,还用于:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,或者,响应于所述对象指针指向的内容为空,将所述对象指针指向所述第三算子对应的上下文,并执行所述第三算子。
一种可能的实施方式中,所述处理模块,还用于:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,回收所述对象指针指向的内容所占用的内存。
一种可能的实施方式中,所述上下文包括用于存放局部变量、和/或标志位的数据对象。
第三方面,本公开可选实现方式还提供一种电子设备,处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开可选实现方式还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
关于上述算子执行装置、电子设备、及计算机可读存储介质的效果描述参见上述算子执行方法的说明,这里不再赘述。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种算子执行方法的流程图;
图2示出了本公开实施例所提供的算子执行方法中,执行待执行算子的具体方法的流程图;
图3示出了本公开实施例所提供的一种算子执行装置的示意图;
图4示出了本公开实施例所提供的一种电子设备的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
经研究发现,基于动态图计算模型的神经网络(下称动态模型),是指计算引擎在利用动态模型对待处理数据执行数据处理任务的过程中,会根据处理过程中的实际情况,动态调整所采用神经网络的结构。在该种动态模型中,待处理数据不同,对其执行数据处理任务的动态模型结构可能会存在一定的差异;例如在对待处理数据的处理时,会将其与预设的阈值进行比对,针对不同的比对结果,对应不同的处理后续过程,而处理后续过程不同,导致所需网络层的结构、参数、数量、数据处理过程等会有所差异,进而造成了为不同的待处理数据确定的网络结构也会有所区别。
动态模型中计算节点按照功能能够被归类为计算算子、辅助算子、以及内存清理算子。其中,计算算子用于承担实际的计算任务,如卷积、池化、全连接等;辅助算子用于提供辅助功能,如数据读取、数据复制、数据同步等;内存清理算子用于控制内存的释放,比如,计算结果的清理等。其中,计算算子执行的先后顺序是一定的,且计算算子与辅助算子之间的执行先后顺序也一定,内存清理算子之间则没有执行顺序要求,且计算算子和对应的内存清理算子之间有执行顺序的先后约束,内存清理算子不能先于对应的计算算子执行。当除内存清理算子外的其他算子的计算结果或者保存的中间变量在用户层使用结束之后,就会向计算引擎传递内存清理算子,计算引擎在接收到内存清理算子后,执行内存清理算子,以实现对缓存在内存中计算结果、中间变量等数据的清理,以保证后续其他算子计算过程中,内存会有足够的空间用于存放后续计算过程产生的数据。
由于动态模型具有结构不固定的特性,导致了无法预先确定内存回收的阶段,进而针对动态模型的计算算子和辅助算子设定内存清理算子;一旦某个计算算子或者辅助算子被执行,即执行与其对应的内存清理算子进行内存清理。算子类型不同,导致设备在执行不同算子的时候需要切换上下文;而设备在切换上下文时,需要一定的时间进行资源调度;当前算子执行的方法为每执行一个计算算子或者辅助算子,就会执行与之对应的内存清理算子以实现内存清理,而不同类型算子对应的上下文不同,造成了需要频繁的切换上下文,进而造成数据处理的效率较低。
基于上述研究,本公开提供了一种算子执行方法,能够根据接收到的待执行算子的状态信息,确定算子的执行策略,从而提升数据处理的效率。
针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种算子执行方法进行详细介绍,本公开实施例所提供的算子执行方法的执行主体一般为具有一定计算能力的电子设备,该电子设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该算子执行方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
在本公开实施例中,电子设备在执行本公开实施例提供的算子执行方法时,执行算子的具体执行主体例如为电子设备中部署的计算引擎;电子设备的应用层能够根据预先部署的应用程序,在某个时刻将算子传入到计算引擎。计算引擎在接收到应用层传入的算子后,根据本公开实施例提供的算子执行方法执行算子。
下面对本公开实施例提供的算子执行方法加以说明。
参见图1所示,为本公开实施例提供的算子执行方法的流程图,所述方法包括步骤S101~S102,其中:
S101:响应于接收到待执行的第一算子,确定所述第一算子的状态信息。
S102:根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
本公开实施例在接收到第一算子后,能够确定第一算子的状态信息,并基于第一算子的状态信息,确定执行或不执行当前待执行算子,从而能够在确定要执行当前的待执行算子后,集中执行当前的待执行算子,提升算子的执行效率。
在具体实施中,第一算子的状态信息,例如包括:算子类型;算子类型包括计算算子、辅助算子以及内存清理算子中的至少一项。
在确定了第一算子的算子类型后,例如可以采用下述方式根据算子类型确定算子执行的策略:
在第一算子的算子类型为计算算子的情况下,确定不执行当前的待执行算子。
在第一算子的算子类型为内存清理算子的情况下,确定不执行当前的待执行算子。
在第一算子的算子类型为辅助算子的情况下,确定执行当前的待执行算子。
这样,通过基于当前接收到的第一算子的算子类型,来确定是否要执行包括了第一算子在内的所有待执行算子。
在本公开实施例中,在根据状态信息执行或不执行待执行算子的时候,例如可以响应于所述状态信息表征所述第一算子的算子类型为计算算子或内存清理算子,将所述第一算子加入目标队列,所述目标队列为用于存放计算算子的第一队列或用于存放内存清理算子的第二队列。
这样,将第一算子加入到目标队列中,在确定执行当前的待执行算子时,从各个算子类型分别对应的队列中,读取各个待执行算子,并执行读取到的待执行算子。
在本公开另一实施例中,状态信息还可以包括待执行算子中与第一算子的算子类型对应的算子数量。
在该种情况下,可以预先确定第一算子的算子类型对应的数量阈值,并基于该数量阈值,确定执行或不执行当前的待执行算子。数量阈值的设置,可以方便对第一队列、第二队列的管理,即可以基于第一队列或第二队列中存放的待执行算子的数量,来确定在什么情况下执行第一队列、第二队列内存放的待执行算子。
示例性的,例如可以采用下述方式根据算子数量确定算子执行的策略:
在第一算子的算子类型为计算算子的情况下,若待执行算子中类型为计算算子的算子数量大于或者等于第一数量阈值,则确定执行当前的待执行算子;若待执行算子中类型为计算算子的算子数量小于第一数量阈值,则确定不执行当前的待执行算子。
在第一算子的算子类型为内存清理算子的情况下,若待执行算子中类型为内存清理算子的算子数量大于或者等于第二数量阈值,则确定执行当前的待执行算子;若待执行算子中类型为内存清理算子的算子数量小于第二数量阈值,则确定不执行当前的待执行算子。
在第一算子的算子类型为辅助算子的情况下,若待执行算子中类型为辅助算子的算子数量大于或者等于第三数量阈值,则确定执行当前的待执行算子;若待执行算子中类型为辅助算子的算子数量小于第三数量阈值,则确定不执行当前的待执行算子。
此处,在目标队列为计算算子对应的第一队列的情况下,该数量阈值为第一数量阈值;在目标队列为内存清理算子对应的第二队列的情况下,该数量阈值为第二数量阈值。
在该种情况下,可以响应于所述目标队列中的算子数量达到数量阈值,依次执行所述待执行算子中所述第一队列的算子以及所述第二队列的算子。
也即,在当前的待执行算子中,计算算子的算子数量达到第一数量阈值,则先执行第一队列中的计算算子;在第一队列中的计算算子执行完毕后,再执行当前第二队列中的内存清理算子。这样,使得待执行算子中计算算子和内存清理算子的数量得以控制,使得算子的执行分周期保持良性、高效的执行。
算子的执行周期,为前一次确定执行待执行算子,到此次确定执行待执行算子。不同周期的持续时长根据实际的情况可能不同,也可能相同。
另外,由于辅助算子相对于与计算算子之间的执行顺序是固定的,可以将第三数量阈值设置为1。也即,在接收到的第一算子的算子类型为辅助算子的情况下,即执行当前的待执行算子。因此,可以不为辅助算子设置队列;而是在接收到的第一算子后,一旦确定第一算子的算子类型为辅助算子,即执行当前的待执行算子。
第一数量阈值、第二数量阈值可以根据实际的应用需要进行设置,其可以是固定的,也可以是根据当前的算子执行情况动态调整的。
示例性的,在第一数量阈值和第二数量阈值是根据当前的算子执行情况动态调整的情况下,例如可以为当前正在执行的算子确定执行时间,并为当前待执行算子确定等待时间;若当前正在执行的算子的执行时间小于当前待执行算子的等待时间,可以减小第一数量阈值和第二数量阈值。这样,在电子设备的应用层向计算引擎传入算子频率较低,导致待执行算子长时间等待执行、而计算引擎的计算资源无法得到充分利用的情况下(即当前正在执行的算子已经执行完毕,但待执行算子仍然在等待执行),减小第一数量阈值和第二数量阈值,能够减少待执行算子的等待时间,使得计算引擎的计算资源能够得到更充分的利用,并提升算子的处理效率。
若当前正在执行的算子的执行时间大于当前待执行算子的等待之间,可以适当的增加第一数量阈值和第二数量阈值,尽量使得当前正在执行的算子的执行时间和待执行算子的等待时间之间保持平衡,使得计算引擎的计算资源既能够得到充分的利用,又保证待执行算子不会等待过长时间即能够被及时处理。
此处,在确定执行当前的待执行算子时,待执行算子的数量过多,会导致待执行算子需要长时间的排队,影响算子的处理效率;数量过少,则会导致待执行算子数量不足,造成计算引擎仍然需要较为频换的在不同类型的算子之间切换上下文造成的算子处理效率低;因此,可以为第一数量阈值和第二数量阈值确定一上限阈值和/或下限阈值,从而控制在确定执行当前的待执行算子时,待执行算子的数量不会过多或者过少。
在另一实施例中,还可以根据电子设备的内存来动态确定第一数量阈值和第二数量阈值;此处,电子设备的内存例如包括当前可用内存。示例性的,第一数量阈值和/或第二数量阈值和电子设备的内存呈正相关。也即,电子设备的内存越大,则第一数量阈值和/或第二数量阈值越大;电子设备的内存越小,则第一数量阈值和/或第二数量阈值越小。这样,可以基于电子设备的内存动态调整待执行算子的数量。
在本公开另一实施例中,在确定要执行待执行算子的情况下,例如可以采用下述方式执行待执行算子:
响应于所述状态信息表征所述第一算子的算子类型为辅助算子,依次执行所述待执行算子中第一队列的算子、所述第一算子以及第二队列的算子,所述第一队列用于存放计算算子,所述第二队列用于存放内存清理算子。
此处,由于计算算子和辅助算子之间的执行顺序是固定的,因此,在接收到的第一算子为辅助算子的情况下,则先执行第一算子队列中的计算算子,再执行辅助算子,然后执行第二队列中的内存清理算子,既保证了计算算子和辅助算子之间的执行顺序,又能够在当前待执行算子中的计算算子和辅助算子均执行完毕后,执行内存清理算子,以实现对当前待执行算子所占用的内存进行清理。
参见图2所示,本公开实施例还提供一种执行待执行算子的具体方法,包括:
S201:在执行所述待执行算子中第三算子的过程中,确定对象指针指向的内容是否为空;
S202:响应于所述对象指针指向的内容非空,基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子。
在具体实施中,在确定执行当前的待执行算子后,会按照上述实施例中的算子执行顺序读取算子,并将读取到的算子作为第三算子,执行该第三算子。
在执行第三算子的过程中,会确定对象指针指向的内容是否为空。此处,该对象指针用于在当前要执行第三算子的时候,指向当前要执行的第三算子的上下文。
此处,该上下文包括用于存放局部变量、和/或标志位的数据对象。
示例性的,上下文例如是对电子设备中资源的抽象,例如管理在执行某个算子时申请的临时资源(局部变量),如显存资源、图形处理器(Graphics Processing Unit,GPU)资源、内存资源等。
标识位例如可以用于电子设备在执行算子时的状态,例如算子的执行状态、设备的状态、算子用到的资源、资源是否清除等。
具体的,在执行第三算子的过程例如如下:
响应于所述第三算子对应的上下文与所述对象指针指向的内容相同,复用所述对象指针指向的内容,并执行所述第三算子。
这样,通过复用类型相同的算子对应的上下文,减少上下文切换过程中所需要的时间,提升算子的执行效率。
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,或者,响应于所述对象指针指向的内容为空,将所述对象指针指向所述第三算子对应的上下文,并执行所述第三算子。
另一实施例中,响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,回收所述对象指针指向的内容所占用的内存。
此处,可以在执行完某种类型的算子之后,将该类型的算子在执行过程中所对应上下文所占用的内存清理掉,从而保证了当前的可用内存能够满足后续的使用需求,提升内存的使用效率。
本公开实施例还提供一种算子执行方法的具体示例,包括下述步骤:
接收待执行的第一算子,并确定第一算子的算子类型。
(1)在第一算子的算子类型为计算算子的情况下,将第一算子加入到第一队列中,并检测第一队列是否队满。
在第一队列队满的情况下,遵循“先进先出”的原则,按序执行第一队列中的计算算子,再按序执行第二队列中的内存清理算子。
在第一队列并未队满的情况下,可以暂不执行当前所有的待执行算子(包括第一队列中的各计算算子以及第二队列中的各内存清理算子),并接收下一个待执行的第一算子。
(2)在第一算子的算子类型为内存清理算子的情况下,将第一算子加入到第二队列中,并检测第二队列是否队满。
在第二队列队满的情况下,遵循“先进先出”的原则,按序执行第一队列中的计算算子,再按序执行第二队列中的内存清理算子。
在第二队列并未队满的情况下,可以暂不执行当前所有的待执行算子(包括第一队列中的各计算算子以及第二队列中的各内存清理算子),并接收下一个待执行的第一算子。
(3)在第一算子的算子类型为辅助算子的情况下,遵循“先进先出”的原则,按序执行第一队列中的计算算子,然后执行辅助算子,再按序执行第二队列中的内存清理算子。
在上述(1)、(2)或者(3)提及的实现方式中,对于需要执行算子的情况而言,可参照上述(1)、(2)或者(3)中所述的顺序,获取当前要执行的算子,即第三算子。
在第三算子为计算引擎在本个执行周期内执行的首个算子(例如计算引擎启动后执行的第一个算子)的情况下,对象指针的指向为空,此时,将该对象指针指向第三算子对应的上下文,并执行该第三算子。
在第三算子并非计算引擎执行的首个算子(即计算引擎启动后至少执行了一个算子)的情况下,若当前要执行的第三算子和最近执行的上一算子的算子类型相同,则复用对象指针指向的内容,并执行第三算子。
若当前要执行的第三算子和最近执行的上一算子的算子类型不同,则清理对象指针指向的上下文包含的局部变量以清空上一算子的上下文占用的内存,将对象指针指向第三算子对应的上下文以实现上下文切换,然后执行第三算子。
通过上述算子执行过程,在上述(1)的情况下,电子设备在本执行周期需要切换上下文的次数最多为2(此时,假设是在任一执行周期开始时,对象指针的指向均为空,且第一队列和第二队列不为空的情况下;若第二队列为空,则需要切换上下文的次数仅为1),分别为:在第一个计算算子执行的时候,对象指针由空指向第一个计算算子的上下文;在第一个内存清理算子执行的时候,对象指针由最后一个计算算子的上下文切换至第一个内存清理算子的上下文。
在上述(2)的情况下,电子设备在本执行周期需要切换上下文的次数最多为2(此时,假设是在任一执行周期开始时,对象指针的指向均为空,且第一队列和第二队列不为空的情况下),分别为:在第一个计算算子执行的时候,对象指针由空指向第一个计算算子的上下文;在第一个内存清理算子执行的时候,对象指针由最后一个计算算子的上下文切换至第一个内存清理算子的上下文。
在上述(3)的情况下,电子设备在本执行周期需要切换上下文的次数最多为3(此时,假设是在任一执行周期开始时,对象指针的指向均为空,且第一队列和第二队列不为空的情况下),分别为:在第一个计算算子执行的时候,对象指针由空指向第一个计算算子的上下文;在执行辅助算子的时候,对象指针由最后一个计算算子的上下文切换至辅助算子的上下文;在第一个内存清理算子执行的时候,对象指针由辅助算子的上下文切换至第一个内存清理算子的上下文。
可以得知,本公开实施例提供的算子执行方法,对于集中执行相同类型的算子的过程而言,由于相邻执行的算子属于同一类型,因此采用本公开提供的技术方案,可以通过上下文复用的方式减少算子执行过程中对于上下文的切换。尤其是对于集中执行计算算子的情况而言,减少了因切换上下文所产生的资源消耗及时间消耗,可有效提升数据处理效率。并且,考虑到不同的内存清理算子之间在执行顺序上不存在严格界定,因此,对于集中执行多个内存清理算子的情况而言,可以并行执行第二队列中的各内存清理算子,从而有效减少数据处理占用的整体时长,提升数据处理效率。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与算子执行方法对应的算子执行装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述算子执行方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种算子执行装置的示意图,所述装置包括:确定模块31、以及处理模块32;其中,
确定模块31,用于响应于接收到待执行的第一算子,确定所述第一算子的状态信息;
处理模块32,用于根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
一种可能的实施方式中,所述状态信息包括算子类型,所述算子类型包括计算算子、辅助算子和内存清理算子中的至少一项。
一种可能的实施方式中,所述状态信息还包括所述待执行算子中所述算子类型对应的算子数量。
一种可能的实施方式中,所述处理模块32,在根据所述状态信息,执行或不执行待执行算子时,用于:
响应于所述状态信息表征所述第一算子的算子类型为计算算子或内存清理算子,将所述第一算子加入目标队列,所述目标队列为用于存放计算算子的第一队列或用于存放内存清理算子的第二队列。
一种可能的实施方式中,所述处理模块32,在将所述第一算子加入目标队列之后,还用于:
响应于所述目标队列中的算子数量达到数量阈值,依次执行所述待执行算子中所述第一队列的算子以及所述第二队列的算子。
一种可能的实施方式中,所述方法应用于一种电子设备,所述数量阈值与所述电子设备的内存呈正相关。
一种可能的实施方式中,所述处理模块32,在根据所述状态信息,执行或不执行待执行算子时,用于:
响应于所述状态信息表征所述第一算子的算子类型为辅助算子,依次执行所述待执行算子中第一队列的算子、所述第一算子以及第二队列的算子,所述第一队列用于存放计算算子,所述第二队列用于存放内存清理算子。
一种可能的实施方式中,所述处理模块32,在执行待执行算子时,用于:
在执行所述待执行算子中第三算子的过程中,确定对象指针指向的内容是否为空;
响应于所述对象指针指向的内容非空,基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子。
一种可能的实施方式中,所述处理模块32,在基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子时,用于:
响应于所述第三算子对应的上下文与所述对象指针指向的内容相同,复用所述对象指针指向的内容,并执行所述第三算子。
一种可能的实施方式中,所述处理模块32,还用于括:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,或者,响应于所述对象指针指向的内容为空,将所述对象指针指向所述第三算子对应的上下文,并执行所述第三算子。
一种可能的实施方式中,所述处理模块32,还用于:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,回收所述对象指针指向的内容所占用的内存。
一种可能的实施方式中,所述上下文包括用于存放局部变量、和/或标志位的数据对象。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
本公开实施例还提供了一种电子设备,如图4所示,为本公开实施例提供的电子设备结构示意图,包括:
处理器11和存储器12;所述存储器12存储有所述处理器11可执行的机器可读指令,当电子设备运行时,所述机器可读指令被所述处理器执行以实现下述步骤:
响应于接收到待执行的第一算子,确定所述第一算子的状态信息;
根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
上述指令的具体执行过程可以参考本公开实施例中所述的算子执行方法的步骤,此处不再赘述。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的算子执行方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的算子执行方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (15)

1.一种算子执行方法,其特征在于,包括:
响应于接收到待执行的第一算子,确定所述第一算子的状态信息;
根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
2.根据权利要求1所述的算子执行方法,其特征在于,所述状态信息包括算子类型,所述算子类型包括计算算子、辅助算子和内存清理算子中的至少一项。
3.根据权利要求2所述的算子执行方法,其特征在于,所述状态信息还包括所述待执行算子中所述算子类型对应的算子数量。
4.根据权利要求1至3任一项所述的算子执行方法,其特征在于,所述根据所述状态信息,执行或不执行待执行算子,包括:
响应于所述状态信息表征所述第一算子的算子类型为计算算子或内存清理算子,将所述第一算子加入目标队列,所述目标队列为用于存放计算算子的第一队列或用于存放内存清理算子的第二队列。
5.根据权利要求4所述的算子执行方法,其特征在于,在所述将所述第一算子加入目标队列之后,还包括:
响应于所述目标队列中的算子数量达到数量阈值,依次执行所述待执行算子中所述第一队列的算子以及所述第二队列的算子。
6.根据权利要求5所述的算子执行方法,其特征在于,所述方法应用于一种电子设备,所述数量阈值与所述电子设备的内存呈正相关。
7.根据权利要求1至6任一项所述的算子执行方法,其特征在于,所述根据所述状态信息,执行或不执行待执行算子,包括:
响应于所述状态信息表征所述第一算子的算子类型为辅助算子,依次执行所述待执行算子中第一队列的算子、所述第一算子以及第二队列的算子,所述第一队列用于存放计算算子,所述第二队列用于存放内存清理算子。
8.根据权利要求1至7任一项所述的算子执行方法,其特征在于,所述执行待执行算子,包括:
在执行所述待执行算子中第三算子的过程中,确定对象指针指向的内容是否为空;
响应于所述对象指针指向的内容非空,基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子。
9.根据权利要求8所述的算子执行方法,其特征在于,所述基于所述第三算子对应的上下文以及所述对象指针指向的内容,确定是否更新所述对象指针指向的内容,以执行所述第三算子,包括:
响应于所述第三算子对应的上下文与所述对象指针指向的内容相同,复用所述对象指针指向的内容,并执行所述第三算子。
10.根据权利要求8或9所述的算子执行方法,其特征在于,所述方法还包括:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,或者,响应于所述对象指针指向的内容为空,将所述对象指针指向所述第三算子对应的上下文,并执行所述第三算子。
11.根据权利要求10所述的算子执行方法,其特征在于,所述方法还包括:
响应于所述对象指针指向的内容为非空,且所述第三算子对应的上下文与所述对象指针指向的内容不同,回收所述对象指针指向的内容所占用的内存。
12.根据权利要求8至11任一项所述的算子执行方法,其特征在于,所述上下文包括用于存放局部变量、和/或标志位的数据对象。
13.一种算子执行装置,其特征在于,包括:
确定模块,用于响应于接收到待执行的第一算子,确定所述第一算子的状态信息;
处理模块,用于根据所述状态信息,执行或不执行待执行算子,所述待执行算子包括所述第一算子以及在接收到所述第一算子之前接收到的第二算子。
14.一种电子设备,其特征在于,包括:处理器、存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述处理器用于执行所述存储器中存储的机器可读指令,所述机器可读指令被所述处理器执行时,所述处理器执行如权利要求1至12任一项所述的算子执行方法的步骤。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被电子设备运行时,所述电子设备执行如权利要求1至12任意一项所述的算子执行方法的步骤。
CN202011592916.2A 2020-12-29 2020-12-29 一种算子执行方法、装置、电子设备及存储介质 Pending CN112631781A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011592916.2A CN112631781A (zh) 2020-12-29 2020-12-29 一种算子执行方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011592916.2A CN112631781A (zh) 2020-12-29 2020-12-29 一种算子执行方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN112631781A true CN112631781A (zh) 2021-04-09

Family

ID=75286241

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011592916.2A Pending CN112631781A (zh) 2020-12-29 2020-12-29 一种算子执行方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN112631781A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741172A (zh) * 2022-04-06 2022-07-12 深圳鲲云信息科技有限公司 人工智能模型的算子调度方法、装置、设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341301B1 (en) * 1997-01-10 2002-01-22 Lsi Logic Corporation Exclusive multiple queue handling using a common processing algorithm
CN101295261A (zh) * 2008-06-25 2008-10-29 中国人民解放军国防科学技术大学 一种面向普适计算环境的构件化上下文处理方法
US20170168748A1 (en) * 2015-12-15 2017-06-15 International Business Machines Corporation Monitoring states of processing elements
CN107608858A (zh) * 2017-09-28 2018-01-19 北京京东尚科信息技术有限公司 信息处理系统、方法和装置
CN109902819A (zh) * 2019-02-12 2019-06-18 Oppo广东移动通信有限公司 神经网络计算方法、装置、移动终端及存储介质
CN110262886A (zh) * 2019-06-24 2019-09-20 上海商汤智能科技有限公司 任务执行方法及装置、电子设备和存储介质
CN111340237A (zh) * 2020-03-05 2020-06-26 腾讯科技(深圳)有限公司 数据处理和模型运行方法、装置和计算机设备
CN111694653A (zh) * 2019-03-13 2020-09-22 阿里巴巴集团控股有限公司 计算系统中调整计算算子类型分布的方法、装置及系统
CN111951114A (zh) * 2020-08-19 2020-11-17 北京开科唯识技术有限公司 一种任务执行方法、装置、电子设备及可读存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341301B1 (en) * 1997-01-10 2002-01-22 Lsi Logic Corporation Exclusive multiple queue handling using a common processing algorithm
CN101295261A (zh) * 2008-06-25 2008-10-29 中国人民解放军国防科学技术大学 一种面向普适计算环境的构件化上下文处理方法
US20170168748A1 (en) * 2015-12-15 2017-06-15 International Business Machines Corporation Monitoring states of processing elements
CN107608858A (zh) * 2017-09-28 2018-01-19 北京京东尚科信息技术有限公司 信息处理系统、方法和装置
CN109902819A (zh) * 2019-02-12 2019-06-18 Oppo广东移动通信有限公司 神经网络计算方法、装置、移动终端及存储介质
WO2020164469A1 (zh) * 2019-02-12 2020-08-20 Oppo广东移动通信有限公司 神经网络计算方法、装置、移动终端及存储介质
CN111694653A (zh) * 2019-03-13 2020-09-22 阿里巴巴集团控股有限公司 计算系统中调整计算算子类型分布的方法、装置及系统
CN110262886A (zh) * 2019-06-24 2019-09-20 上海商汤智能科技有限公司 任务执行方法及装置、电子设备和存储介质
CN111340237A (zh) * 2020-03-05 2020-06-26 腾讯科技(深圳)有限公司 数据处理和模型运行方法、装置和计算机设备
CN111951114A (zh) * 2020-08-19 2020-11-17 北京开科唯识技术有限公司 一种任务执行方法、装置、电子设备及可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114741172A (zh) * 2022-04-06 2022-07-12 深圳鲲云信息科技有限公司 人工智能模型的算子调度方法、装置、设备及存储介质
CN114741172B (zh) * 2022-04-06 2023-05-02 深圳鲲云信息科技有限公司 人工智能模型的算子调度方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN106371889B (zh) 一种调度镜像的高性能集群系统实现方法及装置
CN110764906B (zh) 内存回收处理方法、装置、电子设备以及存储介质
CN106104484A (zh) 基于因设备而异或因用户而异的资源使用简档的资源管理
CN109542512B (zh) 一种数据处理方法、装置和存储介质
CN105988805B (zh) 一种应用程序的管理方法及移动终端
MXPA06013666A (es) Metodo, software y aparato para utilizar informacion de historial de estado de aplicacion cuando se reinicien aplicaciones.
CN110427256A (zh) 基于优先级的作业调度优化方法、设备、存储介质及装置
CN103080920A (zh) 用于无客户端移动电话中的多任务的系统和方法
CN107479953B (zh) 进程管理方法、装置、存储介质及电子设备
CN111708642B (zh) Vr系统中处理器性能优化方法、装置及vr设备
CN107402808A (zh) 进程管理方法、装置、存储介质及电子设备
CN112631781A (zh) 一种算子执行方法、装置、电子设备及存储介质
CN114721742A (zh) 应用程序的启动优化方法、装置、计算机设备及存储介质
CN114416320A (zh) 一种任务处理方法、装置、设备以及存储介质
CN107450951B (zh) 应用程序处理方法、装置、存储介质和终端
CN109445863B (zh) 一种基于fpga的数据处理方法、装置、设备及介质
KR102563648B1 (ko) 멀티 프로세서 시스템 및 그 구동 방법
CN111078405B (zh) 内存分配方法、装置、存储介质及电子设备
CN106775815B (zh) 一种应用程序数据迁移的方法及装置
CN111124655A (zh) 一种网络请求调度方法、终端装置及存储介质
CN113641476A (zh) 一种任务调度方法、游戏引擎、设备及存储介质
CN110889004B (zh) 一种矢量图纸展示方法、系统、装置及存储介质
CN114490002A (zh) 数据处理系统、任务调度方法、装置、芯片、及电子设备
CN113986558A (zh) 应用处理方法及装置
CN112559115A (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