[发明专利]一种神经网络的内存分配方法及装置有效
申请号: | 201810607693.9 | 申请日: | 2018-06-13 |
公开(公告)号: | CN110597616B | 公开(公告)日: | 2022-07-29 |
发明(设计)人: | 黄莉华;丁皓;范翱翔 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06N3/063 |
代理公司: | 北京同达信恒知识产权代理有限公司 11291 | 代理人: | 冯艳莲 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 神经网络 内存 分配 方法 装置 | ||
本申请涉及人工智能或者机器学习领域,具体提供一种神经网络的内存分配方法及装置,神经网络在运行时,需占用N个内存块,该方法包括:确定N个内存块的信息;根据N个内存块的大小,对N个内存块进行由大到小排序,获得N个内存块的排序序列;分配第一内存块给神经网络,用于进行神经网络中第一节点集合的运算;判断第n内存块是否可复用已分配集合中的内存块,已分配集合中包括已经分配给神经网络的内存块,如果第n内存块可复用已分配集合中的内存块,则将可复用的内存块分配给神经网络,用于进行神经网络中第n节点集合的运算,并更新已分配集合;其中,所述第n内存块为第二内存块至第N内存块中的任一内存块。采用本申请的方法及装置,可优化神经网络的内存分配。
技术领域
本申请涉及深度学习技术领域,尤其涉及一种神经网络的内存分配方法及装置。
背景技术
在当前的计算机深度学习领域,为了取得更好的算法精度,深度学习神经网络越来越复杂,硬件能力限制了神经网络向更深的方向发展,必须进行内存的优化。为了实现内存的优化,业界通常采用以下内存分配策略:
运行整个神经网络,然后按照整个神经网络运行的前后顺序,为整个神经网络分配内存。比如,神经网络在运行过程中,依次需要占用100M的内存块、10M的内存块和50M的内存块。那么在现有技术中,当神经网络申请100M的内存块时,可为神经网络分配一100M的内存块,然后当神经网络申请10M的内存块时,可判断一下该10M的内存块申请是否可用复用上述已分配的100M内存块,如果可以,则不再为所申请的10M内存块分配新的内存块,而使该10M内存块申请复用上述100M内存块,同理,当神经网络申请50M的内存块时,也判断一下该50M的内存块申请是否可复用上述已分配的100M内存块,且如果可复用,则分配该50M的内存块复用上述已分配的100M内存块,否则,为该50M内存块申请分配一新的50M内存块。
通过上述记载可知,在现有技术中,当神经网络申请一内存块时,首先需要判断一下该申请的内存块是否可复用已分配的内存块,如果可以,则直接分配该申请的内存块复用已分配的内存块,如果不可以,再为该内存块申请分配新的内存块。但是,若申请的10M内存块和申请的50M内存块都可复用已分配的100M的内存块,会出现申请的10M内存块复用已分配的100M内存块,而对神经网络分配一50M内存块,整个神经网络需共占用150M的内存块,导致整个神经网络占用的内存较大,内存分配不合理。
发明内容
本申请实施例提供一种神经网络的内存分配方法及装置,以优化神经网络的内存。
第一方面,提供一种神经网络的内存分配方法,神经网络在运行时,需占用N个内存块,N为大于等于1的整数,方法包括:确定N个内存块的信息,N个内存块的信息包括N个内存块的大小和N个内存块中每个内存块一一对应的节点集合,每个内存块用于进行神经网络中与每个内存块一一对应的节点集合的运算;根据N个内存块的大小,对N个内存块进行由大到小排序,获得N个内存块的排序序列;分配第一内存块给神经网络,用于进行神经网络中第一节点集合的运算,其中,第一内存块为N个内存块中大小最大的内存块;判断第n内存块是否可复用已分配集合中的内存块,已分配集合中包括已经分配给神经网络的内存块,如果第n内存块可复用已分配集合中的内存块,则将可复用的内存块分配给神经网络,用于进行神经网络中第n节点集合的运算,并更新已分配集合,其中,n为大于或等于2,小于或等于N的正整数;根据排序序列,从n=2到n=N依次执行上述判断,若判断为是,则更新已分配集合。
由上可见,在本申请实施例中,按照内存块的大小,进行内存块的分配与复用,相对于现有技术中,按照内存块的申请顺序,进行内存块的分配与复用,可得到全部内存块中复用的全局最优解,从而在内存块复用过程中,可在大小相近的内存块间进行复用,避免了较小内存块复用已分配较大内存块,为较大内存块重新分配内存块的问题,优化了神经网络的内存分配。
在一种可能的实现方式中,如果第n内存块不可复用已分配集合中的内存块,则分配第n内存块给神经网络,用于进行神经网络中第n节点集合的运算。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810607693.9/2.html,转载请声明来源钻瓜专利网。