CN117763269A - 基于多核cpu处理器的稠密线性方程组处理方法和装置 - Google Patents
基于多核cpu处理器的稠密线性方程组处理方法和装置 Download PDFInfo
- Publication number
- CN117763269A CN117763269A CN202311569913.0A CN202311569913A CN117763269A CN 117763269 A CN117763269 A CN 117763269A CN 202311569913 A CN202311569913 A CN 202311569913A CN 117763269 A CN117763269 A CN 117763269A
- Authority
- CN
- China
- Prior art keywords
- matrix
- column
- sub
- processing
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 17
- 239000011159 matrix material Substances 0.000 claims abstract description 580
- 238000000034 method Methods 0.000 claims abstract description 41
- 230000015654 memory Effects 0.000 claims abstract description 38
- 238000012545 processing Methods 0.000 claims description 81
- 238000004364 calculation method Methods 0.000 claims description 54
- 238000000354 decomposition reaction Methods 0.000 claims description 38
- 238000012937 correction Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于多核CPU处理器的稠密线性方程组处理方法和装置,基于多核CPU处理器实现,所述方法包括:获取待处理的稠密线性方程组的系数矩阵A和右端项矩阵B,利用所述系数矩阵A和右端项矩阵B,构建得到稠密线性方程组;将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y;利用所述上三角矩阵U和中间结果矩阵Y,构建得到上三角方程组;对所述上三角方程组进行迭代求解,得到待求解矩阵值。本发明基于商用高性能CPU处理器,实现了对中等规模矩阵的方程的高效求解,降低内存访问开销的目标。
Description
技术领域
本发明涉及高性能计算技术领域,尤其涉及一种基于多核CPU处理器的稠密线性方程组处理方法和装置。
背景技术
当前,商用高性能多核CPU处理器朝着物理核心更多、内存带宽更高、向量位数更宽的趋势发展,从而具有更高的理论峰值性能。针对CPU体系结构的发展趋势和特点,开源社区提供了多个高性能稠密线性代数计算库,以支持稠密线性求解器在CPU上高效运行,这些库包括OpenBLAS,PLASMA,Eigen,ATLAS等。
基于LU分解的稠密线性求解器被广泛应用于高性能计算和机器学习等领域,是稠密线性代数数学库重要的基本子程序之一。此类求解器为稠密线性系统A×X=B提供了数值解,这里A代表N×N的系数矩阵,B表示N×NRHS的右端项矩阵。由于其重要性,它被选为著名LINPACK基准测试程序的工作负载之一,用于衡量世界上计算速度最快的500台超级计算机。此外,它被包含在LAPCAK标准API中,命名为GESV。
当矩阵规模足够大时,现有稠密线性代数计算库在多核CPU平台上展现了非常好的性能。然而,对于中等规模矩阵而言,它们的性能依然有非常大的优化空间。在实际的性能评测中,PLASMA库中实现此求解器的函数plasma_dgesv,当N=11000,NRHS=11000时,能取得系统峰值80%以上的性能,而当N=4000,NRHS=4000时,其实测性能仅能达到系统峰值的40%。因此,需要对求解器进行性能优化,尤其是矩阵规模相对较小的场景。如何基于商用高性能CPU处理器,实现对中等规模矩阵的方程的高效求解,同时降低内存访问开销,是当前需要解决的问题。
发明内容
针对如何基于商用高性能CPU处理器,实现对中等规模矩阵的方程的高效求解,同时降低内存访问开销的问题,本发明公开了一种基于多核CPU处理器的稠密线性方程组处理方法和装置。
本申请实施例第一方面公开了一种基于多核CPU处理器的稠密线性方程组处理方法,基于多核CPU处理器实现,包括:
S1,获取待处理的稠密线性方程组的系数矩阵A和右端项矩阵B,利用所述系数矩阵A和右端项矩阵B,构建得到稠密线性方程组;所述稠密线性方程组的表达式为:
A×X=B,
其中,X为待求解矩阵,系数矩阵A的维度为N×N,右端项矩阵B的维度为N×NRHS;
S2,将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y;
S3,利用所述上三角矩阵U和中间结果矩阵Y,构建得到上三角方程组;所述上三角方程组的表达式为:
U×X=Y;
其中,X为待求解矩阵;
S4,对所述上三角方程组进行迭代求解,得到待求解矩阵值。
所述将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y,包括:
S21,将所述系数矩阵A和右端项矩阵B分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述矩阵A包括若干个维度为nb×nb的子矩阵块;所述矩阵B包括若干个维度为nb×nb的子矩阵块;
S22,对所述系数矩阵A进行分解处理,得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵;
S23,基于上三角矩阵U,建立中间变量方程组:
U×X=Y,
其中,Y为中间结果矩阵,X和Y为未知量;
S24,基于下三角矩阵L和右端项矩阵B,构建得到下三角方程组;所述下三角方程组的表达式为:
L×Y=B;
S25,对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值。
所述对所述系数矩阵A进行分解处理,得到分解结果方程,包括:
S221,确定系数矩阵A为待分解矩阵;初始化分解计算次数FC为1;建立初始化下三角矩阵L0和初始化上三角矩阵U0;所述初始化下三角矩阵L0和初始化上三角矩阵U0的维度,与系数矩阵A的维度相同;
S222,利用所述待分解矩阵的所有位于第一列的子矩阵块,构建得到第一处理矩阵;所述第一处理矩阵AA的表达式为:
其中,A1,1表示所述待分解矩阵的第一行、第一列的子矩阵块,A2:nt,1表示待分解矩阵的第一列中第2至第nt行所有的子矩阵块按照列方向进行排列所构建的矩阵,nt表示所述待分解矩阵所包括的子矩阵块的行维度和列维度;
S223,利用所述待分解矩阵的所有位于第二列至最后一列的子矩阵块,构建得到第二处理矩阵;所述第二处理矩阵BB的表达式为:
其中,A1,2:nt表示所述待分解矩阵的第一行中第2至第nt列所有的子矩阵块按照行方向进行排列所构建的矩阵,A2:nt,2:nt表示所述待分解矩阵的第2至第nt行、第2至第nt列的所有的子矩阵块所构建的矩阵;
S224,对所述第一处理矩阵AA中的子矩阵块A1,1进行三角分解处理,得到下三角矩阵L1,1和上三角矩阵U1,1;
S225,利用第一替换计算模型,对所述下三角矩阵L1,1和所述第二处理矩阵BB中的A1,2:nt进行计算处理,得到所述第二处理矩阵BB的第一替换矩阵U1,2:nt;
S226,利用第二替换计算模型,对所述第一替换矩阵U1,2:nt、所述第一处理矩阵AA中的A2:nt,1、所述第二处理矩阵BB的A2:nt,2:nt进行计算处理,得到所述第二处理矩阵BB的第二替换矩阵
S227,确定矩阵为列更新矩阵,确定矩阵[U1,1 U1,2:nt]为行更新矩阵;
S228,判断FC是否为1,若FC为1,将列更新矩阵作为所述初始化下三角矩阵L0的最左侧子矩阵,对所述初始化下三角矩阵L0的对应位置的子矩阵块进行更新,将行更新矩阵作为所述初始化上三角矩阵U0的最上侧子矩阵,对所述初始化上三角矩阵U0的对应位置的子矩阵块进行更新;
若FC不等于1,利用列更新矩阵,对所述初始化下三角矩阵L0中的上一轮更新子矩阵块的右侧第1至第n1列的子矩阵块进行更新,利用行更新矩阵,对所述初始化上三角矩阵U0中的上一轮更新子矩阵块的下侧第1至第n2行的子矩阵块进行更新;
所述列更新矩阵的行维度为n0,列维度为n1;所述行更新矩阵的行维度为n2,列维度为n3;
在每轮更新中,当列更新矩阵的行维度,小于所述初始化下三角矩阵L0的行维度时,利用所述列更新矩阵,对所述初始化下三角矩阵L0的第nt-n0+1行至第nt行的对应列的所有子矩阵块进行更新;
在每轮更新中,当行更新矩阵的列维度,小于所述初始化上三角矩阵U0的列维度时,利用所述行更新矩阵,对所述初始化上三角矩阵U0的第nt-n3+1列至第nt列的对应行的所有子矩阵块进行更新;
S229,判断矩阵的维度是否为nb×nb,得到第一判断结果;若所述第一判断结果为否,使分解计算次数FC加1,确定矩阵/>为待分解矩阵,执行S222;
若所述第一判断结果为是,确定更新后的初始化下三角矩阵L0,为下三角矩阵L,确定更新后的初始化上三角矩阵U0,为上三角矩阵U;
S2210,利用所述下三角矩阵L和上三角矩阵U,构建得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵。
所述第一替换计算模型,其计算表达式为:
U1,2:nt=[L1,1]-1×[A1,2:nt],
其中,U1,2:nt为所述第二处理矩阵BB的第一替换矩阵;
所述第二替换计算模型,其计算表达式为:
其中,为所述第二处理矩阵BB的第二替换矩阵。
所述对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值,包括:
S251,将所述下三角矩阵L和中间结果矩阵Y分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述下三角矩阵L包括若干个维度为nb×nb的子矩阵块;所述中间结果矩阵Y包括若干个维度为nb×nb的子矩阵块;
S252,确定求解列序号j=1;
S253,利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值;使j取值增加1;
S254,判断j是否大于nt,若不大于,执行S253,若大于,对所述中间结果矩阵Y的所有列的子矩阵块值,按照列序号进行组合,得到中间结果矩阵Y的求解值。
所述利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值,包括:
S2531,利用第一计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列、第1行的子矩阵块Y1,j的取值;
所述第一计算模型,其计算表达式为:
Y1,j=[L1,1]-1×[B1,j],
其中,B1,j为所述右端项矩阵B的第1行、第j列的子矩阵块,L1,1为下三角矩阵L的第1行、第1列的子矩阵块;
S2532,利用第二计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的剩余子矩阵块Yi,j取值,i=2,3,4,…,nt;
所述第二计算模型,其计算表达式为:
其中,Bi,j为所述右端项矩阵B的第i行、第j列的子矩阵块,Li,i表示下三角矩阵L的第i行、第i列的子矩阵块,为Bi,j的修正矩阵,Li,1:i-1表示下三角矩阵L的第i行、第1至第i-1列的子矩阵块,Y1:i-1,j表示中间结果矩阵Y的第1至第i-1行、第j列的子矩阵块。
本申请实施例第二方面公开了一种基于多核CPU处理器的稠密线性方程组处理装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行所述的基于多核CPU处理器的稠密线性方程组处理方法。
本申请实施例第三方面公开了一种计算机可存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行所述的基于多核CPU处理器的稠密线性方程组处理方法。
本申请实施例第四方面公开了一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现所述的基于多核CPU处理器的稠密线性方程组处理方法。
本发明的有益效果为:
1、本发明公开了一种基于多核CPU处理器的稠密线性方程组处理方法和装置,基于商用高性能CPU处理器,实现了对中等规模矩阵的方程的高效求解,降低内存访问开销的目标。
2、本发明在对系数矩阵A和右端项矩阵B进行分解计算处理过程中,提出了将下三角回代和矩阵分解进行融合的方法,提高了计算部件的利用率;所提出的将下三角矩阵L复制到一个连内存续缓冲区的方法,提高了存储部件的利用率。
附图说明
图1为本发明方法的实施流程图;
图2为本发明的对所述系数矩阵A进行分解处理的过程示意图;
图3为本发明的对子矩阵块进行三角分解处理的过程示意图;
图4为本发明的片外DDR存储器复制存储过程示意图。
具体实施方式
为了更好的了解本发明内容,这里给出一个实施例。
图1为本发明方法的实施流程图;图2为本发明的对所述系数矩阵A进行分解处理的过程示意图;图3为本发明的对子矩阵块进行三角分解处理的过程示意图;图4为本发明的片外DDR存储器复制存储过程示意图。
针对如何基于商用高性能CPU处理器,实现对中等规模矩阵的方程的高效求解,同时降低内存访问开销的问题,本发明公开了一种基于多核CPU处理器的稠密线性方程组处理方法和装置。
本申请实施例第一方面公开了一种基于多核CPU处理器的稠密线性方程组处理方法,基于多核CPU处理器实现,相较于已有开源方法,提高了多核CPU计算部件和存储部件的利用率;所述多核CPU处理器,包括若干个通用CPU处理核、若干片上Cache存储器和若干片外DDR存储器;所述片上Cache存储器包括一级Cache存储器和二级Cache存储器;
所述方法包括:
S1,获取待处理的稠密线性方程组的系数矩阵A和右端项矩阵B,利用所述系数矩阵A和右端项矩阵B,构建得到稠密线性方程组;所述稠密线性方程组的表达式为:
A×X=B,
其中,X为待求解矩阵,系数矩阵A的维度为N×N,右端项矩阵B的维度为N×NRHS;
获取待处理的稠密线性方程组的系数矩阵A和右端项矩阵B后,将所述系数矩阵A和右端项矩阵B存储入片外DDR存储器;
S2,将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y;
所述S2,是将系数矩阵A和右端项矩阵B从片外DDR存储器存储入片上Cache存储器,利用通用CPU处理核完成分解计算处理。
S3,利用所述上三角矩阵U和中间结果矩阵Y,构建得到上三角方程组;所述上三角方程组的表达式为:
U×X=Y;
其中,X为待求解矩阵;
S4,对所述上三角方程组进行迭代求解,得到待求解矩阵值;
所述S4,包括:
S41,在上三角方程组中,由于U为上三角矩阵,因此上三角方程组中第一个方程,即为u11x11=y11,x11表示矩阵X的第一行、第一列的元素,因此根据第一个方程可直接求出x11的值;依此类推,按照此方法可其求出矩阵X的第一行的所有元素;
S42,根据上三角矩阵U的第二行元素,与矩阵X的第一列的元素相乘,得到方程为
u21x11+u22x21=y21,
将x11代入,可求解得到x21的值;依次类推,可求解得到的矩阵X的第二行的所有元素;
S43,对上三角矩阵U的剩余行元素,重复步骤S42,可求解得到矩阵X的第三行至最后一行的所有元素。
所述S4,求解得到稠密线性方程组A×X=B的输出数据,结果矩阵X的维度为N×NRHS。
所述将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y,包括:
S21,将所述系数矩阵A和右端项矩阵B分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述矩阵A包括若干个维度为nb×nb的子矩阵块;所述矩阵B包括若干个维度为nb×nb的子矩阵块;
所采用的划分方法不改变原始输入矩阵的存储格式,消除了已有开源稠密线性代数计算库进行Tile存储格式转化引入的开销,提高了存储部件的利用率;
例如,矩阵A的维度为16×16,以2为间隔对其均匀划分处理后,矩阵A包括2×2个维度为8×8的子矩阵块;
S22,对所述系数矩阵A进行分解处理,得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵;
本发明S22提出的系数矩阵分解方法,改进了已有开源稠密线性代数计算库的负载不均衡问题,提高了计算部件利用率;将下三角矩阵L、上三角矩阵U复制到一个连续内存缓冲区的方法,提高了存储部件利用率;
S23,基于上三角矩阵U,建立中间变量方程组:
U×X=Y,
其中,Y为中间结果矩阵,X和Y为未知量;
S24,基于下三角矩阵L和右端项矩阵B,构建得到下三角方程组;所述下三角方程组的表达式为:
L×Y=B;
S25,对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值。
确定上三角矩阵U取值和中间结果矩阵Y的求解值,为所述S2的输出结果。
本发明的S2,提出了将下三角回代和矩阵分解进行融合的方法,提高了计算部件的利用率;所提出的将下三角矩阵L复制到一个连内存续缓冲区的方法,提高了存储部件的利用率。
所述对所述系数矩阵A进行分解处理,得到分解结果方程,包括:
S221,确定系数矩阵A为待分解矩阵;初始化分解计算次数FC为1;建立初始化下三角矩阵L0和初始化上三角矩阵U0;所述初始化下三角矩阵L0和初始化上三角矩阵U0的维度,与系数矩阵A的维度相同;
S222,利用所述待分解矩阵的所有位于第一列的子矩阵块,构建得到第一处理矩阵;所述第一处理矩阵AA的表达式为:
其中,A1,1表示所述待分解矩阵的第一行、第一列的子矩阵块,A2:nt,1表示待分解矩阵的第一列中第2至第nt行所有的子矩阵块按照列方向进行排列所构建的矩阵,nt表示所述待分解矩阵所包括的子矩阵块的行维度和列维度;
S223,利用所述待分解矩阵的所有位于第二列至最后一列的子矩阵块,构建得到第二处理矩阵;所述第二处理矩阵BB的表达式为:
其中,A1,2:nt表示所述待分解矩阵的第一行中第2至第nt列所有的子矩阵块按照行方向进行排列所构建的矩阵,A2:nt,2:nt表示所述待分解矩阵的第2至第nt行、第2至第nt列的所有的子矩阵块所构建的矩阵;
S224,对所述第一处理矩阵AA中的子矩阵块A1,1进行三角分解处理,得到下三角矩阵L1,1和上三角矩阵U1,1;
所述三角分解处理,可采用QR分解方法来实现。
S225,利用第一替换计算模型,对所述下三角矩阵L1,1和所述第二处理矩阵BB中的A1,2:nt进行计算处理,得到所述第二处理矩阵BB的第一替换矩阵U1,2:nt;
S226,利用第二替换计算模型,对所述第一替换矩阵U1,2:nt、所述第一处理矩阵AA中的A2:nt,1、所述第二处理矩阵BB的A2:nt,2:nt进行计算处理,得到所述第二处理矩阵BB的第二替换矩阵
S227,确定矩阵为列更新矩阵,确定矩阵[U1,1 U1,2:nt]为行更新矩阵;
S228,判断FC是否为1,若FC为1,将列更新矩阵作为所述初始化下三角矩阵L0的最左侧子矩阵,对所述初始化下三角矩阵L0的对应位置的子矩阵块进行更新,将行更新矩阵作为所述初始化上三角矩阵U0的最上侧子矩阵,对所述初始化上三角矩阵U0的对应位置的子矩阵块进行更新;
若FC不等于1,利用列更新矩阵,对所述初始化下三角矩阵L0中的上一轮更新子矩阵块的右侧第1至第n1列的子矩阵块进行更新,利用行更新矩阵,对所述初始化上三角矩阵U0中的上一轮更新子矩阵块的下侧第1至第n2行的子矩阵块进行更新;
所述列更新矩阵的行维度为n0,列维度为n1;所述行更新矩阵的行维度为n2,列维度为n3;
在每轮更新中,当列更新矩阵的行维度,小于所述初始化下三角矩阵L0的行维度时,利用所述列更新矩阵,对所述初始化下三角矩阵L0的第nt-n0+1行至第nt行的对应列的所有子矩阵块进行更新;
在每轮更新中,当行更新矩阵的列维度,小于所述初始化上三角矩阵U0的列维度时,利用所述行更新矩阵,对所述初始化上三角矩阵U0的第nt-n3+1列至第nt列的对应行的所有子矩阵块进行更新;
所述对应列,是指上一轮更新元素的右侧第1至第n1列;
所述对应行,是指上一轮更新元素的下侧第1至第n2行;
所述利用列更新矩阵,对所述下三角矩阵L0中的上一轮更新元素的右侧行邻近位置的对应元素进行更新,具体是:
所述下三角矩阵L0中的上一轮更新元素的下标范围为第1列至第2列、第1行至第nt行,则本轮更新元素的范围为下三角矩阵L0中的第3至第4列,第nt-n0+1行至第nt行的元素,n0为列更新矩阵的行维度,该过程如图2所示。图2中,L2:nt,1=A2:nt,1。
S229,判断矩阵的维度是否为nb×nb,得到第一判断结果;若所述第一判断结果为否,使分解计算次数FC加1,确定矩阵/>为待分解矩阵,执行S222;
若所述第一判断结果为是,确定更新后的初始化下三角矩阵L0,为下三角矩阵L,确定更新后的初始化上三角矩阵U0,为上三角矩阵U;
S2210,利用所述下三角矩阵L和上三角矩阵U,构建得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵。
所述S22的执行过程,如图2所示。
所述对所述第一处理矩阵AA中的子矩阵块A1,1进行三角分解处理,得到下三角矩阵L1,1和上三角矩阵U1,1,包括:
S2241,设置并行处理的线程数Tn;将维度为N×nb的子矩阵块A1,1根据线程数T进行切分处理,得到Tn个维度为L×nb的矩阵块,其中L=N/Tn;
S2242,将所有矩阵块均匀分配给每个线程进行处理,每个线程分配到大小相同的矩阵块,从而实现所述负载均衡、提高计算部件利用率的目标;每个线程将所分配的矩阵块进行分块,得到第一子块矩阵和第二子块矩阵;所述第一子块矩阵,为所述矩阵块中维度为L×ib的子矩阵块;所述第二子块矩阵,为所述矩阵块中维度为L×(nb-ib)的子矩阵块;
S2243,每个线程分别对其第一子块矩阵进行QR分解,得到第一子块矩阵的上三角矩阵和下三角矩阵;
S2244,确定第一子块矩阵为第一处理矩阵,确定第二子块矩阵为第二处理矩阵,对所述第一处理矩阵和第二处理矩阵,执行S225至S227,得到第一替换矩阵和第二替换矩阵;
S2245,利用第一替换矩阵和第二替换矩阵对第二子块矩阵的对应元素进行替换,得到更新第二子块矩阵;
S2246,利用第一子块矩阵的上三角矩阵、下三角矩阵和更新第二子块矩阵进行组合,得到更新子矩阵;
所述利用第一子块矩阵的上三角矩阵、下三角矩阵和更新第二子块矩阵进行组合,得到更新子矩阵,包括:
获取上三角矩阵的上半部分元素,获取下三角矩阵的下半部分元素,利用所述上半部分元素和下半部分元素进行拼接,得到所述更新子矩阵的左半部分子矩阵;利用更新第二子块矩阵,作为所述更新子矩阵的右半部分子矩阵,从而得到更新子矩阵;
S2247,确定所述更新子矩阵的上半部分,为上三角矩阵U1,1;确定所述更新子矩阵的下半部分,为下三角矩阵L1,1;
图3给出了当线程数为3时,S224的执行过程。
所述第一替换计算模型,其计算表达式为:
U1,2:nt=[L1,1]-1×[A1,2:nt],
其中,U1,2:nt为所述第二处理矩阵BB的第一替换矩阵;
所述第二替换计算模型,其计算表达式为:
其中,为所述第二处理矩阵BB的第二替换矩阵。
在执行S226之前,还包括:将所述第一替换矩阵U1,2:nt、所述第一处理矩阵AA中的A2:nt,1复制到片外DDR存储器中,从而实现所述提高存储部件利用率的目标,该复制存储过程如图4所示,包括:
S22601,确定分块参数值mr、nr、nb;所述分块参数值,满足不等式组:
mr+nr+mr·nr≤Capacity(register)/Sizeof(double),
nb·nb+2·nb·nr≤Capacity(L2)/Sizeof(double)
2·mr·nb+nb·nr≤Capacity(L1)/Sizeof(double),
其中参数mr、nr满足不等式,Capabilities(register)表示CPU核内向量寄存器的容量,sizeof(double)表示存储双精度数据所用的字节数;Capatity(L1)表示一级Cache存储器的容量,Capatity(L2)表示二级Cache存储器的容量
S22602,将所述矩阵U1,2:nt复制为nb×nr的竖条状矩阵块columnpanel,将columnpanel按照RHM(RightHandMode)方式复制到片外DDR存储器中,复制过程中的数据读取方向,如图4所示;将所述矩阵A2:t,1,复制为mr×nb的横条状矩阵块rowpanel,将所述横条状矩阵块rowpanel按照LHM方式复制到片外DDR存储器中,复制过程中的数据读取方向,如图4所示。
在执行S226时,将片外DDR存储器的数据作为输入,调用KERNEL函数进行矩阵乘加计算;
所述对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值,包括:
S251,将所述下三角矩阵L和中间结果矩阵Y分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述下三角矩阵L包括若干个维度为nb×nb的子矩阵块;所述中间结果矩阵Y包括若干个维度为nb×nb的子矩阵块;
S252,确定求解列序号j=1;
S253,利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值;使j取值增加1;
S254,判断j是否大于nt,若不大于,执行S253,若大于,对所述中间结果矩阵Y的所有列的子矩阵块值,按照列序号进行组合,得到中间结果矩阵Y的求解值。
所述利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值,包括:
S2531,利用第一计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列、第1行的子矩阵块Y1,j的取值;
所述第一计算模型,其计算表达式为:
Y1,j=[L1,1]-1×[B1,j],
其中,B1,j为所述右端项矩阵B的第1行、第j列的子矩阵块,L1,1为下三角矩阵L的第1行、第1列的子矩阵块;
S2532,利用第二计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的剩余子矩阵块Yi,j取值,i=2,3,4,…,nt;
所述第二计算模型,其计算表达式为:
其中,Bi,j为所述右端项矩阵B的第i行、第j列的子矩阵块,Li,i表示下三角矩阵L的第i行、第i列的子矩阵块,为Bi,j的修正矩阵,Li,1:i-1表示下三角矩阵L的第i行、第1至第i-1列的子矩阵块,Y1:i-1,j表示中间结果矩阵Y的第1至第i-1行、第j列的子矩阵块。
本申请实施例第二方面公开了一种基于多核CPU处理器的稠密线性方程组处理装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行所述的基于多核CPU处理器的稠密线性方程组处理方法。
本申请实施例第三方面公开了一种计算机可存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行所述的基于多核CPU处理器的稠密线性方程组处理方法。
本申请实施例第四方面公开了一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现所述的基于多核CPU处理器的稠密线性方程组处理方法。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,基于多核CPU处理器实现,包括:
S1,获取待处理的稠密线性方程组的系数矩阵A和右端项矩阵B,利用所述系数矩阵A和右端项矩阵B,构建得到稠密线性方程组;所述稠密线性方程组的表达式为:
A×X=B,
其中,X为待求解矩阵;
S2,将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y;
S3,利用所述上三角矩阵U和中间结果矩阵Y,构建得到上三角方程组;所述上三角方程组的表达式为:
U×X=Y;
其中,X为待求解矩阵;
S4,对所述上三角方程组进行迭代求解,得到待求解矩阵值。
2.如权利要求1所述的基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,所述将系数矩阵A和右端项矩阵B进行分解计算处理,得到上三角矩阵U和中间结果矩阵Y,包括:
S21,将所述系数矩阵A和右端项矩阵B分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述矩阵A包括若干个维度为nb×nb的子矩阵块;所述矩阵B包括若干个维度为nb×nb的子矩阵块;
S22,对所述系数矩阵A进行分解处理,得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵;
S23,基于上三角矩阵U,建立中间变量方程组:
U×X=Y,
其中,Y为中间结果矩阵,X和Y为未知量;
S24,基于下三角矩阵L和右端项矩阵B,构建得到下三角方程组;所述下三角方程组的表达式为:
L×Y=B;
S25,对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值。
3.如权利要求2所述的基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,所述对所述系数矩阵A进行分解处理,得到分解结果方程,包括:
S221,确定系数矩阵A为待分解矩阵;初始化分解计算次数FC为1;建立初始化下三角矩阵L0和初始化上三角矩阵U0;所述初始化下三角矩阵L0和初始化上三角矩阵U0的维度,与系数矩阵A的维度相同;
S222,利用所述待分解矩阵的所有位于第一列的子矩阵块,构建得到第一处理矩阵;所述第一处理矩阵AA的表达式为:
其中,A1,1表示所述待分解矩阵的第一行、第一列的子矩阵块,A2:nt,1表示待分解矩阵的第一列中第2至第nt行所有的子矩阵块按照列方向进行排列所构建的矩阵,nt表示所述待分解矩阵所包括的子矩阵块的行维度和列维度;
S223,利用所述待分解矩阵的所有位于第二列至最后一列的子矩阵块,构建得到第二处理矩阵;所述第二处理矩阵BB的表达式为:
其中,A1,2:nt表示所述待分解矩阵的第一行中第2至第nt列所有的子矩阵块按照行方向进行排列所构建的矩阵,A2:nt,2:nt表示所述待分解矩阵的第2至第nt行、第2至第nt列的所有的子矩阵块所构建的矩阵;
S224,对所述第一处理矩阵AA中的子矩阵块A1,1进行三角分解处理,得到下三角矩阵L1,1和上三角矩阵U1,1;
S225,利用第一替换计算模型,对所述下三角矩阵L1,1和所述第二处理矩阵BB中的A1,2:nt进行计算处理,得到所述第二处理矩阵BB的第一替换矩阵U1,2:nt;
S226,利用第二替换计算模型,对所述第一替换矩阵U1,2:nt、所述第一处理矩阵AA中的A2:nt,1、所述第二处理矩阵BB的A2:nt,2:nt进行计算处理,得到所述第二处理矩阵BB的第二替换矩阵
S227,确定矩阵为列更新矩阵,确定矩阵[U1,1 U1,2:nt]为行更新矩阵;
S228,判断FC是否为1,若FC为1,将列更新矩阵作为所述初始化下三角矩阵L0的最左侧子矩阵,对所述初始化下三角矩阵L0的对应位置的子矩阵块进行更新,将行更新矩阵作为所述初始化上三角矩阵U0的最上侧子矩阵,对所述初始化上三角矩阵U0的对应位置的子矩阵块进行更新;
若FC不等于1,利用列更新矩阵,对所述初始化下三角矩阵L0中的上一轮更新子矩阵块的右侧第1至第n1列的子矩阵块进行更新,利用行更新矩阵,对所述初始化上三角矩阵U0中的上一轮更新子矩阵块的下侧第1至第n2行的子矩阵块进行更新;
所述列更新矩阵的行维度为n0,列维度为n1;所述行更新矩阵的行维度为n2,列维度为n3;
在每轮更新中,当列更新矩阵的行维度,小于所述初始化下三角矩阵L0的行维度时,利用所述列更新矩阵,对所述初始化下三角矩阵L0的第nt-n0+1行至第nt行的对应列的所有子矩阵块进行更新;
在每轮更新中,当行更新矩阵的列维度,小于所述初始化上三角矩阵U0的列维度时,利用所述行更新矩阵,对所述初始化上三角矩阵U0的第nt-n3+1列至第nt列的对应行的所有子矩阵块进行更新;
S229,判断矩阵的维度是否为nb×nb,得到第一判断结果;若所述第一判断结果为否,使分解计算次数FC加1,确定矩阵/>为待分解矩阵,执行S222;
若所述第一判断结果为是,确定更新后的初始化下三角矩阵L0,为下三角矩阵L,确定更新后的初始化上三角矩阵U0,为上三角矩阵U;
S2210,利用所述下三角矩阵L和上三角矩阵U,构建得到分解结果方程;所述分解结果方程的表达式为:
A=L×U,
其中,L为下三角矩阵,U为上三角矩阵。
4.如权利要求3所述的基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,所述第一替换计算模型,其计算表达式为:
U1,2:nt=[L1,1]-1×[A1,2:nt],
其中,U1,2:nt为所述第二处理矩阵BB的第一替换矩阵。
5.如权利要求3所述的基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,所述第二替换计算模型,其计算表达式为:
其中,为所述第二处理矩阵BB的第二替换矩阵。
6.如权利要求2所述的基于多核CPU处理器的稠密线性方程组处理方法,其特征在于,所述对所述下三角方程组进行求解,得到中间结果矩阵Y的求解值,包括:
S251,将所述下三角矩阵L和中间结果矩阵Y分别进行均匀划分处理,得到对应的若干个维度为nb×nb的子矩阵块;所述下三角矩阵L包括若干个维度为nb×nb的子矩阵块;所述中间结果矩阵Y包括若干个维度为nb×nb的子矩阵块;
S252,确定求解列序号j=1;
S253,利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值;使j取值增加1;
S254,判断j是否大于nt,若不大于,执行S253,若大于,对所述中间结果矩阵Y的所有列的子矩阵块值,按照列序号进行组合,得到中间结果矩阵Y的求解值。
7.如权利要求6所述的基于多核CPU处理器的稠密线性方程组处理方法,所述利用列求解模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的所有子矩阵块的取值,包括:
S2531,利用第一计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列、第1行的子矩阵块Y1,j的取值;
所述第一计算模型,其计算表达式为:
Y1,j=[L1,1]-1×[B1,j],
其中,B1,j为所述右端项矩阵B的第1行、第j列的子矩阵块,L1,1为下三角矩阵L的第1行、第1列的子矩阵块;
S2532,利用第二计算模型,对所述右端项矩阵B和下三角矩阵L进行计算处理,得到中间结果矩阵Y的第j列的剩余子矩阵块Yi,j取值,i=2,3,4,…,nt;
所述第二计算模型,其计算表达式为:
其中,Bi,j为所述右端项矩阵B的第i行、第j列的子矩阵块,Li,i表示下三角矩阵L的第i行、第i列的子矩阵块,为Bi,j的修正矩阵,Li,1:i-1表示下三角矩阵L的第i行、第1至第i-1列的子矩阵块,Y1:i-1,j表示中间结果矩阵Y的第1至第i-1行、第j列的子矩阵块。
8.一种基于多核CPU处理器的稠密线性方程组处理装置,其特征在于,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1至7中任一项所述的基于多核CPU处理器的稠密线性方程组处理方法。
9.一种计算机可存储介质,其特征在于,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行如权利要求1至7中任一项所述的基于多核CPU处理器的稠密线性方程组处理方法。
10.一种信息数据处理终端,其特征在于,所述信息数据处理终端用于实现如权利要求1至7中任一项所述的基于多核CPU处理器的稠密线性方程组处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569913.0A CN117763269A (zh) | 2023-11-23 | 2023-11-23 | 基于多核cpu处理器的稠密线性方程组处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311569913.0A CN117763269A (zh) | 2023-11-23 | 2023-11-23 | 基于多核cpu处理器的稠密线性方程组处理方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117763269A true CN117763269A (zh) | 2024-03-26 |
Family
ID=90313416
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311569913.0A Pending CN117763269A (zh) | 2023-11-23 | 2023-11-23 | 基于多核cpu处理器的稠密线性方程组处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117763269A (zh) |
-
2023
- 2023-11-23 CN CN202311569913.0A patent/CN117763269A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zachariadis et al. | Accelerating sparse matrix–matrix multiplication with GPU Tensor Cores | |
Buttari et al. | A class of parallel tiled linear algebra algorithms for multicore architectures | |
Peng et al. | GLU3. 0: Fast GPU-based parallel sparse LU factorization for circuit simulation | |
CN111381880B (zh) | 一种处理器、介质和处理器的操作方法 | |
US8433883B2 (en) | Inclusive “OR” bit matrix compare resolution of vector update conflict masks | |
CN110235099B (zh) | 用于处理输入操作数值的装置和方法 | |
Osorio et al. | A BF16 FMA is all you need for DNN training | |
CN111459548B (zh) | 双加载指令 | |
Liu et al. | Accelerating approximate matrix multiplication for near-sparse matrices on GPUs | |
US20210182060A1 (en) | Compute array of a processor with mixed-precision numerical linear algebra support | |
CN117763269A (zh) | 基于多核cpu处理器的稠密线性方程组处理方法和装置 | |
WO2019141160A1 (zh) | 一种数据处理的方法及装置 | |
Khan et al. | Optimizing the matrix multiplication using strassen and winograd algorithms with limited recursions on many-core | |
Vassiliadis et al. | Block based compression storage expected performance | |
Pandey et al. | Scalable deep learning-based microarchitecture simulation on GPUs | |
Reid et al. | An efficient out-of-core sparse symmetric indefinite direct solver | |
US20240111525A1 (en) | Multiplication hardware block with adaptive fidelity control system | |
CN113377546B (zh) | 通信避免方法、装置、电子设备和存储介质 | |
US20230273791A1 (en) | Floating Point Norm Instruction | |
Zhang et al. | Hlanc: heterogeneous parallel implementation of the implicitly restarted Lanczos method | |
Li et al. | Scalable Deep Learning-Based Microarchitecture Simulation on GPUs | |
Shah | Exploring GPU-Friendly Linear Optimization Methods | |
KR20240063137A (ko) | 하드웨어 가속기 최적화형 그룹 컨볼루션 기반 신경망 모델 | |
Error et al. | Patrick E. Small, Rajiv K. Kalia, Aiichiro Nakano, and Priya Vashishta | |
Swatman et al. | Modelling Performance Loss due to Thread Imbalance in Stochastic Variable-Length SIMT Workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |