CN112099943B - 内存分配方法及相关设备 - Google Patents
内存分配方法及相关设备 Download PDFInfo
- Publication number
- CN112099943B CN112099943B CN202010812913.9A CN202010812913A CN112099943B CN 112099943 B CN112099943 B CN 112099943B CN 202010812913 A CN202010812913 A CN 202010812913A CN 112099943 B CN112099943 B CN 112099943B
- Authority
- CN
- China
- Prior art keywords
- storage space
- memory storage
- layer group
- target
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000005055 memory storage Effects 0.000 claims abstract description 349
- 238000013507 mapping Methods 0.000 claims abstract description 213
- 238000003062 neural network model Methods 0.000 claims abstract description 13
- 238000004590 computer program Methods 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 3
- 101100524516 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA2 gene Proteins 0.000 description 39
- 101100033865 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) RFA1 gene Proteins 0.000 description 33
- 238000010586 diagram Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (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)
- Memory System (AREA)
Abstract
本申请公开了一种内存分配方法及相关设备,应用于电子设备,方法包括确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息;基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。采用本申请实施例可提升内存存储空间的利用率。
Description
技术领域
本申请涉及人工智能技术领域,尤其涉及一种内存分配方法及相关设备。
背景技术
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一,促进了人工智能的快速发展。由于卷积神经网络由多个层组构成,因此需要神经网络处理器对多个层组进行依次处理,并将得到的数据依次存储到存储器中。然而,随着需要存储的数据不断增多,会导致存储器中可用于存储的内存越来越少。因此,如何提升内存存储空间的利用率是亟待解决的问题。
发明内容
本申请实施例提供一种内存分配方法及相关设备,用于提升内存存储空间的利用率。
第一方面,本申请实施例提供一种内存分配方法,应用于电子设备,该方法包括:
确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据,所述N个输入层组包括所述目标层组;
基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。
第二方面,本申请实施例提供一种内存分配装置,该装置包括:
第一确定单元,用于确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
分配单元,用于基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,所述N个输入层组包括所述目标层组;
处理单元,用于在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,以及在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据;
第二确定单元,用于基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。
第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面所述的方法中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,在本申请实施例中,电子设备首先确定目标神经网络模型中目标输出层组的N个输入层组,然后基于第一映射表和N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新目标层组占用的内存存储空间的存储信息,最后基于第二映射表确定目标层组占用的内存存储空间在目标存储器中的偏移地址。由于电子设备是根据第一映射表和N为目标层组分配合理的内存存储空间,不是随意的分配内存存储空间,因此有利于提升内存存储空间的利用率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种内存分配方法的流程示意图;
图2是本申请实施例提供的一种层组的结构示意图;
图3本申请实施例提供的另一种电子设备的结构示意图;
图4本申请实施例提供的一种内存分配装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
以下分别进行详细说明。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
以下,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(UserEquipment,UE),移动台(Mobile Station,MS),终端设备(terminal device)等等。
下面对本申请实施例进行详细介绍。
请参见图1,图1为本申请实施例提供的一种内存分配方法的流程示意图,包括以下步骤:
步骤101:确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数。
其中,层组可以是由多个层组成,层组内部的层通过处理器本地存储器进行数据交换,层组也可以是具有汇聚属性且只包括一个层,具有汇聚属性的层组有多个输入层组。
如图2所示为层组的结构示意图,图2中的m和n均为正整数。其中,图2中的层组0、层组1、层组2以及层组3均为包括至少一个层的层组,且层组3是具有汇聚属性的层组。
在图2中,目标输出层组可以是层组0,也可以是层组1、也可以是层组2、也可以是层组3。
其中,若目标输出层组可为层组1,则目标输出层组的输入层组为层组0;若目标输出层组可为层组2,则目标输出层组的输入层组为层组1;若目标输出层组可为层组3,则目标输出层组的输入层组为层组0和层组2。
其中,层组之间通过双倍数据速率同步动态随机存取存储器(Double Data Rate,DDR)进行数据交换。
其中,目标输出层组可以是具有汇聚属性的层组,也可以是由多个层构成的层组。
步骤102:基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据,所述N个输入层组包括所述目标层组。
其中,目标层组为目标输出层组的输入层组,目标层组为目标输出层组的上一级层组。
其中,在N为1的情况下,目标层组为目标输出层组的唯一输入层组。
其中,目标存储器可以是双倍数据速率同步动态随机存取存储器(Double DataRate,DDR),也可以是其他存储器。
其中,第一映射表可以记录多条占用信息,第二映射表可以记录多条存储信息。
其中,每条占用信息对应一条存储信息,对应的占用信息和存储信息对应同一个内存存储空间。
其中,存储信息中包括内存存储空间的标识和内存存储空间的容量。
其中,更新存储信息表示更新或维持存储信息中的内存存储空间容量。
其中,存储信息中内存存储空间的容量为当前占用内存存储空间的层组的输出数据量,或内存存储空间未释放之前占用该内存存储空间的层组的输出数据量。
其中,当已经建立的内存存储空间被占用时,占用信息中包括内存存储空间标识的和占用内存存储空间的层组标识,当已经建立的内存存储空间未被占用时,占用信息中包括内存存储空间的标识。
举例来说,若目标存储器中存在2个内存存储空间(BUF1和BUF2),则BUF1对应占用信息1,BUF2对应占用信息2,BUF1对应存储信息1,BUF2对应存储信息2。由于BUF1被层组L1占用,BUF2未被占用,L1的输出数据量为A,因此占用信息1包括BUF1和L1,占用信息2包括BUF2,存储信息1包括BUF1和BUF1的容量A,存储信息2包括BUF2和容量B,其中容量B是BUF2未释放之前,占用BUF2的层组的输出数据量。
其中,目标神经网络模型由多个层组构成,电子设备对目标神经网络模型中层组的处理是从上到下,第一映射表以及第二映射表随着当前处理的层组的不同,第一映射表中的占用信息可能发生变化,第二映射表中的存储信息可能发生变化。
其中,目标层组根据其输入层组对应的第一映射表中的占用信息,对第一映射表中的占用信息进行记录或更新。
其中,分配给目标层组的内存存储空间可以是新建的,也可以是目标存储器中已经建立的未被占用的内存存储空间。
其中,若分配的内存存储空间是新建的,则在第一映射表中记录目标层组占用的内存存储空间的占用信息;若分配的内存存储空间是已存在的,则在第一映射表中记更新目标层组占用的内存存储空间的占用信息。
其中,当处理器处理完输入层组对应的所有目标输出层组后,输入层组占用的内存存储空间会释放,第一映射表中输入层组对应的占用信息中的输入层组标识会清除。
举例来说,若存在4个层组(L1,L2,L3以及L4),其中L1为L2的输入层组,L2为L3的唯一输入层组,L1和L3为L4的输入层组,当处理器处理到L1时,L1占用的内存存储空间为BUF1,第一映射表中记录的BUF1的占用信息1包括BUF1和L1;当处理完L2时,L2占用的内存存储空间为BUF2,第一映射表中记录的BUF2的占用信息2包括BUF2和L2;当处理完L3时,L3与L1共同作为L4的输入层组,因此L3占用的内存存储空间为BUF1,第一映射表中记录的BUF1的占用信息1包括BUF1、L1以及L3,此外,作为L3唯一的输入层组L2,BUF2释放,占用信息2中的L2被清除;当处理完L4之后,由于L1对应的输出层组全部被处理完,L3对应的输出层组被处理完,因此BUF1释放,且占用信息1中的L1和L3被清除,即BUF1未被占用。
其中,对于第一映射表,可以是不同的层组对应相同的占用信息,也可以是不同的层组对应不同的占用信息。
其中,对于第二映射表,可以是不同的层组对应相同的存储信息,也可以是不同的层组对应不同的存储信息。
其中,若当前层组为具有汇聚性的层组,硬件不需要做任何操作,由内存管理实现汇聚功能,因此第一映射表中的占用信息和第二映射表中的存储信息保持不变。
其中,若当前层组不是具有汇聚性的层组,在处理当前层组的输出层组时,当前层组对应的第一映射表中的占用信息和与该当前层组的输入层组对应的第一映射表中的占用信息可能相同,也可能不同;当前层组对应的第二映射表中的存储信息和与该当前层组的输入层组对应的第二映射表中的存储信息可能相同,也可能不同。
举例来说,存在3个层组(L1、L2以及L3),L1为L2的输入层组,L1和L2为L3的输入层组,L2为当前层组,因此在处理L3时,L1对应的占用信息和L2对应的占用信息相同,L1对应的存储信息和L2对应的占存储信息相同。
其中,目标层组不是具有汇聚性的层组。
步骤103:基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。
可以看出,在本申请实施例中,电子设备首先确定目标神经网络模型中目标输出层组的N个输入层组,然后基于第一映射表和N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新目标层组占用的内存存储空间的存储信息,最后基于第二映射表确定目标层组占用的内存存储空间在目标存储器中的偏移地址。由于电子设备是根据第一映射表和N为目标层组分配合理的内存存储空间,不是随意的分配内存存储空间,因此有利于提升内存存储空间的利用率。
在本申请的一实现方式中,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述N大于1,所述第一映射表包括第一内存存储空间的第一占用信息,所述第一内存存储空间被第一输入层组占用,所述N个输入层组包括所述第一输入层组的情况下,将所述第一内存存储空间分配给所述目标层组;
所述在所述第一映射表中更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中更新所述目标层组占用的内存存储空间的存储信息,包括:
在所述第一映射表中,将所述第一占用信息包括的层组标识更新为第一层组标识,所述第一层组标识包括所述第一输入层组的标识和所述目标层组的标识;
在所述第二映射表中,将所述第一内存存储空间的第一存储信息包括的容量更新为第一容量,所述第一容量为第一输入层组的输出数据量和所述目标层组的输出数据量之和。
其中,目标层组的输出数据与第一输入层组的输出数据同时存储在第一存储器中,若目标层组在第一输入层组之前输入目标输出层组,则目标层组的输出数据存储在第一输入层的输出数据之前;若目标层组在第一输入层组之后输入目标输出层组,则目标层组的输出数据存储在第一输入层的输出数据之后。
其中,在目标层组的目标输出层组处理完之后,目标层组占用的内存存储空间将被释放,并且清除第一映射表中占用信息包括的目标层组的标识。
举例来说,目标输出层组的输入层组有2个(层组L1和层组L2),其中已经为L1分配了内存存储空间BUF1,L1的输出数据量为A,层组L2为目标层组,因此第一映射表中的第一占用信息包括L1和BUF1,第二映射表的第一存储信息中包括BUF1和BUF1的容量A。由于L1和L2同为目标输入层组的输入层组,且已经为L1分配了BUF1,因此,将BUF1分配给L2,并将第一占用信息更新为L1、L2以及BUF1。又因为L2的输出数据量为B,因此将第一存储信息中BUF1的容量更新为A+B。
可以看出,在本申请实施例中,将目标输出层组的多个输入层组的输出数据存放同一个内存存储空间中,并根据多个输入层组的输出数据对内存存储空间的容量进行调整,不仅保证了输出层组对内存存储空间的需求,而且提升了内存存储空间的利用率。
在本申请的一实现方式中,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述第一映射表为空的情况下,在所述目标存储器中建立第二内存存储空间,以及将所述第二内存存储空间分配给所述目标层组;
所述在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录所述目标层组占用的内存存储空间的存储信息,包括:
在所述第二映射表中记录所述第二内存存储空间的第二占用信息;在所述第二映射表中记录所述第二内存存储空间的第二存储信息,所述第二存储信息包括所述第二内存存储空间的第二容量,所述第二容量为所述目标层组的输出数据量。
其中,第二占用信息包括目标层组的标识和第二内存存储空间的标识。
其中,第一映射表为空表示还未将目标存储器中的内存存储空间分配给目标神经网路模型中的层组。
其中,第二存储信息中还包括第二内存存储空间的标识。
其中,在目标层组的目标输出层组处理完之后,目标层组占用的内存存储空间将被释放,并且清除第二占用信息包括的目标层组的标识。
可以看出,在本申请实施例中,在第一映射表为空的情况下,在目标存储器中建立第二内存存储空间,有利于提升建立内存存储空间的速率。
在本申请的一实现方式中,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述第一映射表不为空的情况下,按照预设读取规则依次读取所述第一映射表中的内存存储空间的占用信息;
在读取到的第三占用信息对应的第三内存存储空间未被占用,且所述第三内存存储空间的第三容量大于或等于所述目标层组的输出数据量的情况下,将所述第三内存存储空间分配给所述目标层组,以及停止对占用信息的读取操作;
在读取到的第四占用信息对应的第四内存存储空间未被占用,且所述第四内存存储空间的第四容量小于所述目标层组的输出数据量的情况下,将所述第四内存存储空间定义为候选内存存储空间,以及继续对占用信息进行读取操作;
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中记录有所述第四占用信息的情况下,将第五内存存储空间分配给所述目标层组,所述第五内存存储空间为候选内存存储空间中容量最大的内存存储空间。
其中,预设读取规则可以是对第一映射表中的占用信息从上到下依次读取,也可以是对第一映射表中的占用信息至下而上依次读取,也可以是其他的读取方式。
举例来说,目标存储器中包括3个内存存储空间(BUF1,BUF2以及BUF3),BUF1被层组L1占用,BUF2未被占用,BUF3未被占用,BUF1的容量为C1,BUF2的容量为C2,BUF3的容量为C3,因此当前第一映射表中包括3个占用信息(占用信息1,占用信息2以及占用信息3),其中占用信息1包括BUF1和L1,占用信息2包括BUF2,占用信息3包括BUF3,第二映射表中包括3个存储信息(存储信息1、存储信息2以及存储信息3),其中存储信息1包括BUF1和C1,存储信息2包括BUF2和C2,存储信息3包括BUF3和C3。假设目标层组的输出数据量为D,D大于C2,小于C3,电子设备按照从上到下的方式一次读取第一映射表中的占用信息1、占用信息2以及占用信息3。首先电子设备对占用信息1进行读取,确定BUF1被占用,因此往下读取占用信息2。由于占用信息2中的BUF2未被占用,占用信息2对应的存储信息2中BUF2的容量为C2,C2小于D,因此将BUF2定义为候选存储空间,随后继续读取占用信息3。由于占用信息3中的BUF3未被占用,占用信息3对应的存储信息3中BUF3的容量为C3,C3大于D,因此将BUF3分配给目标层组。
可以看出,在本申请实施例中,在所述第一映射表不为空的情况下,按照预设读取规则依次读取第一映射表中的内存存储空间的占用信息,确定未被占用的存储空间,以及将为被占用的内存存储空间分配给目标层组,有利于提升内存存储空间的利用率。
在本申请的一实现方式中,所述在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,包括:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则在所述第一映射表中所述第三内存存储空间的第三占用信息中记录所述目标层组的标识;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则在所述第一映射表中所述第五内存存储空间的第四占用信息中记录所述目标层组的标识;
所述在第二映射表中更新所述目标层组占用的内存存储空间的存储信息,包括:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则维持在所述第二映射表中记录的所述第三内存存储空间的第三存储信息;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则将所述第二映射表中记录的第四存储信息包括的容量更新为第三容量,所述第四存储信息为所述第五内存存储空间的存储信息,所述第三容量为所述目标层组的输出数据量。
其中,在目标层组的目标输出层组处理完之后,目标层组占用的内存存储空间将被释放,并且清除第一映射表中占用信息包括的目标层组的标识。
可以看出,在本申请实施例中,在分配给目标层组的内存存储空间的容量大于目标层组的数据输出量的情况下,维持第二映射表中分配给目标层组的内存存储空间的容量,有利于减少存储空间的容量需求。
在本申请的一实现方式中,所述方法还包括:
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中未记录有所述第四占用信息的情况下,在所述目标存储器中建立第六内存存储空间,以及将所述第六内存存储空间分配给所述目标层组。
其中,在目标存储器中的内存存储空间全部被占用的情况下,在目标存储器中新建内存存储空间分配给目标层组。
举例来说,目标存储器中包括3个内存存储空间(BUF1,BUF2以及BUF3),BUF1被层组L1占用,BUF2被层组L2占用,BUF3被层组L3占用,因此当前第一映射表中包括3个占用信息(占用信息1,占用信息2以及占用信息3),占用信息1包括BUF1和L1,占用信息2包括BUF2和L2,占用信息3包括BUF3和L3。假设电子设备按照从上到下的方式一次读取第一映射表中的占用信息1、占用信息2以及占用信息3。首先电子设备对占用信息1进行读取,确定BUF1被L1占用,因此往下读取占用信息2。读取占用信息2确定BUF2被L2占用,因此往下读取占用信息3。读取占用信息3确定BUF3被L3占用,因此在目标存储器中新建一个内存存储空间分配给目标层组。
在一种可能的实现方式中,将所述第六内存存储空间分配给所述目标层组之后,所述方法还包括:
在所述第一映射表中记录所述第六内存存储空间的第五占用信息,以及在所述第二映射表中记录所述第六内存存储空间的第七存储信息,所述第五占用信息包括第六存储空间的标识和所述目标层组的标识,所述第七存储信息包括所述第六内存存储空间的第五容量,所述第五容量为所述目标层组的输出数据量。
其中,第七存储信息中还包括第六存储空间的标识,第六存储空间的标识是基于已经建立的存储空间的标识确定的。
其中,在目标层组的目标输出层组处理完之后,目标层组占用的内存存储空间将被释放,并且清除第五占用信息包括的目标层组的标识。
可以看出,在本申请实施例中,在第一映射表中未记录有第二占用信息,以及所述第一映射表中未记录有第三占用信息的情况下,在目标存储器中建立第六内存存储空间,以及将第六内存存储空间分配给目标层组,表明目标存储器中的内存存储空间均得到了有效利用,有利于提升电子设备在目标存储器中建立内存存储空间的可靠性。
在本申请的一实现方式中,所述第二映射表中记录的存储信息均还包括内存存储空间的标识,内存存储空间的标识采用数值的形式表示;所述基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,包括:
在所述第二映射表包括第五存储信息,所述第五存储信息包括的标识大于所述目标层组占用的内存存储空间的标识的情况下,确定所述第五存储信息的第六容量以及确定所述第五存储信息中标识最小的存储信息为第六存储信息;
基于所述第六存储信息,确定所述第六存储信息中的标识对应的内存存储空间在所述目标存储器中的第一偏移地址;
基于所述第一偏移地址、第一偏移量以及所述目标层组在占用的内存存储空间中的第二偏移量,确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,所述第一偏移量的长度为所述第六容量,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的。
其中,内存存储空间的标识采用数值的形式表示,每个内存存储空间的标识各不相同。
其中,内存存储空间的标识采用数值的形式表示,内存存储空间的标识可以根据等比的形式确定,也可以根据等差的形式确定,每个内存存储空间的标识的大小与内存存储空间的建立时间有关,建立内存存储空间的时间越晚,对应的标识越大。
举例来说,内存存储空间的标识根据等差的形式确定,差值为1。假设最先建立的内存存储空间的标识为0,则第二建立的内存存储空间的标识为1,第三建立的内存存储空间的标识为2。
在一种可能的实现方式中,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的,包括:
若所述N等于1,则所述第二偏移量为零;
若所述N大于1,且所述目标层组在第二输入层组之后输入所述目标输出层组,则所述第二偏移量为所述第二输入层组的输出数据量,所述N个输入层组包括所述第二输入层组;
若所述N大于1,且在所述目标层组在第二输入层组之前输入所述目标输出层组,则所述第二偏移量为零。
举例来说,假设N等于1,目标存储空间中包括3个内存存储空间(BUF0、BUF1以及BUF2),占用BUF0的层组为层组L0,BUF0的容量为层组L0的输出量A,占用BUF1的层组为层组L1,BUF1的容量为层组L1的输出量B,占用BUF2的层组为目标层组L2,BUF2的容量为目标层组L2的输出量C,BUF0的标识为0、BUF1的标识为1,BUF2的标识为2,因此第二映射表包括的存储信息为(0,A),(1,B)以及(2,C)。由于BUF0和BUF1对应的存储信息的标识均小于BUF2对应的存储信息的标识,因此确定第五存储信息为(0,A)和(1,B),第六存储信息为(0,A),层组L0在目标存储器中的第一偏移地址为零,第一偏移量为A+B,目标层组在目标存储器中的偏移地址为0+A+B。
举例来说,假设N大于1,目标存储空间中包括3个内存存储空间(BUF0、BUF1以及BUF2),占用BUF0的层组为层组L0,BUF0的容量为层组L0的输出量A,占用BUF1的层组为层组L1,BUF1的容量为目标层组的输出量B,占用BUF2的层组为目标层组L2和层组L3,BUF2的容量为目标层组L2的输出量C与层组L3的输出数据量D之和,BUF0的标识为0、BUF1的标识为1,BUF2的标识为2,因此第二映射表包括的存储信息为(0,A),(1,B)以及(2,C+D)。由于BUF0和BUF1对应的存储信息的标识均小于BUF2对应的存储信息的标识,因此确定第五存储信息为(0,A)和(1,B),第六存储信息为(0,A)。若在BUF2中目标层组L2的输出数据在层组L3之前,则第二偏移量为零,层组L0在目标存储器中的第一偏移地址为零,第一偏移量为A+B,第二偏移量为0,目标层组在目标存储器中的偏移地址为0+A+B,若BUF2中目标层组L2的输出数据在层组L3之后,则第一偏移量为A+B,第二偏移量为D,层组L0在目标存储器中的第一偏移地址为零,目标层组在目标存储器中的偏移地址为0+A+B+D。
在一种可能的实现方式中,在所述第二映射表中仅包括目标层组占用的内存存储空间对应的存储信息的下,所述目标层组在所述目标存储器中的偏移地址为零。
可以看出,在本申请实施例中,通过确定目标层组在目标存储器中的偏移地址,有利于电子设备对目标层组的输出数据的提取。
与上述图1所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种电子设备的结构示意图,如图所示,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:
确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据,所述N个输入层组包括所述目标层组;
基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述程序包括具体用于执行以下步骤指令:在所述N大于1,所述第一映射表包括第一内存存储空间的第一占用信息,所述第一内存存储空间被第一输入层组占用所述N个输入层组包括所述第一输入层组的情况下,将所述第一内存存储空间分配给所述目标层组;
所述在所述第一映射表中更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中更新所述目标层组占用的内存存储空间的存储信息方面,上述程序包括具体用于执行以下步骤指令:
在所述第一映射表中,将所述第一占用信息包括的层组标识更新为第一层组标识,所述第一层组标识包括所述第一输入层组的标识和所述目标层组的标识;
在所述第二映射表中,将所述第一内存存储空间的第一存储信息包括的容量更新为第一容量,所述第一容量为第一输入层组的输出数据量和所述目标层组的输出数据量之和。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述程序包括具体用于执行以下步骤指令:
在所述第一映射表为空的情况下,在所述目标存储器中建立第二内存存储空间,以及将所述第二内存存储空间分配给所述目标层组;
在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录所述目标层组占用的内存存储空间的存储信息方面,上述程序包括具体用于执行以下步骤指令:
在所述第二映射表中记录所述第二内存存储空间的第二占用信息;
在所述第二映射表中记录所述第二内存存储空间的第二存储信息,所述第二存储信息包括所述第二内存存储空间的第二容量,所述第二容量为所述目标层组的输出数据量。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述程序包括具体用于执行以下步骤指令:
在所述第一映射表不为空的情况下,按照预设读取规则依次读取所述第一映射表中的内存存储空间的占用信息;
在读取到的第三占用信息对应的第三内存存储空间未被占用,且所述第三内存存储空间的第三容量大于或等于所述目标层组的输出数据量的情况下,将所述第三内存存储空间分配给所述目标层组,以及停止对占用信息的读取操作;
在读取到的第四占用信息对应的第四内存存储空间未被占用,且所述第四内存存储空间的第四容量小于所述目标层组的输出数据量的情况下,将所述第四内存存储空间定义为候选内存存储空间,以及继续对占用信息进行读取操作;
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中记录有所述第四占用信息的情况下,将第五内存存储空间分配给所述目标层组,所述第五内存存储空间为候选内存存储空间中容量最大的内存存储空间。
在本申请的一实现方式中,在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息方面,上述程序包括具体用于执行以下步骤指令:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则在所述第一映射表中所述第三内存存储空间的第三占用信息中记录所述目标层组的标识;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则在所述第一映射表中所述第五内存存储空间的第四占用信息中记录所述目标层组的标识;
在第二映射表中更新所述目标层组占用的内存存储空间的存储信息方面,上述程序包括具体用于执行以下步骤指令:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则维持在所述第二映射表中记录的所述第三内存存储空间的第三存储信息;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则将所述第二映射表中记录的第四存储信息包括的容量更新为第三容量,所述第四存储信息为所述第五内存存储空间的存储信息,所述第三容量为所述目标层组的输出数据量。
在本申请的一实现方式中,上述程序包括具体用于执行以下步骤指令:
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中未记录有所述第四占用信息的情况下,在所述目标存储器中建立第六内存存储空间,以及将所述第六内存存储空间分配给所述目标层组。
在本申请的一实现方式中,所述第二映射表中记录的存储信息均还包括内存存储空间的标识,内存存储空间的标识采用数值的形式表示;在基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址方面,上述程序包括具体用于执行以下步骤指令:
在所述第二映射表包括第五存储信息,所述第五存储信息包括的标识大于所述目标层组占用的内存存储空间的标识的情况下,确定所述第五存储信息的第六容量以及确定所述第五存储信息中标识最小的存储信息为第六存储信息;
基于所述第六存储信息,确定所述第六存储信息中的标识对应的内存存储空间在所述目标存储器中的第一偏移地址;
基于所述第一偏移地址、第一偏移量以及所述目标层组在占用的内存存储空间中的第二偏移量,确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,所述第一偏移量的长度为所述第六容量,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的。
请参阅图4,图4是本申请实施例提供的一种内存分配装置,应用于电子设备,该装置包括:
第一确定单元401,用于确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
分配单元402,用于基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,所述N个输入层组包括所述目标层组;
处理单元403,用于在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,以及在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据;
第二确定单元404,用于基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述分配单元402具体用于执行以下步骤指令:
在所述N大于1,所述第一映射表包括第一内存存储空间的第一占用信息,所述第一内存存储空间被第一输入层组占用所述N个输入层组包括所述第一输入层组的情况下,将所述第一内存存储空间分配给所述目标层组;
所述在所述第一映射表中更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中更新所述目标层组占用的内存存储空间的存储信息方面,上述处理单元403具体用于执行以下步骤指令:
在所述第一映射表中,将所述第一占用信息包括的层组标识更新为第一层组标识,所述第一层组标识包括所述第一输入层组的标识和所述目标层组的标识;
在所述第二映射表中,将所述第一内存存储空间的第一存储信息包括的容量更新为第一容量,所述第一容量为第一输入层组的输出数据量和所述目标层组的输出数据量之和。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述分配单元402用于执行以下步骤指令:
在所述第一映射表为空的情况下,在所述目标存储器中建立第二内存存储空间,以及将所述第二内存存储空间分配给所述目标层组;
在在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录所述目标层组占用的内存存储空间的存储信息方面,上述处理单元403具体用于执行以下步骤指令:
在所述第二映射表中记录所述第二内存存储空间的第二占用信息;
在所述第二映射表中记录所述第二内存存储空间的第二存储信息,所述第二存储信息包括所述第二内存存储空间的第二容量,所述第二容量为所述目标层组的输出数据量。
在本申请的一实现方式中,在基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组方面,上述分配单元402具体用于执行以下步骤指令:
在所述第一映射表不为空的情况下,按照预设读取规则依次读取所述第一映射表中的内存存储空间的占用信息;
在读取到的第三占用信息对应的第三内存存储空间未被占用,且所述第三内存存储空间的第三容量大于或等于所述目标层组的输出数据量的情况下,将所述第三内存存储空间分配给所述目标层组,以及停止对占用信息的读取操作;
在读取到的第四占用信息对应的第四内存存储空间未被占用,且所述第四内存存储空间的第四容量小于所述目标层组的输出数据量的情况下,将所述第四内存存储空间定义为候选内存存储空间,以及继续对占用信息进行读取操作;
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中记录有所述第四占用信息的情况下,将第五内存存储空间分配给所述目标层组,所述第五内存存储空间为候选内存存储空间中容量最大的内存存储空间。
在本申请的一实现方式中,在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息方面,上述处理单元403具体用于执行以下步骤指令:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则在所述第一映射表中所述第三内存存储空间的第三占用信息中记录所述目标层组的标识;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则在所述第一映射表中所述第五内存存储空间的第四占用信息中记录所述目标层组的标识;
在第二映射表中更新所述目标层组占用的内存存储空间的存储信息方面,上述处理单元403具体用于执行以下步骤指令:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则维持在所述第二映射表中记录的所述第三内存存储空间的第三存储信息;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则将所述第二映射表中记录的第四存储信息包括的容量更新为第三容量,所述第四存储信息为所述第五内存存储空间的存储信息,所述第三容量为所述目标层组的输出数据量。
在本申请的一实现方式中,上述分配单元402具体还用于执行以下步骤指令:
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中未记录有所述第四占用信息的情况下,在所述目标存储器中建立第六内存存储空间,以及将所述第六内存存储空间分配给所述目标层组。
在本申请的一实现方式中,所述第二映射表中记录的存储信息均还包括内存存储空间的标识,内存存储空间的标识采用数值的形式表示;在基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址方面,上述第二确定单元404具体用于执行以下步骤指令:
在所述第二映射表包括第五存储信息,所述第五存储信息包括的标识大于所述目标层组占用的内存存储空间的标识的情况下,确定所述第五存储信息的第六容量以及确定所述第五存储信息中标识最小的存储信息为第六存储信息;
基于所述第六存储信息,确定所述第六存储信息中的标识对应的内存存储空间在所述目标存储器中的第一偏移地址;
基于所述第一偏移地址、第一偏移量以及所述目标层组在占用的内存存储空间中的第二偏移量,确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,所述第一偏移量的长度为所述第六容量,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的。
本申请实施例还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如上述方法实施例中终端设备所描述的部分或全部步骤。
本申请实施例还提供了一种计算机程序产品,其中,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法中终端设备所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
本申请实施例所描述的方法或者算法的步骤可以以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(Read OnlyMemory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于接入网设备、目标网络设备或核心网设备中。当然,处理器和存储介质也可以作为分立组件存在于接入网设备、目标网络设备或核心网设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DigitalSubscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,数字视频光盘(DigitalVideo Disc,DVD))、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
以上所述的具体实施方式,对本申请实施例的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请实施例的具体实施方式而已,并不用于限定本申请实施例的保护范围,凡在本申请实施例的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请实施例的保护范围之内。
Claims (9)
1.一种内存分配方法,其特征在于,应用于电子设备,所述方法包括:
确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,以及在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据,所述N个输入层组包括所述目标层组;
基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址;
所述第二映射表中记录的存储信息均还包括内存存储空间的标识,所述内存存储空间的标识采用数值的形式表示;所述基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,包括:
在所述第二映射表包括第五存储信息,所述第五存储信息包括的标识小于所述目标层组占用的内存存储空间的标识的情况下,确定所述第五存储信息的第六容量,以及确定所述第五存储信息中标识最小的存储信息为第六存储信息;
基于所述第六存储信息,确定所述第六存储信息对应的内存存储空间在所述目标存储器中的第一偏移地址;
基于所述第一偏移地址、第一偏移量以及所述目标层组在占用的内存存储空间中的第二偏移量,确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,所述第一偏移量的长度为所述第六容量,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的。
2.根据权利要求1所述的方法,其特征在于,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述N大于1,所述第一映射表包括第一内存存储空间的第一占用信息,所述第一内存存储空间被第一输入层组占用,所述N个输入层组包括所述第一输入层组的情况下,将所述第一内存存储空间分配给所述目标层组;
所述在所述第一映射表中更新所述目标层组占用的内存存储空间的占用信息,在第二映射表中更新所述目标层组占用的内存存储空间的存储信息,包括:
在所述第一映射表中,将所述第一占用信息包括的层组标识更新为第一层组标识,所述第一层组标识包括所述第一输入层组的标识和所述目标层组的标识;在所述第二映射表中,将所述第一内存存储空间的第一存储信息包括的容量更新为第一容量,所述第一容量为第一输入层组的输出数据量和所述目标层组的输出数据量之和。
3.根据权利要求1所述的方法,其特征在于,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述第一映射表为空的情况下,在所述目标存储器中建立第二内存存储空间,以及将所述第二内存存储空间分配给所述目标层组;
所述在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,在第二映射表中记录所述目标层组占用的内存存储空间的存储信息,包括:
在所述第一映射表中记录所述第二内存存储空间的第二占用信息;
在所述第二映射表中记录所述第二内存存储空间的第二存储信息,所述第二存储信息包括所述第二内存存储空间的第二容量,所述第二容量为所述目标层组的输出数据量。
4.根据权利要求1所述的方法,其特征在于,所述基于第一映射表和所述N,将目标存储器中的内存存储空间分配给所述目标层组,包括:
在所述第一映射表不为空的情况下,按照预设读取规则依次读取所述第一映射表中的内存存储空间的占用信息;
在读取到的第三占用信息对应的第三内存存储空间未被占用,且所述第三内存存储空间的第三容量大于或等于所述目标层组的输出数据量的情况下,将所述第三内存存储空间分配给所述目标层组,以及停止对占用信息的读取操作;
在读取到的第四占用信息对应的第四内存存储空间未被占用,且所述第四内存存储空间的第四容量小于所述目标层组的输出数据量的情况下,将所述第四内存存储空间定义为候选内存存储空间,以及继续对占用信息进行读取操作;
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中记录有所述第四占用信息的情况下,将第五内存存储空间分配给所述目标层组,所述第五内存存储空间为候选内存存储空间中容量最大的内存存储空间。
5.根据权利要求4所述的方法,其特征在于,所述在所述第一映射表中记录所述目标层组占用的内存存储空间的占用信息,包括:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则在所述第一映射表中所述第三内存存储空间的第三占用信息中记录所述目标层组的标识;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则在所述第一映射表中所述第五内存存储空间的第四占用信息中记录所述目标层组的标识;
所述在第二映射表中更新所述目标层组占用的内存存储空间的存储信息,包括:
若给所述目标层组分配的内存存储空间为所述第三内存存储空间,则维持在所述第二映射表中记录的所述第三内存存储空间的第三存储信息;
若给所述目标层组分配的内存存储空间为所述第五内存存储空间,则将所述第二映射表中记录的第四存储信息包括的容量更新为第三容量,所述第四存储信息为所述第五内存存储空间的存储信息,所述第三容量为所述目标层组的输出数据量。
6.根据权利要求4或5所述的方法,其特征在于,所述方法还包括:
在所有占用信息读取完成后,所述第一映射表中未记录有所述第三占用信息,以及所述第一映射表中未记录有所述第四占用信息的情况下,在所述目标存储器中建立第六内存存储空间,以及将所述第六内存存储空间分配给所述目标层组。
7.一种内存分配装置,其特征在于,应用于电子设备,所述装置包括:
第一确定单元,用于确定目标神经网络模型中目标输出层组的N个输入层组,所述N为正整数;
分配单元,用于基于第一映射表和所述N,将目标存储器中的内存存储空间分配给目标层组,所述N个输入层组包括所述目标层组;
处理单元,用于在所述第一映射表中记录或更新所述目标层组占用的内存存储空间的占用信息,以及在第二映射表中记录或更新所述目标层组占用的内存存储空间的存储信息,所述第一映射表用于记录内存存储空间的占用信息,所述第二映射表用于记录内存存储空间的存储信息,所述目标层组占用的内存存储空间用于存储所述目标层组的输出数据;
第二确定单元,用于基于所述第二映射表确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址;
所述第二映射表中记录的存储信息均还包括内存存储空间的标识,所述内存存储空间的标识采用数值的形式表示;所述第二确定单元具体用于在所述第二映射表包括第五存储信息,所述第五存储信息包括的标识小于所述目标层组占用的内存存储空间的标识的情况下,确定所述第五存储信息的第六容量,以及确定所述第五存储信息中标识最小的存储信息为第六存储信息;以及基于所述第六存储信息,确定所述第六存储信息对应的内存存储空间在所述目标存储器中的第一偏移地址;以及基于所述第一偏移地址、第一偏移量以及所述目标层组在占用的内存存储空间中的第二偏移量,确定所述目标层组占用的内存存储空间在所述目标存储器中的偏移地址,所述第一偏移量的长度为所述第六容量,所述第二偏移量的长度是基于所述N个输入层组中所述目标层组之外的输入层组确定的。
8.一种电子设备,其特征在于,所述电子设备包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述一个或多个程序包括用于执行如权利要求1-6任一项所述的方法中的步骤的指令。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010812913.9A CN112099943B (zh) | 2020-08-13 | 2020-08-13 | 内存分配方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010812913.9A CN112099943B (zh) | 2020-08-13 | 2020-08-13 | 内存分配方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112099943A CN112099943A (zh) | 2020-12-18 |
CN112099943B true CN112099943B (zh) | 2024-05-03 |
Family
ID=73752907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010812913.9A Active CN112099943B (zh) | 2020-08-13 | 2020-08-13 | 内存分配方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099943B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112286694B (zh) * | 2020-12-24 | 2021-04-02 | 瀚博半导体(上海)有限公司 | 基于深度学习计算网络的硬件加速器内存分配方法及*** |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281535A (zh) * | 2014-09-24 | 2015-01-14 | 北京兆易创新科技股份有限公司 | 一种映射表在内存中的处理方法和装置 |
CN106874219A (zh) * | 2016-12-23 | 2017-06-20 | 深圳云天励飞技术有限公司 | 一种卷积神经网络的数据调度方法、***及计算机设备 |
WO2017157158A1 (zh) * | 2016-03-17 | 2017-09-21 | 中兴通讯股份有限公司 | 写数据的方法及装置、计算机存储介质 |
WO2017198070A1 (zh) * | 2016-05-16 | 2017-11-23 | 深圳市中兴微电子技术有限公司 | 一种多通道数据存储器及其存取方法及装置、存储介质 |
CN108829610A (zh) * | 2018-04-02 | 2018-11-16 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
CN109976903A (zh) * | 2019-02-22 | 2019-07-05 | 华中科技大学 | 一种基于层宽内存分配的深度学习异构计算方法和*** |
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
CN110766135A (zh) * | 2019-10-15 | 2020-02-07 | 北京芯启科技有限公司 | 一种对任意深度神经网络优化其运行功能时所需存储的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20150016089A (ko) * | 2013-08-02 | 2015-02-11 | 안병익 | 신경망 컴퓨팅 장치 및 시스템과 그 방법 |
US11907760B2 (en) * | 2016-09-23 | 2024-02-20 | Apple Inc. | Systems and methods of memory allocation for neural networks |
US11694066B2 (en) * | 2017-10-17 | 2023-07-04 | Xilinx, Inc. | Machine learning runtime library for neural network acceleration |
KR20200067632A (ko) * | 2018-12-04 | 2020-06-12 | 삼성전자주식회사 | 뉴럴 네트워크를 구동하기 위한 메모리 공간을 할당하는 방법 및 장치 |
-
2020
- 2020-08-13 CN CN202010812913.9A patent/CN112099943B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104281535A (zh) * | 2014-09-24 | 2015-01-14 | 北京兆易创新科技股份有限公司 | 一种映射表在内存中的处理方法和装置 |
WO2017157158A1 (zh) * | 2016-03-17 | 2017-09-21 | 中兴通讯股份有限公司 | 写数据的方法及装置、计算机存储介质 |
WO2017198070A1 (zh) * | 2016-05-16 | 2017-11-23 | 深圳市中兴微电子技术有限公司 | 一种多通道数据存储器及其存取方法及装置、存储介质 |
CN106874219A (zh) * | 2016-12-23 | 2017-06-20 | 深圳云天励飞技术有限公司 | 一种卷积神经网络的数据调度方法、***及计算机设备 |
CN108829610A (zh) * | 2018-04-02 | 2018-11-16 | 浙江大华技术股份有限公司 | 一种神经网络前向计算过程中的内存管理方法及设备 |
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
CN109976903A (zh) * | 2019-02-22 | 2019-07-05 | 华中科技大学 | 一种基于层宽内存分配的深度学习异构计算方法和*** |
CN110766135A (zh) * | 2019-10-15 | 2020-02-07 | 北京芯启科技有限公司 | 一种对任意深度神经网络优化其运行功能时所需存储的方法 |
Non-Patent Citations (2)
Title |
---|
基于云计算平台下空间数据存储模型分析研究;庄连英;房红记;;电脑知识与技术(第14期);全文 * |
面向结构体数据布局优化的高效内存管理;闫家年;陈文光;郑纬民;;清华大学学报(自然科学版)(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112099943A (zh) | 2020-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106170757B (zh) | 一种数据存储方法及装置 | |
CN108845877B (zh) | 管理内存的方法、装置和*** | |
CN112214313A (zh) | 内存分配方法及相关设备 | |
CN110399096B (zh) | 分布式文件***元数据缓存重删的方法、装置以及设备 | |
CN112099943B (zh) | 内存分配方法及相关设备 | |
CN112269661B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN105242879B (zh) | 一种数据存储方法以及协议服务器 | |
CN111597129B (zh) | 缓存管理方法、装置、存储介质和固态非易失存储设备 | |
CN113419672A (zh) | 一种存储容量管理方法、***及存储介质 | |
CN113971163A (zh) | 一种小文件合并存储方法、读取方法以及服务器 | |
CN111722908A (zh) | 一种虚拟机的创建方法、***、设备以及介质 | |
CN113742304B (zh) | 一种混合云的数据存储方法 | |
CN112883239B (zh) | 一种资源分配方法、装置、计算机设备及存储介质 | |
CN112506429B (zh) | 进行删除处理的方法、装置、设备及存储介质 | |
CN114897426A (zh) | 分案信息处理方法、装置、计算机设备及存储介质 | |
CN110865901B (zh) | 组建ec条带的方法和装置 | |
CN112612784A (zh) | 河水流域计算单元自动划分方法、装置和计算机设备 | |
CN112799592A (zh) | 一种多命名空间的分配方法、装置、设备及可读介质 | |
CN112783440B (zh) | 一种面向区块链用户节点的数据存储方法及装置 | |
CN115442388B (zh) | 用于分布式存储集群利用率100%的扩容方法、装置及*** | |
CN109542622A (zh) | 一种数据处理方法及装置 | |
CN109144740A (zh) | 一种分布式锁实现方法和装置 | |
CN116938849B (zh) | 流表规格智能调整方法及相关设备 | |
CN113609076B (zh) | 一种文件存储方法和文件读取方法 | |
CN114327273A (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 |