CN109815162A - 内存管理方法、装置、移动终端及存储介质 - Google Patents
内存管理方法、装置、移动终端及存储介质 Download PDFInfo
- Publication number
- CN109815162A CN109815162A CN201910082246.0A CN201910082246A CN109815162A CN 109815162 A CN109815162 A CN 109815162A CN 201910082246 A CN201910082246 A CN 201910082246A CN 109815162 A CN109815162 A CN 109815162A
- Authority
- CN
- China
- Prior art keywords
- memory
- tensor
- unit
- storage allocation
- memory block
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Memory System (AREA)
Abstract
本申请实施例公开了一种内存管理方法、装置、移动终端及存储介质,该方法包括:接收第一Tensor单元发送的内存申请请求,内存申请请求携带需要申请的内存空间,第一Tensor单元为多个张量Tensor单元中的任一个;检测需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;若需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量,对已分配内存执行内存整理操作。本申请实施例可以在神经网络算法框架下避免内存浪费。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种内存管理方法、装置、移动终端及存储介质。
背景技术
目前的神经网络算法框架(比如,Tensorflow Lite)中,可以支持Android和IOS,其在进行内存分配时,由于复杂神经网络的张量(Tensor)很多,所需占用内存大小不一,如果频繁的有小内存的分配和释放,会在整个内存块中形成一些内存碎片,而这些内存碎片无法再复用,导致内存浪费。
发明内容
本申请实施例提供了一种内存管理方法、装置、移动终端及存储介质,可以在神经网络算法框架下避免内存浪费。
第一方面,本申请实施例提供一种基于神经网络算法框架的内存管理方法,所述神经网络算法框架包括多个张量Tensor单元,其特征在于,所述方法包括:
接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;
检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;
若所述需要申请的内存空间大于所述已分配内存的当前最大可用空白内存块的容量,对所述已分配内存执行内存整理操作。
第二方面,本申请实施例提供了一种内存管理装置,所述内存管理装置应用于神经网络算法框架,所述神经网络算法框架包括多个张量Tensor单元,所述内存管理装置包括:
接收单元,用于接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;
检测单元,用于检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;
内存整理单元,用于在所述检测单元检测到所述需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量的情况下,对所述已分配内存执行内存整理操作。
第三方面,本申请实施例提供一种移动终端,包括处理器、存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,上述程序包括用于执行本申请实施例第一方面中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中所描述的基于神经网络算法框架的内存管理方法,该神经网络算法框架包括内存管理单元和多个张量Tensor单元,内存管理单元接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;内存管理单元检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;若所述需要申请的内存空间大于所述已分配内存的当前最大可用空白内存块的容量,内存管理单元对所述已分配内存执行内存整理操作。本申请实施例可以在Tensor单元向内存管理单元申请内存时,在已分配内存的当前最大可用空白内存块无法满足该Tensor单元的内存申请需求时,执行一次内存整理操作,以使已分配内存空出来的内存块能够满足该Tensor单元的内存申请需求,避免频繁向操作系统申请更大的内存,可以在神经网络算法框架下避免内存浪费,还可以节省由于频繁向操作系统申请和释放内存所需的时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例公开的一种神经网络算法框架;
图2是本申请实施例公开的一种基于神经网络算法框架的内存管理方法的流程示意图;
图3是本申请实施例公开的另一种基于神经网络算法框架的内存管理方法的流程示意图;
图4是本申请实施例公开的一种内存整理的示意图;
图5是本申请实施例公开的一种内存管理装置的结构示意图;
图6是本申请实施例公开的一种移动终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的移动终端可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为移动终端。
下面对本申请实施例进行详细介绍。
请参阅图1,图1是本申请实施例公开的一种神经网络算法框架,该神经网络算法框架包括内存管理单元和多个张量Tensor单元。其中,Tensor单元,也可以称为Tensor,或张量,或张量单元。Tensor单元用于进行神经网络的推理计算。Tensor单元可以向内存管理单元申请内存,Tensor单元也可以向内存管理单元释放内存。本申请的神经网络算法框架可以应用于手机、平板电脑等移动终端中。移动终端的内存资源比较宝贵,该神经网络算法框架中的Tensor单元需要经常的进行内存申请与内存释放,如果Tensor单元频繁向移动终端的操作系统申请内存与释放内存,会耗费较多的时间,导致该神经网络算法框架在进行网络推理时耗费时间较多,导致推理速度变慢。本申请采用的神经网络算法框架在向操作系统申请内存时会先申请一大块内存,然后,该大块内存由内存管理单元进行管理,Tensor单元只需要向内存管理单元申请内存和释放内存,无需向操作系统频繁申请内存与释放内存,可以提高神经网络算法框架的网络推理时间。本申请的神经网络算法框架可以为TensorFlow或TensorFlow Lite。其中,TensorFlow是一个在个人计算机(personalcomputer,PC)端运行的用于训练以及运行神经网络模型的框架。ensorFlow Lite是一个在移动端运行的用于训练以及运行神经网络模型的框架,该移动端可以运行IOS系统或安卓(Android)系统。
请参阅图2,图2是本申请实施例公开的一种基于神经网络算法框架的内存管理方法的流程示意图,如图2所示,该基于神经网络算法框架的内存管理方法包括如下步骤。
201,内存管理单元接收第一Tensor单元发送的内存申请请求,该内存申请请求携带需要申请的内存空间,该第一Tensor单元为多个张量Tensor单元中的任一个。
本申请实施例中,神经网络算法框架包括内存管理单元和多个张量Tensor单元。神经网络算法框架在进行神经网络计算时,Tensor单元需要频繁的进行内存申请与内存释放。Tensor单元在进行内存申请时,直接向内存管理单元进行申请,无需向操作系统频繁申请内存与释放内存,可以提高神经网络算法框架的网络推理时间。
202,内存管理单元检测需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量。
203,若需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量,内存管理单元对已分配内存执行内存整理操作。
本申请实施例中,已分配内存是移动终端的操作系统分配给神经网络计算框架进行神经网络计算与推理的一个大块内存。该大块内存专门用于进行神经网络计算与推理。内存管理单元可以根据该神经网络计算框架的Tensor单元的数量向操作系统申请该已分配内存。该已分配内存的大小与该神经网络计算框架的Tensor单元的数量相关,一般而言,该神经网络计算框架的Tensor单元的数量越大,该已分配内存越大。
该大块内存是地址连续的内存。已分配内存可以包括很多个小的内存块,这些内存块可以处于占用状态或者空白状态。如果内存块处于占用状态,则该内存块为已占用内存块;如果内存块处于空白状态,则该内存块为空白内存块。对于已占用内存块,内存管理单元在接收到针对该已占用内存块的释放请求时,会将该已占用内存块进行内存释放,该已占用内存块会变为空白内存块,将该内存块的状态从已占用状态修改为空白状态。对于空白内存块,内存管理单元在接收到Tensor单元的内存申请请求时,选择合适的空白内存块分配给该Tensor单元使用,该空白内存块会变为已占用内存块,将该内存块的状态从空白状态修改为已占用状态。
其中,内存管理单元在接收到Tensor单元的内存申请请求时,选择合适的空白内存块分配给该Tensor单元使用,具体为:
内存管理单元在接收到Tensor单元的内存申请请求时,从已分配内存中选择大于需要申请的内存空间的最小可用空白内存块。
如果已分配内存中存在大于需要申请的内存空间的可用空白内存块,内存管理单元从可用空白内存块中选择大于该需要申请的内存空间的最小可用空白内存块给该Tensor单元使用;
如果已分配内存中不存在大于需要申请的内存空间的可用空白内存块,也即,该需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量,内存管理单元对已分配内存执行内存整理操作。
其中,内存管理单元对已分配内存执行内存整理操作,具体是:内存管理单元对该已分配内存的已占用的内存块之间的间隙进行压缩,以增大该已分配内存的可用空白内存块的容量。其中,内存管理单元可以将该已分配内存的已占用的内存块朝一个方向进行压缩,以使另外一个方向空出更大的空白内存块。可选的,内存管理单元也可以将该已分配内存的已占用的内存块分为两组,一组向第一方向进行压缩,另一组向与第一方向相反的方向进行压缩,以使该已分配内存的中间空出更大的空白内存块。
本申请实施例中,可以在Tensor单元向内存管理单元申请内存时,在已分配内存的当前最大可用空白内存块无法满足该Tensor单元的内存申请需求时,执行一次内存整理操作,以使已分配内存空出来的内存块能够满足该Tensor单元的内存申请需求,避免频繁向操作系统申请更大的内存,可以在神经网络算法框架下避免内存浪费,还可以节省由于频繁向操作系统申请和释放内存所需的时间。
请参阅图3,图3是本申请实施例公开的另一种基于神经网络算法框架的内存管理方法的流程示意图,图3是在图2的基础上进一步优化得到的。如图3所示,该基于神经网络算法框架的内存管理方法包括如下步骤。
301,内存管理单元接收第一Tensor单元发送的内存申请请求,该内存申请请求携带需要申请的内存空间,该第一Tensor单元为多个张量Tensor单元中的任一个。
302,内存管理单元检测需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量。
303,若需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量,内存管理单元对已分配内存执行内存整理操作。
本申请实施例中的步骤301至步骤303的具体实施请参见图2所示的步骤201至步骤203,此处不再赘述。
可选的,步骤303中,内存管理单元对已分配内存执行内存整理操作,具体可以为:
内存管理单将已分配内存中已占用的内存块朝已分配内存的首位内存块的方向进行压缩,以使已分配内存中相邻的内存块之间的内存间隙小于预设阈值;
内存管理单调整已分配内存中已占用的内存块对应的内存索引;其中,第一内存索引包括第一内存块的起始内存地址和第一内存块的内存长度,第一内存块为已占用的内存块中的任一个,第一内存索引为与第一内存块对应的内存索引。
本申请实施例中,内存索引可以用结构体指针来表示。内存索引包括对应的已占用内存块的起始内存地址和该已占用内存块的内存长度。其中,内存长度也可以称为内存大小。相邻的内存块之间的内存间隙指的是相邻内存块之间的无法被利用的空白内存块的大小。
下面以图4为例来描述内存整理的具体过程。请参阅图4,图4是本申请实施例公开的一种内存整理的示意图。图4中,已分配内存为内存管理单元向操作系统申请的一整块连续内存。“内存1”、“内存2”、“内存3”、“内存4”表示在已分配的内存中所占内存的位置,为已占用内存块。已分配的内存中未被“内存1”、“内存2”、“内存3”、“内存4”占据的位置为空白内存块。内存索引中的0-3表示内存块的顺序,内存索引可以用一个结构体指针来表示每个内存块的起始地址和所占用的内存长度。
从图4可以看出,在没有执行内存整理之前,“内存1”、“内存2”、“内存3”、“内存4”这些内存块之间的空白内存块较小,可能无法满足第一Tensor单元的内存申请需求,此时执行内存整理操作,内存管理单将已分配内存中已占用的内存块朝已分配内存的首位内存块(图4中的“内存1”)的方向进行压缩,以使已分配内存中相邻的内存块之间的内存间隙小于预设阈值。其中预设阈值为相邻内存块允许的最小间隔。相应的,图4中的“内存1”、“内存2”、“内存3”、“内存4”对应的内存索引也发生相应的变化(比如,内存索引中起始内存地址发生了变化)。
举例来说,已分配的内存可以按照0-99进行编号,“内存1”是编号为5-20的内存块、“内存2”是编号为30-45的内存块、“内存3”是编号为55-70的内存块、“内存4”是编号为80-95的内存块。“内存1”对应的内存索引中包括“内存1”的起始内存地址(比如,为5)和内存长度(比如,为16),“内存2”对应的内存索引中包括“内存2”的起始内存地址(比如,为30)和内存长度(比如,为16),“内存3”对应的内存索引中包括“内存3”的起始内存地址(比如,为55)和内存长度(比如,为16),“内存4”对应的内存索引中包括“内存4”的起始内存地址(比如,为80)和内存长度(比如,为16)。可以看出,已分配的内存的空白内存块分别是编号为0-4的第一空白内存块、编号为21-29的第二空白内存块、编号为46-54的第三空白内存块、编号为71-79的第四空白内存块、编号为96-99的第五空白内存块。其中,第一空白内存块的内存长度为5,第二空白内存块的内存长度为9,第三空白内存块的内存长度为9,第四空白内存块的内存长度为9,第五空白内存块的内存长度为4。如果第一Tensor单元的申请的内存大小为20,则已分配的内存中没有符合要求的空白内存块。在执行内存整理操作后,“内存1”的编号变为1-16的内存块、“内存2”的编号变为18-33的内存块、“内存3”的编号变为35-50的内存块、“内存4”的编号变为52-67的内存块。则已分配的内存中空白内存块的编号为68-99,位于已分配的内存中的末位,也可以称为末位空白内存块,其大小为32,完全可以满足第一Tensor单元的申请需求,则可以将该空白内存块中编号为69-88的内存块分配给第一Tensor单元。可见,当执行内存整理操作后,“内存1”对应的内存索引中的起始内存地址从5变为1,“内存2”对应的内存索引中的起始内存地址从30变为18,“内存3”对应的内存索引中的起始内存地址从55变为35,“内存4”对应的内存索引中的起始内存地址从80变为52。“内存1”、“内存2”、“内存3”、“内存4”对应的内存索引中的内存长度则不会由于内存整理而发生变化。
304,内存管理单元检测需要申请的内存空间是否小于或等于已分配内存的末位空白内存块的容量。
305,若需要申请的内存空间小于或等于已分配内存的末位空白内存块的容量,内存管理单元将末位空白内存块分配给第一Tensor单元。
其中,内存管理单元将末位空白内存块分配给第一Tensor单元,可以是将整个末位空白内存块分配给第一Tensor单元,也可以将末位空白内存块的其中一段连续的内存空间分配给第一Tensor单元,具体情况依据需要申请的内存空间与末位空白内存块的容量大小。举例来说,如果需要申请的内存空间等于或微小于已分配内存的末位空白内存块的容量,则可以将整个末位空白内存块分配给第一Tensor单元;如果需要申请的内存空间远小于已分配内存的末位空白内存块的容量,则将末位空白内存块的其中一段连续的内存空间分配给第一Tensor单元(具体的,可以将末位空白内存块中靠近已分配的相邻内存块的一段连续的内存空间分配给第一Tensor单元)。
本申请实施例中,内存整理操作是将已分配内存中已占用的内存块朝已分配内存的首位内存块的方向进行压缩,从而产生末位空白内存块,使得末位空白内存块的容量大于未执行内存整理之前的任意一个空白内存块的容量。如果需要申请的内存空间小于或等于已分配内存的末位空白内存块的容量,内存管理单元将末位空白内存块分配给第一Tensor单元。采用内存整理之后,可以得到更大的空白内存块,避免频繁向操作系统申请更大的内存,可以在神经网络算法框架下避免内存浪费,还可以节省由于频繁向操作系统申请和释放内存所需的时间。
可选的,步骤305中,内存管理单元将末位空白内存块分配给第一Tensor单元,具体为:
内存管理单元将末位空白内存块对应的内存索引发送至第一Tensor单元。
本申请实施例中,在为第一Tensor单元分配内存时,内存管理单元只需将末位空白内存块对应的内存索引发送至第一Tensor单元,第一Tensor单元即可根据该末位空白内存块对应的内存索引找到该末位空白内存块的起始内存地址和中止内存地址,将第一Tensor单元对应的内容存入该末位空白内存块。具体的,由于该末位空白内存块的内存地址是连续的,可以根据该内存索引中包括的该末位空白内存块的起始内存地址和内存长度确定该末位空白内存块的中止内存地址,进而得到该末位空白内存块的起始内存地址和中止内存地址。可见,在已分配内存中进行内存申请只需返回内存索引即可,与向操作系统申请内存相比,可以大大的节省内存分配时间,进而提高神经网络算法框架的网络推理时间。
可选的,图3所示的方法流程还可以包括如下步骤:
306,若需要申请的内存空间大于已分配内存的末位空白内存块的容量,内存管理单元向操作系统申请分配目标大块内存,该目标大块内存大于或等于已分配内存与需要申请的内存空间的内存大小之和。
307,内存管理单元将存储在已分配内存的内容复制到目标大块内存,释放已分配内存。
本申请实施例中,如果需要申请的内存空间大于已分配内存的末位空白内存块的容量,表明该已分配内存无法满足第一Tensor单元的内存申请需求,内存管理单元需要重新向操作系统申请分配一块大于当前分配的已分配内存的大块内存,以满足神经网络算法框架的计算需求。具体的,重新申请的目标大块内存的大小与该神经网络算法框架的Tensor单元的数量、该神经网络算法框架的算法复杂度相关。一般而言,神经网络算法框架的Tensor单元的数量越大,该神经网络算法框架的算法复杂度越高,重新申请的目标大块内存越大。
在重新申请目标大块内存之后,内存管理单元将存储在已分配内存的内容复制到目标大块内存,释放已分配内存。后续的Tensor单元如果需要申请内存,可以向内存管理单元申请,该内存管理单元可以从目标大块内存中选取空白内存块分配给Tensor单元。
本申请实施例中,当内存管理单元管理的已分配内存无法满足神经网络算法框架的计算需求时,内存管理单元管理重新向操作系统申请分配更大的目标大块内存,以满足该神经网络算法框架的计算需求。该目标大块内存可以满足该神经网络算法框架的所有Tensor单元的内存申请需求,无需频繁向操作系统申请内存,可以节省由于频繁向操作系统申请和释放内存所需的时间。
可选的,图3所示的方法流程还可以包括如下步骤:
内存管理单元接收第二Tensor单元发送的内存释放请求,该内存释放请求携带需要释放的内存块对应的内存索引,将需要释放的内存块对应的内存索引标记为空白状态,第二Tensor单元为多个张量Tensor单元中的任一个。
本申请实施例中,在为第二Tensor单元释放内存时,内存管理单元只需将第二Tensor单元发送的内存释放请求携带的需要释放的内存块对应的内存索引标记为空白状态即可进行内存释放。与向操作系统释放内存相比,可以大大的节省内存释放时间,进而提高神经网络算法框架的网络推理时间。
可选的,图3所示的方法流程还可以包括如下步骤:
内存管理单元通过已分配的内存的用于内存管理的应用程序编程接口API记录第一Tensor单元所占用的内存大小;
内存管理单元接收针对第一程序的内存占用查询指令,通过已分配的内存的用于内存管理的应用程序编程接口API获取第一程序使用的所有Tensor单元所占用的内存大小。
本申请实施例中,由于传统的申请和释放内存的方式,因为是调用的系统的接口,研发人员是无法改写的。如果研发人员需要获取整个程序占用的内存,需要在每一处内存申请和内存释放的位置添加记录,但是在程序中申请和释放内存的地方非常多,这种方式会让代码结构变得很混乱。本申请实施例中使用内存管理单元(Simple Memory Arena)统一管理内存,只需要在的申请和释放的应用程序编程接口API那里添加记录就可以记录整个程序的内存记录,非常容易调试。
当程序出现bug时,可以通过内存管理单元的Debug程序调试工具看出程序占用内存,判断是否内存过大,是否有内存泄漏。
内存管理单元可以通过Profile程序调试工具查看每一个内存申请的模块(比如,Tensor单元)所占用的内存,用于性能调优,可以排查是否有哪些不需要申请的内存可以优化掉。
本申请的内存管理方法便于扩展,可以查看程序占用的内存,判断是否内存过大,是否有内存泄漏,可以进行内存优化。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,移动终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对移动终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图5,图5是本申请实施例公开的一种内存管理装置的结构示意图。如图5所示,该内存管理装置应用于神经网络算法框架,该神经网络算法框架包括多个张量Tensor单元,该内存管理装置500包括接收单元501、检测单元502以及内存整理单元503,其中:
接收单元501,用于接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;
检测单元502,用于检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;
内存整理单元503,用于在所述检测单元502检测到所述需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量的情况下,对所述已分配内存执行内存整理操作。
可选的,该内存管理装置500还可以包括内存分配单元504。
检测单元502,还用于在内存整理单元503对所述已分配内存执行内存整理操作之后,检测所述需要申请的内存空间是否小于或等于所述已分配内存的末位空白内存块的容量;
内存分配单元504,用于在检测单元502检测到所述需要申请的内存空间小于或等于所述已分配内存的末位空白内存块的容量的情况下,将所述末位空白内存块分配给所述第一Tensor单元。
可选的,该内存管理装置500还可以包括内存申请单元505和内存释放单元506。
内存申请单元505,用于在检测单元502检测到所述需要申请的内存空间大于所述已分配内存的末位空白内存块的容量的情况下,向操作系统申请分配目标大块内存,所述目标大块内存大于或等于所述已分配内存与所述需要申请的内存空间的内存大小之和;
内存释放单元506,用于将存储在所述已分配内存的内容复制到所述目标大块内存,释放所述已分配内存。
可选的,内存整理单元503对所述已分配内存执行内存整理操作,具体为:将所述已分配内存中已占用的内存块朝所述已分配内存的首位内存块的方向进行压缩,以使所述已分配内存中相邻的内存块之间的内存间隙小于预设阈值;调整所述已分配内存中已占用的内存块对应的内存索引;其中,第一内存索引包括第一内存块的起始内存地址和所述第一内存块的内存长度,所述第一内存块为所述已占用的内存块中的任一个,所述第一内存索引为与所述第一内存块对应的内存索引。
可选的,内存分配单元504将所述末位空白内存块分配给所述第一Tensor单元,具体为:将所述末位空白内存块对应的内存索引发送至所述第一Tensor单元。
可选的,接收单元501,还用于接收第二Tensor单元发送的内存释放请求,所述内存释放请求携带需要释放的内存块对应的内存索引,将所述需要释放的内存块对应的内存索引标记为空白状态,所述第二Tensor单元为所述多个张量Tensor单元中的任一个。
可选的,该内存管理装置500还可以包括记录单元507和获取单元508。
记录单元507,用于通过所述已分配的内存的用于内存管理的应用程序编程接口API记录所述第一Tensor单元所占用的内存大小;
接收单元501,还用于接收针对第一程序的内存占用查询指令;
获取单元508,用于通过所述已分配的内存的用于内存管理的应用程序编程接口API获取所述第一程序使用的所有Tensor单元所占用的内存大小。
其中,内存管理装置500可以是图1至图4中的内存管理单元。
其中,图5的接收单元501可以是通信接口,检测单元502、内存整理单元503、内存分配单元504、内存申请单元505、内存释放单元506、记录单元507和获取单元508可以是处理器,图5所示的内存管理装置还可以包括存储单元,该存储单元可以是存储器(比如,非易失性存储器)。
实施图5所示的内存管理装置,可以在Tensor单元向内存管理单元申请内存时,在已分配内存的当前最大可用空白内存块无法满足该Tensor单元的内存申请需求时,执行一次内存整理操作,以使已分配内存空出来的内存块能够满足该Tensor单元的内存申请需求,避免频繁向操作系统申请更大的内存,可以在神经网络算法框架下避免内存浪费,还可以节省由于频繁向操作系统申请和释放内存所需的时间。
请参阅图6,图6是本申请实施例公开的一种移动终端的结构示意图。如图6所示,该移动终端600包括处理器601和存储器602,其中,移动终端600还可以包括总线603,处理器601和存储器602可以通过总线603相互连接,总线603可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,简称EISA)总线等。总线603可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,移动终端600还可以包括输入输出设备604,输入输出设备604可以包括显示屏,例如液晶显示屏。存储器602用于存储包含指令的一个或多个程序;处理器601用于调用存储在存储器602中的指令执行上述图2至图3中的部分或全部方法步骤。
实施图6所示的移动终端,可以在Tensor单元向内存管理单元申请内存时,在已分配内存的当前最大可用空白内存块无法满足该Tensor单元的内存申请需求时,执行一次内存整理操作,以使已分配内存空出来的内存块能够满足该Tensor单元的内存申请需求,避免频繁向操作系统申请更大的内存,可以在神经网络算法框架下避免内存浪费,还可以节省由于频繁向操作系统申请和释放内存所需的时间。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种基于神经网络算法框架的内存管理方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种基于神经网络算法框架的内存管理方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于神经网络算法框架的内存管理方法,所述神经网络算法框架包括多个张量Tensor单元,其特征在于,所述方法包括:
接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;
检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;
若所述需要申请的内存空间大于所述已分配内存的当前最大可用空白内存块的容量,对所述已分配内存执行内存整理操作。
2.根据权利要求1所述的方法,其特征在于,所述对所述已分配内存执行内存整理操作之后,所述方法还包括:
检测所述需要申请的内存空间是否小于或等于所述已分配内存的末位空白内存块的容量;
若所述需要申请的内存空间小于或等于所述已分配内存的末位空白内存块的容量,将所述末位空白内存块分配给所述第一Tensor单元。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述需要申请的内存空间大于所述已分配内存的末位空白内存块的容量,向操作系统申请分配目标大块内存,所述目标大块内存大于或等于所述已分配内存与所述需要申请的内存空间的内存大小之和;
将存储在所述已分配内存的内容复制到所述目标大块内存,释放所述已分配内存。
4.根据权利要求2或3所述的方法,其特征在于,所述对所述已分配内存执行内存整理操作,包括:
将所述已分配内存中已占用的内存块朝所述已分配内存的首位内存块的方向进行压缩,以使所述已分配内存中相邻的内存块之间的内存间隙小于预设阈值;
调整所述已分配内存中已占用的内存块对应的内存索引;其中,第一内存索引包括第一内存块的起始内存地址和所述第一内存块的内存长度,所述第一内存块为所述已占用的内存块中的任一个,所述第一内存索引为与所述第一内存块对应的内存索引。
5.根据权利要求4所述的方法,其特征在于,所述将所述末位空白内存块分配给所述第一Tensor单元,包括:
将所述末位空白内存块对应的内存索引发送至所述第一Tensor单元。
6.根据权利要求1~5任一项所述的方法,其特征在于,所述方法还包括:
接收第二Tensor单元发送的内存释放请求,所述内存释放请求携带需要释放的内存块对应的内存索引,将所述需要释放的内存块对应的内存索引标记为空白状态,所述第二Tensor单元为所述多个张量Tensor单元中的任一个。
7.根据权利要求1~6任一项所述的方法,其特征在于,所述方法还包括:
通过所述已分配的内存的用于内存管理的应用程序编程接口API记录所述第一Tensor单元所占用的内存大小;
接收针对第一程序的内存占用查询指令,通过所述已分配的内存的用于内存管理的应用程序编程接口API获取所述第一程序使用的所有Tensor单元所占用的内存大小。
8.一种内存管理装置,其特征在于,所述内存管理装置应用于神经网络算法框架,所述神经网络算法框架包括多个张量Tensor单元,所述内存管理装置包括:
接收单元,用于接收第一Tensor单元发送的内存申请请求,所述内存申请请求携带需要申请的内存空间,所述第一Tensor单元为所述多个张量Tensor单元中的任一个;
检测单元,用于检测所述需要申请的内存空间是否小于或等于已分配内存的当前最大可用空白内存块的容量;
内存整理单元,用于在所述检测单元检测到所述需要申请的内存空间大于已分配内存的当前最大可用空白内存块的容量的情况下,对所述已分配内存执行内存整理操作。
9.一种移动终端,其特征在于,包括处理器以及存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,所述程序包括用于执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-7任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082246.0A CN109815162A (zh) | 2019-01-28 | 2019-01-28 | 内存管理方法、装置、移动终端及存储介质 |
PCT/CN2020/072876 WO2020156259A1 (zh) | 2019-01-28 | 2020-01-17 | 内存管理方法、装置、移动终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910082246.0A CN109815162A (zh) | 2019-01-28 | 2019-01-28 | 内存管理方法、装置、移动终端及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109815162A true CN109815162A (zh) | 2019-05-28 |
Family
ID=66605598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910082246.0A Pending CN109815162A (zh) | 2019-01-28 | 2019-01-28 | 内存管理方法、装置、移动终端及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109815162A (zh) |
WO (1) | WO2020156259A1 (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110347506A (zh) * | 2019-06-28 | 2019-10-18 | Oppo广东移动通信有限公司 | 基于lstm的数据处理方法、装置、存储介质与电子设备 |
CN111090521A (zh) * | 2019-12-10 | 2020-05-01 | Oppo(重庆)智能科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
WO2020156259A1 (zh) * | 2019-01-28 | 2020-08-06 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111984400A (zh) * | 2020-07-17 | 2020-11-24 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN112199190A (zh) * | 2020-07-31 | 2021-01-08 | 厦门星宸科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN112256440A (zh) * | 2020-12-23 | 2021-01-22 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
WO2021093507A1 (zh) * | 2019-11-11 | 2021-05-20 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
CN112925727A (zh) * | 2021-03-16 | 2021-06-08 | 杭州慧芯达科技有限公司 | Tensor高速缓存及访问结构及其方法 |
CN113485832A (zh) * | 2021-07-09 | 2021-10-08 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
CN113791910A (zh) * | 2021-09-22 | 2021-12-14 | 维沃移动通信有限公司 | 内存分配方法、内存分配装置、电子设备和可读存储介质 |
CN114327867A (zh) * | 2021-11-29 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种内存资源的处理方法、装置、电子设备及存储介质 |
CN114518962A (zh) * | 2022-04-15 | 2022-05-20 | 北京奥星贝斯科技有限公司 | 内存的管理方法及装置 |
CN114741208A (zh) * | 2022-06-13 | 2022-07-12 | 北京智芯微电子科技有限公司 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
CN115688893A (zh) * | 2022-10-19 | 2023-02-03 | 北京百度网讯科技有限公司 | 内存调度方法及装置、电子设备和存储介质 |
WO2023082542A1 (zh) * | 2022-02-28 | 2023-05-19 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
CN117785759A (zh) * | 2024-02-28 | 2024-03-29 | 北京壁仞科技开发有限公司 | 数据存储方法、数据读取方法、电子设备和存储介质 |
US12026604B2 (en) | 2019-11-11 | 2024-07-02 | NextVPU (Shanghai) Co., Ltd. | Memory pre-allocation for forward calculation in a neural network |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137290A1 (en) * | 2010-11-30 | 2012-05-31 | International Business Machines Corporation | Managing memory overload of java virtual machines in web application server systems |
CN104375949A (zh) * | 2014-12-01 | 2015-02-25 | 恒宝股份有限公司 | 一种智能卡存储空间整理方法及系统 |
CN106062703A (zh) * | 2014-03-27 | 2016-10-26 | 株式会社日立制作所 | 存储系统 |
CN106462803A (zh) * | 2014-10-16 | 2017-02-22 | 谷歌公司 | 增强具有外部存储器的神经网络 |
CN107992821A (zh) * | 2017-11-30 | 2018-05-04 | 宁夏恒信荣网络科技有限公司 | 一种图像识别方法及系统 |
CN108829610A (zh) * | 2018-04-02 | 2018-11-16 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
CN109144718A (zh) * | 2018-07-06 | 2019-01-04 | 北京比特大陆科技有限公司 | 一种内存分配方法、内存释放方法以及相关设备 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246742A1 (en) * | 2010-04-01 | 2011-10-06 | Kogen Clark C | Memory pooling in segmented memory architecture |
CN102279808A (zh) * | 2011-09-06 | 2011-12-14 | 晨星软件研发(深圳)有限公司 | 一种嵌入式设备图像内存管理方法及装置 |
CN107153576A (zh) * | 2017-04-10 | 2017-09-12 | 广东欧珀移动通信有限公司 | 一种内存资源的分配方法及终端设备 |
CN108874532B (zh) * | 2017-06-01 | 2020-11-06 | 北京旷视科技有限公司 | 内存分配方法及设备 |
CN107480080B (zh) * | 2017-07-03 | 2021-03-23 | 深圳致星科技有限公司 | 一种基于rdma的零拷贝数据流 |
CN108897617A (zh) * | 2018-06-19 | 2018-11-27 | 北京元心科技有限公司 | 内存管理的方法、装置以及终端设备 |
CN109815162A (zh) * | 2019-01-28 | 2019-05-28 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
-
2019
- 2019-01-28 CN CN201910082246.0A patent/CN109815162A/zh active Pending
-
2020
- 2020-01-17 WO PCT/CN2020/072876 patent/WO2020156259A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137290A1 (en) * | 2010-11-30 | 2012-05-31 | International Business Machines Corporation | Managing memory overload of java virtual machines in web application server systems |
CN106062703A (zh) * | 2014-03-27 | 2016-10-26 | 株式会社日立制作所 | 存储系统 |
CN106462803A (zh) * | 2014-10-16 | 2017-02-22 | 谷歌公司 | 增强具有外部存储器的神经网络 |
CN104375949A (zh) * | 2014-12-01 | 2015-02-25 | 恒宝股份有限公司 | 一种智能卡存储空间整理方法及系统 |
CN107992821A (zh) * | 2017-11-30 | 2018-05-04 | 宁夏恒信荣网络科技有限公司 | 一种图像识别方法及系统 |
CN108829610A (zh) * | 2018-04-02 | 2018-11-16 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
CN109144718A (zh) * | 2018-07-06 | 2019-01-04 | 北京比特大陆科技有限公司 | 一种内存分配方法、内存释放方法以及相关设备 |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020156259A1 (zh) * | 2019-01-28 | 2020-08-06 | Oppo广东移动通信有限公司 | 内存管理方法、装置、移动终端及存储介质 |
CN110347506B (zh) * | 2019-06-28 | 2023-01-06 | Oppo广东移动通信有限公司 | 基于lstm的数据处理方法、装置、存储介质与电子设备 |
CN110347506A (zh) * | 2019-06-28 | 2019-10-18 | Oppo广东移动通信有限公司 | 基于lstm的数据处理方法、装置、存储介质与电子设备 |
US12026604B2 (en) | 2019-11-11 | 2024-07-02 | NextVPU (Shanghai) Co., Ltd. | Memory pre-allocation for forward calculation in a neural network |
WO2021093507A1 (zh) * | 2019-11-11 | 2021-05-20 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
CN111090521A (zh) * | 2019-12-10 | 2020-05-01 | Oppo(重庆)智能科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN111708641A (zh) * | 2020-07-14 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111708641B (zh) * | 2020-07-14 | 2024-03-19 | 腾讯科技(深圳)有限公司 | 一种内存管理方法、装置、设备及计算机可读存储介质 |
CN111984400A (zh) * | 2020-07-17 | 2020-11-24 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN111984400B (zh) * | 2020-07-17 | 2024-04-02 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN112199190A (zh) * | 2020-07-31 | 2021-01-08 | 厦门星宸科技有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN112199190B (zh) * | 2020-07-31 | 2023-11-03 | 星宸科技股份有限公司 | 内存分配方法、装置、存储介质及电子设备 |
CN112256440A (zh) * | 2020-12-23 | 2021-01-22 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
CN112256440B (zh) * | 2020-12-23 | 2021-03-09 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
CN112925727A (zh) * | 2021-03-16 | 2021-06-08 | 杭州慧芯达科技有限公司 | Tensor高速缓存及访问结构及其方法 |
CN113485832A (zh) * | 2021-07-09 | 2021-10-08 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
CN113485832B (zh) * | 2021-07-09 | 2024-07-02 | 支付宝(杭州)信息技术有限公司 | 用于对物理内存池进行分配管理的方法及装置、物理内存池 |
CN113791910A (zh) * | 2021-09-22 | 2021-12-14 | 维沃移动通信有限公司 | 内存分配方法、内存分配装置、电子设备和可读存储介质 |
CN114327867A (zh) * | 2021-11-29 | 2022-04-12 | 苏州浪潮智能科技有限公司 | 一种内存资源的处理方法、装置、电子设备及存储介质 |
CN114327867B (zh) * | 2021-11-29 | 2023-11-10 | 苏州浪潮智能科技有限公司 | 一种内存资源的处理方法、装置、电子设备及存储介质 |
WO2023082542A1 (zh) * | 2022-02-28 | 2023-05-19 | 之江实验室 | 一种面向神经网络模型计算的图执行方法和装置 |
US11941514B2 (en) | 2022-02-28 | 2024-03-26 | Zhejiang Lab | Method for execution of computational graph in neural network model and apparatus thereof |
CN114518962A (zh) * | 2022-04-15 | 2022-05-20 | 北京奥星贝斯科技有限公司 | 内存的管理方法及装置 |
CN114741208A (zh) * | 2022-06-13 | 2022-07-12 | 北京智芯微电子科技有限公司 | 电能表及其内存堆管理方法、内存堆管理装置、存储介质 |
CN115688893A (zh) * | 2022-10-19 | 2023-02-03 | 北京百度网讯科技有限公司 | 内存调度方法及装置、电子设备和存储介质 |
CN117785759B (zh) * | 2024-02-28 | 2024-04-23 | 北京壁仞科技开发有限公司 | 数据存储方法、数据读取方法、电子设备和存储介质 |
CN117785759A (zh) * | 2024-02-28 | 2024-03-29 | 北京壁仞科技开发有限公司 | 数据存储方法、数据读取方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2020156259A1 (zh) | 2020-08-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109815162A (zh) | 内存管理方法、装置、移动终端及存储介质 | |
CN105677242B (zh) | 冷热数据的分离方法和装置 | |
CN103995855B (zh) | 存储数据的方法和装置 | |
CN109783017A (zh) | 一种存储设备坏块的处理方法、装置及存储设备 | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
CN107656813A (zh) | 一种负载调度的方法、装置及终端 | |
CN109491606B (zh) | 一种全闪存储空间管理方法、系统、设备及计算机介质 | |
CN107301093A (zh) | 一种管理资源的方法和装置 | |
CN107533435A (zh) | 存储空间的分配方法及存储设备 | |
CN107894922B (zh) | Ram资源分配方法 | |
CN111984400A (zh) | 神经网络的内存分配方法及装置 | |
CN112181595A (zh) | 虚拟机的numa节点绑定方法、装置、设备及存储介质 | |
CN109918203A (zh) | 接入服务器内存管理优化方法、接入服务器及通信系统 | |
CN107590144A (zh) | 一种文件存储方法和终端 | |
CN104375944B (zh) | 一种数据存储方法和装置 | |
CN103778222A (zh) | 一种分布式文件系统存储文件的方法及系统 | |
CN112764925A (zh) | 基于虚拟内存的数据存储方法、装置、设备及存储介质 | |
CN104123188B (zh) | 一种资源分配方法及相关装置 | |
CN107193753A (zh) | 内存重整方法、装置、电子设备及可读存储介质 | |
CN110007860A (zh) | 基于lsm数据库的垃圾处理的方法、固态硬盘以及存储装置 | |
CN116483740B (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN104050189B (zh) | 页面共享处理方法及装置 | |
CN115794417A (zh) | 内存管理方法及装置 | |
CN108984427A (zh) | 一种基于申威架构的设备中内存的处理方法及装置 | |
CN109697166A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190528 |