一种用于处理器内存访问的数据方法及装置

1.本发明涉及处理器技术领域,尤其涉及一种用于处理器内存访问的数据处理方法及装置。
背景技术:
2.稀疏矩阵向量乘法(spmv)运算是科学和高性能(hpc)工作负载中最常见的运算之一。现有的spmv优化方法主要侧重于优化单个spmv调用,但未能利用一系列spmv操作的优化机会,从而为性能改进留下了很大空间。因此,提供一种用于处理器内存访问的数据处理方法及装置,以减少对稀疏矩阵的内存访问,从而显着减少内存开销。
技术实现要素:
3.本发明所要解决的技术问题在于,提供一种用于处理器内存访问的数据方法及装置,有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
4.为了解决上述技术问题,本发明实施例第一方面公开了一种用于处理器内存访问的数据方法,所述方法包括:
5.访问处理器的内存获取目标稀疏矩阵;
6.对所述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;所述稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;所述第一稀疏子矩阵和所述第二稀疏子矩阵以稀疏矩阵形式存储于所述处理器的内存;所述对角矩阵以向量形式存储于所述处理器的内存;
7.对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。
8.作为一种可选的实施方式,在本发明实施例第一方面中,所述对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量,包括:
9.访问所述处理器的内存获取因变向量;
10.获取幂次阈值;
11.初始化稀疏向量信息;所述稀疏向量信息包括k+1个依序分布的初始稀疏向量;所述k等于所述幂次阈值;
12.基于所述因变向量、所述幂次阈值、所述稀疏向量信息和所述稀疏子矩阵信息,确定出目标稀疏向量。
13.作为一种可选的实施方式,在本发明实施例第一方面中,所述基于所述因变向量、所述幂次阈值、所述稀疏向量信息和所述稀疏子矩阵信息,确定出目标稀疏向量,包括:
14.获取循环次数;所述循环次数为大于等于1的正整数;
15.判断所述循环次数是否等于1,得到第一循环判断结果;
16.当所述第一循环判断结果为是时,对所述因变向量和所述第一稀疏子矩阵进行乘积处理,得到初始子向量;
17.确定所述初始子向量为目标子向量;
18.当所述第一循环判断结果为否时,访问所述处理器的内存获取所述目标子向量;
19.基于所述因变向量、所述稀疏子矩阵信息和所述目标子向量,对所述初始稀疏向量信息进行更新;
20.判断所述循环次数是否等于幂次阈值,得到第二循环判断结果;
21.当所述第二循环判断结果为否时,触发执行所述获取循环次数;
22.当所述第二循环判断结果为是时,利用所述第一稀疏子矩阵和所述第二稀疏子矩阵分别和最后一个序列对应的所述初始稀疏向量进行乘积处理,得到第一目标稀疏子向量和第二目标稀疏子向量;
23.对所述第一目标稀疏子向量和所述第二目标稀疏子向量进行相加处理,得到目标稀疏向量。
24.作为一种可选的实施方式,在本发明实施例第一方面中,所述基于所述因变向量、所述稀疏子矩阵信息和所述目标子向量,对所述初始稀疏向量信息进行更新,包括:
25.基于所述因变向量、所述循环次数对应的初始稀疏向量、所述目标子向量、所述对角矩阵、线程信息和所述第二稀疏子矩阵,对所述循环次数对应的初始稀疏向量进行更新,并确定出目标下三角子向量;
26.基于所述因变向量、更新后的所述循环次数对应的初始稀疏向量、所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量、所述第一稀疏子矩阵、所述目标下三角子向量、所述对角矩阵、所述线程信息和所述第一稀疏子矩阵,对所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量进行更新,并确定出目标上三角子向量;所述目标上三角子向量存储于所述处理器的内存,以在所述第一循环判断结果为否时,从所述处理器的内存中确定所述目标上三角子向量为所述目标子向量。
27.作为一种可选的实施方式,在本发明实施例第一方面中,所述基于所述因变向量、所述循环次数对应的初始稀疏向量、所述目标子向量、所述对角矩阵、线程信息和所述第二稀疏子矩阵,对所述循环次数对应的初始稀疏向量进行更新,并确定出下三角子向量,包括:
28.对所述对角矩阵和所述因变向量进程乘积计算,得到第一对角向量;
29.由上而下依次确定所述第二稀疏子矩阵中颜色相同的行的元素为目标计算行信息;所述目标计算行信息包括至少1个目标计算行;
30.利用所述因变向量和所述循环次数对应的初始稀疏向量对所述目标计算行信息进行乘积计算,得到替换值信息和下三角值信息;所述目标计算行信息中的所有目标计算行的计算处理是由线程信息中的同一线程并发处理的;
31.将所述下三角值信息填充至预设的初始下三角子向量;
32.利用所述替换值信息、所述第一对角向量、所述目标子向量对所述目标计算行信息对应的所述循环次数对应的初始稀疏向量中的向量元素进行替换更新;
33.判断所述循环次数对应的初始稀疏向量中的所有所述向量元素是否已更新,得到更新判断结果;
34.当所述更新判断结果为否时,触发执行所述由上而下依次确定所述第二稀疏子矩阵中颜色相同的行为目标计算行信息;所述目标计算行信息包括至少1个目标计算行;
35.当所述更新判断结果为是时,确定所述初始下三角子向量为目标下三角子向量;
36.当所述更新判断结果为是时,触发执行所述基于所述因变向量、更新后的所述循环次数对应的初始稀疏向量、所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量、所述第一稀疏子矩阵、所述目标下三角子向量、所述对角矩阵、所述线程信息和所述第一稀疏子矩阵,对所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量进行更新,并确定出目标上三角子向量。
37.作为一种可选的实施方式,在本发明实施例第一方面中,所述替换值信息包括若干个替换值;所述下三角值信息包括若干个下三角值;每个所述下三角值对应于一个所述替换值;
38.所述利用所述因变向量和所述循环次数对应的初始稀疏向量对所述目标计算行信息进行乘积计算,得到替换值信息和下三角值信息,包括:
39.对于任一所述目标计算行,计算该目标计算行与所述因变向量的乘积,得到该目标计算行对应的替换值;
40.计算该目标计算行与所述循环次数对应的初始稀疏向量的乘积,得到该目标计算行对应的下三角值。
41.作为一种可选的实施方式,在本发明实施例第一方面中,所述对所述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息,包括:
42.对所述目标稀疏矩阵中的每行元素进行着色,并依据着色后的每行元素的颜色相一致情况对所述目标稀疏矩阵中的所有行进行重排序,得到排序矩阵信息;所述排序矩阵信息包括排序矩阵、所述排序矩阵中每行元素的颜色信息以及所述目标稀疏矩阵与所述排序矩阵的位置变换对应关系信息;所述排序矩阵中任意相同颜色的两行元素上下相邻;
43.将所述排序矩阵按上三角部分、下三角部分和对角线部分进行分割,得到所述第一稀疏子矩阵、所述第二稀疏子矩阵和所述对角矩阵。
44.本发明实施例第二方面公开了一种用于处理器内存访问的数据装置,装置包括:
45.获取模块,用于访问处理器的内存获取目标稀疏矩阵;
46.第一处理模块,用于对所述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;所述稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;所述第一稀疏子矩阵和所述第二稀疏子矩阵以稀疏矩阵形式存储于所述处理器的内存;所述对角矩阵以向量形式存储于所述处理器的内存;
47.第二处理模块,用于对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。
48.本发明第三方面公开了另一种用于处理器内存访问的数据装置,所述装置包括:
49.存储有可执行程序代码的存储器;
50.与所述存储器耦合的处理器;
51.所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面公开的用于处理器内存访问的数据方法中的部分或全部步骤。
52.本发明第四方面公开了一种计算机存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明实施例第一方面公开的用于处理器内存访问的数据方法中的部分或全部步骤。
53.与现有技术相比,本发明实施例具有以下有益效果:
54.本发明实施例中,访问处理器的内存获取目标稀疏矩阵;对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;第一稀疏子矩阵和第二稀疏子矩阵以稀疏矩阵形式存储于处理器的内存;对角矩阵以向量形式存储于处理器的内存;对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。可见,本发明有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
附图说明
55.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
56.图1是本发明实施例公开的一种用于处理器内存访问的数据处理方法的流程示意图;
57.图2是本发明实施例公开的一种用于处理器内存访问的数据处理装置的结构示意图;
58.图3是本发明实施例公开的另一种用于处理器内存访问的数据处理装置的结构示意图;
59.图4是本发明实施例公开的一种前后向阶段数据处理的结构示意图;
60.图5是本发明实施例公开的一种前向阶段数据处理的结构示意图;
61.图6是本发明实施例公开的一种后向阶段数据处理的结构示意图。
具体实施方式
62.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
63.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
64.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
65.本发明公开了一种用于处理器内存访问的数据处理方法及装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。以下分别进行详细说明。
66.实施例一
67.请参阅图1,图1是本发明实施例公开的一种用于处理器内存访问的数据处理方法
的流程示意图。其中,图1所描述的用于处理器内存访问的数据处理方法应用于处理器内存管理系统中,如用于处理器内存访问的数据处理管理的本地服务器或云端服务器等,本发明实施例不做限定。如图1所示,该用于处理器内存访问的数据处理方法可以包括以下操作:
68.101、访问处理器的内存获取目标稀疏矩阵。
69.102、对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息。
70.本发明实施例中,该稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵。
71.本发明实施例中,该第一稀疏子矩阵和第二稀疏子矩阵以稀疏矩阵形式存储于处理器的内存。
72.本发明实施例中,该对角矩阵以向量形式存储于处理器的内存。
73.103、对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。
74.需要说明的是,上述稀疏矩阵是指矩阵中大部分元素为0的矩阵。
75.需要说明的是,根据块之间的依赖关系对目标稀疏矩阵a进行距离着色,并相应对矩阵进行重排。重排之后我们将获得重排后的排序矩阵b、对应的颜色信息以及目标稀疏矩阵a与排序矩阵b的交换关系。举例来说,目标稀疏矩阵a在着色排序后形成如下的排序矩阵b:
76.110023114056021708034109050010678091
77.进一步的,对上述排序矩阵b进行分割得到第一稀疏子矩阵u、第二稀疏子矩阵l和对角矩阵d,具体的第一稀疏子矩阵u的稀疏矩阵形式为:
78.010023004056000708000009000000000000
79.第二稀疏子矩阵l的稀疏矩阵形式为:
80.000000100000020000034000050000678090
81.对角矩阵d为:
82.100000010000001000000100000010000001
83.对角矩阵d的存储向量形式为(1,1,1,1,1,1)。进一步的,将对角矩阵d存储为向量以减少存储和计算开销。
84.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
85.在一个可选的实施例中,上述对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量,包括:
86.访问处理器的内存获取因变向量;
87.获取幂次阈值;
88.初始化稀疏向量信息;稀疏向量信息包括k+1个依序分布的初始稀疏向量;k等于幂次阈值;
89.基于因变向量、幂次阈值、稀疏向量信息和稀疏子矩阵信息,确定出目标稀疏向量。
90.需要说明的是,上述因变向量x是在数据处理时向内存直接获取。进一步的,因变向量中的元素的数量等于排序矩阵b的列数。
91.需要说明的是,上述幂次阈值可以是用户设定的,也可以是默认值,本发明实施例不做限定。
92.需要说明的,上述初始稀疏向量表述为y1、y2、......y
n+1
。进一步的,上述初始化的初始稀疏向量中的元素均为0。进一步的,上述初始稀疏向量中的元素的数量等于排序矩阵b的列数。
93.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
94.在另一个可选的实施例中,基于因变向量、幂次阈值、稀疏向量信息和稀疏子矩阵信息,确定出目标稀疏向量,包括:
95.获取循环次数;循环次数为大于等于1的正整数;
96.判断循环次数是否等于1,得到第一循环判断结果;
97.当第一循环判断结果为是时,对因变向量和第一稀疏子矩阵进行乘积处理,得到初始子向量;
98.确定初始子向量为目标子向量;
99.当第一循环判断结果为否时,访问处理器的内存获取目标子向量;
100.基于因变向量、稀疏子矩阵信息和目标子向量,对初始稀疏向量信息进行更新;
101.判断循环次数是否等于幂次阈值,得到第二循环判断结果;
102.当第二循环判断结果为否时,触发执行获取循环次数;
103.当第二循环判断结果为是时,利用第一稀疏子矩阵和第二稀疏子矩阵分别和最后一个序列对应的初始稀疏向量进行乘积处理,得到第一目标稀疏子向量和第二目标稀疏子向量;
104.对第一目标稀疏子向量和第二目标稀疏子向量进行相加处理,得到目标稀疏向量。
105.需要说明的是,上述循环次数是逐次累加的,即每执行完一次循环,循环次数加1。
106.需要说明的是,如图4所示,基于因变向量、稀疏子矩阵信息和目标子向量,对初始稀疏向量信息进行更新是分前后阶段进行,前向阶段先计算y
l1
=lx与y
l2
=ly1,然后从上至下访问l的每一行元素,计算y
l1
=lx的一个元素,紧跟着计算y
l2
=ly1的一个相同的元素,计算完成y
l1
=lx的每一行,都将结果y
l1
与对应的初始子向量y
u1
、y
d1
=dx合并来更新y1。进一步的,在后向阶段,计算y
u2
=uy1与y
u3
=uy2。从下至上访问u的每一行元素,计算y
u2
=uy1的一个元素,紧跟着计算y
u3
=uy2的一个相同的元素。计算完成y
u2
=uy1的每一行,都将结果y
u2
与s5中的y
l2
、以及y
d2
=dy1合并来更新y2。举例来说,如图5所示,在前向阶段,从上至下访问l。访问元素1,与x对应元素相乘,与y1对应元素相乘。此时,第二行的元素全部计算完毕,合并y
l1
、y
u1
、y
d1
=dx的第二行元素,更新y1第二行。访问元素2,与x对应元素相乘,与y1对应元素相乘。此时,第三行的元素全部计算完毕,合并y
u1
、y
d1
=dx的第三行元素,更新y1第三行。访问元素3,与x对应元素相乘,与y1对应元素相乘,再访问元素4与x对应元素相乘,与y1对应元素相乘,此时第四行元素计算完毕,合并y
u1
、y
d1
=dx的第四行元素,更新y1第四行。后面的元素同理。如图6所示,在后向阶段,计算y
u2
=uy1与y
u3
=uy2。从下至上访问u。访问元素0,与对应y1相乘,与对应y2相乘。此时第五行元素计算完成,合并y
l2
、y
u2
、y
d2
的第五行元素,更新y2的第五行。访问元素9,与对应y1相乘,与对应y2相乘。此时,第四行元素计算完成,合并y
l2
、y
u2
、y
d2
的第四行元素,更新y2的第四行。访问元素8,与对应y1相乘,与对应y2相乘。访问元素7,与对应y1相乘,与对应y2相乘。此时,第三行元素计算完成,合并y
l2
、y
u2
、y
d2
的第三行元素,更新y2的第三行。之后的元素同理。
107.需要说明的是,在前向阶段,同时计算子矩阵l对向量x和y1的贡献。结果,我们只在前向阶段访问了子矩阵l一次。类似地,在后向阶段,子矩阵u仅被访问一次并用于更新y2。与访问a的k次的标准mpk相比,本技术的用于处理器内存访问的数据处理方法对存访问减少了近一半。
108.需要说明的是,上述对第一目标稀疏子向量和第二目标稀疏子向量进行相加处理是将两个向量相同位置的元素进行相加。
109.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
110.在又一个可选的实施例中,基于因变向量、稀疏子矩阵信息和目标子向量,对初始稀疏向量信息进行更新,包括:
111.基于因变向量、循环次数对应的初始稀疏向量、目标子向量、对角矩阵、线程信息和第二稀疏子矩阵,对循环次数对应的初始稀疏向量进行更新,并确定出目标下三角子向量;
112.基于因变向量、更新后的循环次数对应的初始稀疏向量、循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量、第一稀疏子矩阵、目标下三角子向量、对角矩
阵、线程信息和第一稀疏子矩阵,对循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量进行更新,并确定出目标上三角子向量;目标上三角子向量存储于处理器的内存,以在第一循环判断结果为否时,从处理器的内存中确定目标上三角子向量为目标子向量。
113.需要说明的是,上述循环次数对应的初始稀疏向量为序号为循环次数的初始稀疏向量,如当前的循环次数为1,则初始稀疏向量为y1,对应的循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量为y2。
114.需要说明的是,上述循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量的处理方式是对第一稀疏子矩阵d下而上的访问计算实现的。即从第一稀疏子矩阵d的最后一行开始计算,循环计算上去,其具体处理方式与对循环次数对应的初始稀疏向量进行更新时相一致。其处理过程如图4所示的后向阶段处理过程。
115.需要说明的是,上述线程信息中的线程数量可以是用户设定的,也可是系统默认设定的,本发明实施例不做限定。进一步的,多线程用于对数据的并行处理。具体的,同一矩阵中相同颜色块内的所有行可以并行执行,颜色之间串行执行。
116.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
117.在又一个可选的实施例中,基于因变向量、循环次数对应的初始稀疏向量、目标子向量、对角矩阵、线程信息和第二稀疏子矩阵,对循环次数对应的初始稀疏向量进行更新,并确定出下三角子向量,包括:
118.对对角矩阵和因变向量进程乘积计算,得到第一对角向量;
119.由上而下依次确定第二稀疏子矩阵中颜色相同的行的元素为目标计算行信息;目标计算行信息包括至少1个目标计算行;
120.利用因变向量和循环次数对应的初始稀疏向量对目标计算行信息进行乘积计算,得到替换值信息和下三角值信息;目标计算行信息中的所有目标计算行的计算处理是由线程信息中的同一线程并发处理的;
121.将下三角值信息填充至预设的初始下三角子向量;
122.利用替换值信息、第一对角向量、目标子向量对目标计算行信息对应的循环次数对应的初始稀疏向量中的向量元素进行替换更新;
123.判断循环次数对应的初始稀疏向量中的所有向量元素是否已更新,得到更新判断结果;
124.当更新判断结果为否时,触发执行由上而下依次确定第二稀疏子矩阵中颜色相同的行为目标计算行信息;目标计算行信息包括至少1个目标计算行;
125.当更新判断结果为是时,确定初始下三角子向量为目标下三角子向量;
126.当更新判断结果为是时,触发执行基于因变向量、更新后的循环次数对应的初始稀疏向量、循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量、第一稀疏子矩阵、目标下三角子向量、对角矩阵、线程信息和第一稀疏子矩阵,对循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量进行更新,并确定出目标上三角子向量。
127.需要说明的是,预设的初始下三角子向量中的元素的初始值均为0,元素的数量等于排序矩阵b的列数。进一步的,将下三角值信息填充至预设的初始下三角子向量是将下三
角值直接替换初始下三角子向量中的元素。
128.在该可选的实施例中,作为一种可选的实施方式,上述利用替换值信息、第一对角向量、目标子向量对目标计算行信息对应的循环次数对应的初始稀疏向量中的向量元素进行替换更新,包括:
129.对于任一替换值,基于该替换值对应的第二稀疏子矩阵的行序号,从第一对角向量和目标子向量中依次确定出对应序号的元素为目标对角向量值和目标子向量值;
130.将替换值、目标对角向量值和目标子向量值相加得到更新值;
131.将更新值替换对应序号的循环次数对应的初始稀疏向量中的向量元素。
132.举例来说,第一对角向量、目标子向量分别为(1,1,1,1,1,1)和(2,3,4,5,6,7),替换值4对应于第二稀疏矩阵的行序号为第2行,第2行对应的循环次数对应的初始稀疏向量为(3,0,0,0,0,0),则目标对角向量值和目标子向量值分别为1和3,则更新值为1+3+4=8,则更新后的循环次数对应的初始稀疏向量为(3,8,0,0,0,0)。
133.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
134.在一个可选的实施例中,上述替换值信息包括若干个替换值;下三角值信息包括若干个下三角值;每个下三角值对应于一个替换值;
135.利用因变向量和循环次数对应的初始稀疏向量对目标计算行信息进行乘积计算,得到替换值信息和下三角值信息,包括:
136.对于任一目标计算行,计算该目标计算行与因变向量的乘积,得到该目标计算行对应的替换值;
137.计算该目标计算行与循环次数对应的初始稀疏向量的乘积,得到该目标计算行对应的下三角值。
138.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
139.在另一个可选的实施例中,对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息,包括:
140.对目标稀疏矩阵中的每行元素进行着色,并依据着色后的每行元素的颜色相一致情况对目标稀疏矩阵中的所有行进行重排序,得到排序矩阵信息;排序矩阵信息包括排序矩阵、排序矩阵中每行元素的颜色信息以及目标稀疏矩阵与排序矩阵的位置变换对应关系信息;排序矩阵中任意相同颜色的两行元素上下相邻;
141.将排序矩阵按上三角部分、下三角部分和对角线部分进行分割,得到第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵。
142.需要说明的是,上述对目标稀疏矩阵中的每行元素进行着色和重排序是基于代数块多色排序算法(algebraic block multicolor sorting algorithm,abmc)实现的,将将矩阵元素分组为块,并使用着色来表示依赖关系,以便具有相同颜色的块可以并行运行。进一步的,该预处理步骤是一次性成本,调用abmc着色程序(基于abmc可编写程序)实现对其着色重排序处理,因此目标稀疏矩阵a在稀疏矩阵向量乘法中重复使用多次,其可以摊销其开销。具体的,abmc着色程序中块的数量可以由用户配置,默认值为512或1024,并通过调用colpack为块着色。
143.需要说明的是,在intel和arm平台上评估本技术的处理器内存访问的数据处理方法。使用的硬件平台包括三个armv8多核cpu和一个intel xeon gold6230r cpu。主要评估平台是ft 2000+,它实现了64核8个numa节点。由于跨numa节点的数据访问会导致性能显着下降,因此在ft 2000+上优化稀疏矩阵向量乘法比在其他平台上更具挑战性。所有硬件平台均运行linux内核版本4.19.46。arm平台上的代码使用“o3-fopenmp”选项,使用gcc 12.1版编译,xeon上的代码使用英特尔编译器icc 2022.1.2-146版编译。我们使用numactl在所有numa节点上交错内存分配。在机器上运行每个测试用例50次并报告运行时间的几何平均值。测试中排除了对稀疏矩阵的元素进行拆分和重新排序的开销,因为此预处理步骤通常可以在存储矩阵数据时离线执行。在intel平台上,我们与使用mkl的稀疏矩阵向量乘法内核的基准mpk进行比较。在arm平台上,使用相同的稀疏矩阵向量乘法内核比较本技术的方法和基线mpk。这个稀疏矩阵向量乘法内核经过大量优化,甚至可以在英特尔平台上比mkl实现高出13%。
144.可见,实施本发明实施例所描述的用于处理器内存访问的数据处理方法有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
145.实施例二
146.请参阅图2,图2是本发明实施例公开的一种用于处理器内存访问的数据处理装置的结构示意图。其中,图2所描述的装置能够应用于处理器内存管理系统中,如用于处理器内存访问的数据处理管理的本地服务器或云端服务器等,本发明实施例不做限定。如图2所示,该装置可以包括:
147.获取模块201,用于访问处理器的内存获取目标稀疏矩阵;
148.第一处理模块202,用于对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;第一稀疏子矩阵和第二稀疏子矩阵以稀疏矩阵形式存储于处理器的内存;对角矩阵以向量形式存储于处理器的内存;
149.第二处理模块203,用于对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。
150.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
151.在另一个可选的实施例中,如图2所示,第二处理模块203对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量,包括:
152.访问处理器的内存获取因变向量;
153.获取幂次阈值;
154.初始化稀疏向量信息;稀疏向量信息包括k+1个依序分布的初始稀疏向量;k等于幂次阈值;
155.基于因变向量、幂次阈值、稀疏向量信息和稀疏子矩阵信息,确定出目标稀疏向量。
156.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
157.在又一个可选的实施例中,如图2所示,第二处理模块203基于因变向量、幂次阈
值、稀疏向量信息和稀疏子矩阵信息,确定出目标稀疏向量,包括:
158.获取循环次数;循环次数为大于等于1的正整数;
159.判断循环次数是否等于1,得到第一循环判断结果;
160.当第一循环判断结果为是时,对因变向量和第一稀疏子矩阵进行乘积处理,得到初始子向量;
161.确定初始子向量为目标子向量;
162.当第一循环判断结果为否时,访问处理器的内存获取目标子向量;
163.基于因变向量、稀疏子矩阵信息和目标子向量,对初始稀疏向量信息进行更新;
164.判断循环次数是否等于幂次阈值,得到第二循环判断结果;
165.当第二循环判断结果为否时,触发执行获取循环次数;
166.当第二循环判断结果为是时,利用第一稀疏子矩阵和第二稀疏子矩阵分别和最后一个序列对应的初始稀疏向量进行乘积处理,得到第一目标稀疏子向量和第二目标稀疏子向量;
167.对第一目标稀疏子向量和第二目标稀疏子向量进行相加处理,得到目标稀疏向量。
168.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
169.在又一个可选的实施例中,如图2所示,第二处理模块203基于因变向量、稀疏子矩阵信息和目标子向量,对初始稀疏向量信息进行更新,包括:
170.基于因变向量、循环次数对应的初始稀疏向量、目标子向量、对角矩阵、线程信息和第二稀疏子矩阵,对循环次数对应的初始稀疏向量进行更新,并确定出目标下三角子向量;
171.基于因变向量、更新后的循环次数对应的初始稀疏向量、循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量、第一稀疏子矩阵、目标下三角子向量、对角矩阵、线程信息和第一稀疏子矩阵,对循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量进行更新,并确定出目标上三角子向量;目标上三角子向量存储于处理器的内存,以在第一循环判断结果为否时,从处理器的内存中确定目标上三角子向量为目标子向量。
172.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
173.在又一个可选的实施例中,如图2所示,第二处理模块203基于因变向量、循环次数对应的初始稀疏向量、目标子向量、对角矩阵、线程信息和第二稀疏子矩阵,对循环次数对应的初始稀疏向量进行更新,并确定出下三角子向量,包括:
174.对对角矩阵和因变向量进程乘积计算,得到第一对角向量;
175.由上而下依次确定第二稀疏子矩阵中颜色相同的行的元素为目标计算行信息;目标计算行信息包括至少1个目标计算行;
176.利用因变向量和循环次数对应的初始稀疏向量对目标计算行信息进行乘积计算,得到替换值信息和下三角值信息;目标计算行信息中的所有目标计算行的计算处理是由线程信息中的同一线程并发处理的;
177.将下三角值信息填充至预设的初始下三角子向量;
178.利用替换值信息、第一对角向量、目标子向量对目标计算行信息对应的循环次数对应的初始稀疏向量中的向量元素进行替换更新;
179.判断循环次数对应的初始稀疏向量中的所有向量元素是否已更新,得到更新判断结果;
180.当更新判断结果为否时,触发执行由上而下依次确定第二稀疏子矩阵中颜色相同的行为目标计算行信息;目标计算行信息包括至少1个目标计算行;
181.当更新判断结果为是时,确定初始下三角子向量为目标下三角子向量;
182.当更新判断结果为是时,触发执行基于因变向量、更新后的循环次数对应的初始稀疏向量、循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量、第一稀疏子矩阵、目标下三角子向量、对角矩阵、线程信息和第一稀疏子矩阵,对循环次数对应的初始稀疏向量的下一个序列对应的初始稀疏向量进行更新,并确定出目标上三角子向量。
183.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
184.在又一个可选的实施例中,如图2所示,替换值信息包括若干个替换值;下三角值信息包括若干个下三角值;每个下三角值对应于一个替换值;
185.第二处理模块203利用因变向量和循环次数对应的初始稀疏向量对目标计算行信息进行乘积计算,得到替换值信息和下三角值信息,包括:
186.对于任一目标计算行,计算该目标计算行与因变向量的乘积,得到该目标计算行对应的替换值;
187.计算该目标计算行与循环次数对应的初始稀疏向量的乘积,得到该目标计算行对应的下三角值。
188.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
189.在又一个可选的实施例中,如图2所示,第一处理模块202对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息,包括:
190.对目标稀疏矩阵中的每行元素进行着色,并依据着色后的每行元素的颜色相一致情况对目标稀疏矩阵中的所有行进行重排序,得到排序矩阵信息;排序矩阵信息包括排序矩阵、排序矩阵中每行元素的颜色信息以及目标稀疏矩阵与排序矩阵的位置变换对应关系信息;排序矩阵中任意相同颜色的两行元素上下相邻;
191.将排序矩阵按上三角部分、下三角部分和对角线部分进行分割,得到第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵。
192.可见,实施图2所描述的用于处理器内存访问的数据处理装置有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。
193.实施例三
194.请参阅图3,图3是本发明实施例公开的又一种用于处理器内存访问的数据处理装置的结构示意图。其中,图3所描述的装置能够应用于处理器内存管理系统中,如用于处理器内存访问的数据处理管理的本地服务器或云端服务器等,本发明实施例不做限定。如图3所示,该装置可以包括:
195.存储有可执行程序代码的存储器301;
196.与存储器301耦合的处理器302;
197.处理器302调用存储器301中存储的可执行程序代码,用于执行实施例一所描述的用于处理器内存访问的数据处理方法中的步骤。
198.实施例四
199.本发明实施例公开了一种计算机可读读存储介质,其存储用于电子数据交换的计算机程序,其中,该计算机程序使得计算机执行实施例一所描述的用于处理器内存访问的数据处理方法中的步骤。
200.实施例五
201.本发明实施例公开了一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,且该计算机程序可操作来使计算机执行实施例一所描述的用于处理器内存访问的数据处理方法中的步骤。
202.以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
203.通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(read-only memory,rom)、随机存储器(random access memory,ram)、可编程只读存储器(programmable read-only memory,prom)、可擦除可编程只读存储器(erasable programmable read only memory,eprom)、一次可编程只读存储器(one-time programmable read-only memory,otprom)、电子抹除式可复写只读存储器(electrically-erasable programmable read-only memory,eeprom)、只读光盘(compact disc read-only memory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
204.最后应说明的是:本发明实施例公开的一种用于处理器内存访问的数据处理方法及装置所揭露的仅为本发明较佳实施例而已,仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各项实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应的技术方案的本质脱离本发明各项实施例技术方案的精神和范围。
技术特征:
1.一种用于处理器内存访问的数据处理方法,其特征在于,所述方法包括:访问处理器的内存获取目标稀疏矩阵;对所述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;所述稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;所述第一稀疏子矩阵和所述第二稀疏子矩阵以稀疏矩阵形式存储于所述处理器的内存;所述对角矩阵以向量形式存储于所述处理器的内存;对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。2.根据权利要求1所述的用于处理器内存访问的数据处理方法,其特征在于,所述对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量,包括:访问所述处理器的内存获取因变向量;获取幂次阈值;初始化稀疏向量信息;所述稀疏向量信息包括k+1个依序分布的初始稀疏向量;所述k等于所述幂次阈值;基于所述因变向量、所述幂次阈值、所述稀疏向量信息和所述稀疏子矩阵信息,确定出目标稀疏向量。3.根据权利要求2所述的用于处理器内存访问的数据处理方法,其特征在于,所述基于所述因变向量、所述幂次阈值、所述稀疏向量信息和所述稀疏子矩阵信息,确定出目标稀疏向量,包括:获取循环次数;所述循环次数为大于等于1的正整数;判断所述循环次数是否等于1,得到第一循环判断结果;当所述第一循环判断结果为是时,对所述因变向量和所述第一稀疏子矩阵进行乘积处理,得到初始子向量;确定所述初始子向量为目标子向量;当所述第一循环判断结果为否时,访问所述处理器的内存获取所述目标子向量;基于所述因变向量、所述稀疏子矩阵信息和所述目标子向量,对所述初始稀疏向量信息进行更新;判断所述循环次数是否等于幂次阈值,得到第二循环判断结果;当所述第二循环判断结果为否时,触发执行所述获取循环次数;当所述第二循环判断结果为是时,利用所述第一稀疏子矩阵和所述第二稀疏子矩阵分别和最后一个序列对应的所述初始稀疏向量进行乘积处理,得到第一目标稀疏子向量和第二目标稀疏子向量;对所述第一目标稀疏子向量和所述第二目标稀疏子向量进行相加处理,得到目标稀疏向量。4.根据权利要求3所述的用于处理器内存访问的数据处理方法,其特征在于,所述基于所述因变向量、所述稀疏子矩阵信息和所述目标子向量,对所述初始稀疏向量信息进行更新,包括:基于所述因变向量、所述循环次数对应的初始稀疏向量、所述目标子向量、所述对角矩阵、线程信息和所述第二稀疏子矩阵,对所述循环次数对应的初始稀疏向量进行更新,并确定出目标下三角子向量;
基于所述因变向量、更新后的所述循环次数对应的初始稀疏向量、所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量、所述第一稀疏子矩阵、所述目标下三角子向量、所述对角矩阵、所述线程信息和所述第一稀疏子矩阵,对所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量进行更新,并确定出目标上三角子向量;所述目标上三角子向量存储于所述处理器的内存,以在所述第一循环判断结果为否时,从所述处理器的内存中确定所述目标上三角子向量为所述目标子向量。5.根据权利要求4所述的用于处理器内存访问的数据处理方法,其特征在于,所述基于所述因变向量、所述循环次数对应的初始稀疏向量、所述目标子向量、所述对角矩阵、线程信息和所述第二稀疏子矩阵,对所述循环次数对应的初始稀疏向量进行更新,并确定出下三角子向量,包括:对所述对角矩阵和所述因变向量进程乘积计算,得到第一对角向量;由上而下依次确定所述第二稀疏子矩阵中颜色相同的行的元素为目标计算行信息;所述目标计算行信息包括至少1个目标计算行;利用所述因变向量和所述循环次数对应的初始稀疏向量对所述目标计算行信息进行乘积计算,得到替换值信息和下三角值信息;所述目标计算行信息中的所有目标计算行的计算处理是由线程信息中的同一线程并发处理的;将所述下三角值信息填充至预设的初始下三角子向量;利用所述替换值信息、所述第一对角向量、所述目标子向量对所述目标计算行信息对应的所述循环次数对应的初始稀疏向量中的向量元素进行替换更新;判断所述循环次数对应的初始稀疏向量中的所有所述向量元素是否已更新,得到更新判断结果;当所述更新判断结果为否时,触发执行所述由上而下依次确定所述第二稀疏子矩阵中颜色相同的行为目标计算行信息;所述目标计算行信息包括至少1个目标计算行;当所述更新判断结果为是时,确定所述初始下三角子向量为目标下三角子向量;当所述更新判断结果为是时,触发执行所述基于所述因变向量、更新后的所述循环次数对应的初始稀疏向量、所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量、所述第一稀疏子矩阵、所述目标下三角子向量、所述对角矩阵、所述线程信息和所述第一稀疏子矩阵,对所述循环次数对应的初始稀疏向量的下一个序列对应的所述初始稀疏向量进行更新,并确定出目标上三角子向量。6.根据权利要求5所述的用于处理器内存访问的数据处理方法,其特征在于,所述替换值信息包括若干个替换值;所述下三角值信息包括若干个下三角值;每个所述下三角值对应于一个所述替换值;所述利用所述因变向量和所述循环次数对应的初始稀疏向量对所述目标计算行信息进行乘积计算,得到替换值信息和下三角值信息,包括:对于任一所述目标计算行,计算该目标计算行与所述因变向量的乘积,得到该目标计算行对应的替换值;计算该目标计算行与所述循环次数对应的初始稀疏向量的乘积,得到该目标计算行对应的下三角值。7.根据权利要求1所述的用于处理器内存访问的数据处理方法,其特征在于,所述对所
述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息,包括:对所述目标稀疏矩阵中的每行元素进行着色,并依据着色后的每行元素的颜色相一致情况对所述目标稀疏矩阵中的所有行进行重排序,得到排序矩阵信息;所述排序矩阵信息包括排序矩阵、所述排序矩阵中每行元素的颜色信息以及所述目标稀疏矩阵与所述排序矩阵的位置变换对应关系信息;所述排序矩阵中任意相同颜色的两行元素上下相邻;将所述排序矩阵按上三角部分、下三角部分和对角线部分进行分割,得到所述第一稀疏子矩阵、所述第二稀疏子矩阵和所述对角矩阵。8.一种用于处理器内存访问的数据处理装置,其特征在于,所述装置包括:获取模块,用于访问处理器的内存获取目标稀疏矩阵;第一处理模块,用于对所述目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;所述稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;所述第一稀疏子矩阵和所述第二稀疏子矩阵以稀疏矩阵形式存储于所述处理器的内存;所述对角矩阵以向量形式存储于所述处理器的内存;第二处理模块,用于对所述稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。9.一种用于处理器内存访问的数据处理装置,其特征在于,所述装置包括:存储有可执行程序代码的存储器;与所述存储器耦合的处理器;所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-7任一项所述的用于处理器内存访问的数据处理方法。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1-7任一项所述的用于处理器内存访问的数据处理方法。
技术总结
本发明公开了一种用于处理器内存访问的数据方法及装置,该方法包括:访问处理器的内存获取目标稀疏矩阵;对目标稀疏矩阵进行分区处理,得到稀疏子矩阵信息;稀疏子矩阵信息包括第一稀疏子矩阵、第二稀疏子矩阵和对角矩阵;第一稀疏子矩阵和第二稀疏子矩阵以稀疏矩阵形式存储于处理器的内存;对角矩阵以向量形式存储于处理器的内存;对稀疏子矩阵信息进行分段计算处理,得到目标稀疏向量。可见,本发明有利于减少对稀疏矩阵的内存访问,从而显着减少内存开销。少内存开销。少内存开销。
技术研发人员:李胜国 董德尊 张一尘 郑思 雷斐
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2023.05.23
技术公布日:2023/8/24
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/