CN113791910A - 内存分配方法、内存分配装置、电子设备和可读存储介质 - Google Patents

内存分配方法、内存分配装置、电子设备和可读存储介质 Download PDF

Info

Publication number
CN113791910A
CN113791910A CN202111108224.0A CN202111108224A CN113791910A CN 113791910 A CN113791910 A CN 113791910A CN 202111108224 A CN202111108224 A CN 202111108224A CN 113791910 A CN113791910 A CN 113791910A
Authority
CN
China
Prior art keywords
memory
memory block
multiplexing
node
nodes
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
CN202111108224.0A
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.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication 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 Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202111108224.0A priority Critical patent/CN113791910A/zh
Publication of CN113791910A publication Critical patent/CN113791910A/zh
Priority to PCT/CN2022/119685 priority patent/WO2023045879A1/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/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

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

Abstract

本申请公开了一种内存分配方法、内存分配装置、电子设备和可读存储介质,属于通信技术领域。该内存分配方法包括:获取神经网络的全局信息;基于全局信息获取神经网络的内存块复用策略;基于内存块复用策略确定神经网络的内存分配策略。

Description

内存分配方法、内存分配装置、电子设备和可读存储介质
技术领域
本申请属于通信技术领域,具体涉及一种内存分配方法、内存分配装置、电子设备和可读存储介质。
背景技术
随着人工智能和大数据的蓬勃发展,为了兼顾用户体验和隐私保护,越来越多深度神经网络算法部署到电子设备上。深度神经网络算法的前向推理计算需要申请大量的运行内存才能确保中间计算的正确性,而电子设备上运行内存的限制是阻碍移动端神经网络设计的一大因素。
发明内容
本申请实施例的目的是提供一种内存分配方法、内存分配装置、电子设备和可读存储介质,能够解决相关技术中深度神经网络算法的运行内存的限制的问题。
第一方面,本申请实施例提供了一种内存分配方法,该内存分配方法包括:
获取神经网络的全局信息;
基于全局信息获取神经网络的内存块复用策略;
基于内存块复用策略确定神经网络的内存分配策略。
第二方面,本申请实施例提供了一种内存分配装置,该内存分配装置包括:
获取模块,用于获取神经网络的全局信息;
分配模块,用于基于全局信息获取神经网络的内存块复用策略;
确定模块,用于基于内存块复用策略确定神经网络的内存分配策略。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,可读存储介质上存储程序或指令,程序或指令被处理器执行时实现如第一方面的方法的步骤。
第五方面,本申请实施例提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现如第一方面的方法。
在本申请实施例中,提出一种神经网络内存复用策略的实现方案,具体地,根据神经网络的全局信息,为神经网络的节点确定内存块复用策略,从而在对神经网络使用时按照内存块复用策略为神经网络的节点分配内存。通过上述方式,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存,从而增强电子设备神经网络的复杂度、运行平台的多样性以及并行神经网络的个数。
附图说明
图1是本申请实施例的内存分配方法的流程示意图;
图2是本申请实施例的内存分配方式的示意图之一;
图3是本申请实施例的内存分配方式的示意图之二;
图4是本申请实施例的内存分配方式的示意图之三;
图5是本申请实施例的内存分配装置的示意框图;
图6是本申请实施例的电子设备的示意框图之一;
图7是本申请实施例的电子设备的示意框图之二。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的内存分配方法、内存分配装置、电子设备和可读存储介质进行详细地说明。
本申请实施例提供一种内存分配方法,如图1所示,该内存分配方法包括:
步骤102,获取神经网络的全局信息;
步骤104,基于全局信息获取神经网络的内存块复用策略;
步骤106,基于内存块复用策略确定神经网络的内存分配策略。
在该实施例中,提出一种神经网络内存复用策略的实现方案,具体地,根据神经网络的全局信息,为神经网络的节点确定内存块复用策略,从而在对神经网络使用时按照内存块复用策略为神经网络的节点分配内存。
通过上述方式,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存,从而增强电子设备神经网络的复杂度、运行平台的多样性以及并行神经网络的个数。
进一步地,在本申请的一个实施例中,全局信息包括神经网络的节点的所需内存块;基于全局信息获取神经网络的内存块复用策略,包括:按照所需内存块由大到小的顺序,将神经网络的节点排序;根据节点的排序顺序,为神经网络的节点分配内存块,生成至少一个内存块复用策略;基于内存块复用策略确定神经网络的内存分配策略,包括:将第一目标复用策略作为神经网络的内存分配策略,其中,第一目标复用策略为内存块的总和小于或等于第一预设阈值的内存块复用策略。
在该实施例中,根据电子设备的神经网络的每个节点的所需内存块,对神经网络的所有节点,按照所需内存块由大到小的顺序进行排序。进而按照排序顺序从前到后的顺序为节点分配内存块,也就是说,优先对较大的内存块进行复用,减少神经网络总运行内存的申请。
通过为节点分配内存块得到至少一个内存分配方式,进一步地,输出总内存小于或等于第一预设阈值的内存分配方式。例如,得到1000个内存分配方式,将内存分配方式进行总内存大小的排序,选取总内存分配最小的分配方式作为该神经网络最佳的内存复用策略,从而在执行该神经网络时,根据最佳的内存复用策略为每个节点分配内存块。
通过本申请实施例的上述神经网络内存复用策略的实现方案,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存。
需要说明的是,中央处理器(Central Processing Unit,CPU)和数字信号处理(Digital Signal Processing,DSP)硬件上的神经网络运行内存复用也可以通过指针偏移的方式进一步压缩内存。
进一步地,在本申请的一个实施例中,根据节点的排序顺序,为神经网络的节点分配内存块,生成至少一个内存块复用策略,包括:根据节点的排序顺序,将神经网络的节点划分为N个节点组;为每个节点组的节点分配内存块,生成至少一个内存块复用策略;其中,N为大于或等于4的正整数。
在该实施例中,按照所需内存块由大到小的顺序,将神经网络的所有节点划分为N个节点组,每个节点组里包括至少一个节点,每个节点组里的节点数量可以相等或不相等。例如,神经网络包括20个节点,将前6个节点分为第1节点组,将第7至第10个节点分为第2节点组,将第11至第14个节点分为第3节点组,剩下的节点分为第4节点组。进而为每个节点组的节点分配内存块,生成神经网络的至少一个内存块复用策略,并最终选取总内存分配最小的复用策略作为该神经网络最佳的内存分配策略。
本申请实施例,截断(也即分组)深度搜索各种内存块复用的可能性,从而选择总运行内存最小的复用策略,本申请实施能够实现对任意结构的神经网络都得到运行内存上的压缩优化。
进一步地,在本申请的一个实施例中,为每个节点组的节点分配内存块,生成至少一个内存块复用策略,包括:确定第1个节点组中的第i个节点的至少一个第一复用内存块,并为第i个节点分配第一复用内存块,生成至少一个第一内存块复用策略;确定第i个节点的第一非复用内存块,并为第i个节点分配第一非复用内存块,生成至少一个第二内存块复用策略;将第二目标复用策略作为内存块复用策略;其中,i大于或等于1且小于或等于O,O为第1个节点组的节点的总数量,第二目标复用策略为内存块的总和小于或等于第二预设阈值的第一内存块复用策略或第二内存块复用策略。
在该实施例中,利用排列组合搜索确定内存块复用策略,排列组合搜索类似树结构搜索,会探索所有复用的可能性。
具体地,对于第1个节点组中的任一节点,确定该节点的至少一个第一复用内存块,并为该节点分配第一复用内存块,生成至少一个第一内存块复用策略,以及确定该节点的第一非复用内存块,并为该节点分配第一非复用内存块,生成至少一个第二内存块复用策略。将至少一个第一内存块复用策略和至少一个第二内存块复用策略,按照内存块总和由大到小的顺序排列,并取总内存(即内存块总和)小于或等于第二预设阈值的内存块复用策略,作为神经网络第1个节点组的节点的内存块复用策略。
示例性地,第1个节点组中包括神经网络中前6个最大内存块的节点,在遍历前6个最大内存块的节点,寻找无连接冲突且大小可复用的内存块时,会考虑非复用的情况。具体地,如图2所示,第一节点202、第二节点204代表遍历到的节点,第一节点202中的数字36代表其内存大小为36个单位、数字2代表在其在神经网络中的位置,第二节点204中的数字20代表其内存大小为20个单位、数字0代表在其在神经网络中的位置。当遍历到第一节点202时,会先筛选出可复用的内存块206(内存块206的内存大小为40个单位),并***出一条分支去考虑后面内存的复用情况。
同时也会考虑非复用的情况,也即,不直接复用内存块206,而是单独为第一节点202分配内存块208(内存块208的内存大小为36个单位),并***出一个分支去考虑其他节点的内存复用策略。
除了非复用,在当前节点面对多个可复用的内存块时也会各自***出不同的分支去考虑后面的内存复用策略。具体地,如图2所示,第二节点204在左边的分支会有三种可复用的内存块:内存块210、内存块212、内存块210(内存大小分别为20个单位、28个单位、36个单位),此时会遍历所有内存块的选择。
随着遍历节点的增加,产生的分支也会越多,分支会呈指数级别增长,但由于只是对前6个最大内存块的节点进行了搜索,因此在这个阶段的搜索量将不会超过720次。得到对前6个最大内存块的节点的所有内存复用策略后,将会对这些候选策略进行总内存大小的排序,并挑选出前10个总内存最小的策略进入下一轮的搜索。
通过上述方式,实现利用排列组合搜索的方法确定内存块复用策略,为神经网络具有较大内存块需求的节点优先分配内存块,减少神经网络总运行内存的申请。
进一步地,在本申请的一个实施例中,为每个节点组的节点分配内存块,生成至少一个内存块复用策略,包括:基于第M-1个节点组确定的内存块复用策略,确定第M个节点组中的第j个节点的至少一个第二复用内存块,并为第j个节点分配第二复用内存块,生成至少一个第三内存块复用策略;确定第j个节点的第二非复用内存块,并为第i个节点分配第二非复用内存块,生成至少一个第四内存块复用策略;将第三目标复用策略作为内存块复用策略;其中,M大于1且小于N,j大于或等于1且小于或等于P,P为第M个节点组的节点的总数量,第三目标复用策略为内存块的总和小于或等于第三预设阈值的第三内存块复用策略或第四内存块复用策略。
在该实施例中,在确定了第M-1个节点组的内存块复用策略后,对于第M个节点组中的任一节点,确定该节点的至少一个第二复用内存块,并为该节点分配第二复用内存块,生成至少一个第三内存块复用策略,以及确定该节点的第二非复用内存块,并为该节点分配第二非复用内存块,生成至少一个第四内存块复用策略。将至少一个第三内存分配方式和至少一个第四内存分配方式,按照内存块总和由大到小的顺序排列,并取总内存(即内存块总和)小于或等于第三预设阈值的内存块复用策略,作为神经网络前M个节点组的节点的内存块复用策略。
示例性地,神经网络包括20个节点,将前6个节点分为第1节点组,将第7至第10个节点分为第2节点组,将第11至第14个节点分为第3节点组,剩下的节点分为第4节点组。在确定前6个最大内存块的节点的前10个最佳复用策略后,会接着在这10个最佳复用策略的基础上,对第7至第10个最大内存块的节点进行复用内存搜索。具体地,依然会采用排列组合搜索的策略进行搜索,并***不同分支作为不同的局部内存复用策略,这个阶段的分支数不会超过2401个。最后将第1个节点组获得的10个复用策略都能得到相应的拓展分支,再从中选取前100个总内存分配最小的复用策略作为下一步的输入。并继续对第11至第14个最大内存块的节点进行相同的复用搜索,最终从输出的复用策略中选取前1000个总内存分配最小的复用策略作为最终的输出。
通过上述方式,实现利用排列组合搜索的方法确定内存块复用策略,按照所需内存块的大小顺序为节点分配内存块,减少神经网络总运行内存的申请,使神经网络得到运行内存上的压缩优化。
进一步地,在本申请的一个实施例中,全局信息包括神经网络的节点的拓扑结构信息;为每个节点组的节点分配内存块,生成至少一个内存块复用策略,包括:基于第N-1个节点组确定的内存块复用策略,根据第N个节点组中的第t个节点在拓扑结构上的前2个节点的内存块,为第t个节点分配内存块,生成至少一个第五内存块复用策略;将第五内存块复用策略作为内存块复用策略;其中,t大于或等于1且小于或等于Q,Q为第N个节点组的节点的总数量。
在该实施例中,在遍历完前N-1个节点组后,由于深度神经网络逐步压缩特征的特性,后面需要遍历的节点的复用分配将不会对总内存大小造成太大的影响,因此后面节点(也即第N个节点组中的节点)的遍历将不再进行排列组合搜索,而是采用直接重要性判断的方式选择可复用的内存块。具体地,在确定了第N-1个节点组的内存块复用策略后,为了避免出现局部节点产生死锁现象,对于最后一个节点组中的任一节点,根据该节点在拓扑结构上的前2个节点的内存块,为该节点分配内存块,从而生成至少一个第五内存块复用策略。将至少一个第五内存块复用策略作为神经网络N个节点组的节点的内存块复用策略。
示例性地,如上述举例,得到前1000个总内存分配最小的复用策略。在选取前1000个总内存分配最小的复用策略继续进行策略分配时,往往会遇到多个总内存大小相同的复用策略,这时候就需要对这些复用策略进行重要排序。
如图3所示,位置0处的节点302和位置3处的节点304共用相同内存块,位置1处的节点306和位置4处的节点308共用相同内存块,位置2处的节点310使用一个内存块。需要说明的是,节点内的大号数字代表该节点所需的内存单位大小、小号数字代表该节点在神经网络中的拓扑位置。如果采取图3所示的策略作为当前神经网络的复用策略,则需要分配36+20+16=72个单位大小的内存,这是由于节点302和节点304的拓扑位置使得局部节点产生了死锁的现象,可复用的内存块变少了,位置0处的节点302和位置3处的节点304只能单独的分配内存。而实际上位置0处的节点302、位置2处的节点310、位置4处的节点308共享同一块内存块才是最佳的策略,这样总内存分配也会压缩到36+20=56个单位。
因此在选取前1000个总内存分配最小的复用策略继续进行策略分配时,如果遇到总内存大小相同的复用策略,则会对各个节点的拓扑位置进行判断,尽可能去选择交叉节点内存复用的策略,以此减少死锁现象的发生,为后面遍历其他新的节点提供更多、更适合复用的选择。
需要说明的是,通过记录各网络节点的前后拓扑关系确定节点的实际拓扑位置,通过记录各网络节点的前后拓扑关系避免复用错误内存块所造成的网络推理计算错误的问题,为后续复用非冲突的内存块做准备。交叉节点指示中间间隔了一个节点的两个节点。例如,对于第s个节点,其交叉节点包括第s-2个节点和第s+2个节点。如图4所示,节点304和节点306为交叉节点,节点308和节点310为交叉节点。
另外,越多的交叉节点内存分配意味着当前复用策略的重要性更高,将在相同总内存大小的复用策略当中选择重要性排列靠前的复用策略作为最终输出的复用策略。
通过上述方式,对所需内存块的大小靠后的节点,采用重要性判断的方式选择可复用的内存块,避免出现产生局部节点死锁现象,提高内存块复用的准确性。
需要说明的是,本申请实施例提供的内存分配方法,执行主体可以为内存分配装置,或者,该内存分配装置中的用于执行内存分配方法的控制模块。本申请实施例中以内存分配装置执行内存分配方法为例,说明本申请实施例提供的内存分配装置。
本申请实施例提供一种内存分配装置,如图5所示,该内存分配装置500包括:
获取模块502,用于获取神经网络的全局信息;
分配模块504,用于基于全局信息获取神经网络的内存块复用策略;
确定模块506,用于基于内存块复用策略确定神经网络的内存分配策略。
在该实施例中,提出一种神经网络内存复用策略的实现方案,具体地,根据神经网络的全局信息,为神经网络的节点确定内存块复用策略,从而在对神经网络使用时按照内存块复用策略为神经网络的节点分配内存。通过上述方式,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存,从而增强电子设备神经网络的复杂度、运行平台的多样性以及并行神经网络的个数。
进一步地,在本申请的一个实施例中,全局信息包括神经网络的节点的所需内存块;内存分配装置包括:排序模块,用于按照所需内存块由大到小的顺序,将神经网络的节点排序;分配模块504,具体用于根据节点的排序顺序,为神经网络的节点分配内存块,生成至少一个内存块复用策略;确定模块506,具体用于将第一目标复用策略作为神经网络的内存分配策略,其中,第一目标复用策略为内存块的总和小于或等于第一预设阈值的内存块复用策略。
在该实施例中,根据电子设备的神经网络的每个节点的所需内存块,对神经网络的所有节点,按照所需内存块由大到小的顺序进行排序。进而按照排序顺序从前到后的顺序为节点分配内存块,也就是说,优先对较大的内存块进行复用,减少神经网络总运行内存的申请。通过为节点分配内存块得到至少一个内存分配方式,进一步地,输出总内存小于或等于第一预设阈值的内存分配方式。通过本申请实施例的上述神经网络内存复用策略的实现方案,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存,从而增强电子设备神经网络的复杂度、运行平台的多样性以及并行神经网络的个数。
进一步地,在本申请的一个实施例中,该内存分配装置500还包括:划分模块,用于根据节点的排序顺序,将神经网络的节点划分为N个节点组;分配模块504,具体用于为每个节点组的节点分配内存块,生成至少一个内存块复用策略;其中,N为大于或等于4的正整数。
进一步地,在本申请的一个实施例中,分配模块504,具体用于:确定第1个节点组中的第i个节点的至少一个第一复用内存块,并为第i个节点分配第一复用内存块,生成至少一个第一内存块复用策略;确定第i个节点的第一非复用内存块,并为第i个节点分配第一非复用内存块,生成至少一个第二内存块复用策略;将第二目标复用策略作为内存块复用策略;其中,i大于或等于1且小于或等于O,O为第1个节点组的节点的总数量,第二目标复用策略为内存块的总和小于或等于第二预设阈值的第一内存块复用策略或第二内存块复用策略。
进一步地,在本申请的一个实施例中,分配模块504,具体用于:基于第M-1个节点组确定的内存块复用策略,确定第M个节点组中的第j个节点的至少一个第二复用内存块,并为第j个节点分配第二复用内存块,生成至少一个第三内存块复用策略;确定第j个节点的第二非复用内存块,并为第i个节点分配第二非复用内存块,生成至少一个第四内存块复用策略;将第三目标复用策略作为内存块复用策略;其中,M大于1且小于N,j大于或等于1且小于或等于P,P为第M个节点组的节点的总数量,第三目标复用策略为内存块的总和小于或等于第三预设阈值的第三内存块复用策略或第四内存块复用策略。
进一步地,在本申请的一个实施例中,分配模块504,具体用于:基于第N-1个节点组确定的内存块复用策略,根据第N个节点组中的第t个节点在拓扑结构上的前2个节点的内存块,为第t个节点分配内存块,生成至少一个第五内存块复用策略;将第五内存块复用策略作为内存块复用策略;其中,t大于或等于1且小于或等于Q,Q为第N个节点组的节点的总数量。
本申请实施例中的内存分配装置500可以是装置,也可以是终端中的部件、集成电路或芯片。该装置可以是移动电子设备,也可以为非移动电子设备。示例性的,移动电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、可穿戴设备、超级移动个人计算机(Ultra-Mobile Personal Computer,UMPC)、上网本或者个人数字助理(PersonalDigital Assistant,PDA)等,非移动电子设备可以为服务器、网络附属存储器(NetworkAttached Storage,NAS)、个人计算机(Personal Computer,PC)、电视机(Television,TV)、柜员机或者自助机等,本申请实施例不作具体限定。
本申请实施例中的内存分配装置500可以为具有操作***的装置。该操作***可以为安卓(Android)操作***,可以为ios操作***,还可以为其他可能的操作***,本申请实施例不作具体限定。
本申请实施例提供的内存分配装置500能够实现图1的方法实施例中实现的各个过程,为避免重复,这里不再赘述。
可选的,如图6所示,本申请实施例还提供一种电子设备600,包括处理器602,存储器604,存储在存储器604上并可在处理器602上运行的程序或指令,该程序或指令被处理器602执行时实现上述内存分配方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要注意的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
图7为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备700包括但不限于:射频单元702、网络模块704、音频输出单元706、输入单元708、传感器710、显示单元712、用户输入单元714、接口单元716、存储器718、以及处理器720等部件。
本领域技术人员可以理解,电子设备700还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理***与处理器720逻辑相连,从而通过电源管理***实现管理充电、放电、以及功耗管理等功能。图7中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器720,用于:获取神经网络的全局信息;基于全局信息获取神经网络的内存块复用策略;基于内存块复用策略确定神经网络的内存分配策略。
在该实施例中,提出一种神经网络内存复用策略的实现方案,具体地,根据神经网络的全局信息,为神经网络的节点确定内存块复用策略,从而在对神经网络使用时按照内存块复用策略为神经网络的节点分配内存。通过上述方式,能够提高电子设备内存的复用率,降低神经网络前向推理所需的总运行内存,从而增强电子设备神经网络的复杂度、运行平台的多样性以及并行神经网络的个数。
进一步地,在本申请的一个实施例中,全局信息包括神经网络的节点的所需内存块;处理器720,具体用于:按照所需内存块由大到小的顺序,将神经网络的节点排序;根据节点的排序顺序,为神经网络的节点分配内存块,生成至少一个内存块复用策略;将第一目标复用策略作为神经网络的内存分配策略,其中,第一目标复用策略为内存块的总和小于或等于第一预设阈值的内存块复用策略。
进一步地,在本申请的一个实施例中,处理器720,具体用于:根据节点的排序顺序,将神经网络的节点划分为N个节点组;为每个节点组的节点分配内存块,生成至少一个内存块复用策略;其中,N为大于或等于4的正整数。
进一步地,在本申请的一个实施例中,处理器720,具体用于:确定第1个节点组中的第i个节点的至少一个第一复用内存块,并为第i个节点分配第一复用内存块,生成至少一个第一内存块复用策略;确定第i个节点的第一非复用内存块,并为第i个节点分配第一非复用内存块,生成至少一个第二内存块复用策略;将第二目标复用策略作为内存块复用策略;其中,i大于或等于1且小于或等于O,O为第1个节点组的节点的总数量,第二目标复用策略为内存块的总和小于或等于第二预设阈值的第一内存块复用策略或第二内存块复用策略。
进一步地,在本申请的一个实施例中,处理器720,具体用于:基于第M-1个节点组确定的内存块复用策略,确定第M个节点组中的第j个节点的至少一个第二复用内存块,并为第j个节点分配第二复用内存块,生成至少一个第三内存块复用策略;确定第j个节点的第二非复用内存块,并为第i个节点分配第二非复用内存块,生成至少一个第四内存块复用策略;将第三目标复用策略作为内存块复用策略;其中,M大于1且小于N,j大于或等于1且小于或等于P,P为第M个节点组的节点的总数量,第三目标复用策略为内存块的总和小于或等于第三预设阈值的第三内存块复用策略或第四内存块复用策略。
进一步地,在本申请的一个实施例中,全局信息还包括神经网络的节点的拓扑结构信息;处理器720,具体用于:基于第N-1个节点组确定的内存块复用策略,根据第N个节点组中的第t个节点在拓扑结构上的前2个节点的内存块,为第t个节点分配内存块,生成至少一个第五内存块复用策略;将第五内存块复用策略作为内存块复用策略;其中,t大于或等于1且小于或等于Q,Q为第N个节点组的节点的总数量。
应理解的是,本申请实施例中,射频单元702可用于收发信息或收发通话过程中的信号,具体的,接收基站的下行数据或向基站发送上行数据。射频单元702包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器、双工器等。
网络模块704为用户提供了无线的宽带互联网访问,如帮助用户收发电子邮件、浏览网页和访问流式媒体等。
音频输出单元706可以将射频单元702或网络模块704接收的或者在存储器718中存储的音频数据转换成音频信号并且输出为声音。而且,音频输出单元706还可以提供与电子设备700执行的特定功能相关的音频输出(例如,呼叫信号接收声音、消息接收声音等等)。音频输出单元706包括扬声器、蜂鸣器以及受话器等。
输入单元708用于接收音频或视频信号。输入单元708可以包括图形处理器(Graphics Processing Unit,GPU)7082和麦克风7084,图形处理器7082对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。处理后的图像帧可以显示在显示单元712上,或者存储在存储器718(或其它存储介质)中,或者经由射频单元702或网络模块704发送。麦克风7084可以接收声音,并且能够将声音处理为音频数据,处理后的音频数据可以在电话通话模式的情况下转换为可经由射频单元702发送到移动通信基站的格式输出。
电子设备700还包括至少一种传感器710,比如指纹传感器、压力传感器、虹膜传感器、分子传感器、陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器以及其他传感器。
显示单元712用于显示由用户输入的信息或提供给用户的信息。显示单元712可包括显示面板7122,可以采用液晶显示器、有机发光二极管等形式来配置显示面板7122。
用户输入单元714可用于接收输入的数字或字符信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。具体地,用户输入单元714包括触控面板7142以及其他输入设备7144。触控面板7142也称为触摸屏,可收集用户在其上或附近的触摸操作。触控面板7142可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器720,接收处理器720发来的命令并加以执行。其他输入设备7144可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
进一步的,触控面板7142可覆盖在显示面板7122上,当触控面板7142检测到在其上或附近的触摸操作后,传送给处理器720以确定触摸事件的类型,随后处理器720根据触摸事件的类型在显示面板7122上提供相应的视觉输出。触控面板7142与显示面板7122可作为两个独立的部件,也可以集成为一个部件。
接口单元716为外部装置与电子设备700连接的接口。例如,外部装置可以包括有线或无线头戴式耳机端口、外部电源(或电池充电器)端口、有线或无线数据端口、存储卡端口、用于连接具有识别模块的装置的端口、音频输入/输出(I/O)端口、视频I/O端口、耳机端口等等。接口单元716可以用于接收来自外部装置的输入(例如,数据信息、电力等等)并且将接收到的输入传输到电子设备700内的一个或多个元件或者可以用于在电子设备700和外部装置之间传输数据。
存储器718可用于存储软件程序以及各种数据。存储器718可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据移动终端的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器718可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器720通过运行或执行存储在存储器718内的软件程序和/或模块,以及调用存储在存储器718内的数据,执行电子设备700的各种功能和处理数据,从而对电子设备700进行整体监控。处理器720可包括一个或多个处理单元;优选的,处理器720可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作***、用户界面和应用程序等,调制解调处理器主要处理无线通信。
本申请实施例还提供一种可读存储介质,可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述内存分配方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、磁碟或者光盘等。
本申请实施例另提供了一种芯片,芯片包括处理器和通信接口,通信接口和处理器耦合,处理器用于运行程序或指令,实现上述内存分配方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为***级芯片、***芯片、芯片***或片上***芯片等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (14)

1.一种内存分配方法,其特征在于,包括:
获取神经网络的全局信息;
基于所述全局信息获取所述神经网络的内存块复用策略;
基于所述内存块复用策略确定所述神经网络的内存分配策略。
2.根据权利要求1所述的内存分配方法,其特征在于,所述全局信息包括所述神经网络的节点的所需内存块;
所述基于所述全局信息获取所述神经网络的内存块复用策略,包括:
按照所述所需内存块由大到小的顺序,将所述神经网络的节点排序;
根据所述节点的排序顺序,为所述神经网络的节点分配内存块,生成至少一个所述内存块复用策略;
所述基于所述内存块复用策略确定所述神经网络的内存分配策略,包括:
将第一目标复用策略作为所述神经网络的内存分配策略,其中,所述第一目标复用策略为内存块的总和小于或等于第一预设阈值的内存块复用策略。
3.根据权利要求2所述的内存分配方法,其特征在于,所述根据所述节点的排序顺序,为所述神经网络的节点分配内存块,生成至少一个所述内存块复用策略,包括:
根据所述节点的排序顺序,将所述神经网络的节点划分为N个节点组;
为每个所述节点组的节点分配内存块,生成至少一个所述内存块复用策略;
其中,N为大于或等于4的正整数。
4.根据权利要求3所述的内存分配方法,其特征在于,所述为每个所述节点组的节点分配内存块,生成至少一个所述内存块复用策略,包括:
确定第1个节点组中的第i个节点的至少一个第一复用内存块,并为所述第i个节点分配所述第一复用内存块,生成至少一个第一内存块复用策略;
确定所述第i个节点的第一非复用内存块,并为所述第i个节点分配所述第一非复用内存块,生成至少一个第二内存块复用策略;
将第二目标复用策略作为所述内存块复用策略;
其中,i大于或等于1且小于或等于O,O为所述第1个节点组的节点的总数量,所述第二目标复用策略为内存块的总和小于或等于第二预设阈值的所述第一内存块复用策略或所述第二内存块复用策略。
5.根据权利要求3所述的内存分配方法,其特征在于,所述为每个所述节点组的节点分配内存块,生成至少一个所述内存块复用策略,包括:
基于第M-1个节点组确定的所述内存块复用策略,确定第M个节点组中的第j个节点的至少一个第二复用内存块,并为所述第j个节点分配所述第二复用内存块,生成至少一个第三内存块复用策略;
确定所述第j个节点的第二非复用内存块,并为所述第i个节点分配所述第二非复用内存块,生成至少一个第四内存块复用策略;
将第三目标复用策略作为所述内存块复用策略;
其中,M大于1且小于N,j大于或等于1且小于或等于P,P为所述第M个节点组的节点的总数量,所述第三目标复用策略为内存块的总和小于或等于第三预设阈值的所述第三内存块复用策略或所述第四内存块复用策略。
6.根据权利要求3至5中任一项所述的内存分配方法,其特征在于,所述全局信息还包括所述神经网络的节点的拓扑结构信息;
所述为每个所述节点组的节点分配内存块,生成至少一个所述内存块复用策略,包括:
基于第N-1个节点组确定的所述内存块复用策略,根据第N个节点组中的第t个节点在所述拓扑结构上的前2个节点的内存块,为所述第t个节点分配内存块,生成至少一个第五内存块复用策略;
将所述第五内存块复用策略作为所述内存块复用策略;
其中,t大于或等于1且小于或等于Q,Q为所述第N个节点组的节点的总数量。
7.一种内存分配装置,其特征在于,包括:
获取模块,用于获取神经网络的全局信息;
分配模块,用于基于所述全局信息获取所述神经网络的内存块复用策略;
确定模块,用于基于所述内存块复用策略确定所述神经网络的内存分配策略。
8.根据权利要求7所述的内存分配装置,其特征在于,所述全局信息包括所述神经网络的节点的所需内存块;所述内存分配装置包括:
排序模块,用于按照所述所需内存块由大到小的顺序,将所述神经网络的节点排序;
所述分配模块,具体用于根据所述节点的排序顺序,为所述神经网络的节点分配内存块,生成至少一个内存块复用策略;
所述确定模块,具体用于将第一目标复用策略作为所述神经网络的内存分配策略,其中,所述第一目标复用策略为内存块的总和小于或等于第一预设阈值的内存块复用策略。
9.根据权利要求8所述的内存分配装置,其特征在于,还包括:
划分模块,用于根据所述节点的排序顺序,将所述神经网络的节点划分为N个节点组;
所述分配模块,具体用于为每个所述节点组的节点分配内存块,生成至少一个所述内存块复用策略;
其中,N为大于或等于4的正整数。
10.根据权利要求9所述的内存分配装置,其特征在于,所述分配模块,具体用于:
确定第1个节点组中的第i个节点的至少一个第一复用内存块,并为所述第i个节点分配所述第一复用内存块,生成至少一个第一内存块复用策略;
确定所述第i个节点的第一非复用内存块,并为所述第i个节点分配所述第一非复用内存块,生成至少一个第二内存块复用策略;
将第二目标复用策略作为所述内存块复用策略;
其中,i大于或等于1且小于或等于O,O为所述第1个节点组的节点的总数量,所述第二目标复用策略为内存块的总和小于或等于第二预设阈值的所述第一内存块复用策略或所述第二内存块复用策略。
11.根据权利要求9所述的内存分配装置,其特征在于,所述分配模块,具体用于:
基于第M-1个节点组确定的所述内存块复用策略,确定第M个节点组中的第j个节点的至少一个第二复用内存块,并为所述第j个节点分配所述第二复用内存块,生成至少一个第三内存块复用策略;
确定所述第j个节点的第二非复用内存块,并为所述第i个节点分配所述第二非复用内存块,生成至少一个第四内存块复用策略;
将第三目标复用策略作为所述内存块复用策略;
其中,M大于1且小于N,j大于或等于1且小于或等于P,P为所述第M个节点组的节点的总数量,所述第三目标复用策略为内存块的总和小于或等于第三预设阈值的所述第三内存块复用策略或所述第四内存块复用策略。
12.根据权利要求9至11中任一项所述的内存分配装置,其特征在于,所述全局信息还包括所述神经网络的节点的拓扑结构信息;所述分配模块,具体用于:
基于第N-1个节点组确定的所述内存块复用策略,根据第N个节点组中的第t个节点在所述拓扑结构上的前2个节点的内存块,为所述第t个节点分配内存块,生成至少一个第五内存块复用策略;
将所述第五内存块复用策略作为所述内存块复用策略;
其中,t大于或等于1且小于或等于Q,Q为所述第N个节点组的节点的总数量。
13.一种电子设备,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至6中任一项所述的内存分配方法的步骤。
14.一种可读存储介质,其上存储有程序或指令,其特征在于,所述程序或指令被处理器执行时实现如权利要求1至6中任一项所述的内存分配方法的步骤。
CN202111108224.0A 2021-09-22 2021-09-22 内存分配方法、内存分配装置、电子设备和可读存储介质 Pending CN113791910A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111108224.0A CN113791910A (zh) 2021-09-22 2021-09-22 内存分配方法、内存分配装置、电子设备和可读存储介质
PCT/CN2022/119685 WO2023045879A1 (zh) 2021-09-22 2022-09-19 内存分配方法、内存分配装置、电子设备和可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111108224.0A CN113791910A (zh) 2021-09-22 2021-09-22 内存分配方法、内存分配装置、电子设备和可读存储介质

Publications (1)

Publication Number Publication Date
CN113791910A true CN113791910A (zh) 2021-12-14

Family

ID=78879132

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111108224.0A Pending CN113791910A (zh) 2021-09-22 2021-09-22 内存分配方法、内存分配装置、电子设备和可读存储介质

Country Status (2)

Country Link
CN (1) CN113791910A (zh)
WO (1) WO2023045879A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114298294A (zh) * 2021-12-28 2022-04-08 杭州雄迈集成电路技术股份有限公司 一种基于硬件加速器的神经网络内存优化方法和装置
WO2023045879A1 (zh) * 2021-09-22 2023-03-30 维沃移动通信有限公司 内存分配方法、内存分配装置、电子设备和可读存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110597616B (zh) * 2018-06-13 2022-07-29 华为技术有限公司 一种神经网络的内存分配方法及装置
CN113127181B (zh) * 2019-12-30 2024-02-20 杭州海康威视数字技术股份有限公司 内存管理方法、装置及存储介质
CN111814971B (zh) * 2020-06-30 2022-08-05 杭州国芯科技股份有限公司 一种神经网络的内存分配方法
CN112256441B (zh) * 2020-12-23 2021-05-04 上海齐感电子信息科技有限公司 神经网络推理的内存分配方法及装置
CN113791910A (zh) * 2021-09-22 2021-12-14 维沃移动通信有限公司 内存分配方法、内存分配装置、电子设备和可读存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023045879A1 (zh) * 2021-09-22 2023-03-30 维沃移动通信有限公司 内存分配方法、内存分配装置、电子设备和可读存储介质
CN114298294A (zh) * 2021-12-28 2022-04-08 杭州雄迈集成电路技术股份有限公司 一种基于硬件加速器的神经网络内存优化方法和装置
CN114298294B (zh) * 2021-12-28 2022-11-01 杭州雄迈集成电路技术股份有限公司 一种基于硬件加速器的神经网络内存优化方法和装置

Also Published As

Publication number Publication date
WO2023045879A1 (zh) 2023-03-30

Similar Documents

Publication Publication Date Title
CN111368934B (zh) 图像识别模型训练方法、图像识别方法以及相关装置
WO2023045879A1 (zh) 内存分配方法、内存分配装置、电子设备和可读存储介质
CN111867129B (zh) 物理随机接入信道传输方法、终端及网络侧设备
CN110163367B (zh) 一种终端部署方法和装置
CN107704321A (zh) 内存分配的方法、装置及终端设备
CN107895192B (zh) 深度卷积网络压缩方法、存储介质和终端
CN114973351B (zh) 人脸识别方法、装置、设备及存储介质
CN110633438A (zh) 一种新闻事件处理的方法、终端、服务器及存储介质
CN112947810A (zh) 界面显示方法、装置和电子设备
CN112650498B (zh) 静态库集成方法、装置、电子设备及存储介质
CN110378798B (zh) 异构社交网络构建方法、群组推荐方法、装置及设备
CN102893583B (zh) 在通信网络中确定与恢复计划相关联的最佳传送条件
CN114338770A (zh) 跨区块链的数据处理方法、装置、存储介质及终端设备
CN112948763B (zh) 件量预测方法、装置、电子设备及存储介质
CN110503189B (zh) 一种数据处理方法以及装置
US20200125431A1 (en) Method for invoking component, and terminal
CN112015973A (zh) 一种异构网络的关系推理方法及终端
CN115333928B (zh) 网络预警方法、装置、电子设备及存储介质
CN116450808B (zh) 一种数据的处理方法、装置以及存储介质
CN113778679B (zh) 资源调度方法、资源调度装置、电子设备和可读存储介质
CN107169353B (zh) 异常文件识别方法及装置
CN111488123B (zh) 存储空间管理方法、装置、存储介质及移动终端
CN110784444B (zh) 一种嵌套数据流处理的方法及相关设备
CN110139339B (zh) 一种通信方法和移动终端
CN113260070B (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