System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及计算机体系结构,具体而言,涉及一种gpu自适应内存优化方法、装置、设备及介质。
技术介绍
1、稀疏矩阵向量乘(spmv)和稀疏矩阵乘法(spmm)是在计算科学和工程领域中广泛使用的重要数学运算。在这两种运算中,矩阵被表示为稀疏矩阵,即大部分元素为零。这种稀疏矩阵的特点使得在处理大规模数据时能够有效地节省内存和计算资源。而由于spmv和spmm操作的不规则性以及相关存储器存储带宽的有限性,导致在gpu上实现更快并行的spmv以及spmm操作具有很大的挑战性,现有技术目前主要通过分块处理稀疏矩阵进行spmv和spmm的加速计算。
2、虽然分块处理稀疏矩阵具备提高密集向量的数据局限性、更容易实现负载均衡以及更加简便和灵活等优势,但是也存在如下问题:
3、首先,将稀疏矩阵划分为多个较小的分块可以更细腻地分配任务,容易实现负载均衡,但会增加通信开销。
4、其次,spmv和spmm等函数的子块内部的稀疏格式的数据结构通常包括多个数组,现有技术均是将多个数组分别进行malloc,而由于子块通常很小以及子块通常是稀疏矩阵,所以,每个数组所需要的内存大小实际上很小,都会远小于所申请的内存单元;这导致生成的多个gpu内存单元内部存在巨大的内存碎片,极大的浪费了gpu宝贵的内存资源,同时还很大程度上降低了子块内数据的数据局部性。
5、最后,在不同品牌的gpu上所造成的空间浪费也不同,比如,在nvidia gpu上,每次申请分配内存,都是以512b为基本内存单位去进行分配的,在国产dcu上,每次
技术实现思路
1、本申请实施例的目的在于提供一种gpu自适应内存优化方法、装置、设备及介质,用以解决了现有技术存在的上述问题,可实现gpu负载均衡,在避免内存空间浪费的前提下,最大化计算的并行性,在gpu上提高基于分块矩阵的相关计算性能。
2、第一方面,提供了一种gpu自适应内存优化方法,该方法可以包括:
3、获取目标稀疏矩阵;其中,所述目标稀疏矩阵中的每一个元素包含所述元素的值以及所述元素在所述目标稀疏矩阵中的横坐标和纵坐标;
4、对所述目标稀疏矩阵进行优化,得到多个优化后的子块矩阵;其中,任一优化后的子块矩阵包含至少两个数组;
5、针对任一优化后的子块矩阵,基于gpu包含的多个最小内存单元,为所述优化后的子块矩阵对应的各数组均分配同一个目标最小内存单元;其中,所述最小内存单元为gpu分配内存时的最小虚拟内存间隔;
6、针对任一优化后的子块矩阵的任一数组,计算所述数组在相应的目标最小内存单元中的内存起始地址和内存终止地址,得到所述数组的目标存储地址;
7、将各个数组存储到相应的目标存储地址,得到优化后的gpu内存。
8、在一个可选的实现中,对所述目标稀疏矩阵进行优化,得到多个优化后的子块矩阵,包括:
9、基于gpu线程束中包含的线程数量和所述最小内存单元的容量,对所述目标稀疏矩阵进行分块,得到多个子块矩阵;其中,任一子块矩阵的行数和列数均与所述线程数量相等;
10、提取每个子块矩阵的矩阵特征;
11、针对任一子块矩阵,将所述子块矩阵的矩阵特征输入预先训练好的数据存储格式选择模型中,得到所述子块矩阵对应的最优数据存储格式;其中,所述数据存储格式选择模型是基于多个不同历史子块矩阵以及相应历史子块矩阵的最优数据存储格式训练得到的;
12、根据所述最优数据存储格式,对所述子块矩阵中数据的存储格式进行优化,得到优化后的子块矩阵。
13、在一个可选的实现中,根据所述最优数据存储格式,对所述子块矩阵中数据的存储格式进行优化,得到优化后的子块矩阵,包括:
14、将所述子块矩阵中各横坐标和各纵坐标在所述子块矩阵中的存储格式,转换为所述最优数据存储格式,得到所述子块矩阵的位置量行;
15、提取所述子块矩阵中各元素的值,作为所述子块矩阵的元素值行;
16、若所述位置量行中任一位置量的数据类型所需的内存容量大于所述元素值行中任一元素值的数据类型所需的内存容量,则将所述元素值行作为优化后的子块矩阵的第一行,将所述位置量行作为优化后的子块矩阵的第二行;
17、若所述位置量行中任一位置量的数据类型所需的内存容量小于所述元素值行中任一元素值的数据类型所需的内存容量,则将所述元素值行作为优化后的子块矩阵的第二行,将所述位置量行作为优化后的子块矩阵的第一行。
18、在一个可选的实现中,所述方法还包括:
19、获取gpu的配置信息;其中,所述gpu的配置信息包括:所述目标最小内存单元的内存首地址和gpu对齐规则;
20、计算所述数组在相应的目标最小内存单元中的内存起始地址和内存终止地址,得到所述数组的目标存储地址,包括:
21、若所述数组为所述优化后的子块矩阵的第一行对应的数组,则将相应的目标最小内存单元的内存首地址作为所述数组的内存起始地址;
22、将所述内存首地址、所述优化后的子块矩阵的第一行所需的内存容量和所述数组的内存补位量的和值,作为所述数组的内存终止地址;其中,所述数组的内存补位量是基于所述数组中数据的数据类型和所述gpu对齐规则确定的;
23、若所述数组不是所述优化后的子块矩阵的第一行对应的数组,则将所述数组对应行的上一行对应的内存终止地址,作为所述数组的内存起始地址;
24、将所述内存起始地址、所述数组对应行所需的内存容量和所述数组的内存补位量的加和值,作为所述数组的内存终止地址。
25、在一个可选的实现中,所述目标最小内存单元为多个最小内存单元中的任意一个,或者为多个连续的最小内存单元。
26、在一个可选的实现中,其中,所述gpu的配置信息还包括:所述目标最小内存单元的内存容量;
27、在得到多个子块矩阵之后,所述方法还包括:
28、计算每个子块矩阵占用的内存容量;
29、从得到的多个子块矩阵中,选取占用内存容量最大的子块矩阵,作为目标子块矩阵;
30、将所述目标最小内存单元的内存容量与预设内存容量阈值相乘,得到内存容量分块阈值;
31、若所述目标子块矩阵占用的内存容量不大于所述内存容量分块阈值,则执行步骤:提取每个子块矩阵的矩阵特征。
32、在一个可选的实现中,所述方法还包括:
33、若所述目标子块矩阵占用的内存容量大于所述内存容量分块阈值,则将所述线程数量除预设线程阈值,得到分块参数;
34、将所述分块参数作为各子块矩阵的行数和列数,对所述目标稀疏矩阵进行分块,得到多个子块矩阵,返回执行本文档来自技高网...
【技术保护点】
1.一种GPU自适应内存优化方法,其特征在于,所述方法包括:
2.如权利要求1所述的方法,其特征在于,对所述目标稀疏矩阵进行优化,得到多个优化后的子块矩阵,包括:
3.如权利要求2所述的方法,其特征在于,根据所述最优数据存储格式,对所述子块矩阵中数据的存储格式进行优化,得到优化后的子块矩阵,包括:
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
5.如权利要求1所述的方法,其特征在于,所述目标最小内存单元为多个最小内存单元中的任意一个,或者为多个连续的最小内存单元。
6.如权利要求2所述的方法,其特征在于,其中,所述GPU的配置信息还包括:所述最小内存单元的内存容量;
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
8.一种GPU自适应内存优化装置,其特征在于,所述装置包括:
9.一种电子设备,其特征在于,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
10.一种计算机可读存储介质,其特征
...【技术特征摘要】
1.一种gpu自适应内存优化方法,其特征在于,所述方法包括:
2.如权利要求1所述的方法,其特征在于,对所述目标稀疏矩阵进行优化,得到多个优化后的子块矩阵,包括:
3.如权利要求2所述的方法,其特征在于,根据所述最优数据存储格式,对所述子块矩阵中数据的存储格式进行优化,得到优化后的子块矩阵,包括:
4.如权利要求3所述的方法,其特征在于,所述方法还包括:
5.如权利要求1所述的方法,其特征在于,所述目标最小内存单元为多个最小内存单元中的任意一个,或者为多个连续的最小内存单元。
6.如权利...
【专利技术属性】
技术研发人员:解晨浩,丛兴,刘轶,钱德沛,杨海龙,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。