System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本公开涉及异构设备,尤其涉及一种内存管理方法、装置、设备、存储介质及计算机程序产品。
技术介绍
1、随着计算技术的飞速发展,异构计算系统已广泛应用于高性能计算领域。在异构计算系统中,异构设备与主机协同工作。主机向异构设备申请并分配内存后,主机与异构设备共享该内存进行读写操作。然而,由于读写大小任意,因此易出现内存被踩踏现象,如易出现内存被越界读写等问题,从而影响异构计算系统的计算效率。当前,主机端虚拟内存保护机制及软硬件结合机制虽能为内存提供一定保护,但并不适用于异构设备共享内存场景;且硬件实现方案成本高,兼容性差,难以推广。因此,如何对异构设备内存进行管理以减小对异构计算系统的计算效率的影响成为目前亟待解决的问题。
技术实现思路
1、为克服相关技术中存在的问题,本公开提供一种内存管理方法、装置、设备、存储介质及计算机程序产品。
2、根据本公开实施例的第一方面,提供一种内存管理方法,所述方法包括:
3、获取在异构设备中申请内存时记录的第一内存信息;其中,所述第一内存信息中至少包括:所述内存的起始地址、所述内存的大小以及所述内存的保护区中的预设填充数据;
4、基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理。
5、在一些实施例中,所述方法还包括:
6、响应于检测到对所述内存的读写指令,获取所述内存的保护区中的当前填充数据以及对所述内存进行读写的读写参数
7、所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写过程进行管理,包括:
8、响应于所述当前填充数据为所述预设填充数据,且所述读写参数中所指示的读写地址范围位于所述内存的地址范围内,基于所述读写参数对所述内存进行读写操作;其中,所述内存的地址范围基于所述内存的起始地址以及所述内存的大小确定。
9、在一些实施例中,所述方法还包括:
10、响应于检测到对所述内存的释放指令,获取所述内存的保护区中的当前填充数据以及对所述内存进行释放的释放参数;其中,所述释放参数用于指示对所述内存进行释放的起始地址;
11、所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的释放过程进行管理,包括:
12、响应于所述当前填充数据为所述预设填充数据,且所述释放参数中所指示的对所述内存进行释放的起始地址为所述内存的起始地址,基于所述释放参数对所述内存进行释放操作。
13、在一些实施例中,所述第一内存信息还包括用于表征所述内存的释放状态的有效性标识;所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理,包括:
14、响应于所述内存的第一内存信息的有效性标识表征所述内存未被释放,基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理。
15、在一些实施例中,所述第一内存信息中还包括第一信息校验码;所述方法还包括:
16、响应于检测到对与存储所述内存的第一内存信息相邻的内存的操作,获取所述内存的第二内存信息;
17、基于所述第二内存信息,确定第二信息校验码;
18、所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理,包括:
19、响应于所述第二信息校验码与所述第一信息校验码相同,基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理。
20、在一些实施例中,所述方法还包括:
21、获取用于指示待管理的目标内存的环境变量;
22、所述获取在异构设备中申请内存时记录的第一内存信息,包括:
23、获取在所述异构设备中申请所述目标内存时记录的第一内存信息。
24、在一些实施例中,所述内存的保护区包括第一保护区和第二保护区,所述第一保护区的终止地址为所述内存的起始地址,所述第二保护区的起始地址为所述内存的终止地址,所述第一保护区的预设填充数据与所述第二保护区的预设填充数据不同。
25、根据本公开实施例的第二方面,提供一种内存管理装置,所述装置包括:
26、第一获取模块,配置为获取在异构设备中申请内存时记录的第一内存信息;其中,所述第一内存信息中至少包括:所述内存的起始地址、所述内存的大小以及所述内存的保护区中的预设填充数据;
27、管理模块,配置为基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理。
28、在一些实施例中,所述装置还包括:
29、第二获取模块,配置为响应于检测到对所述内存的读写指令,获取所述内存的保护区中的当前填充数据以及对所述内存进行读写的读写参数;其中,所述读写参数用于指示读写地址范围;
30、所述管理模块,还配置为响应于所述当前填充数据为所述预设填充数据,且所述读写参数中所指示的读写地址范围位于所述内存的地址范围内,基于所述读写参数对所述内存进行读写操作;其中,所述内存的地址范围基于所述内存的起始地址以及所述内存的大小确定。
31、在一些实施例中,所述装置还包括:
32、第三获取模块,配置为响应于检测到对所述内存的释放指令,获取所述内存的保护区中的当前填充数据以及对所述内存进行释放的释放参数;其中,所述释放参数用于指示对所述内存进行释放的起始地址;
33、所述管理模块,还配置为响应于所述当前填充数据为所述预设填充数据,且所述释放参数中所指示的对所述内存进行释放的起始地址为所述内存的起始地址,基于所述释放参数对所述内存进行释放操作。
34、在一些实施例中,所述第一内存信息还包括用于表征所述内存的释放状态的有效性标识;所述管理模块,还配置为响应于所述内存的第一内存信息的有效性标识表征所述内存未被释放,基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理。
35、在一些实施例中,所述第一内存信息中还包括第一信息校验码;所述装置还包括:
36、第四获取模块,配置为响应于检测到对与存储所述内存的第一内存信息相邻的内存的操作,获取所述内存的第二内存信息;
37、确定模块,配置为基于所述第二内存信息,确定第二信息校验码;
38、所述管理模块,还配置为响应于所述第二信息校验码与所述第一信息校验码相同,基于所述第一内存信息本文档来自技高网...
【技术保护点】
1.一种内存管理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一内存信息还包括用于表征所述内存的释放状态的有效性标识;所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理,包括:
5.根据权利要求1-3任一项所述的方法,其特征在于,所述第一内存信息中还包括第一信息校验码;所述方法还包括:
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1-3任一项所述的方法,其特征在于,所述内存的保护区包括第一保护区和第二保护区,所述第一保护区的终止地址为所述内存的起始地址,所述第二保护区的起始地址为所述内存的终止地址,所述第一保护区的预设填充数据与所述第二保护区的预设填充数据不同。
8.一种内存管理装置,其特征在于,所述装置包括:
...【技术特征摘要】
1.一种内存管理方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一内存信息还包括用于表征所述内存的释放状态的有效性标识;所述基于所述第一内存信息中所述内存的起始地址、所述内存的大小以及所述保护区中的预设填充数据,对所述内存的读写、释放过程进行管理,包括:
5.根据权利要求1-3任一项所述的方法,其特征在于,所述第一内存信息中还包括第一信息校验码;所述方法还包括:
6.根据权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
7.根据权利要求1-3...
【专利技术属性】
技术研发人员:檀庭梁,
申请(专利权)人:北京算能科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。