内存优化方法、装置、设备、产品、存储介质和芯片制造方法及图纸

技术编号:38874913 阅读:13 留言:0更新日期:2023-09-22 14:09
本申请提供了一种内存优化方法、装置、设备、产品、存储介质和芯片,其中内存优化方法包括:遍历神经网络模型的拓扑结构,拓扑结构包括多个算子之间的依赖关系;根据依赖关系,设置与每个算子相对应的计数值,计数值为一个算子被其它算子所依赖的数量;根据至少一个算子的计算信息,调整算子的计数值以及与算子相关联的算子的计数值;当计数值满足预定条件时,释放计数值所对应的算子的内存。释放计数值所对应的算子的内存。释放计数值所对应的算子的内存。

【技术实现步骤摘要】
内存优化方法、装置、设备、产品、存储介质和芯片


[0001]本申请涉及计算机领域,具体而言,涉及一种内存优化方法、一种内存优化装置、一种电子设备、一种计算机程序产品、一种计算机可读存储介质和一种芯片。

技术介绍

[0002]相关技术的计算机程序在运行过程中,计算完毕后的算子所开辟的内存不能及时释放,因此无法实现高效的内存复用。

技术实现思路

[0003]为了解决或改善上述技术问题至少之一,本申请的一个目的在于提供一种内存优化方法。
[0004]本申请的另一个目的在于提供一种内存优化装置。
[0005]本申请的另一个目的在于提供一种电子设备。
[0006]本申请的另一个目的在于提供一种计算机程序产品。
[0007]本申请的另一个目的在于提供一种计算机可读存储介质。
[0008]本申请的另一个目的在于提供一种芯片。
[0009]为实现上述目的,本申请第一方面提供了一种内存优化方法,包括:遍历神经网络模型的拓扑结构,拓扑结构包括多个算子之间的依赖关系;根据依赖关系,设置与每个算子相对应的计数值,计数值为一个算子被其它算子所依赖的数量;根据至少一个算子的计算信息,调整算子的计数值以及与算子相关联的算子的计数值;当计数值满足预定条件时,释放计数值所对应的算子的内存。
[0010]根据本申请提供的内存优化方法的技术方案,通过引入计数值的方式控制算子内存的释放时机,降低了出现计算结果错误或内存访问越界事故的可能性,能够及时有效的将生命周期已经结束的算子开辟的内存进行释放,大大减少了内存占用,有助于在内存受限的设备上进行模型推理的部署工作,从而降低生产成本,实现高效的内存复用。
[0011]另外,本申请提供的上述技术方案还可以具有如下附加技术特征:
[0012]在上述技术方案中,当计数值满足预定条件时,释放计数值所对应的算子的内存,具体包括:在计数值为0时,释放与计数值为0对应的算子的内存。
[0013]在该技术方案中,由于计数值是根据一个算子被其它算子所依赖的数量而确定的,当计数值为0时,意味着该算子没有被其它算子依赖,可以进行内存释放,从而减少内存占用。
[0014]换言之,通过计数值确定算子的生命周期,计数值非零表示算子的生命周期未结束;计数值为零表示算子的生命周期已结束。在算子的生命周期结束时,可以及时释放该算子开辟的内存。
[0015]在上述技术方案中,根据至少一个算子的计算信息,调整算子的计数值以及与算子相关联的算子的计数值,具体包括:确定完成计算的算子;将算子依赖的至少一个算子的
计数值自减1。
[0016]在该技术方案中,在对某一个算子的计数值以及对与之相关联的算子的计数值进行调整时,主要是根据至少一个算子的计算信息判断的。具体的,每个算子均具有一定的计数值,计数值是根据被其它算子所依赖的数量所确定的,如果计数值不为零,则该空间仍被占用,不可以释放该算子的空间,在某个算子完成计算后,通过将完成计算的算子所依赖的一个或多个算子进行计数值自减1的操作,从而认为该算子的依赖关系发生变化,在某一个算子的计数值降为0,则认为不被其他算子所依赖,可将该算子释放的空间用于存储新的算子。
[0017]在上述技术方案中,还包括:在一个算子的内存被释放的情况下,确定被算子依赖的算子的内存起始地址;将完成计算的算子所依赖的算子的内存开辟在内存起始地址处。
[0018]在该技术方案中,在某个算子完成计算后,被该算子依赖的其他算子的计数值会发生变化,若在变化后存在计数值为0的情况,则内存被释放,此时,可将新算子的内存在被释放的算子所依赖的算子对应的地址处进行开辟,从而可实现地址的复用。
[0019]在上述技术方案中,将完成计算的算子所依赖的算子的内存开辟在算子依赖的算子的内存起始地址,具体包括:确定被算子所依赖的算子所需的第一存储空间;确定被释放的至少一个算子的第二存储空间;在第一存储空间小于或等于第二存储空间的情况下,将被算子所依赖的算子的内存开辟在第二存储空间对应的内存起始地址。
[0020]在该技术方案中,在某个算子完成计算后,需要进行内存复用时,需先对新旧两个空间的具体存储空间进行获取,即确定存储被算子所依赖的算子对应的第一存储空间,确定存储被释放的一个或多个算子的第二存储空间,可以理解,第一存储空间为新算子,第二存储空间为旧算子,在第一存储空间不大于第二存储空间时,认为旧算子所处的空间足以容纳新算子,故而可新算子的内存开辟在旧算子的内存起始地址处,即将被算子所依赖的算子的内存开辟在算子依赖的算子的内存起始地址。
[0021]在上述技术方案中,第二存储空间为第一存储空间的正整数倍。
[0022]在该技术方案中,通过限制第一存储空间和第二存储空间呈倍数关系,在内存复用时,可直接将新算子开辟于旧算子的存储空间,在完成内存开辟后,若存在新的算子,仍可利用第一存储空间中未被第二存储空间占据的空间进行容纳,通过采用正整数倍的方式,采用存储空间是对齐的内存池,更便于实现高效的内存管理。
[0023]在上述技术方案中,还包括:判断第一存储空间的字节数量是否为第一字节数量的正整数倍,生成判断结果;在判断结果为是时,执行将被算子所依赖的算子的内存开辟在第二存储空间对应的内存起始地址的步骤;在判断结果为否时,在第一存储空间的基础上填充第二字节数量的空白数据,以使填充后的第一存储空间的字节数量为第一字节数量的正整数倍。
[0024]在该技术方案中,先限定第一字节数量作为判断基础,在第一存储空间内的字节数量为第一字节数量的正整数倍时,可直接进行内存复用,否则,需要将不满足的位置进行填充,使得填充后的字节数量为第一字节数量的正整数倍。即判断第一存储空间是否为非对齐的内存。在第一存储空间的字节数量为第一字节数量的正整数倍时,表示内存对齐。
[0025]在判断结果为否时,认为被搬运的内存大小不是这些第一字节数量的倍数,此时需要内存后面会填充相应数量的空数据以使得内存长度达到这些值的倍数。因此,访问非
对齐的内存可能会更加耗时。一般的,在对内存池的使用过程中,会将申请的内存进行内存对齐(如16字节的整数倍)操作,以实现高效的内存管理。
[0026]本申请第二方面提供了一种内存优化装置,包括:获取模块,用于遍历神经网络模型的拓扑结构,拓扑结构包括多个算子之间的依赖关系;计数模块,用于根据依赖关系,设置与每个算子相对应的计数值,计数值为一个算子被其它算子所依赖的数量;调整模块,用于根据至少一个算子的计算信息,调整算子的计数值以及与算子相关联的算子的计数值;释放模块,用于在计数值满足预定条件时,释放计数值所对应的算子的内存。
[0027]根据本申请的内存优化装置的技术方案,内存优化装置包括获取模块、计数模块、调整模块和释放模块。其中,获取模块用于加载神经网络模型,神经网络模型具有多个算子。获取模块遍历神经网络模型的拓扑结构,拓扑结构包括多个算子之间的依赖关系。所谓遍历是指沿着某条搜索本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存优化方法,其特征在于,包括:遍历神经网络模型的拓扑结构,所述拓扑结构包括多个算子之间的依赖关系;根据所述依赖关系,设置与每个所述算子相对应的计数值,所述计数值为一个所述算子被其它所述算子所依赖的数量;根据至少一个所述算子的计算信息,调整所述算子的计数值以及与所述算子相关联的算子的计数值;当所述计数值满足预定条件时,释放所述计数值所对应的算子的内存。2.根据权利要求1所述的内存优化方法,其特征在于,所述当所述计数值满足预定条件时,释放所述计数值所对应的算子的内存,具体包括:在所述计数值为0时,释放与所述计数值为0对应的算子的内存。3.根据权利要求2所述的内存优化方法,其特征在于,所述根据至少一个所述算子的计算信息,调整所述算子的计数值以及与所述算子相关联的算子的计数值,具体包括:确定完成计算的算子;将所述算子依赖的至少一个所述算子的计数值自减1。4.根据权利要求1所述的内存优化方法,其特征在于,还包括:在一个所述算子的内存被释放的情况下,确定被所述算子依赖的算子的内存起始地址;将完成计算的所述算子所依赖的算子的内存开辟在所述内存起始地址处。5.根据权利要求4所述的内存优化方法,其特征在于,所述将完成计算的所述算子所依赖的算子的内存开辟在所述算子依赖的算子的内存起始地址,具体包括:确定被所述算子所依赖的算子所需的第一存储空间;确定被释放的所述至少一个算子的第二存储空间;在所述第一存储空间小于或等于所述第二存储空间的情况下,将被所述算子所依赖的算子的内存开辟在所述第二存储空间对应的内存起始地址。6.根据权利要求5所述的内存优化方法,其特征在于,所述第二存储空间为所述第一存储空间的正整数倍。7.根据权利要求5所述的内存优化方法...

【专利技术属性】
技术研发人员:唐剑赵东宇丁维浩夏立超张法朝奉飞飞
申请(专利权)人:美的集团股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1