CN114298294A - 一种基于硬件加速器的神经网络内存优化方法和装置 - Google Patents
一种基于硬件加速器的神经网络内存优化方法和装置 Download PDFInfo
- Publication number
- CN114298294A CN114298294A CN202111652962.1A CN202111652962A CN114298294A CN 114298294 A CN114298294 A CN 114298294A CN 202111652962 A CN202111652962 A CN 202111652962A CN 114298294 A CN114298294 A CN 114298294A
- Authority
- CN
- China
- Prior art keywords
- memory
- node
- list
- neural network
- allocated
- 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.)
- Granted
Links
Images
Classifications
-
- 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
- Memory System (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于硬件加速器的神经网络内存优化实现方法与装置,所述方法和装置通过预设多个节点输出内存总和作为总内存,并建立空闲列表和待分配列表,通过对单个节点所需分配内存是否超出预设总内存,若是则增加所需内存的方式更新总内存,进一步执行内存分配和复用,提高内存的利用率。由于神经网络节点必须要2个以上,事先确定最小内存块总大小,采用预设空闲列表与已分配列表两个队列,其中空闲列表队列为满,按地址连续分配,已分配列表为空,按节点连接,携带节点内存信息;相对于现有的技术,确定内存块并排序,在大小相近内存块间进行复用方式,更加节省内存空间,避免了大小相近内存块差异,使得内存复用方式达到极致。
Description
技术领域
本发明涉及深度学习技术领域,特别涉及一种基于硬件加速器的神经网络内存优化方法和装置。
背景技术
随着深度神经网络的越来越复杂,出现硬件网络加速器,为了节省硬件成本,必须进行针对硬件加速器的内存优化,现阶段有以下比较佳优化策略;
运行整个神经网络,获取整个神经网络使用内存块信息,然后对内存块进行由大到小排序,后续按照内存块的排序,进行内存块的分配,确保分配较大内存块对已分配内存块的复用,分配新的内存给小内存块。比如神经网络运行过程中,按照先后顺序。共需占用5个内存块,分别为100M内存块,10M内存块,20M内存块,50M内存块以及20M内存块,并可确定100M内存块对应节点集合(1,2),10M内存块对应节点集合(2,3),20M内存块对应节点集合(3,4,5),50M内存块对应节点集合(5,6,7),20M内存块对应节点(7,8),然后对5个内存块从大到小排序,依次为100M,50M,20M,20M,10M,将最大内存块分配给节点(1,2),依次判断内存块是否可复用已分配集合中的内存块,比如50M内存块对应节点与100M内存块对应节点集合的交集是否为零,可以看出两者不存在交集,可分配50M内存块复用已分配100M内存块;
通过现有技术,分配100M内存块用于节点(5,6,7)的运算,不再为节点(5,6,7)的运算重新分配50M内存块,将100M内存块节点集合更新为(1,2,5,6,7),判断20M内存块所对应节点集合(3,4,5)与已分配中100M内存块对应节点集合(1,2,5,6,7,8)是否存在交集,可以看出存在交集,分配20M内存块用于神经网络节点(3,4,5)的运算,且将该已分配20M内存块存储于已分配集合中,对于下一个20M内存块,可判断该20M内存块节点集合(7,8)与已分配20M内存块(3,4,5)无交集,可复用已分配集合中20M内存块,对应节点集合更新为(3,4,5,7,8),对于10M内存块(2,3),可以发现与已分配集合中内存块节点集合(1,2,5,6,7,8)和(3,4,5,7,8)均有交集,需要分配10M内存块,共占用100M+20M+10M=130M内存,导致整个神经网络占用内存仍过大,内存分配方式未达到极致;
发明内容
本发明其中一个发明目的在于提供一种基于硬件加速器的神经网络内存优化方法和装置,所述方法和装置通过预设多个节点输内存作为总内存,并建立空闲列表和待分配列表,通过对单个节点所需分配内存是否超出预设总内存,若是则增加所需内存的方式更新总内存,进一步执行内存分配和复用,提高内存的利用率。
本发明另一个发明目的在于提供一种基于硬件加速器的神经网络内存优化方法与装置,以将神经网络内存优化极致。
为了实现至少一个上述发明目的,本发明进一步提供一种基于硬件加速器的神经网络内存优化方法,所述方法包括如下步骤:
神经网络在运行前,需要统计占用内存大小,方法包括:运行神经网络,获得神经网络共有N个节点,确定每个节点的内存信息,以及节点占有内存的生命周期;预设第一节点,第二节点输出内存总和作为一个总内存S,将S添加到空闲内存列表中;依次运行神经网络,从节点1到节点N-1,对于神经网络运行到节点i,先判断已分配列表中的对应节点生命周期是否结束,如结束,将已分配列表中的节点内存块从已分配列表中移除,加入空闲列表中,并更新空闲列表;对节点i从空闲内存列表中分配内存,判断内存足够,则分配内存,将节点i加入已分配列表,并更新空闲内存列表,当内存不够分配,确认S不够,需多分配M大小足够节点i使用,更新总内存为S+M,重新迭代依次运行神经网络,从节点1到节点N-1处理每个节点,直到确定最少总内存供每个节点使用;其中i为大于1小于N;
由上可见,在本发明实施例中,由于神经网络节点必须要2个以上,事先确定最小内存块总大小,采用预设空闲列表与已分配列表两个队列,其中空闲列表队列为满,按地址连续分配,已分配列表为空,按节点连接,携带节点内存信息;相对于现有的技术,确定内存块并排序,在大小相近内存块间进行复用方式,更加节省内存空间,避免了大小相近内存块差异,使得内存复用方式达到极致;
根据本发明另一个较佳实施例,如果第i节点的内存信息Mi大于空闲内存列表中的内存块大小F,则调整总内存S大小,S=S+Mi-F,重新运行神经网络;
根据本发明另一个较佳实施例,判断已分配列表中的节点,生命周期是否消失,包括:
查找已分配列表中的节点以及节点的生命周期,对每个节点的生命周期依次与当前节点i的生命周期进行交集匹配,发现交集为零,认定此已分配列表中节点生命周期消失,从已分配列表中移除,加入空闲列表中,并更新空闲列表;
根据本发明另一个较佳实施例,确定神经网络的节点个数,获取每个节点内存信息,包括:
依次运行神经网络,直到运行完毕,统计出神经网络的节点个数;同时记录每个节点的内存信息,对于基于硬件神经网络加速器,节点的中间参数占用内存由硬件计算无需统计,节点的输入占用内存是前一个节点的输出占用内存,这样只需统计每个节点的输出占用内存信息,以及该节点的生命周期集合;
在本发明实施例中,可统计出整个神经网络在硬件上运行消耗的最省总内存,每个节点输出内存块都从这个总内存中申请,极致的优化了每块内存空间,确保保持内存地址连续性,同时本发明事先运行一遍神经网络,确定每个节点的内存信息与节点的生命周期,在空闲列表与已分配列表切换过程中,多次运行神经网络,使得整个网络运行内存最优,极致的发挥了每块内存空间。
为了实现至少一个上述发明目的,本发明提供一种神经网络的内存优化装置,用于嵌入式设备中,包括至少一个处理单元,至少一个外面存储单元FLASH,一个内部存储单元DDR,至少一个硬件加速单元,FLASH用于存储程序与数据,DDR用于加载运行程序,处理单元与硬件加速单元用于执行本发明任一种基于硬件加速器的神经网络内存优化方法。
本发明提供一种计算机设备,该计算机设备包括处理器和处理器连接的存储器,神经网络加速器,存储器中存储有计算机程序指令,处理器用于执行所述计算机程序指令以及执行本发明的一种基于硬件加速器的神经网络内存优化方法。
附图说明
图1是本发明实施例提供的内存块信息示意图;
图2为本发明实施例提供的神经网络内存优化方法流程图;
图3为本发明实施例提供预设内存列表示意图;
图4,图5为本发明实施例提供第一节点,第二节点分配内存示意图;
图6,图7,图8为本发明实施例提供神经网络内存复用方式示意图;
图9为本发明实施例提供神经网络结构示意图;
图10为本发明实施例提供神经网络内存优化单元;
图11为本发明实施例提供基于硬件加速器的神经网络内存优化装置。
具体实施方式
下面结合1-图11,对本发明实施例进行描述。
目前,在深度学习领域,为实现优化神经网络内存分配方式,通常使用以下方式:
比较优的方式为,确认神经网络的内存块个数与大小,对神经网络占用内存块进行排序,复用已分配内存块,对于小内存块,分配新的内存块,从而减少整个神经网络的内存占用,提高内存优化效果,但内存占用仍然过高,还存在优化余地。
比如,如图1所示,整个神经网络包括8个节点,按照运行的先后顺序,索引分别为1至8。而通过预分析,可获得上述图1所示的神经网络在运行时,按照时间顺序,先后需占用5个内存块,每个内存块用于进行该内存块对应的节点集合的运算,分别为第一内存块,第二内存块、第三内存块、第四内存块以及第五内存块。且神经网络所需占用的第一内存块的大小为100M,第一内存块所对应的节点集合为(1,2),神经网络所需占用的第二内存块的大小为10M,第二内存块所对应的节点集合为(2,3),神经网络所需占用的第三内存块的大小为20M,第三内存块所对应的节点集合为(3,4,5),神经网络所需占用的第四内存块的大小为50M,第四内存块所对应的节点集合为(5,6,7),神经网络所需占用的第五内存块的大小为20M,第五内存块所对应的节集合为(7,8)。
按照现有的技术方案中,分析网络,确定占用5个内存块,分别为100M对应节点集合(1,2),10M对应节点集合(2,3),20M对应节点集合(3,4,5),50M对应节点集合(5,6,7),20M对应节点集合(7,8),确定5个内存块信息。然后对5个内存块按照从大到小排序,可分别为100M,50M,20M,20M,10M内存块大小。最大内存块100M,分配给图1中的节点1和节点2的运算。将100M内存存储至已分配集合中,依次判断50M内存块,20M内存块,20M内存块以及10M内存块,是否可复用已分配集合中的内存块,首先判断该50M内存块所对应的节点集合(5,6,7)与已分配100M内存块的节点集合(1,2)的交集是否为零,两者不存在交集,50M内存块复用上述100M内存块,不再为节点(5,6,7)运算重新分配50M内存块,将已分配队列内100M内存块对应节点集合更新为(1,2,5,6,7)。按顺序,判断20M内存块对应集合(3,4,5)与已分配集合中100M内存块节点集合(1,2,5,6,7)存在交集,则分配20M内存用于节点(3,4,5)运算,将20M内存块存储于已分配集合中。对于下一个20M内存块节点集合(7,8),与已分配集合依次对比,找到与已分配20M内存块节点集合(3,4,5)无交集,复用该内存块,并更新对应节点集合为(3,4,5,7,8)。最后对于10M内存块节点集合(2,3),可以发现与已分配集合中的100M内存块节点集合,20M内存块节点集合均存在交集,需要分配10M内存块用于节点2,节点3运算,并将10M内存块加入已分配集合中。通过分析可见一共需要100M+20M+10M=130M内存块大小。神经网络仍然需要较大的内存。
针对以上现有技术存在的问题,本发明提供一种神经网络的内存优化方法,该方法的主要原理为:按照神经网络的至少需要2个节点运行,预设第1节点与第2节点的内存块总和为总分配内存,预先分配一个满的空闲内存列表,一个空的已分配列表,将内存块从空闲内存列表分配到已分配列表,再从已分配列表回收到空闲内存列表方式,确保了神经网络内存优化方法极致,用尽了每个字节内存,使得神经网络只占用必要的占用,减少内存占用。
以下,对本发明中的部分用语进行解释说明,以便于本领域技术人员理解。每个节点内存块对应的生命周期,指在神经网络中,节点运算期间占用的内存,也是所述内存块进行运算的节点集合。比如图1中,100M内存块对应的节点集合(1,2),表示节点1输出需要100M内存块,节点2输入运算需要100M内存块,等节点1,节点2运算完毕,100M内存块生命周期才结束。
已分配列表,管理节点集合的共享队列,并包含内存块信息。
空闲内存列表,管理内存的共享队列,确保内存的连续性分配。
节点,指神经网络中用于运算的单位,一般称为算子或者层。
针对以上场景,如图2所示,本发明实施例提供神经网络内存优化方法流程图,由于终端设备对于网络训练模型识别性能慢,本发明实施例,以执行主体为运行神经网络服务器为例,进行说明,主要包括以下步骤:
运行神经网络,获得神经网络共有N个节点,确定每个节点的内存信息,以及节点占有内存的生命周期;
通过在服务器端运行神经网络,记录每个节点对应的输出所占用内存块信息,其中神经网络的第一节点输出与输入占用内存大小一致,其他节点的输出占用内存,是前节点的输入占用内存,中间执行过程由硬件完成,中间块内存使用硬件内部存储器,无需统计,整个神经网络只需记录每个节点的输出内存信息即可,并记录节点的生命周期,也即节点集合。
预设总内存S,分配两个列表,一个满的空闲内存列表,一个空的已分配列表;
总内存S,为第一节点集合的输出内存块与第二节点集合的输出内存块总和,如图1所示,节点集合(1,2)输出内存块100M,节点集合(2,3)输出内存块10M,总内存S共为110M,
空闲内存列表大小为110M,已分配列表节点集合为空,无内存信息。
运行神经网络,从节点1到节点N-1,对于神经网络运行到节点i,从已分配列表中依次获取节点集合j,判断节点i集合与j集合是否有交集;其中j大于等于0,小于已分配列表集合长度;
存在交集,将已分配列表中的节点集合j占用内存块从已分配列表中移除,加入空闲列表中,同时更新空闲内存列表的内存连接地址,确保空闲内存块地址连续;
不存在交集,判断下一个已分配列表中的集合点,依次运行完毕整个已分配列表;
从空闲内存列表中,为节点i集合分配节点i的内存块大小,判断空闲内存是否足够,若是,则为节点i集合分配内存,并加入已分配列表中;不足,需多分配M大小足够节点i使用,更新总内存为S+M,重新迭代依次运行神经网络,其中M大小为节点i集合内存块大小减去此时空闲块大小。
从节点1到节点N-1处理每个节点,直到确定最少总内存供每个节点使用;
在本发明一个较佳实施例中,如图1所示,将以整个神经网络包括8个节点为例,详细介绍图2流程所提供的方法。
运行神经网络,记录8个节点,统计每个节点的输出内存,共有5个集合,可确定上述100M内存块对应节点集合(1,2),10M内存块对应节点集合(2,3),20M内存块对应节点集合(3,4,5),50M内存块对应节点集合(5,6,7),20M内存块对应节点集合(7,8),N取值为8。
如图3所示,预设100M+10M=110M总内存S,分配空闲内存列表大小为110M,地址空间为0~0x6E00000,已分配列表为空;
请参考图4,从节点1开始,为节点集合(1,2)分配100M内存块,已分配列表中,存在列表项0,包括节点信息,内存大小,内存的起始地址,结束地址,例如起始地址为0,结束地址0x6400000,大小100M;空闲内存列表剩余10M,内存的起始地址0x6400000,结束地址0x6E00000,大小10M。
请参考图5,为节点集合(2,3)分配10M内存块,先判断已分配列表中的列表项0,得到信息为节点集合(1,2),可以确定,存在交集,不回收内存块,直接判断空闲内存列表中10M与要分配的10M内存块吻合,从空闲内存列表中分配10M内存块给节点集合(2,3)。此时,空闲内存块列表为空,已分配列表中存在2个列表项,节点集合(1,2)100M内存块,起始地址为0,结束地址0x6400000,节点集合(2,3)10M内存块,起始地址为0x6400000,结束地址0x6E00000。
请参考图6,为节点集合(3,4,5)分配20M内存块,从已分配列表中,获取两个列表项0和1,分别与节点集合(3,4,5)进行判断是否存在交集,发现节点集合(1,2)与交集,从已分配列表中移除节点集合(1,2)内存块,并加入空闲内存列表中;已分配列表剩余10M内存块给节点集合(2,3),起始地址为0x6400000,结束地址0x6E00000;空闲内存列表100M内存,起始地址为0,结束地址0x6400000;
为节点集合(3,4,5)分配20M内存块,判断20M内存块小于空闲内存列表
中100M内存块,空闲内存列表剩余80M内存,起始地址为0x1400000,结束地
址0x6400000,大小80M。已分配列表中加入节点集合(3,4,5),起始地址为0,结束地址0x1400000,大小20M。
请参考图7左边,为节点集合(5,6,7)分配50M内存,依次判断已分配列表中的节点集合信息是否与当前节点集合有交集,发现节点集合(2,3)交集为零,移除已分配列表中的节点集合(2,3),空闲内存列表内存更新为90M,同时发现节点集合(2,3)的起始地址0x6400000刚好为原空闲内存80M内存块的结束地址,更新空闲内存块为90M的一块内存,确保内存地址连续性,起始地址为0x1400000,结束地址0x6E00000。
请参考图7右边,从空闲列表中分配50M内存块,空闲列表更新为40M,起始地址0x1400000,结束地址0x3C00000,加入已分配列表中,增加节点集合(5,6,7),起始地址0x3C00000,结束地址0x6E00000。
请参考图8左边,为节点集合(7,8)分配20M内存,依次判断已分配列表中的节点集合信息是否与当前节点集合有交集,发现节点集合(3,4,5)交集为零,移除已分配列表中的节点集合(3,4,5),空闲内存列表内存更新为60M,同时发现节点集合(3,4,5)的结束地址0x1400000刚好为原空闲内存40M内存块的起始地址,更新空闲内存块为60M的一块内存,确保内存地址连续性,起始地址为0x0,结束地址0x3C00000。
图8右边,从空闲列表中分配20M内存块,空闲列表更新为40M,起始地址0x1400000,结束地址0x3C00000,加入已分配列表中,增加节点集合(7,8),起始地址0x0,结束地址0x1400000。
通过以上分析,可以看出,采用本发明实施例的方法,针对图1所示的神经网络,在运行过程中,一共需要占用100M+10M=110M内存,可满足需求。对比之前现有技术方案,按照大小块排序后,内存复用匹配,图1的神经网络需占用130M,可以看出,采用本发明方式,更加节省了内存,将内存优化方法发挥极致。
请参考图9,在本发明实施例其中一个较佳实施例中,还提供了一种神经网络的结构图,神经网络包括了A,B,C,D,E,F,G共7个节点,节点A输出,作为B节点输入,节点C作为D,E输入,硬件加速器执行每个节点的中间过程,其中节点还包括适配硬件的流程层融合,比如卷积层,激活层两层融合成一个节点集合共用输出内存块,卷积层,池化层融合成一个节点集合共用输出内存块。
请参考图10,本发明还提供了一种神经网络内存优化装置,包括以下几个单元:
获取单元:获取神经网络的节点个数,统计每个节点的内存信息,节点的生命周期或者节点集合。
预设单元:根据神经网络的特点,预先确定总内存大小,分配一个满的空闲内存列表与一个空的已分配列表。
匹配单元:已分配列表中的节点集合与当前节点的交集匹配更新单元:回收已分配列表后的更新,空闲内存列表更新,确保地址连续性。确认单元:迭代运行神经网络后,最终确定总内存大小。
请参考图11,本发明还提供了一种神经网络内存优化硬件装置:
本发明实施例中,处理器表示执行计算机指令的处理单元,硬件加速器,表示神经网络节点由此执行,内部存储器,上电后从外部存储器中加载程序,数据,外部存储器存储程序,数据。中间连线,表示各个单元的总线连接关系。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分从网络上被下载和安装,和/或从可拆卸介质被安装。在该计算机程序被中央处理单元(CPU)执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线段、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线段的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线段、电线段、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域的技术人员应理解,上述描述及附图中所示的本发明的实施例只作为举例而并不限制本发明,本发明的目的已经完整并有效地实现,本发明的功能及结构原理已在实施例中展示和说明,在没有背离所述原理下,本发明的实施方式可以有任何变形或修改。
Claims (7)
1.一种基于硬件加速器的神经网络内存优化方法,其特征在于,该方法包括:
运行神经网络,获得神经网络共有N个节点,确定每个节点的内存信息,以及节点占有内存的生命周期;
预设第一节点,第二节点输出内存总和作为一个总内存S,分配一个内存大小为S的空闲内存列表,和一个空的已分配列表;
从节点1到节点N-1依次运行神经网络,对于神经网络运行到节点i,先判断已分配列表中的对应节点生命周期是否结束;
若结束,将已分配列表中的节点内存块从已分配列表中移除,加入空闲列表中,并更新空闲列表,否则查找下一个已分配列表中的节点集合;
查找更新完毕后,判断空闲内存大小是否大于当前节点内存块大小;
成立则分配内存,并分别更新空闲内存列表与已分配列表;不成立,计算内存差值,统计出新的总内存大小,重新运行网络,重新分配每个节点内存块,直到满足内存需求。
2.根据权利要求1所述的一种基于硬件加速器的神经网络内存优化方法,其特征在于,所述方法还包括:
如果所述第i个节点无法从更新后的空闲内存列表中分配内存到已分配列表中,则先计算内存差值M,当前节点i的内存块大小减去空闲内存块大小,更新总内存S为S+M。
3.根据权利要求1所述的一种基于硬件加速器的神经网络内存优化方法,其特征在于,所述获取第i个节点运算需要的内存块起始地址在于空闲内存列表的更新与已分配列表的回收;
判断第i个节点运算集合的生命周期,是否与已分配列表中的节点集合的生命周期存在交集,交集为零,回收已分配列表中的节点集合内存块,更新空闲内存块列表,存在两块内存地址连续的,合并成一块内存,直到已分配列表中的节点集合匹配完毕;然后从空闲内存列表中分配节点i集合内存块,指明起始地址。
4.根据权利要求1所述的一种基于硬件加速器的神经网络内存优化方法,其特征在于,所述更新包括已分配列表与空闲内存列表,包括:
从已分配列表中查找某一节点x集合与第i节点集合交集为零,更新已分配列表;
空闲内存列表增加节点x集合的内存块,并更新空闲内存列表;
从空闲内存列表中分配节点i集合内存,并更新空闲内存列表;
将节点i集合内存块加入已分配列表,并更新已分配列表。
5.根据权利要求1所述的一种基于硬件加速器的神经网络内存优化方法,其特征在于,获取神经网络节点个数N,与节点内存块大小,包括:
运行神经网络;
记录神经网络的节点个数N,并统计节点的输出内存块大小,该节点运算时的生命周期,上下节点关联信息,作为节点集合。
6.一种基于硬件加速器的神经网络内存优化装置,其特征在于,包括:
获取单元:获取神经网络的节点个数,统计每个节点的内存信息,节点的生命周期或者节点集合。
预设单元:根据神经网络的特点,预先确定总内存大小,分配一个满的空闲内存列表与一个空的已分配列表。
匹配单元:已分配列表中的节点集合与当前节点的交集匹配
更新单元:回收已分配列表后的更新,空闲内存列表更新,确保地址连续性。
确认单元:迭代运行神经网络后,最终确定总内存大小。
7.一种基于硬件加速器的神经网络的内存优化装置,其特征在于,包括处理器,外部存储器,内部存储器和硬件加速器;
所述外部存储器用于存储计算机执行指令与数据;
所述内部存储器用于加载计算机执行指令与数据;
所述硬件加速器用于执行神经网络前向运行,减少处理器占用带宽与性能;
所述处理器用于执行所述内部存储器所存储的计算机执行指令,以使所述信息处理装置执行如权利要求1至5任一项所述一种基于硬件加速器的神经网络内存优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111652962.1A CN114298294B (zh) | 2021-12-28 | 2021-12-28 | 一种基于硬件加速器的神经网络内存优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111652962.1A CN114298294B (zh) | 2021-12-28 | 2021-12-28 | 一种基于硬件加速器的神经网络内存优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114298294A true CN114298294A (zh) | 2022-04-08 |
CN114298294B CN114298294B (zh) | 2022-11-01 |
Family
ID=80973949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111652962.1A Active CN114298294B (zh) | 2021-12-28 | 2021-12-28 | 一种基于硬件加速器的神经网络内存优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114298294B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893904A (zh) * | 2023-09-11 | 2023-10-17 | 腾讯科技(深圳)有限公司 | 神经网络模型的内存管理方法、装置、设备、介质及产品 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
US20200334083A1 (en) * | 2019-04-22 | 2020-10-22 | EMC IP Holding Company LLC | Method, a device, and a computer program product for determining a resource required for executing a code segment |
CN111984400A (zh) * | 2020-07-17 | 2020-11-24 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN112256440A (zh) * | 2020-12-23 | 2021-01-22 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
CN112286694A (zh) * | 2020-12-24 | 2021-01-29 | 瀚博半导体(上海)有限公司 | 基于深度学习计算网络的硬件加速器内存分配方法及系统 |
CN112346877A (zh) * | 2021-01-11 | 2021-02-09 | 瀚博半导体(上海)有限公司 | 一种有效加速深度学习计算的内存分配方法及系统 |
CN112783640A (zh) * | 2019-11-11 | 2021-05-11 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
CN112948033A (zh) * | 2021-01-28 | 2021-06-11 | 西安超越申泰信息科技有限公司 | 一种虚拟桌面平台 |
WO2021232183A1 (zh) * | 2020-05-18 | 2021-11-25 | 华为技术有限公司 | 一种内存排布优化方法以及装置 |
CN113791910A (zh) * | 2021-09-22 | 2021-12-14 | 维沃移动通信有限公司 | 内存分配方法、内存分配装置、电子设备和可读存储介质 |
-
2021
- 2021-12-28 CN CN202111652962.1A patent/CN114298294B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
US20200334083A1 (en) * | 2019-04-22 | 2020-10-22 | EMC IP Holding Company LLC | Method, a device, and a computer program product for determining a resource required for executing a code segment |
CN112783640A (zh) * | 2019-11-11 | 2021-05-11 | 上海肇观电子科技有限公司 | 预先分配内存的方法与设备、电路、电子设备及介质 |
WO2021232183A1 (zh) * | 2020-05-18 | 2021-11-25 | 华为技术有限公司 | 一种内存排布优化方法以及装置 |
CN111984400A (zh) * | 2020-07-17 | 2020-11-24 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN112256440A (zh) * | 2020-12-23 | 2021-01-22 | 上海齐感电子信息科技有限公司 | 神经网络推理的内存管理方法及装置 |
CN112286694A (zh) * | 2020-12-24 | 2021-01-29 | 瀚博半导体(上海)有限公司 | 基于深度学习计算网络的硬件加速器内存分配方法及系统 |
CN112346877A (zh) * | 2021-01-11 | 2021-02-09 | 瀚博半导体(上海)有限公司 | 一种有效加速深度学习计算的内存分配方法及系统 |
CN112948033A (zh) * | 2021-01-28 | 2021-06-11 | 西安超越申泰信息科技有限公司 | 一种虚拟桌面平台 |
CN113791910A (zh) * | 2021-09-22 | 2021-12-14 | 维沃移动通信有限公司 | 内存分配方法、内存分配装置、电子设备和可读存储介质 |
Non-Patent Citations (5)
Title |
---|
ANGELO GAROFALO等: "PULP-NN: accelerating quantized neural networks on parallel ultra-low-power RISC-V processors", 《NEURAL AND EVOLUTIONARY COMPUTING》 * |
李善辽: "基于卷积神经网络的内存优化访问与专用处理器优化实现", 《中国优秀硕士学位论文全文数据库 (信息科技辑)》 * |
王磊等: "面向嵌入式应用的深度神经网络模型压缩技术综述", 《北京交通大学学报》 * |
范祚至等: "基于动态负载均衡的层次性移动IPv6路由优化方案", 《计算机应用与软件》 * |
谢剑: "一种基于云计算任务神经网络调度算法", 《现代信息科技》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116893904A (zh) * | 2023-09-11 | 2023-10-17 | 腾讯科技(深圳)有限公司 | 神经网络模型的内存管理方法、装置、设备、介质及产品 |
CN116893904B (zh) * | 2023-09-11 | 2023-12-26 | 腾讯科技(深圳)有限公司 | 神经网络模型的内存管理方法、装置、设备、介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN114298294B (zh) | 2022-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550225B (zh) | 索引构建方法、查询方法及装置 | |
CN107656807B (zh) | 一种虚拟资源的自动弹性伸缩方法及装置 | |
CN114298294B (zh) | 一种基于硬件加速器的神经网络内存优化方法和装置 | |
CN108279943A (zh) | 索引加载方法和装置 | |
CN115237580A (zh) | 面向智能计算的流水并行训练自适应调整系统、方法 | |
CN103119567B (zh) | 用于管理虚拟带库域的系统和方法 | |
CN117234710A (zh) | 一种采用强化学习实现ai模型训练内存优化的方法 | |
CN112862083B (zh) | 一种边缘环境下的深度神经网络推断方法及装置 | |
CN112650449B (zh) | 缓存空间的释放方法、释放系统、电子设备及存储介质 | |
CN112256441B (zh) | 神经网络推理的内存分配方法及装置 | |
CN112213956B (zh) | 一种自动驾驶仿真任务调度方法、装置、设备及可读介质 | |
CN114399228A (zh) | 任务调度方法及装置、电子设备和介质 | |
US7484068B2 (en) | Storage space management methods and systems | |
CN116663639B (zh) | 一种梯度数据同步方法、系统、装置及介质 | |
CN110930092B (zh) | 一种配送路线调整方法、装置、电子设备和存储介质 | |
CN115185658A (zh) | 一种基于时间和通信可靠的任务卸载调度方法及相关产品 | |
CN112783417A (zh) | 数据缩减的方法、装置、计算设备和存储介质 | |
CN115914237A (zh) | 一种边缘环境下的深度学习任务调度方法、设备及介质 | |
CN112256653B (zh) | 一种数据采样方法和装置 | |
CN104462422A (zh) | 对象的处理方法及装置 | |
CN114356512A (zh) | 一种数据处理方法、设备以及计算机可读存储介质 | |
CN114819195A (zh) | 集成学习模型的训练方法、装置、系统和相关设备 | |
CN112100446A (zh) | 搜索方法、可读存储介质和电子设备 | |
CN112506813A (zh) | 一种内存管理方法和系统 | |
CN112329923A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 311422 4th floor, building 9, Yinhu innovation center, 9 Fuxian Road, Yinhu street, Fuyang District, Hangzhou City, Zhejiang Province Patentee after: Zhejiang Xinmai Microelectronics Co.,Ltd. Address before: 311400 4th floor, building 9, Yinhu innovation center, No.9 Fuxian Road, Yinhu street, Fuyang District, Hangzhou City, Zhejiang Province Patentee before: Hangzhou xiongmai integrated circuit technology Co.,Ltd. |