CN116339959A - 应用于神经网络的内存申请方法、装置及设备 - Google Patents
应用于神经网络的内存申请方法、装置及设备 Download PDFInfo
- Publication number
- CN116339959A CN116339959A CN202111518556.6A CN202111518556A CN116339959A CN 116339959 A CN116339959 A CN 116339959A CN 202111518556 A CN202111518556 A CN 202111518556A CN 116339959 A CN116339959 A CN 116339959A
- Authority
- CN
- China
- Prior art keywords
- memory
- target task
- size
- level
- current running
- 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
Links
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- 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
Abstract
本申请提供一种应用于神经网络的内存申请方法、装置及设备,该设备包括:存储器和处理器;其中存储器用于存储处理器可执行指令,处理器用于调用存储器中的程序指令执行应用于神经网络的内存申请方法。本申请提供的应用于神经网络的内存申请方法、装置及设备,优化了内存碎片,有效避免了内存空间的浪费。
Description
技术领域
本申请涉及神经网络技术领域,尤其涉及一种应用于神经网络的内存申请方法、装置及设备。
背景技术
神经网络是一种通过调整系统内部大量节点之间相互连接的关系,而实现信息处理的数学模型。神经网络在训练或推理计算的过程中,需要申请大量的内存以存放运行数据。
目前,常见的内存申请方法为,当目标任务当前运行需要内存时,则向内存管理器发送内存申请指令,以使内存管理器为目标任务分配当前所需内存,并使用内存缓存机制将申请到的内存保留下来,以在目标任务本次运行过程中反复使用。
但是,随着目标任务的运行,目标任务会不断产生新的内存需求,当目标任务产生的新的内存需求大小,大于内存缓存机制保留下来的内存中未被使用的内存大小时,目标任务会重新向内存管理器申请新的内存,也就是说,此前内存缓存机制保留下来的内存中未被使用的内存则无法被利用,从而形成内存碎片,造成内存空间的浪费。
发明内容
本申请提供一种应用于神经网络的内存申请方法、装置及设备,用以优化内存碎片,避免内存空间的浪费。
第一方面,本申请实施例提供一种应用于神经网络的内存申请方法,包括:
接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
第二方面,本申请实施例提供一种应用于神经网络的内存申请装置,包括:
接收模块,用于接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
判断模块,用于根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
确定模块,用于根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
发送模块,用于向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
第三方面,本申请实施例提供一种处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述的方法。
本申请提供一种应用于神经网络的内存申请方法、装置及设备,接收目标任务发送的第一内存申请请求,其中,第一内存申请请求包括目标任务当前运行所需的内存大小,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定待申请的内存大小,向内存管理器发送第二内存申请请求,以使内存管理器为目标任务分配与待申请的内存大小相一致的内存。也就是说,本申请根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定相应的需求等级所需的内存大小,也即待申请的内存大小,并向内存管理器申请该相应的需求等级所需的内存大小的内存,从而无需目标任务在运行过程中多次申请内存,进而优化了内存碎片,有效避免了内存空间的浪费。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的一种系统架构的示意图;
图2为本申请实施例提供的应用于神经网络的内存申请方法的流程图;
图3为本申请实施例提供的应用于神经网络的内存申请方法的流程图;
图4为本申请实施例提供的应用于神经网络的内存申请装置的结构示意图;
图5为本申请的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与本申请的一些方面相一致的装置和方法的例子。
神经网络在计算过程中,需要申请大量的内存以存放运行数据。目前,常见的内存申请方法为,当目标任务当前运行需要内存时,则向内存管理器发送内存申请指令,以使内存管理器为目标任务分配当前所需内存,并使用内存缓存机制将申请到的内存保留下来,以在目标任务本次运行过程中反复使用,也即可以在目标任务本次运行过程中低延时地响应目标任务的内存需求。
但是,随着目标任务的运行,目标任务会不断产生新的内存需求,当目标任务产生的新的内存需求大小,小于等于内存缓存机制保留下来的内存中未被使用的内存大小时,内存缓存机制保留下来的内存可以成功响应该新的内存需求,然而,当目标任务产生的新的内存需求大小,大于内存缓存机制保留下来的内存中未被使用的内存大小时,目标任务会重新向内存管理器申请新的内存,也就是说,此前内存缓存机制保留下来的内存中未被使用的内存则无法被利用,从而形成内存碎片,造成内存空间的浪费。
本申请提供的应用于神经网络的内存申请方法、装置及设备,旨在解决现有技术的如上技术问题。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图1为本申请实施例提供的一种系统架构的示意图,如图1所示,该图1所示的系统架构具体可以包括目标任务1、服务器2以及内存管理器3,其中服务器2中设置有内存申请装置。
其中,目标任务1可以为神经网络的训练或推理计算等任务。内存申请装置可搭载于服务器2,用于接收目标任务1发送的,包括有目标任务当前运行所需的内存大小的第一内存申请请求,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定待申请的内存大小,并向内存管理器3发送包括有待申请的内存大小的第二内存申请请求,以使所述内存管理器3为目标任务分配与待申请的内存大小相一致的内存。
实施例一
图2为本申请实施例提供的应用于神经网络的内存申请方法的流程图,如图2所示,本实施例提供的应用于神经网络的内存申请方法包括以下步骤:
步骤101、接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小。
步骤102、根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级。
步骤103、根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小。
步骤104、向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
需要说明的是,本实施例提供的应用于神经网络的内存申请方法的执行主体可以为应用于神经网络的内存申请装置。在实际应用中,该应用于神经网络的内存申请装置可以通过计算机程序实现,例如应用软件,计算机程序等,也可以通过存储有相关计算机程序的介质,例如,U盘、光盘等实现;或者,还可以通过集成或安装有相关计算机程序的实体装置实现,例如,芯片等。
在本实施例中,由于神经网络在训练或推理计算的过程中(也即目标任务运行过程中),需要申请大量的内存以存放运行数据,而多次申请内存会导致形成大量的内存碎片,造成内存空间的浪费,因此为了避免内存空间浪费,可以通过内存申请装置判断目标任务的内存需求等级,从而确定待申请的内存大小,以使目标任务在运行过程中无需多次申请内存。
具体地,内存申请装置首先可以接收目标任务发送的第一内存申请请求。其中,第一内存申请请求包括目标任务当前运行所需的内存大小。
在实际应用中,当目标任务开始运行时,会向内存申请装置发送第一内存申请请求,在第一内存申请请求中包括有该目标任务当前运行所需的内存大小,内存大小的单位可以为字节(Byte,简称B)。
接下来,在内存申请装置接收到该第一内存申请请求后,可以根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级。其中,内存需求等级包括低级、中级以及高级。
在实际应用中,由于在神经网络训练或推理计算过程中,目标任务在整个运行过程中所需的内存大小,在一定范围内大于或等于目标任务在某一时刻运行所需的内存大小,因此,可以根据目标任务当前运行所需的内存大小,判断出目标任务的内存需求等级。
接下来,在内存申请装置判断目标任务的内存需求等级之后,可以根据目标任务的内存需求等级,确定待申请的内存大小。其中,不同的内存需求等级对应不同的待申请的内存大小。具体确定方法将在本申请实施例二中进行详细说明,在此不再赘述。
最后,在确定待申请的内存大小后,内存申请装置可以向内存管理器发送第二内存申请请求,以使内存管理器为目标任务分配与待申请的内存大小相一致的内存。其中,第二内存申请请求可以包括待申请的内存大小。
在其他任意实施例的基础上,在一种可选的实施方式中,步骤102之前,还包括:基于所述目标任务所在设备的对齐要求,对所述目标任务当前运行所需的内存大小进行对齐处理。
在本实施方式中,由于不同的硬件平台对内存空间的处理有所不同,因此不同的设备通常具有不同的内存对齐要求,也即要求申请的内存大小需为某一整数的公倍数字节,例如64的公倍数字节。因此,在内存申请装置根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级之前,需要基于目标任务所在设备的对齐要求,对目标任务当前运行所需的内存大小进行对齐处理,其中,对齐处理指的是将目标任务当前运行所需的内存大小对齐到所在设备要求的整数的公倍数字节。
在一个示例中,若目标任务当前运行所需的内存大小为500字节,所在设备的对齐要求为将申请的内存大小对齐到64的公倍数字节,因此内存申请装置可以将目标任务当前运行所需的内存大小对齐至512字节,也即64的8倍字节。
相应地,在上述实施例一的基础上,在一种可选的实施方式中,步骤102,包括:根据对齐处理后的所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级。
在本实施方式中,承接上例来说,若目标任务当前运行所需的内存大小为500字节,则内存申请装置可以根据对齐处理后的目标任务当前运行所需的内存大小,也即512字节,判断目标任务的内存需求等级,从而可以保证内存需求等级判断的准确性,进而可以准确确定待申请的内存大小。
本实施例提供的应用于神经网络的内存申请方法,接收目标任务发送的第一内存申请请求,其中,第一内存申请请求包括目标任务当前运行所需的内存大小,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定待申请的内存大小,向内存管理器发送第二内存申请请求,以使内存管理器为目标任务分配与待申请的内存大小相一致的内存。也就是说,在本申请实施例中,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定相应的需求等级所需的内存大小,也即待申请的内存大小,并向内存管理器申请该相应的需求等级所需的内存大小的内存,从而无需目标任务在运行过程中多次申请内存,进而优化了内存碎片,有效避免了内存空间的浪费。
实施例二
在上述实施例一的基础上,在一种可选的实施方式中,步骤102,具体包括:判断所述目标任务当前运行所需的内存大小是否小于预设的第一阈值;其中,所述预设的第一阈值为根据所述目标任务在整个运行过程中预计所需内存大小的分布情况确定的;若所述目标任务当前运行所需的内存大小小于预设的第一阈值,则判断所述目标任务的内存需求等级为低级。
在本实施方式中,内存申请装置可以判断目标任务当前运行所需的内存大小是否小于预设的第一阈值。其中,预设的第一阈值可以由目标任务在整个运行过程中预计所需内存大小的分布情况确定。
此外,需要说明的是,不同的目标任务在整个运行过程中预计所需内存大小的分布情况可能不同。对于某个目标任务所需多个内存,包括多个内存请求,对该多个所需内存的大小进行统计分析,根据其分布情况确定第一阈值的大小。可选地,该第一阈值的大小可以为该多个所需内存的大小中的平均值,或者为该多个所需内存的大小中的中值,或者为该多个所需内存的大小中的出现频数最多的值等等,可以根据具体情况具体分析,本申请对此不作限定。
举例来说,在一个示例中,目标任务的为进行神经网络训练,由于神经网络训练往往需要大量的内存,或是往往会尽量使用设备的所有内存,充分利用已有资源,目标任务在整个运行过程中预计所需内存大小可能均匀分布在某个内存大小范围内,例如500兆字节(Mebibyte,简称MB),则此时预设的第一阈值可以为500兆字节。
在又一个示例中,目标任务为进行神经网络推理计算,目标任务在整个运行过程中预计所需内存大小可能均匀分布在5兆字节,则预设的第一阈值可以为5兆字节。
在一个示例中,若内存申请装置判断出目标任务当前运行所需的内存大小小于预设的第一阈值,则表明该目标任务在整个运行过程中所需的内存符合预期,则内存申请装置可以判断目标任务的内存需求等级为低级。
在上述实施例二的基础上,在一种可选的实施方式中,步骤102,还包括:若所述目标任务当前运行所需的内存大小不小于预设的第一阈值,则查找所述目标任务所在设备的内存管理器,并获取所述设备当前未被使用的内存大小;根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级。
图3为本申请实施例提供的应用于神经网络的内存申请方法的流程图,如图3所示,在上述实施例二的基础上,在一种可选的实施方式中,所述根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级,包括以下步骤:
步骤201、判断所述目标任务当前运行所需的内存大小与所述设备当前未被使用的内存大小的比值,是否小于预设的第二阈值。
步骤202、若是,则判断所述目标任务的内存需求等级为中级。
步骤203、若否,则判断所述目标任务的内存需求等级为高级。
在本实施方式中,若内存申请装置判断出目标任务当前运行所需的内存大小不小于(也即大于等于)预设的第一阈值,则表明该目标任务在整个运行过程中所需的内存可能超出预期,因此需结合目标任务所在设备当前未被使用的(也即空闲的)内存大小进一步判断目标任务的内存需求等级。
具体地,内存申请装置首先可以查找目标任务所在设备的内存管理器,并获取设备当前未被使用的内存大小,接下来,内存申请装置可以判断目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值,是否小于预设的第二阈值。其中,预设的第二阈值可以为四分之一,或是其他合适的阈值,本实施例对此不做限定。
在一个示例中,若内存申请装置判断出目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值,小于预设的第二阈值,则表明该目标任务在整个运行过程中所需的内存大小小范围超出预期,则内存申请装置可以判断该目标任务的内存需求等级为中级。
在又一个示例中,若内存申请装置判断出目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值,不小于(也即大于等于)预设的第二阈值,则表明该目标任务在整个运行过程中所需的内存大范围超出预期,则内存申请装置可以判断该目标任务的内存需求等级为高级。
举例来说,若预设的第二阈值为四分之一,设备当前未被使用的内存大小为5千兆字节(Gibibyte,简称GB),在一种可能的情况中,目标任务当前运行所需的内存大小为1GB,则内存申请装置可以判断出目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值为五分之一,小于预设的第二阈值四分之一,则内存申请装置可以判断该目标任务的内存需求等级为中级。
在又一种可能的情况中,目标任务当前运行所需的内存大小为2GB,则内存申请装置可以判断出目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值为五分之二,大于预设的第二阈值四分之一,则内存申请装置可以判断该目标任务的内存需求等级为高级。
在上述实施例二的基础上,在一种可选的实施方式中,内存申请装置还可以根据目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的差值,判断目标任务的内存需求等级。
具体地,内存申请装置还可以判断目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的差值,是否大于预设的第三阈值,若是,则判断所述目标任务的内存需求等级为中级,若否,则判断所述目标任务的内存需求等级为高级。
此外,在上述实施例二的基础上,在又一种可选的实施方式中,内存申请装置还可以根据目标任务当前运行所需的内存大小以及设备当前已被使用的内存大小,判断目标任务的内存需求等级。
具体地,在一个示例中,内存申请装置可以判断目标任务当前运行所需的内存大小与设备当前已被使用的内存大小的比值,是否小于预设的第四阈值,若是,则判断所述目标任务的内存需求等级为中级,若否,则判断所述目标任务的内存需求等级为高级。
在又一个示例中,内存申请装置可以判断目标任务当前运行所需的内存大小与设备当前已被使用的内存大小的差值,是否大于预设的第五阈值,若是,则判断所述目标任务的内存需求等级为中级,若否,则判断所述目标任务的内存需求等级为高级。
在一个可选的实施例中,还可以根据包括但不限于程序已消耗内存、设备最大内存、程序以往运行经验值、设备上的程序运行数量、设备数量等因素来确定目标任务的内存需求等级,本申请对此不作限定。
在上述实施例二的基础上,在一种可选的实施方式中,步骤103,具体包括:若所述目标任务的内存需求等级为低级,则确定待申请的内存大小为第一内存大小;其中,所述第一内存大小大于等于预设的第一阈值;若所述目标任务的内存需求等级为中级,则确定待申请的内存大小为第二内存大小;其中,所述第二内存大小大于等于所述设备当前未被使用的内存大小与所述预设的第二阈值的乘积;若所述目标任务的内存需求等级为高级,则确定待申请的内存大小等于所述目标任务当前运行所需的内存大小。
在本实施方式中,在一个示例中,若内存申请装置判断出目标任务的内存需求等级为低级,则内存申请装置可以确定待申请的内存大小为第一内存大小。其中,第一内存大小可以大于等于预设的第一阈值。
举例来说,若预设的第一阈值为1MB,则第一内存大小可以为1MB或是其他大于1MB的合适的值,本实施例对此不做限定。
在又一个示例中,若内存申请装置判断出目标任务的内存需求等级为中级,则内存申请装置可以确定待申请的内存大小为第二内存大小。其中,第二内存大小大于等于设备当前未被使用的内存大小与预设的第二阈值的乘积。
举例来说,若预设的第二阈值为五分之一,设备当前未被使用的内存大小为5GB,则第二内存大小可以为1GB或是其他大于1GB的合适的值,本实施例对此不做限定。
在另一个示例中,若内存申请装置判断出目标任务的内存需求等级为高级,则表明该目标任务在整个运行过程中所需的内存较大,因此若为该目标任务申请大于其当前运行所需的内存大小的内存,可能会导致内存占用过多,从而影响其他程序的正常运行,因此,内存申请装置可以确定待申请的内存大小等于目标任务当前运行所需的内存大小。
实施例提供的应用于神经网络的内存申请方法,通过判断目标任务当前运行所需的内存大小是否小于预设的第一阈值,以及目标任务当前运行所需的内存大小与设备当前未被使用的内存大小的比值,是否小于预设的第二阈值,确定目标任务的内存需求等级,进而根据目标任务的内存需求等级,确定待申请的内存大小,从而可以使目标任务在运行过程中无需多次申请内存,有效避免内存空间的浪费。
实施例三
图4为本申请实施例提供的应用于神经网络的内存申请装置的结构示意图,如图4所示,本实施例提供的应用于神经网络的内存申请装置包括:接收模块41、判断模块42、确定模块43以及发送模块44。其中,所述接收模块41,用于接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小。所述判断模块42,用于根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级。所述确定模块43,用于根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小。所述发送模块44,用于向所述内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
本实施例提供的应用于神经网络的内存申请装置,接收目标任务发送的第一内存申请请求,其中,第一内存申请请求包括目标任务当前运行所需的内存大小,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定待申请的内存大小,向内存管理器发送第二内存申请请求,以使内存管理器为目标任务分配与待申请的内存大小相一致的内存。也就是说,在本申请实施例中,根据目标任务当前运行所需的内存大小,判断目标任务的内存需求等级,进而确定相应的需求等级所需的内存大小,也即待申请的内存大小,并向内存管理器申请该相应的需求等级所需的内存大小的内存,从而无需目标任务在运行过程中多次申请内存,进而优化了内存碎片,有效避免了内存空间的浪费。
可选实施方式中,所述判断模块42,还用于判断所述目标任务当前运行所需的内存大小是否小于预设的第一阈值;其中,所述预设的第一阈值由所述目标任务在整个运行过程中预计所需内存大小的分布情况确定;若所述目标任务当前运行所需的内存大小小于预设的第一阈值,则判断所述目标任务的内存需求等级为低级。
可选实施方式中,所述判断模块42,还用于若所述目标任务当前运行所需的内存大小不小于预设的第一阈值,则查找所述目标任务所在设备的内存管理器,并获取所述设备当前未被使用的内存大小;根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级。
可选实施方式中,所述判断模块42,还用于判断所述目标任务当前运行所需的内存大小与所述设备当前未被使用的内存大小的比值,是否小于预设的第二阈值;若是,则判断所述目标任务的内存需求等级为中级;若否,则判断所述目标任务的内存需求等级为高级。
可选实施方式中,所述确定模块43,还用于若所述目标任务的内存需求等级为低级,则确定待申请的内存大小为第一内存大小;其中,所述第一内存大小大于等于预设的第一阈值;若所述目标任务的内存需求等级为中级,则确定待申请的内存大小为第二内存大小;其中,所述第二内存大小大于等于所述设备当前未被使用的内存大小与所述预设的第二阈值的乘积;若所述目标任务的内存需求等级为高级,则确定待申请的内存大小等于所述目标任务当前运行所需的内存大小。
可选实施方式中,所述装置还包括:处理模块,用于基于所述目标任务所在设备的对齐要求,对所述目标任务当前运行所需的内存大小进行对齐处理。
可选实施方式中,所述判断模块42,还用于根据对齐处理后的所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级。
需要说明的是,本实施例提供的应用于神经网络的内存申请装置执行的技术方案和效果可以参见前述方法实施例的相关内容,在此不再赘述。
实施例四
图5为本申请的电子设备的结构示意图,如图5所示,本申请还提供了一种电子设备500,包括:存储器501和处理器502。
存储器501,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机执行指令。存储器501可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
处理器502,用于执行存储器501存放的程序。
其中,计算机程序存储在存储器501中,并被配置为由处理器502执行以实现本申请任意一个实施例提供的应用于神经网络的内存申请方法。相关说明可以对应参见附图中的步骤所对应的相关描述和效果进行理解,此处不做过多赘述。
其中,本实施例中,存储器501和处理器502通过总线连接。所述总线可以是工业标准体系结构(Industry Standard Architecture,简称为ISA)总线、外部设备互连(Peripheral Component Interconnect,简称为PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,简称为EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
实施例五
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现本申请任意一个实施例提供的应用于神经网络的内存申请方法。
实施例六
本申请实施例还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现本申请任意一个实施例提供应用于神经网络的内存申请方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
用于实施本申请的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程应用于神经网络的内存申请装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本申请的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本申请的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
依据以下条款可更好地理解前述内容:
条款A1.一种应用于神经网络的内存申请方法,包括:
接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
条款A2.根据条款A1所述的方法,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,包括:
判断所述目标任务当前运行所需的内存大小是否小于预设的第一阈值;其中,所述预设的第一阈值由所述目标任务在整个运行过程中预计所需内存大小的分布情况确定;
若所述目标任务当前运行所需的内存大小小于预设的第一阈值,则判断所述目标任务的内存需求等级为低级。
条款A3.根据条款A2所述的方法,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,还包括:
若所述目标任务当前运行所需的内存大小不小于预设的第一阈值,则查找所述目标任务所在设备的内存管理器,并获取所述设备当前未被使用的内存大小;
根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级。
条款A4.根据条款A3所述的方法,所述根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级,包括:
判断所述目标任务当前运行所需的内存大小与所述设备当前未被使用的内存大小的比值,是否小于预设的第二阈值;
若是,则判断所述目标任务的内存需求等级为中级;
若否,则判断所述目标任务的内存需求等级为高级。
条款A5.根据条款A4所述的方法,所述根据所述目标任务的内存需求等级,确定待申请的内存大小,包括:
若所述目标任务的内存需求等级为低级,则确定待申请的内存大小为第一内存大小;其中,所述第一内存大小大于等于预设的第一阈值;
若所述目标任务的内存需求等级为中级,则确定待申请的内存大小为第二内存大小;其中,所述第二内存大小大于等于所述设备当前未被使用的内存大小与所述预设的第二阈值的乘积;
若所述目标任务的内存需求等级为高级,则确定待申请的内存大小等于所述目标任务当前运行所需的内存大小。
条款A6.根据条款A1-A5任一项所述的方法,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级之前,还包括:
基于所述目标任务所在设备的对齐要求,对所述目标任务当前运行所需的内存大小进行对齐处理。
条款A7.根据条款A6所述的方法,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,包括:
根据对齐处理后的所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级。
条款A8.一种应用于神经网络的内存申请装置,包括:
接收模块,用于接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
判断模块,用于根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
确定模块,用于根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
发送模块,用于向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
条款A9.一种电子设备,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如条款A1-A7任一项所述的方法。
条款A10.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如条款A1-A7任一项所述的方法。
条款A11.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如条款A1-A7任一项所述的方法。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。
Claims (11)
1.一种应用于神经网络的内存申请方法,其特征在于,包括:
接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,包括:
判断所述目标任务当前运行所需的内存大小是否小于预设的第一阈值;其中,所述预设的第一阈值由所述目标任务在整个运行过程中预计所需内存大小的分布情况确定;
若所述目标任务当前运行所需的内存大小小于预设的第一阈值,则判断所述目标任务的内存需求等级为低级。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,还包括:
若所述目标任务当前运行所需的内存大小不小于预设的第一阈值,则查找所述目标任务所在设备的内存管理器,并获取所述设备当前未被使用的内存大小;
根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标任务当前运行所需的内存大小以及所述设备当前未被使用的内存大小,判断所述目标任务的内存需求等级,包括:
判断所述目标任务当前运行所需的内存大小与所述设备当前未被使用的内存大小的比值,是否小于预设的第二阈值;
若是,则判断所述目标任务的内存需求等级为中级;
若否,则判断所述目标任务的内存需求等级为高级。
5.根据权利要求4所述的方法,其特征在于,所述根据所述目标任务的内存需求等级,确定待申请的内存大小,包括:
若所述目标任务的内存需求等级为低级,则确定待申请的内存大小为第一内存大小;其中,所述第一内存大小大于等于预设的第一阈值;
若所述目标任务的内存需求等级为中级,则确定待申请的内存大小为第二内存大小;其中,所述第二内存大小大于等于所述设备当前未被使用的内存大小与所述预设的第二阈值的乘积;
若所述目标任务的内存需求等级为高级,则确定待申请的内存大小等于所述目标任务当前运行所需的内存大小。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级之前,还包括:
基于所述目标任务所在设备的对齐要求,对所述目标任务当前运行所需的内存大小进行对齐处理。
7.根据权利要求6所述的方法,其特征在于,所述根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级,包括:
根据对齐处理后的所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级。
8.一种应用于神经网络的内存申请装置,其特征在于,包括:
接收模块,用于接收目标任务发送的第一内存申请请求;其中,所述第一内存申请请求包括目标任务当前运行所需的内存大小;
判断模块,用于根据所述目标任务当前运行所需的内存大小,判断所述目标任务的内存需求等级;其中,所述内存需求等级包括低级、中级以及高级;
确定模块,用于根据所述目标任务的内存需求等级,确定待申请的内存大小;其中,不同的内存需求等级对应不同的待申请的内存大小;
发送模块,用于向内存管理器发送第二内存申请请求,以使所述内存管理器为所述目标任务分配与所述待申请的内存大小相一致的内存;其中,所述第二内存申请请求包括待申请的内存大小。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1-7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1-7中任一项所述的方法。
11.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111518556.6A CN116339959A (zh) | 2021-12-13 | 2021-12-13 | 应用于神经网络的内存申请方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111518556.6A CN116339959A (zh) | 2021-12-13 | 2021-12-13 | 应用于神经网络的内存申请方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116339959A true CN116339959A (zh) | 2023-06-27 |
Family
ID=86882718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111518556.6A Pending CN116339959A (zh) | 2021-12-13 | 2021-12-13 | 应用于神经网络的内存申请方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116339959A (zh) |
-
2021
- 2021-12-13 CN CN202111518556.6A patent/CN116339959A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11487568B2 (en) | Data migration based on performance characteristics of memory blocks | |
CN110830234B (zh) | 一种用户流量分配方法及装置 | |
CN111651236A (zh) | 虚拟机内存优化处理方法及相关装置 | |
CN113722248B (zh) | 命令处理方法及命令处理装置 | |
CN112148418A (zh) | 用于访问数据的方法、装置、设备和介质 | |
US11886743B2 (en) | Method for enhancing quality of service of solid-state drive and solid-state drive | |
CN109828790B (zh) | 一种基于申威异构众核处理器的数据处理方法和系统 | |
US10474383B1 (en) | Using overload correlations between units of managed storage objects to apply performance controls in a data storage system | |
CN112463356A (zh) | Gpu堆管理器内存地址分配方法、系统、终端及存储介质 | |
CN110955390B (zh) | 数据处理方法、装置、电子设备和存储介质 | |
CN112269656A (zh) | 一种基于多核处理器的应用配置方法、装置和系统 | |
CN110209354B (zh) | 用于处理数据的方法、装置、设备和介质 | |
CN110580195A (zh) | 一种基于内存热插拔的内存分配方法和装置 | |
CN111338981B (zh) | 一种内存防碎片方法、系统及储存介质 | |
CN110489356B (zh) | 信息处理方法、装置、电子设备及存储介质 | |
CN111143072B (zh) | 用户态程序内存分配方法、系统及相关组件 | |
CN116339959A (zh) | 应用于神经网络的内存申请方法、装置及设备 | |
CN111159009A (zh) | 一种日志服务系统的压力测试方法及装置 | |
CN111708715B (zh) | 内存分配方法、内存分配装置及终端设备 | |
CN111427620A (zh) | 嵌入式系统的启动方法及装置 | |
US10691621B2 (en) | Data cache segregation for spectre mitigation | |
CN111679909A (zh) | 数据处理方法、装置及终端设备 | |
CN112965789B (zh) | 一种虚拟机内存空间处理方法、装置、设备和介质 | |
CN116467235B (zh) | 一种基于dma的数据处理方法、装置、电子设备及介质 | |
US20230176893A1 (en) | Method and apparatus for migrating virtual machine in memory-disaggregated environment |
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 |