CN104615584B - 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 - Google Patents
面向gpdsp的大规模三角线性方程组求解向量化计算的方法 Download PDFInfo
- Publication number
- CN104615584B CN104615584B CN201510062255.5A CN201510062255A CN104615584B CN 104615584 B CN104615584 B CN 104615584B CN 201510062255 A CN201510062255 A CN 201510062255A CN 104615584 B CN104615584 B CN 104615584B
- Authority
- CN
- China
- Prior art keywords
- gpdsp
- vector
- dsp core
- piece
- piecemeal
- 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.)
- Active
Links
Abstract
本发明公开了一种面向GPDSP的大规模三角线性方程组求解向量化计算的方法,为:采用分块计算的方式将大规模三角线性方程组的求解分割为不规整三角矩阵分块与向量乘法和规整化的矩阵分块与向量乘法;通过GPDSP中的CPU核运行操作系统,负责数据的逻辑分割和任务的调度,计算负载较少的不规整三角矩阵分块与向量乘法计算;通过GPDSP中的DSP核负责规整化的矩阵分块与向量乘法,不间断的从CPU核获取新的计算任务并将运行结果报告CPU核,所述CPU核通过动态调度实现各DSP核之间的计算任务的动态负载均衡。本发明原理简单、操作方便,能充分利用GPDSP中CPU核的通用计算和DSP核的强大向量处理阵列并行计算、高带宽向量数据加载能力,显著提高DSP核计算访存比。
Description
技术领域
本发明主要涉及通用计算数字信号处理器(General-Purpose Digital SignalProcessor,简称GPDSP),特指一种适用于GPDSP的大规模三角线性方程组求解向量化计算的方法。
背景技术
三角线性方程组求解计算在高性能计算和科学工程计算领域中应用广泛。例如,大规模稠密线性方程组求解通常是先进行系数矩阵的LU分解或QR分解,再转化为三角线性方程组求解,最后通过三角线性方程组求解获得最终的线性方程组的求解结果。高性能基准测试程序(High Performance Linpack,HPL)是TOP500最重要的测试基准,HPL通过求解稠密线性代数方程组,以测试和评价高性能计算机系统的浮点性能,HPL在完成矩阵LU分解之后,还需要一个下三角线性方程组求解和一个上三角线性方程组求解以完成最终的计算。因此,三角线性方程组求解的性能对提高HPL的效率具有非常重要的应用价值。
目前,三角线性方程组求解的加速方法包括硬件方法和软件方法,硬件的加速方法代价高,通用性差;软件方法主要是采用循环展开、软件流水等软件优化方法进行加速,通常加速的效果不明显,很难实现大幅度的加速。近年来,随着GPU的计算能力飞速发展,在专利申请号:200910226769.4的文献中提出一种利用CPU和GPU协同工作对三角线性方程组求解的加速方法,该方法根据CPU和GPU的性能进行负载平衡,这种静态的任务分割与具体的实现方法相关,难以保证最优的发挥处理器的性能。
在专利申请号为201310725118.6的文献(处于实审阶段)中提供了一种通用计算数字信号处理器(General-Purpose Digital Signal Processor,简称GPDSP),它包含CPU核单元和DSP核单元,CPU核单元主要用于负责包括存储管理、文件控制、进程调度、中断管理任务在内的通用事务管理以及提供对通用操作系统的完整支持;DSP核单元包含若干强大计算能力的64位向量处理阵列,用于支持高密集运算任务的解算。GPDSP中CPU核的优势在于控制管理,其计算能力在GPDSP中的占比极小,而DSP核的向量处理阵列具有强大向量化计算能力和高带宽的向量数据加载能力,是GPDSP计算性能的主要贡献者,因此,上述利用CPU和GPU对三角线性方程组求解的加速方法不适合GPDSP,不能充分利用DSP核的向量阵列存储访存模式和向量处理阵列并发向量处理的体系结构特征,难以发挥GPDSP的向量计算优势。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、操作方便、能充分利用GPDSP中CPU核的通用计算和DSP核的强大向量处理阵列并行计算、高带宽向量数据加载能力,显著提高DSP核计算访存比的面向GPDSP的大规模三角线性方程组求解向量化计算的方法。
为解决上述技术问题,本发明采用以下技术方案:
一种面向GPDSP的大规模三角线性方程组求解向量化计算的方法,为:
采用分块计算的方式将大规模三角线性方程组的求解分割为不规整三角矩阵分块与向量乘法和规整化的矩阵分块与向量乘法;
通过GPDSP中的CPU核运行操作系统,负责数据的逻辑分割和任务的调度,计算负载较少的不规整三角矩阵分块与向量乘法计算;
通过GPDSP中的DSP核负责规整化的矩阵分块与向量乘法,不间断的从CPU核获取新的计算任务并将运行结果报告CPU核,所述CPU核通过动态调度实现各DSP核之间的计算任务的动态负载均衡。
作为本发明的进一步改进:所述方法的具体流程为:
S1:由GPDSP的CPU核在片外DDR存储器为矩阵A,向量x和b分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;
S2:根据GPDSP的体系结构特征确定优化的下三角矩阵的分块大小NB值;
S3:由GPDSP的CPU核根据上述步骤确定的NB值将矩阵A,向量x和b进行逻辑分块;
S4:GPDSP的CPU核将三角分块Ti和子向量bi加载到片内共享存储阵列中,初始i=1,计算得到计算结果xi传出到片外DDR存储器中,同时保持在片内共享存储阵列中;
S5:GPDSP的CPU核将逻辑分块Si+1,i,Si+2,i,…,Sn,i的加入计算任务池;逻辑分块的计算任务按照先行优先、再列优先的顺序策略进行优先级排序;
S6:GPDSP的CPU核从计算任务池中按照计算优先级,依次派发计算任务给空闲的DSP核,并且保证每一行只有一个逻辑分块被处理,若该行已经有一个逻辑分块正被处理,则按照优先级顺序取下一个不在本行上的逻辑分块,设派发的逻辑分块为Si,j;
S7:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器,判断片内共享存储阵列中是否保存有逻辑子向量分块xj和bi,若没有,则从片外DDR存储器传入片内共享存储阵列中;执行逻辑分块Si,j与子向量分块xj和bi的乘减计算:bi=bi-Si,j*xj;计算后的结果bi保持在片内共享存储阵列中;
S8:GPDSP的CPU核根据计算任务池的逻辑分块执行情况判断i+1行的逻辑分块是否都计算完毕,若是,令i=i+1,转步骤S4;若不是,转步骤S6;
重复上述步骤S4至步骤S8的计算,直到GPDSP的CPU核完成所有的计算,则所有子向量x1,x2,…,xn构成最终的三角线性方程组的解向量,计算完毕。
作为本发明的进一步改进:所述步骤S7的具体步骤为:
S7.1:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器是按照转置的方式存储在片内向量阵列存储器中,记为TSi,j;设初始值全为0的向量寄存器组V0,V0用作乘累加计算的累加器;
S7.2:GPDSP的DSP核使用标量LOAD指获取子向量xj的第一个元素,存入标量寄存器U1;
S7.3:GPDSP的DSP核使用标量广播指令将U1数据广播至向量寄存器V1中;
S7.4:GPDSP的DSP核使用向量LOAD指令加载TSi,j的第一行元素,存入向量寄存器组V2;
S7.5:GPDSP的DSP核使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0;
重复执行步骤S7.2到步骤S7.5,直至子向量xj的每一个元素计算完毕;
S7.6:GPDSP的DSP核通过DMA从片内共享存储阵列中将子向量分块bi传输到片内向量阵列存储器;
S7.7:GPDSP的DSP核使用向量LOAD指令加载子向量分块bi元素,存入向量寄存器组V3;
S7.8:GPDSP的DSP核使用向量浮点减法指令计算V3与V0的减法,存入向量寄存器组V3;
S7.9:GPDSP的DSP核使用向量STORE指令将向量寄存器组V3存入子向量分块bi在片内向量阵列存储器中的原存储位置;
S7.10:GPDSP的DSP核通过DMA从片内向量阵列存储器将子向量分块bi传输到片内共享存储阵列中的原存储位置;
S7.11:计算完毕。
作为本发明的进一步改进:所述步骤S2中确定分块NB大小的方法是:基于GPDSP的体系结构特征,考虑(1)DSP核上的该分块大小的矩阵分块与向量乘法计算的核心程序能够充分发挥DSP核的峰值性能,NB是(p*q)的整数倍;(2)后续计算过程中CPU核和DSP核等待的时间最少。
作为本发明的进一步改进:在所述步骤S3中,令n=INT(N/NB),其中INT()表示对括号中的值向上取整,将下三角系数矩阵按照分块NB值划分为n×n个子块,其中在对角线上的子块依次标记为,以子块Ti为坐标,对应列方向上的矩阵分块依次标记为Si+1,i,Si+2,i,…,Sn,i;将x、b分别划分为长度为NB的子向量,分别有n个子向量,分别标记为x1,x2,…,xn;b1,b2,…,bn。
作为本发明的进一步改进:在所述步骤S5中,对于同列的逻辑分块Sj,i,Sk,i,若j>k,则Si,k比Si,j优先处理;对于同行的逻辑分块Si,j,Si,k,若j>k,则Si,k比Si,j优先处理。
与现有技术相比,本发明的优点在于:
1、本发明采用分块计算的方式将大规模三角线性方程组的求解分割为计算量小、数量较少的不规整三角矩阵分块与向量乘法,以及占据主要计算量、数量众多的规整化的矩阵分块与向量乘法。由CPU核运行操作系统,负责数据的逻辑分割和任务的调度,计算负载较少的不规整三角矩阵分块与向量乘法计算,而由DSP核负责占据主要计算量、数量众多的规整化的矩阵分块与向量乘法,DSP核运行充分优化的规整化的矩阵分块与向量乘法计算的核心程序,不间断的从CPU核获取新的计算任务并将运行结果报告CPU核,CPU核通过动态调度实现各DSP核之间的计算任务的动态负载均衡。
2、本发明所提供的任务分割方法能够充分发挥CPU核的通用计算和DSP核的强大向量化计算能力的优点,实现CPU核与DSP核间的紧密协同配合、DSP核之间的动态负载均衡,高效的实现大规模三角线性方程组求解向量化的计算。
3、本发明的方法,原理简单、操作方便、能充分利用GPDSP中CPU核的通用计算和DSP核的强大向量处理阵列并行计算、高带宽向量数据加载能力,显著提高DSP核计算访存比的大规模三角线性方程组求解向量化计算的方法,尤其适用于基于GPDSP实现大规模三角线性方程组求解向量化的计算。
附图说明
图1是本发明在具体应用实例中所面向GPDSP的简化访存结构模型示意图。
图2是本发明方法的流程示意图。
图3是本发明中GPDSP的DSP核执行逻辑分块Si,j与子向量分块xj和bi的乘减计算的流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明做进一步详细说明。
本发明的面向GPDSP的大规模三角线性方程组求解向量化计算的方法,为基于GPDSP的体系结构特征所提供一种高效的CPU核和DSP核协同计算实现大规模三角线性方程组求解向量化计算的方法。
本发明采用分块计算的方式将大规模三角线性方程组的求解分割为计算量小、数量较少的不规整三角矩阵分块与向量乘法,以及占据主要计算量、数量众多的规整化的矩阵分块与向量乘法。由CPU核运行操作系统,负责数据的逻辑分割和任务的调度,计算负载较少的不规整三角矩阵分块与向量乘法计算,而由DSP核负责占据主要计算量、数量众多的规整化的矩阵分块与向量乘法,DSP核运行充分优化的规整化的矩阵分块与向量乘法计算的核心程序,不间断的从CPU核获取新的计算任务并将运行结果报告CPU核,CPU核通过动态调度实现各DSP核之间的计算任务的动态负载均衡。
在较佳的实施例中,本发明所提供的任务分割方法能够充分发挥CPU核的通用计算和DSP核的强大向量化计算能力的优点,实现CPU核与DSP核间的紧密协同配合、DSP核之间的动态负载均衡,高效的实现大规模三角线性方程组求解向量化的计算。
如图1所示,是本发明在具体应用实例中所面向的GPDSP的简化访存结构模型示意图。系统包括CPU核单元和DSP核单元,DSP核单元包含若干64位向量处理阵列计算单元、专用的片内标量存储器和向量阵列存储器,CPU核单元和DSP核单元共享的片内共享存储、大容量的片外DDR存储器。
如图2所示,在一个具体应用实例中,设GPDSP中DSP核的数量为r个;DSP核的向量处理阵列的计算单元数量为p个,每个计算单元的MAC(乘加部件)数量为q个,DSP核的片内向量阵列存储器容量为s1字节,DSP核的片内标量存储器容量为s2字节;GPDSP的片内共享存储阵列容量为s3字节,GPDSP的片外共享DDR存储容量为s4字节。
设求解的三角线性方程组为Ax=b,其中A是N×N阶的下三角系数矩阵,b是长度为N的常数向量,x是长度为N的待求解向量,矩阵元素的数据类型为单精度或双精度,每个元素数据为w字节。
在具体应用实例中,本发明的具体流程为:
S1:由GPDSP的CPU核在片外DDR存储器为矩阵A,向量x和b分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据。
S2:根据GPDSP的体系结构特征确定优化的下三角矩阵的分块大小NB值。
确定分块NB大小的方法是:基于GPDSP的体系结构特征,主要考虑(1)DSP核上的该分块大小的矩阵分块与向量乘法计算的核心程序能够充分发挥DSP核的峰值性能,NB是(p*q)的整数倍;(2)后续计算过程中CPU核和DSP核等待的时间最少。设本方法中NB取值为(p*q)的m倍。
S3:由GPDSP的CPU核根据上述步骤确定的NB值将矩阵A,向量x和b进行逻辑分块。
即:令n=INT(N/NB),其中INT()表示对括号中的值向上取整。将下三角系数矩阵按照分块NB值划分为n×n个子块,其中在对角线上的子块依次标记为,以子块Ti为坐标,对应列方向上的矩阵分块依次标记为Si+1,i,Si+2,i,…,Sn,i。将x、b分别划分为长度为NB的子向量,分别有n个子向量,分别标记为x1,x2,…,xn;b1,b2,…,bn;。
S4:GPDSP的CPU核将三角分块Ti和子向量bi加载到片内共享存储阵列中(初始i=1),计算得到计算结果xi传出到片外DDR存储器中,同时保持在片内共享存储阵列中。
S5:GPDSP的CPU核将逻辑分块Si+1,i,Si+2,i,…,Sn,i的加入计算任务池。逻辑分块的计算任务按照先行优先、再列优先的顺序策略进行优先级排序,即:对于同列的逻辑分块Sj,i,Sk,i,若j>k,则Si,k比Si,j优先处理;对于同行的逻辑分块Si,j,Si,k,若j>k,则Si,k比Si,j优先处理。
S6:GPDSP的CPU核从计算任务池中按照计算优先级,依次派发计算任务给空闲的DSP核,并且保证每一行只有一个逻辑分块被处理,若该行已经有一个逻辑分块正被处理,则按照优先级顺序取下一个不在本行上的逻辑分块,设派发的逻辑分块为Si,j。
S7:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器,判断片内共享存储阵列中是否保存有逻辑子向量分块xj和bi,若没有,则从片外DDR存储器传入片内共享存储阵列中;执行逻辑分块Si,j与子向量分块xj和bi的乘减计算:bi=bi-Si,j*xj。计算后的结果bi保持在片内共享存储阵列中。
S8:GPDSP的CPU核根据计算任务池的逻辑分块执行情况判断i+1行的逻辑分块是否都计算完毕,若是,令i=i+1,转步骤S4。若不是,转步骤S6。
重复上述步骤S4至步骤S8的计算,直到GPDSP的CPU核完成所有的计算,则所有子向量x1,x2,…,xn构成最终的三角线性方程组的解向量,计算完毕。
作为本发明的较佳实施例,如图3所示,本实施例中,上述步骤S7中GPDSP的DSP核执行逻辑分块Si,j与子向量分块xj和bi的乘减计算,具体步骤为:
S7.1:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器是按照转置的方式存储在片内向量阵列存储器中,记为TSi,j;
设初始值全为0的向量寄存器组V0,V0用作乘累加计算的累加器。
S7.2:GPDSP的DSP核使用标量LOAD指获取子向量xj的第一个元素,存入标量寄存器U1。
S7.3:GPDSP的DSP核使用标量广播指令将U1数据广播至向量寄存器V1中。
S7.4:GPDSP的DSP核使用向量LOAD指令加载TSi,j的第一行元素,存入向量寄存器组V2。
S7.5:GPDSP的DSP核使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0。
重复执行步骤S7.2到步骤S7.5,直至子向量xj的每一个元素计算完毕。
S7.6:GPDSP的DSP核通过DMA从片内共享存储阵列中将子向量分块bi传输到片内向量阵列存储器
S7.7:GPDSP的DSP核使用向量LOAD指令加载子向量分块bi元素,存入向量寄存器组V3。
S7.8:GPDSP的DSP核使用向量浮点减法指令计算V3与V0的减法,存入向量寄存器组V3。
S7.9:GPDSP的DSP核使用向量STORE指令将向量寄存器组V3存入子向量分块bi在片内向量阵列存储器中的原存储位置。
S7.10:GPDSP的DSP核通过DMA从片内向量阵列存储器将子向量分块bi传输到片内共享存储阵列中的原存储位置。
S7.11:计算完毕。
结合图3的内容,在上述过程中:
参见如图3(1)所示,设GPDSP的体系结构参数p=4,q=1,NB=4;i=4,j=2。计算:b4=b4-S42*x2。
如图3(2)所示,GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为S4,2传输到片内向量阵列存储器是按照转置的方式存储在片内向量阵列存储器中,记为TS4,2;。
如图3(3)所示,GPDSP的DSP核设初始值全为0的向量寄存器V0,用作乘累加计算的累加器;使用标量LOAD指获取子向量x2的第一个元素x21,存入标量寄存器U1;使用标量广播指令将U1数据广播至向量寄存器V1={x21 x21 x21 x21};使用向量LOAD指令加载TS4,2的第一行元素,存入向量寄存器V2={s11 s21 s31 s41};使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0={x21*s11 x21*s21 x21*s31 x21*s41}。
如图3(4)所示,GPDSP的DSP核使用标量LOAD指获取子向量x2的第二个元素x22,存入标量寄存器U1;使用标量广播指令将U1数据广播至向量寄存器V1={x22 x22 x22 x22};使用向量LOAD指令加载TS4,2的第二行元素,存入向量寄存器V2={s12 s22 s32 s42};使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0:V0={x22*s12+x21*s11 x22*s22+x21*s21 x22*s32+x21*s31 x22*s42+x21*s41}。
如图3(5)所示,GPDSP的DSP核使用标量LOAD指获取子向量x2的第三个元素x23,存入标量寄存器U1;使用标量广播指令将U1数据广播至向量寄存器V1={x23 x23 x23 x23};使用向量LOAD指令加载TS4,2的第三行元素,存入向量寄存器V2={s13 s23 s33 s43};使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0:
V0={x23*s13+x22*s12+x21*s11 x23*s23+x22*s22+x21*s21
x23*s33+x22*s32+x21*s31 x23*s43+x22*s42+x21*s41}。
如图3(6)所示,GPDSP的DSP核使用标量LOAD指获取子向量x2的第四个元素x24,存入标量寄存器U1;使用标量广播指令将U1数据广播至向量寄存器V1={x24 x24 x24 x24};使用向量LOAD指令加载TS4,2的第四行元素,存入向量寄存器V2={s14 s24 s34 s44};使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0:
V0={x24*s14+x23*s13+x22*s12+x21*s11 x24*s24+x23*s23+x22*s22+x21*s21
x24*s34+x23*s33+x22*s32+x21*s31 x24*s44+x23*s43+x22*s42+x21*s41}。
如图3(7)所示,GPDSP的DSP核使用向量LOAD指令加载子向量分块bi元素,存入向量寄存器V3={b41 b42 b43 b44};使用向量浮点减法指令计算V3与V0的减法,存入向量寄存器V3:
V3={b41-(x24*s14+x23*s13+x22*s12+x21*s11) b42-(x24*s24+x23*s23+x22*s22+x21*s21)
b43-(x24*s34+x23*s33+x22*s32+x21*s31) b44-(x24*s44+x23*s43+x22*s42+x21*s41)}
GPDSP的DSP核使用向量STORE指令将向量寄存器V3存入子向量分块bi在片内向量阵列存储器中的原存储位置。最后通过DMA从片内向量阵列存储器将子向量分块bi传输到片内共享存储阵列中的原存储位置,完成逻辑分块Si,j与子向量分块xj和bi的乘减计算。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
Claims (5)
1.一种面向GPDSP的大规模三角线性方程组求解向量化计算的方法,其特征在于,
采用分块计算的方式将大规模三角线性方程组的求解分割为不规整三角矩阵分块与向量乘法和规整化的矩阵分块与向量乘法;
通过GPDSP中的CPU核运行操作系统,负责数据的逻辑分割和任务的调度,计算负载较少的不规整三角矩阵分块与向量乘法计算;
通过GPDSP中的DSP核负责规整化的矩阵分块与向量乘法,不间断的从CPU核获取新的计算任务并将运行结果报告CPU核,所述CPU核通过动态调度实现各DSP核之间的计算任务的动态负载均衡;
所述方法的具体流程为:
S1:由GPDSP的CPU核在片外DDR存储器为矩阵A,向量x和b分配存储空间,并生成初始化数据或者从其他数据来源传输本次计算所需要的数据;
S2:根据GPDSP的体系结构特征确定优化的下三角矩阵的分块大小NB值;
S3:由GPDSP的CPU核根据上述步骤确定的NB值将矩阵A,向量x和b进行逻辑分块;
S4:GPDSP的CPU核将三角分块Ti和子向量bi加载到片内共享存储阵列中,初始i=1,计算得到xi=Ti -1bi,计算结果xi传出到片外DDR存储器中,同时保持在片内共享存储阵列中;
S5:GPDSP的CPU核将逻辑分块Si+1,i,Si+2,i,…,Sn,i的加入计算任务池;逻辑分块的计算任务按照先行优先、再列优先的顺序策略进行优先级排序;
S6:GPDSP的CPU核从计算任务池中按照计算优先级,依次派发计算任务给空闲的DSP核,并且保证每一行只有一个逻辑分块被处理,若该行已经有一个逻辑分块正被处理,则按照优先级顺序取下一个不在本行上的逻辑分块,设派发的逻辑分块为Si,j;
S7:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器,判断片内共享存储阵列中是否保存有逻辑子向量分块xj和bi,若没有,则从片外DDR存储器传入片内共享存储阵列中;执行逻辑分块Si,j与子向量分块xj和bi的乘减计算:bi=bi-Si,j*xj;计算后的结果bi保持在片内共享存储阵列中;
S8:GPDSP的CPU核根据计算任务池的逻辑分块执行情况判断i+1行的逻辑分块是否都计算完毕,若是,令i=i+1,转步骤S4;若不是,转步骤S6;
重复上述步骤S4至步骤S8的计算,直到GPDSP的CPU核完成所有的计算,则所有子向量x1,x2,…,xn构成最终的三角线性方程组的解向量,计算完毕。
2.根据权利要求1所述的面向GPDSP的大规模三角线性方程组求解向量化计算的方法,其特征在于,所述步骤S7的具体步骤为:
S7.1:GPDSP的DSP核通过DMA从片外DDR存储器将逻辑分块为Si,j传输到片内向量阵列存储器是按照转置的方式存储在片内向量阵列存储器中,记为TSi,j;设初始值全为0的向量寄存器组V0,V0用作乘累加计算的累加器;
S7.2:GPDSP的DSP核使用标量LOAD指获取子向量xj的第一个元素,存入标量寄存器U1;
S7.3:GPDSP的DSP核使用标量广播指令将U1数据广播至向量寄存器V1中;
S7.4:GPDSP的DSP核使用向量LOAD指令加载TSi,j的第一行元素,存入向量寄存器组V2;
S7.5:GPDSP的DSP核使用向量浮点乘法指令计算V1与V2的乘积加上V0的值并将结果存入V0;
重复执行步骤S7.2到步骤S7.5,直至子向量xj的每一个元素计算完毕;
S7.6:GPDSP的DSP核通过DMA从片内共享存储阵列中将子向量分块bi传输到片内向量阵列存储器;
S7.7:GPDSP的DSP核使用向量LOAD指令加载子向量分块bi元素,存入向量寄存器组V3;
S7.8:GPDSP的DSP核使用向量浮点减法指令计算V3与V0的减法,存入向量寄存器组V3;
S7.9:GPDSP的DSP核使用向量STORE指令将向量寄存器组V3存入子向量分块bi在片内向量阵列存储器中的原存储位置;
S7.10:GPDSP的DSP核通过DMA从片内向量阵列存储器将子向量分块bi传输到片内共享存储阵列中的原存储位置;
S7.11:计算完毕。
3.根据权利要求1或2所述的面向GPDSP的大规模三角线性方程组求解向量化计算的方法,其特征在于,所述步骤S2中确定分块NB大小的方法是:基于GPDSP的体系结构特征,考虑(1)DSP核上的该分块大小的矩阵分块与向量乘法计算的核心程序能够充分发挥DSP核的峰值性能,NB是(p*q)的整数倍;(2)后续计算过程中CPU核和DSP核等待的时间最少;其中,设GPDSP中DSP核的向量处理阵列的计算单元数量为p个,每个计算单元的乘加部件MAC数量为q个。
4.根据权利要求1或2所述的面向GPDSP的大规模三角线性方程组求解向量化计算的方法,其特征在于,在所述步骤S3中,令n=INT(N/NB),其中INT()表示对括号中的值向上取整,将下三角系数矩阵按照分块NB值划分为n×n个子块,其中在对角线上的子块依次标记为Ti,以子块Ti为坐标,对应列方向上的矩阵分块依次标记为Si+1,i,Si+2,i,…,Sn,i;将x、b分别划分为长度为NB的子向量,分别有n个子向量,分别标记为x1,x2,…,xn;b1,b2,…,bn;其中,设求解的三角线性方程组为Ax=b,其中A是N×N阶的下三角系数矩阵,b是长度为N的常数向量,x是长度为N的待求解向量,矩阵元素的数据类型为单精度或双精度,每个元素数据为w字节。
5.根据权利要求1或2所述的面向GPDSP的大规模三角线性方程组求解向量化计算的方法,其特征在于,在所述步骤S5中,对于同列的逻辑分块Sj,i,Sk,i,若j>k,则Sk,i比Sj,i优先处理;对于同行的逻辑分块Si,j,Si,k,若j>k,则Si,k比Si,j优先处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510062255.5A CN104615584B (zh) | 2015-02-06 | 2015-02-06 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510062255.5A CN104615584B (zh) | 2015-02-06 | 2015-02-06 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104615584A CN104615584A (zh) | 2015-05-13 |
CN104615584B true CN104615584B (zh) | 2017-12-22 |
Family
ID=53150036
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510062255.5A Active CN104615584B (zh) | 2015-02-06 | 2015-02-06 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104615584B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045768A (zh) * | 2015-09-01 | 2015-11-11 | 浪潮(北京)电子信息产业有限公司 | 一种实现gmres算法的方法和系统 |
CN106959937B (zh) * | 2017-03-30 | 2019-03-29 | 中国人民解放军国防科学技术大学 | 一种面向gpdsp的反卷积矩阵的向量化实现方法 |
CN107357552B (zh) * | 2017-06-06 | 2020-10-16 | 西安电子科技大学 | 基于bwdsp芯片实现浮点复数向量求和的优化方法 |
CN108920413B (zh) * | 2018-06-28 | 2019-08-09 | 中国人民解放军国防科技大学 | 面向gpdsp的卷积神经网络多核并行计算方法 |
CN110377425A (zh) * | 2019-07-16 | 2019-10-25 | 浙江大华技术股份有限公司 | 设备中的任务执行方法、装置、存储介质及电子装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751376A (zh) * | 2009-12-30 | 2010-06-23 | 中国人民解放军国防科学技术大学 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
CN102722470A (zh) * | 2012-05-18 | 2012-10-10 | 大连理工大学 | 一种线性方程组的单机并行求解方法 |
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104317768A (zh) * | 2014-10-15 | 2015-01-28 | 中国人民解放军国防科学技术大学 | 面向cpu+dsp异构系统的矩阵乘加速方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2013143175A (ru) * | 2011-02-24 | 2015-03-27 | ШЕВРОН Ю. Эс. Эй. ИНК. | Система и способ выполнения моделирования пластового резервуара с использованием предобусловливания |
WO2014104093A1 (ja) * | 2012-12-28 | 2014-07-03 | 株式会社村田製作所 | 連立1次方程式の解の算出装置及び算出方法、並びにそれに適用されるプログラム |
-
2015
- 2015-02-06 CN CN201510062255.5A patent/CN104615584B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101751376A (zh) * | 2009-12-30 | 2010-06-23 | 中国人民解放军国防科学技术大学 | 利用cpu和gpu协同工作对三角线性方程组求解的加速方法 |
CN102722470A (zh) * | 2012-05-18 | 2012-10-10 | 大连理工大学 | 一种线性方程组的单机并行求解方法 |
CN103440121A (zh) * | 2013-08-20 | 2013-12-11 | 中国人民解放军国防科学技术大学 | 一种面向向量处理器的三角矩阵乘法向量化方法 |
CN103714039A (zh) * | 2013-12-25 | 2014-04-09 | 中国人民解放军国防科学技术大学 | 通用计算数字信号处理器 |
CN104317768A (zh) * | 2014-10-15 | 2015-01-28 | 中国人民解放军国防科学技术大学 | 面向cpu+dsp异构系统的矩阵乘加速方法 |
Non-Patent Citations (4)
Title |
---|
《Linear algebra operators for GPU implementation of numerical》;Westermann R et al;;《 ACM Transaction on Graphics》;20031213;第917-942页; * |
《Multi-threading and one-sided》;Husbands et al ;;《Proceedings of the 2007 ACM/IEEE》;20071231;第1-10页 * |
《基于分块QR 分解的一种状态估计算法》;杜正春 等;;《中国电机工程学报》;20030831;第23卷(第8期);第50-55页; * |
《面向大规模科学计算的CPU_GPU异构并行技术研究》;方旭东;《中国优秀硕士学位论文全文数据库信息科技辑 》;20111215;第I137-172页; * |
Also Published As
Publication number | Publication date |
---|---|
CN104615584A (zh) | 2015-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104615584B (zh) | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 | |
Nagasaka et al. | High-performance and memory-saving sparse general matrix-matrix multiplication for nvidia pascal gpu | |
CN101706741B (zh) | 一种基于负载平衡的cpu和gpu两级动态任务划分方法 | |
KR102120396B1 (ko) | 심층 신경망용 가속기 | |
CN102822798B (zh) | 用于虚拟容器系统内的资源容量评估的方法和装置 | |
CN108920413B (zh) | 面向gpdsp的卷积神经网络多核并行计算方法 | |
CN110415157B (zh) | 一种矩阵乘法的计算方法及装置 | |
Vazquez et al. | The sparse matrix vector product on GPUs | |
CN109086244A (zh) | 一种基于向量处理器的矩阵卷积向量化实现方法 | |
CN105808309B (zh) | 一种基于申威平台的基础线性代数库blas三级函数gemm的高性能实现方法 | |
CN1068434A (zh) | 一条多处理器流水线的动态工作量平衡 | |
CN104636316B (zh) | 面向gpdsp的大规模矩阵乘法计算的方法 | |
CN110135569A (zh) | 一种异构平台神经元定位三级流水并行方法、系统及介质 | |
CN104636315B (zh) | 面向gpdsp的矩阵lu分解向量化计算的方法 | |
Ezzatti et al. | High performance matrix inversion on a multi-core platform with several GPUs | |
CN107291666A (zh) | 一种数据处理方法及处理装置 | |
CN104615516B (zh) | 面向GPDSP的大规模高性能Linpack测试基准实现的方法 | |
CN114201287A (zh) | 一种基于cpu+gpu异构平台协同处理数据的方法 | |
CN113721982A (zh) | 稀疏矩阵存储方法、向量计算方法和电子设备 | |
CN101661457A (zh) | 多处理器系统的三角线性方程组求解的方法和装置 | |
CN104615582B (zh) | 面向gpdsp的大点数一维fft向量化计算的方法 | |
CN104793922B (zh) | 一种大整数乘法Comba算法基于OpenMP的并行实现方法 | |
Li et al. | HOM4PS-2.0 para: Parallelization of HOM4PS-2.0 for solving polynomial systems | |
CN107608786A (zh) | 一种基于gpu和分布式计算的高层建筑群震害分析方法 | |
Li et al. | Autotsmm: An auto-tuning framework for building high-performance tall-and-skinny matrix-matrix multiplication on cpus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |