内存管理方法、装置、电子设备及计算机可读存储介质制造方法及图纸

技术编号:27805434 阅读:17 留言:0更新日期:2021-03-30 09:15
本发明专利技术实施例公开了一种内存管理方法、装置、电子设备及计算机可读存储介质,所述方法包括:获取训练数据中张量申请和释放请求,其中,所述张量申请和释放请求携带有张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;根据所述张量内存统计信息训练得到内存分配信息;根据所述内存分配信息进行张量内存分配。该技术方案不仅适用于小块内存的分配和管理,还适用于大块内存的分配和管理,不仅能够以较低的系统开销进行内存分配,而且还能够有效提高内存的利用率。率。率。

【技术实现步骤摘要】
内存管理方法、装置、电子设备及计算机可读存储介质


[0001]本专利技术实施例涉及内存管理
,具体涉及一种内存管理方法、装置、电子设备及计算机可读存储介质。

技术介绍

[0002]随着数据技术的发展,深度学习在各个领域都得到了广泛应用,比如图像、语音、广告、搜索、推荐、自然语言处理等等。研究人员发现,深度学习框架中的内存管理是制约深度学习性能优劣的关键因素,目前对于内存管理的优化研究主要集中在GPU显存上,但实际上CPU集群内存管理的优化也至关重要,这是因为,CPU集群中的模型训练具有规模大、训练时间长的特点,训练过程需要占用大量的CPU和内存资源,研究人员在性能评测过程中发现大量的CPU资源被浪费在了缺页中断上,进而导致内存的浪费。
[0003]现有技术中对于CPU的内存管理方案包括通用的Malloc库管理内存方案、BFCAllocator与Malloc库联合管理内存方案等等。这些内存管理方案虽然可以在一定程度上提高网络应用的性能,但却不适用于深度学习任务,这是因为深度学习任务通常需要频繁的内存申请和释放,特别是对于MB级别的内存块,操作总量可能会达到几十GB乃至上百GB。而通用的内存管理方案一般仅管理较小的内存块,比如小于32KB的内存,对于大块内存不做缓存设计,仅按需在操作系统中进行分配,这样在频繁申请的场景下由分配导致的缺页中断开销就会严重影响系统性能,而如果对于大块内存进行缓存,则可能会导致其在相对较长一段时间内来不及复用,进而又会造成较大的资源浪费,特别是对于云端环境,大量内存的占用意味着运行在同一机器上的其他应用所能使用的资源会显著变少,从而带来应用之间的相互影响。因此,亟需一种适用于大块内存的内存管理方法,不仅能够以较低的系统开销进行内存分配,而且还能够有效提高内存的利用率。

技术实现思路

[0004]本专利技术实施例提供一种内存管理方法、装置、电子设备及计算机可读存储介质。
[0005]第一方面,本专利技术实施例中提供了一种内存管理方法。
[0006]具体的,所述内存管理方法,包括:
[0007]获取训练数据中张量申请和释放请求,其中,所述张量申请和释放请求携带有张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;
[0008]根据所述张量内存统计信息训练得到内存分配信息;
[0009]根据所述内存分配信息进行张量内存分配。
[0010]结合第一方面,本专利技术实施例在第一方面的第一种实现方式中,所述根据所述张量内存统计信息训练得到内存分配信息,包括:
[0011]确定预设遍历顺序;
[0012]根据所述预设遍历顺序遍历所述张量内存统计信息,并根据所述张量内存统计信息训练得到内存分配信息。
[0013]结合第一方面和第一方面的第一种实现方式,本专利技术实施例在第一方面的第二种实现方式中,所述根据所述预设遍历顺序遍历所述张量内存统计信息,并根据所述张量内存统计信息训练得到内存分配信息,被实施为:
[0014]根据所述预设遍历顺序确定目标张量信息,其中,所述目标张量信息包括目标张量大小、目标张量申请时间和目标张量释放时间;
[0015]根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,其中,所述目标内存地址链表块中设有一个或多个与所述目标张量大小对应的缓存块,所述缓存块中存储有历史张量内存统计信息;
[0016]确定所述目标内存地址链表块中是否存在与所述目标张量信息不产生预设冲突的缓存块;
[0017]当所述目标内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;
[0018]当所述目标内存地址链表块中不存在与所述目标张量信息不产生预设冲突的缓存块时,从小到大遍历尺寸大于所述目标内存地址链表块的内存地址链表块,当所述内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理,当所述内存地址链表块中均不存在与所述目标张量信息不产生预设冲突的缓存块时,在所述目标内存地址链表块中创建新缓存块,将所述目标张量信息插入至所述新缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;
[0019]响应于所述张量内存统计信息遍历结束,将当前内存地址链表块信息确定为所述内存分配信息。
[0020]结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,被实施为:
[0021]确定内存地址链表块的内存地址间隔;
[0022]将所述目标张量大小除以所述内存地址间隔得到的结果向上取整得到所需内存地址间隔数量;
[0023]将所述内存地址间隔乘以所述所需内存地址间隔数量得到目标内存地址大小;
[0024]将与所述目标内存地址大小对应的内存地址链表块确定为所述目标内存地址链表块。
[0025]结合第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述根据所述内存分配信息进行张量内存分配,包括:
[0026]根据所述内存分配信息对于内存池分配器进行初始化;
[0027]基于初始化后的内存池分配器进行张量内存分配。
[0028]结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,还包括:
[0029]响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存再分配失败张量进行再分配。
[0030]结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式和第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存分配失败张量进行再分配,包括:
[0031]响应于检测到张量内存分配失败事件,根据所述内存分配失败张量大小确定与所述内存分配失败张量大小对应的候选内存地址链表块;
[0032]确定所述候选内存地址链表块中是否存在空闲缓存块;
[0033]当所述候选内存地址链表块中存在空闲缓存块时,将所述空闲缓存块分配给所述内存分配失败张量,并为所述空闲缓存块填充第一头信息,其中,所述第一头信息中存储有所述空闲缓存块所在的内存地址链表块信息;
[0034]当所述候选内存地址链表块中不存在空闲缓存块时,基于所述内存分配失败张量大小向操作系统申请内存分配,并为申请得到的内存填充第二头信息,其中,所述第二头信息中存储本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种内存管理方法,其特征在于,包括:获取训练数据中张量申请和释放请求,其中,所述张量申请和释放请求携带有张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;根据所述张量内存统计信息训练得到内存分配信息;根据所述内存分配信息进行张量内存分配。2.根据权利要求1所述的方法,其特征在于,所述根据所述张量内存统计信息训练得到内存分配信息,包括:确定预设遍历顺序;根据所述预设遍历顺序遍历所述张量内存统计信息,并根据所述张量内存统计信息训练得到内存分配信息。3.根据权利要求2所述的方法,其特征在于,所述根据所述预设遍历顺序遍历所述张量内存统计信息,并根据所述张量内存统计信息训练得到内存分配信息,被实施为:根据所述预设遍历顺序确定目标张量信息,其中,所述目标张量信息包括目标张量大小、目标张量申请时间和目标张量释放时间;根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,其中,所述目标内存地址链表块中设有一个或多个与所述目标张量大小对应的缓存块,所述缓存块中存储有历史张量内存统计信息;确定所述目标内存地址链表块中是否存在与所述目标张量信息不产生预设冲突的缓存块;当所述目标内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;当所述目标内存地址链表块中不存在与所述目标张量信息不产生预设冲突的缓存块时,从小到大遍历尺寸大于所述目标内存地址链表块的内存地址链表块,当所述内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理,当所述内存地址链表块中均不存在与所述目标张量信息不产生预设冲突的缓存块时,在所述目标内存地址链表块中创建新缓存块,将所述目标张量信息插入至所述新缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;响应于所述张量内存统计信息遍历结束,将当前内存地址链表块信息确定为所述内存分配信息。4.根据权利要求3所述的方法,其特征在于,所述根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,被实施为:确定内存地址链表块的内存地址间隔;将所述目标张量大小除以所述内存地址间隔得到的结果向上取整得到所需内存地址间隔数量;将所述内存地址间隔乘以所述所需内存地址间隔数量得到目标内存地址大小;将与所述目标内存地址大小对应的内存地址链表块确定为所述目标内存地址链表块。5.根据权利要求1-4任一所述的方法,其特征在于,所述根据所述内存分配信息进行张
量内存分配,包括:根据所述内存分配信息对于内存池分配器进行初始化;基于初始化后的内存池分配器进行张量内存分配。6.根据权利要求1-4任一所述的方法,其特征在于,还包括:响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存再分配失败张量进行再分配。7.根据权利要求6所述的方法,其特征在于,所述响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存分配失败张量进行再分配,包括:响应于检测到张量内存分配失败事件,根据所述内存分配失败张量大小确定与所述内存分配失败张量大小对应的候选内存地址链表块;确定所述候选内存地址链表块中是否存在空闲缓存块;当所述候选内存地址链表块中存在空闲缓存块时,将所述空闲缓存块分配给所述内存分配失败张量,并为所述空闲缓存块填充第一头信息,其中,所述第一头信息中存储有所述空闲缓存块所在的内存地址链表块信息;当所述候选内存地址链表块中不存在空闲缓存块时,基于所述内存分配失败张量大小向操作系统申请内存分配,并为申请得到的内存填充第二头信息,其中,所述第二头信息中存储有操作系统内存分配信息。8.根据权利要求7所述的方法,其特征在于,还包括:响应于检测到张量内存释放命令,按照预设内存释放规则对于内存进行释放。9.根据权利要求8所述的方法,其特征在于,所述响应于检测到张量内存释放命令,按照预设内存释放规则对于内存进行释放,包括:响应于检测到张量内存释放命令,获取与所述张量内存释放命令对应的头信息;根据所述头信息对于内存进行释放。10.一种内存管理方法,其特征在于,包括:获取训练数据中张量申请和释放请求,其中,所述张量申请和释放请求携带有张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;遍历所述张量内存统计信息,将所述张量内存统计信息插入至与张量大小对应的目标内存地址链表块的缓存块中,得到内存分配信息;根据所述内存分配信息对于内存池分配器进行初始化,并基于初始化后的内存池分配器进行张量内存分配。11.根据权利要求10所述的方法,其特征在于,所述遍历所述张量内存统计信息,将所述张量内存统计信息插入至与张量大小对应的目标内存地址链表块的缓存块中,得到内存分配信息,被实施为:确定预设遍历顺序,并根据所述预设遍历顺序确定目标张量信息,其中,所述目标张量信息包括目标张量大小、目标张量申请时间和目标张量释放时间;根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,其中,所述目标内存地址链表块中设有一个或多个与所述目标张量大小对应的缓存块,所述缓存块中存储有历史张量内存统计信息;确定所述目标内存地址链表块中是否存在与所述目标张量信息不产生预设冲突的缓
存块;当所述目标内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;当所述目标内存地址链表块中不存在与所述目标张量信息不产生预设冲突的缓存块时,从小到大遍历尺寸大于所述目标内存地址链表块的内存地址链表块,当所述内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理,当所述内存地址链表块中均不存在与所述目标张量信息不产生预设冲突的缓存块时,在所述目标内存地址链表块中创建新缓存块,将所述目标张量信息插入至所述新缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;响应于所述张量内存统计信息遍历结束,将当前内存地址链表块信息确定为所述内存分配信息。12.根据权利要求11所述的方法,其特征在于,所述根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,被实施为:确定内存地址链表块的内存地址间隔;将所述目标张量大小除以所述内存地址间隔得到的结果向上取整得到所需内存地址间隔数量;将所述内存地址间隔乘以所述所需内存地址间隔数量得到目标内存地址大小;将与所述目标内存地址大小对应的内存地址链表块确定为所述目标内存地址链表块。13.根据权利要求10-12任一所述的方法,其特征在于,还包括:响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存再分配失败张量进行再分配。14.根据权利要求13所述的方法,其特征在于,所述响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存分配失败张量进行再分配,包括:响应于检测到张量内存分配失败事件,根据所述内存分配失败张量大小确定与所述内存分配失败张量大小对应的候选内存地址链表块;确定所述候选内存地址链表块中是否存在空闲缓存块;当所述候选内存地址链表块中存在空闲缓存块时,将所述空闲缓存块分配给所述内存分配失败张量,并为所述空闲缓存块填充第一头信息,其中,所述第一头信息中存储有所述空闲缓存块所在的内存地址链表块信息;当所述候选内存地址链表块中不存在空闲缓存块时,基于所述内存分配失败张量大小向操作系统申请内存分配,并为申请得到的内存填充第二头信息,其中,所述第二头信息中存储有操作系统内存分配信息。15.根据权利要求14所述的方法,其特征在于,还包括:响应于检测到张量内存释放命令,按照预设内存释放规则对于内存进行释放。16.根据权利要求15所述的方法,其特征在于,所述响应于检测到张量内存释放命令,按照预设内存释放规则对于内存进行释放,包括:响应于检测到张量内存释放命令,获取与所述张量内存释放命令对应的头信息;
根据所述头信息对于内存进行释放。17.一种内存管理方法,其特征在于,包括:获取张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;遍历所述张量内存统计信息,将所述张量内存统计信息插入至与张量大小对应的目标内存地址链表块的缓存块中;响应于所述张量内存统计信息遍历结束,将当前内存地址链表块信息确定为所述内存分配信息。18.根据权利要求17所述的方法,其特征在于,所述遍历所述张量内存统计信息,将所述张量内存统计信息插入至与张量大小对应的目标内存地址链表块的缓存块中,被实施为:确定预设遍历顺序,并根据所述预设遍历顺序确定目标张量信息,其中,所述目标张量信息包括目标张量大小、目标张量申请时间和目标张量释放时间;根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,其中,所述目标内存地址链表块中设有一个或多个与所述目标张量大小对应的缓存块,所述缓存块中存储有历史张量内存统计信息;确定所述目标内存地址链表块中是否存在与所述目标张量信息不产生预设冲突的缓存块;当所述目标内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理;当所述目标内存地址链表块中不存在与所述目标张量信息不产生预设冲突的缓存块时,从小到大遍历尺寸大于所述目标内存地址链表块的内存地址链表块,当所述内存地址链表块中存在与所述目标张量信息不产生预设冲突的缓存块时,将所述目标张量信息插入至所述与所述目标张量信息不产生预设冲突的缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理,当所述内存地址链表块中均不存在与所述目标张量信息不产生预设冲突的缓存块时,在所述目标内存地址链表块中创建新缓存块,将所述目标张量信息插入至所述新缓存块中,并根据所述预设遍历顺序确定下一目标张量信息进行处理。19.根据权利要求18所述的方法,其特征在于,所述根据所述目标张量大小确定与所述目标张量大小对应的目标内存地址链表块,被实施为:确定内存地址链表块的内存地址间隔;将所述目标张量大小除以所述内存地址间隔得到的结果向上取整得到所需内存地址间隔数量;将所述内存地址间隔乘以所述所需内存地址间隔数量得到目标内存地址大小;将与所述目标内存地址大小对应的内存地址链表块确定为所述目标内存地址链表块。20.根据权利要求17-19任一所述的方法,其特征在于,还包括:响应于检测到张量内存分配失败事件,按照预设内存分配规则对于内存再分配失败张量进行再分配。21.根据权利要求20所述的方法,其特征在于,所述响应于检测到张量内存分配失败事
件,按照预设内存分配规则对于内存分配失败张量进行再分配,包括:响应于检测到张量内存分配失败事件,根据所述内存分配失败张量大小确定与所述内存分配失败张量大小对应的候选内存地址链表块;确定所述候选内存地址链表块中是否存在空闲缓存块;当所述候选内存地址链表块中存在空闲缓存块时,将所述空闲缓存块分配给所述内存分配失败张量,并为所述空闲缓存块填充第一头信息,其中,所述第一头信息中存储有所述空闲缓存块所在的内存地址链表块信息;当所述候选内存地址链表块中不存在空闲缓存块时,基于所述内存分配失败张量大小向操作系统申请内存分配,并为申请得到的内存填充第二头信息,其中,所述第二头信息中存储有操作系统内存分配信息。22.一种内存管理装置,其特征在于,包括:第一获取模块,被配置为获取训练数据中张量申请和释放请求,其中,所述张量申请和释放请求携带有张量内存统计信息,所述张量内存统计信息包括张量大小、张量申请时间和张量释放时间;训练模块,被配置为根据所述张量内存统计...

【专利技术属性】
技术研发人员:林伟李永肖文聪任仕儒刘童璇
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1