【技术实现步骤摘要】
内存分配优化方法、装置、电子设备、介质及程序产品
[0001]本专利技术实施例涉及计算机
,具体涉及一种内存分配优化方法、装置、电子设备、介质及程序产品。
技术介绍
[0002]在AI网络推演等计算过程中,为数据分配和释放内存是必不可少的。由于GPU或CPU中存在多层级内存,每层内存有不同的带宽、延迟及访问局限性(局限性越高访存冲突概率越低),因此在如执行AI网络推演等计算时内存的使用策略会对计算性能产生巨大影响。
[0003]为提高计算性能,现有的一种内存使用策略是通过数据自然命中的方式,即用户申请的内存统一在主内存(层级较低、容量较大)中。CPU或GPU访问后,通过在高速缓冲存储器(cache)留下访问过的低层内存的数据副本(将数据副本放入缓存),在下次需要读取相同数据时,从cache中读取数据以减少低层内存的访问,以提高系统性能。在这种通过cache加速的技术下,数据至少被用户访问过一次后才能被cache命中,由于高层内存不会直接被用户使用,因此高层内存的数据无法放入缓存。而且,放入缓存的是连续分布的数据,如果数据不连续分布,则也无法放入缓存。如果放入缓存的数据不再被读取,cache也无法发挥作用。在cache中数据需要保留多久靠自然淘汰法,有用的数据可能被冲掉,不用的数据可能仍占用空间,无法保证空间被合理使用。
[0004]现有的另外一种内存使用策略是为计算手工指定内存空间,或者写一个程序按照一个固定的规则分配内存。比如,在AI网络推演等计算中,AI网络可以很大,而且类型多样,为每个AI ...
【技术保护点】
【技术特征摘要】
1.一种内存分配优化方法,其特征在于,包括:为目标程序的各个时间步的数据块执行预配置内存空间动作;其中,所述目标程序的算子分别对应于一个所述时间步,所述时间步的所述数据块的数量、大小和生存时段已知;按照所述目标程序的所述算子的执行顺序依次遍历所述时间步;在遍历所述时间步的过程中,遍历所述时间步的所述数据块;在遍历所述时间步的所述数据块的过程中,通过遍历预设动作集分别执行预设内存调整动作,响应于任一所述预设内存调整动作执行成功,为当前遍历的所述时间步的后续时间步的所述数据块执行所述预配置内存空间动作,响应于当前遍历的所述时间步为预设状态更新时间步,则记录当前更新的内存状态,计算并记录所述更新的内存状态下完成所述目标程序的读写任务的总耗时;所述时间步的所述数据块遍历完成后,响应于至少一个所述更新的内存状态下完成所述目标程序的读写任务的总耗时小于上一所述预设状态更新时间步遍历完成后的内存状态下完成所述目标程序的读写任务的总耗时,选取所述总耗时的最小值对应的所述更新的内存状态作为当前的内存状态,完成所述时间步的遍历;响应于所述按照所述目标程序的所述算子的执行顺序依次遍历所述时间步执行完毕,得到所述目标程序的各个所述时间步的所述内存状态。2.根据权利要求1所述的内存分配优化方法,其特征在于,在所述按照所述目标程序的所述算子的执行顺序依次遍历所述时间步之前,所述方法还包括:将所述目标程序的全部时间步分段得到局部最优段,将所述局部最优段的最后时间步作为所述预设状态更新时间步;其中,所述局部最优段包括至少一个所述时间步。3.根据权利要求1所述的内存分配优化方法,其特征在于,在所述为当前遍历的所述时间步的后续时间步的所述数据块执行所述预配置内存空间动作之后,所述方法还包括:响应于当前遍历的所述时间步不为预设状态更新时间步,进一步判断所述预设动作集中的所述内存调整动作是否执行完;若所述预设动作集中的所述内存调整动作尚未执行完,则执行下一所述内存调整动作;若所述预设动作集中的所述内存调整动作已经执行完,则进一步判断所述时间步的所述数据块是否遍历完;若所述时间步的所述数据块尚未遍历完,则对下一所述数据块进行遍历;若所述时间步的所述数据块已经遍历完,则开始对下一所述时间步进行遍历。4.根据权利要求1所述的内存分配优化方法,其特征在于,在所述当前所述时间步遍历完成后,所述方法还包括:响应于所述更新的内存状态下完成所述目标程序的读写任务的总耗时均大于或等于上一所述预设状态更新时间步遍历完成后的内存状态下完成所述目标程序的读写任务的总耗时,则保持所述上一所述预设状态更新时间步遍历完成后的内存状态,并开始对下一所述时间步进行遍历。5.根据权利要求1所述的内存分配优化方法,其特征在于,包括:所述预设内存调整动作包括同级移动数据块、内存盖写和跨层级移动数据块;其中:所述同级移动数据块包括将数据块移动到同级内存的另一个空闲位置;所述内存盖写包括通过盖写可重用空间放置数据块;所述跨层级移动数据块包括将数据块移动到其他层级的内存。
6.根据权利要求5所述的内存分配优化方法,其特征在于,所述方法还包括:在执行所述预设内存调整动作时,任意两个相邻的空闲空间随时合并成一个空闲空间;在执行所述同级移动数据块及跨层级移动数据块时,为所述数据块分配的内存空间贴近空闲空间的边界;在执行所述内存盖写时,所述算子的输入数据的可重用空间能够被当前所述算子的中间数据和输出数据的数据块盖写,所述算子的中间数据的可重用空间能够被当前所述算子的输出数据的数据块盖写。7.根据权利要求5所述的内存分配优化方法,其特征在于,所述预配置内存空间动作包括内存预分配...
【专利技术属性】
技术研发人员:ꢀ七四专利代理机构,
申请(专利权)人:上海壁仞智能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。