有效
面向SIMD的并行迭代求解的数据处理方法
肖调杰、杨博、龚春叶、易明宽、陈新海、刘杰、徐传福、甘新标、李胜国、陈旭光、王庆林
中国人民解放军国防科技大学
肖
肖调杰 专利 34
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
杨
杨博 专利 54
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
龚
龚春叶 专利 71
中国人民解放军国防科技大学计算机辅助设计电子数据处理计算技术
易
易明宽 专利 4
中国人民解放军国防科技大学物理仪器电子数据处理三维建模
陈
陈新海 专利 42
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
刘
刘杰 专利 102
中国人民解放军国防科技大学申请详情分析优化类型计算机辅助设计
徐
徐传福 专利 45
中国人民解放军国防科技大学计算机辅助设计电子数据处理计算技术
甘
甘新标 专利 43
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
李
李胜国 专利 36
中国人民解放军国防科学技术大学电子数据处理计算技术物理仪器
陈
陈旭光 专利 34
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
王
王庆林 专利 87
中国人民解放军国防科技大学电子数据处理计算技术物理仪器
摘要
本申请提供一种面向SIMD的并行迭代求解的数据处理方法,通过获取待处理数据(包含2<Sup>m</Sup>个复数形式的模式矩阵),将每个模式矩阵存储为实数new_CSR格式(包含ValuesR数组、ValuesI数组、rowPtr数组和colIndices数组),并进行向量化,得到向量化的融合new_CSR格式(包含new_ValuesR数组、new_ValuesI数组、rowPtr数组和colIndices数组),利用SIMD扩展部件读取向量化后的融合new_CSR格式数据,进行并行的迭代求解,输出迭代求解结果。这样可以通过SIMD架构中的SIMD扩展部件进行并行迭代求解计算,实现加速求解。
1.一种面向SIMD的并行迭代求解的数据处理方法,其特征在于,包括:获取待处理数据,其中,待处理数据包含2 m 个模式矩阵,m∈Z + ,每个模式矩阵具有相同的非零元素分布模式,且为复数矩阵;将每个模式矩阵存储为实数new_CSR格式,其中,实数new_CSR格式包含ValuesR数组、ValuesI数组、rowPtr数组和colIndices数组,ValuesR数组用于存储模式矩阵的非零元素实部,ValuesI数组用于存储模式矩阵的非零元素虚部,rowPtr数组用于存储模式矩阵中每一行第一个非零元素在values数组中的位置,colIndices数组用于存储模式矩阵中每个非零元素的列索引;对2 m 个模式矩阵的实数new_CSR格式进行向量化,得到向量化的融合new_CSR格式,其中,融合new_CSR格式包含new_ValuesR数组、new_ValuesI数组、rowPtr数组和colIndices数组,new_ValuesR数组包含若干实部数组,每个实部数组用于存储2 m 个模式矩阵的在同一位置的非零元素实部,new_ValuesI数组包含对应数量的虚部数组,每个虚部数组用于存储2 m 个模式矩阵的在同一位置的非零元素虚部;利用SIMD扩展部件读取向量化后的融合new_CSR格式数据,进行并行的迭代求解,输出迭代求解结果;其中,利用SIMD扩展部件读取向量化后的融合new_CSR格式数据,进行并行的迭代求解,包括:利用SIMD扩展部件读取2 m 个模式矩阵的融合new_CSR格式的四元组、融合new_CSR格式的右值Breal和Bimag、模式矩阵的维度n、最大迭代次数IMAX、收敛容差TOL,其中,融合new_CSR格式的四元组为2 m 个模式矩阵Ax=b中的矩阵A经存储为实数new_CSR格式后向量化得到,包含new_ValuesR数组、new_ValuesI数组、rowPtr数组和colIndices数组,融合new_CSR格式的右值为2 m 个模式矩阵Ax=b中的右端向量b经存储为实数new_CSR格式后向量化得到,包含Breal和Bimag,Breal为右值的实部,Bimag为右值的虚部;初始化中间向量AXR和AXI、搜索方向向量Preal和Pimag、残差向量Rreal和Rimag、解向量XR和XI、残差范数VNRM、误差RSS1,…,RSSi…,RSS2 m ,并赋值:Rreal=Breal,Rimag=Bima,Preal=Rreal,Piamg=Rimag、RSS1=…RSSi=…RSS2 m =1.0,i∈[1,2 m ],其中,AXR和AXI分别为中间向量的实部和虚部,Preal和Pimag分别为搜索方向向量的实部和虚部,Rreal和Rimag分别为残差向量的实部和虚部,RSSi为第i个模式矩阵对应的误差;基于中间向量AXR和AXI、搜索方向向量Preal和Pimag、残差向量Rreal和Rimag、残差范数VNRM、误差RSS1,…,RSSi…,RSS2 m ,利用SIMD扩展部件对解向量XR和XI进行迭代更新,最终输出迭代求解的解向量XR和XI;对解向量XR和XI进行分解,得到2 m 个模式矩阵的解向量。
2.根据权利要求1所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,将每个模式矩阵存储为实数new_CSR格式,包括:将每个模式矩阵存储为复数CSR格式,其中,复数CSR格式包含Values数组、rowPtr数组和colIndices数组,Values数组用于存储模式矩阵的非零元素,rowPtr数组用于存储模式矩阵中每一行第一个非零元素在values数组中的位置,colIndices数组用于存储模式矩阵中每个非零元素的列索引;针对每个模式矩阵的复数CSR格式:将复数CSR格式中Values数组的复数形式的非零元素拆分为非零元素实部和非零元素虚部,将非零元素实部按照顺序进行存储,得到ValuesR数组,将非零元素虚部按照顺序进行存储,得到ValuesI数组,rowPtr数组和colIndices数组保持不变。
3.根据权利要求1所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,对2 m 个模式矩阵的实数new_CSR格式进行向量化,得到向量化的融合new_CSR格式,包括:将2 m 个模式矩阵的实数new_CSR格式中ValuesR数组在同一位置的非零元素实部按照模式矩阵的顺序组合为一个包含2 m 个非零元素实部的实部数组,得到包含若干实部数组的new_ValuesR数组;将2 m 个模式矩阵的实数new_CSR格式中ValuesI数组在同一位置的非零元素虚部按照模式矩阵的顺序组合为一个包含2 m 个非零元素虚部的虚部数组,得到包含若干虚部数组的new_ValuesR数组;rowPtr数组保持不变;colIndices数组保持不变。
4.根据权利要求1所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,基于中间向量AXR和AXI、搜索方向向量Preal和Pimag、残差向量Rreal和Rimag、残差范数VNRM、误差RSS1,…,RSSi…,RSS2 m ,利用SIMD扩展部件对解向量XR和XI进行迭代更新,最终输出迭代求解的解向量XR和XI,包括:S1:判断当前是否满足迭代终止条件;S2:若满足迭代终止条件,结束迭代,输出迭代求解的解向量XR和XI;S3:若不满足迭代终止条件,开始本次迭代:S31:调用改进的cnorm函数,记录当前迭代次数下的残差向量内积值RNORM;S32:调用改进的productAll函数,计算当前迭代次数下的中间向量AXR和AXI;S33:基于当前迭代次数下的残差向量内积值RNORM和中间向量AXR和AXI,计算当前迭代次数下的更新步长α;S34:基于当前迭代次数下的更新步长α和搜索方向向量Preal和Pimag,更新当前迭代次数下的解向量XR和XI;S35:基于当前迭代次数下的更新步长α和中间向量AXR和AXI,更新残差向量Rreal和Rimag,得到当前迭代次数下的残差向量Rreal′和Rimag′;S36:基于当前迭代次数下的残差向量内积值RNORM、当前迭代次数下的残差向量Rreal′和Rimag′,计算共轭参数γ;S37:基于共轭参数γ更新搜索方向向量Preal和Pimag;S38:迭代次数加1,计算迭代后的残差范数VNRM2,并基于初始化的残差范数VNRM和迭代后的残差范数VNRM2,计算出当前迭代次数下的误差RSS1,…,RSSi…,RSS2 m ,再回到S1。
5.根据权利要求4所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,调用改进的cnorm函数,记录当前迭代次数下的残差向量内积值RNORM,包括:初始化向量sum1和sum2;SIMD扩展部件读取残差向量Rreal中的2 m 个数据,读取残差向量Rimag中的2 m 个数据,其中,SIMD扩展部件读取数据的步长为2 m ,Rreal为当前迭代次数下更新前的残差向量R的实部,Rimag为当前迭代次数下更新前的残差向量R的虚部;按照以下公式计算2 m 个残差向量内积值RNORM:RNORM=R T R,RNORMreal=Rreal T Rreal-Rimag T Rimag,RNORMimag=Rreal T Rimag+Rimag T Rreal,其中,RNORMreal为残差向量内积值RNORM的实部,RNORMimag为残差向量内积值RNORM的虚部,RrealT为Rreal的转置,RimagT为Rimag的转置;通过CCR[0]=sum1[0]、CCR[1]=sum1[1]、…、CCR[k]=sum1[k]、…、CCR[2 m -1]=sum1[2 m -1]保存2 m 个残差向量内积值的实部RNORMreal,通过CCR[2 m ]=sum2[0]、CCR[2 m +1]=sum2[1]、…、CCR[2 m +k]=sum2[k]、…、CCR[2 m+1 -1]=sum2[2 m -1]保存2 m 个残差向量内积值的虚部RNORMimag。
6.根据权利要求4所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,调用改进的productAll函数,计算当前迭代次数下的中间向量AXR和AXI,包括:SIMD扩展部件读取搜索方向向量Preal和Pimag、融合new_CSR格式的四元组:new_ValuesR数组、new_ValuesI数组、rowPtr数组和colIndices数组,其中,SIMD扩展部件读取数据的步长为2 m ;按照以下公式计算当前迭代次数下的中间向量AXR和AXI:AXR=AR*Preal-AI*Pimag,AXI=AR*Pimag+AI*Preal,其中,AXR为中间向量AX的实部,AR为模式矩阵的实部,通过SIMD扩展部件读取new_ValuesR数组、rowPtr数组和colIndices数组确定,Preal为搜索方向向量P的实部,AXI为中间向量AI的虚部,AI为模式矩阵的虚部,通过SIMD扩展部件读取new_ValuesI数组、rowPtr数组和colIndices数组确定,Pimag为搜索方向向量P的虚部。
7.根据权利要求5所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,基于当前迭代次数下的残差向量内积值RNORM和中间向量AXR和AXI,计算当前迭代次数下的更新步长α,包括:SIMD扩展部件读取当前迭代次数下的残差向量内积值RNORMreal和RNORMimag、搜索方向向量Preal和Pimag、当前迭代次数下的中间向量AXR和AXI,其中,SIMD扩展部件读取数据的步长为2 m ;按照以下公式计算当前迭代次数下的更新步长α:进一步有:其中,αr为更新步长α的实部,αi为更新步长α的虚部。
8.根据权利要求7所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,基于当前迭代次数下的更新步长α和搜索方向向量Preal和Pimag,更新当前迭代次数下的解向量XR和XI,包括:SIMD扩展部件读取当前迭代次数下的更新步长α和搜索方向向量Preal和Pimag,其中,SIMD扩展部件读取数据的步长为2 m ;按照以下公式计算更新当前迭代次数下的解向量:XR′=XR+αr*Preal-αi*Pimag,XI′=XI+αr*Pimag+αi*Preal,其中,XR′为当前迭代次数下更新后的解向量X的实部,XR为当前迭代次数下更新前的解向量X的实部,即上一次迭代更新的解向量X的实部,αr为更新步长α的实部,Preal为搜索方向向量P的实部,XI′为当前迭代次数下更新后的解向量X的虚部,XI为当前迭代次数下更新前的解向量X的虚部,即上一次迭代更新的解向量X的虚部,αi为更新步长α的虚部,Pimag为搜索方向向量P的虚部。
9.根据权利要求7所述的面向SIMD的并行迭代求解的数据处理方法,其特征在于,基于当前迭代次数下的更新步长α和中间向量AXR和AXI,更新残差向量Rreal和Rimag,得到当前迭代次数下的残差向量Rreal′和Rimag′,包括:SIMD扩展部件读取当前迭代次数下的更新步长α和中间向量AXR和AXI,其中,SIMD扩展部件读取数据的步长为2 m ;按照以下公式计算更新当前迭代次数下的残差向量:Rreal′=Rreal-αr*AXR+αi*AXI,Rimag′=Rimag-αr*AXI-αi*AXR,其中,Rreal′为当前迭代次数下更新后的残差向量R的实部,Rreal为当前迭代次数下更新前的残差向量R的实部,即上一次迭代更新的残差向量R的实部,αr为更新步长α的实部,AXR为当前迭代次数下的中间向量AX的实部,Rimag′为当前迭代次数下更新后的残差向量R的虚部,Rimag为当前迭代次数下更新前的残差向量R的虚部,即上一次迭代更新的残差向量R的虚部,αi为更新步长α的虚部,AXI为当前迭代次数下的中间向量AX的虚部。



