专利名称:一种线性方程组的单机并行求解方法
技术领域:
本发明属于单机数据处理领域,特别是一种线性方程组的单机并行求解方法。
背景技术:
在工程应用中,超大規模的线性方程组的数值解法是经常遇到的问题,由于线性方程组的维数巨大,对计算机的内存需求很大,为了加快计算机求解速度,目前普遍采用迭代解法。
现有技术从公开了ー种用于用向量乘矩阵的方法,该矩阵可以表示大型稀疏线性方程组。该大型稀疏线性方程组可以用于估计视频文件的帧之间的运动以转换帧频。向量可以是该线性方程组的解的第一估计值。可以按照与所述元素在所述向量中的排列顺序不同的顺序用所述向量的元素乘所述矩阵。可以并行地乘向量中的多个元素。线性方程组的解的第二向量估计值可以是乘法的积。例如当第一和第二向量估计值的差小于预定的量时,可以设置线性方程组的解。现有技术对线性方程组的求解是基于迭代解法,此方法利于并行处理,可以高速地进行求解运算。但是,针对任意类型(稀疏、稠密、三角线性方程组等)的线性方程组的单机求解,该方法存在如下缺陷I、该方法仅适用于对稀疏线性方程组的求解,不适用于对其他类型线性方程组的求解。2、由于迭代解法自身的缺陷,求解某一线性方程组时,可能迭代不收敛,导致无解。3、在单台计算机中,最大的求解规模为16GB。
发明内容
针对现有存在的上述问题,本发明提出了一种线性方程组的单机并行求解方法。本发明采用的技术手段如下一种线性方程组的单机并行求解方法,其特征在于包括步骤I :输入第三方软件生成的待求线性方程组的系数矩阵A和常数矩阵b ;步骤2 :判断第三方软件源代码是否可修改,是则转至步骤4,否则转至步骤3 ;步骤3 :将系数矩阵A和常数矩阵b以文本文件或ニ进制文件形式存储到硬盘后,转至步骤5 ;步骤4 :直接调用求解器后,转至步骤6 ;步骤5 :调用用户界面,读取系数矩阵A和常数矩阵b的文件后,转至步骤6 ;步骤6 :将系数矩阵A和常数矩阵b转换成可操作数据类型;步骤7 :利用求解器对系数矩阵A进行LU分解,得到待求线性方程组的解;步骤8 :断第三方软件源代码是否可修改,是则转至步骤10,否则转至步骤9 ;步骤9 :将待求线性方程组的解以文件的形式,通过用户界面存储到硬盘上;
步骤10 :将待求线性方程组的解进行数据类型转换后,返回给作为调用方的第三方软件。与现有技术相比,本发明具有如下有益效果可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性倉^:。
图I为本发明线性方程组的单机并行求解方法的流程图。图2为图I中步骤7的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进ー步详细说明。如图I所示,本发明方法包括以下步骤步骤I :输入第三方软件生成的待求线性方程组的系数矩阵A和常数矩阵b。步骤2 :判断第三方软件源代码是否可修改,是则转至步骤4,否则转至步骤3。步骤3 :将系数矩阵A和常数矩阵b以文本文件或ニ进制文件形式存储到硬盘后,转至步骤5。步骤4 :直接调用求解器后,转至步骤6。步骤5 :调用用户界面,读取系数矩阵A和常数矩阵b的文件后,转至步骤6。步骤6 :将系数矩阵A和常数矩阵b转换成可操作数据类型。步骤7 :利用求解器对系数矩阵A进行LU分解,得到待求线性方程组的解。步骤8 :断第三方软件源代码是否可修改,是则转至步骤10,否则转至步骤9。步骤9 :将待求线性方程组的解以文件的形式,通过用户界面存储到硬盘上。步骤10 :将待求线性方程组的解进行数据类型转换后,返回给作为调用方的第三方软件。如图2所示,步骤7又包括以下步骤步骤71 :将系数矩阵A分成左上角矩阵块%、右上角矩阵块K、左下角矩阵块C。和右下角矩阵块も。系数矩阵A为方阵,左上角矩阵块%为方阵;左上角矩阵块%、右上角矩阵块Iv左下角矩阵块Ctl和右下角矩阵块も的大小由当前软硬件环境下的LU分解极限阶数決定,该软硬件环境主要取决于用户通过用户界面选择的LAPACK封装形式或BLAS封装形式的求解器,一般CPU版的采取双精度,GPU版的采取单精度。对于CPU版的双精度,左上
角矩阵块%的LU分解极限阶数满足:a(l的LU分解极限阶数=;对于
acW.阵的ィ丁数
GTO版的単精度,左上角矩阵块aQ的LU分解极限阶数满足: 的LU分解极限阶数_ 2 X I O 2 4 ' X 4
C矩阵的行数步骤72 :对左上角矩阵块%和左下角矩阵块c进行列选主元的LU分解,得到左上角矩阵块ai和左下角矩阵块C1,以及置換向量P。步骤73 :用置换向量P对左上角矩阵块Btl和左下角矩阵块Ctl左右两侧实施行交换,即用置換向量P乘以右上角矩阵块K和右下角矩阵块Cltl构成的矩阵,得到左上角矩阵块aン、右上角矩阵块bン、左下角矩阵块cン和右下角矩阵块dン。步骤74 :读取左上角矩阵块%丨和右上角矩阵块b丨,并对其进行LU分解,得到左上角矩阵块B1和右上角矩阵块Iv步骤75:用左上角矩阵块覆盖左上角矩阵块%丨,右上角矩阵块Id1覆盖右上角矩阵块bン,左下角矩阵块C1覆盖左下角矩阵块Cン。步骤76:读取右下角矩阵块dン,利用公式Cln=CU ' -CnXbn计算右下角矩阵块Cl1,并用右下角矩阵块Cl1覆盖右下角矩阵块も丨。 步骤77 :对右下角矩阵块Cl1覆盖重复步骤71至步骤76,直到dn的阶数小于等于当前软硬件环境下的LU分解极限阶数。步骤78 :对dn覆盖进行LU分解,得到下三角矩阵L和上三角矩阵U,并回代求解,得到待求线性方程组的解。之后,还可对待求线性方程组的解进行迭代精度改善。上述方法实现了单机环境下,大規模(系数矩阵占用内存2GB以上)乃至超大規模线性方程组(系数矩阵占用内存16GB以上)的高效求解,该单机特指共享内存对称多处理器系统(SMP),也可理解为I台计算机。与现有技术相比,本发明具有如下有益效果可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性能。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
权利要求
1.一种线性方程组的单机并行求解方法,其特征在于包括 步骤I :输入第三方软件生成的待求线性方程组的系数矩阵A和常数矩阵b ; 步骤2 :判断第三方软件源代码是否可修改,是则转至步骤4,否则转至步骤3 ; 步骤3 :将系数矩阵A和常数矩阵b以文本文件或ニ进制文件形式存储到硬盘后,转至步骤5 ; 步骤4 :直接调用求解器后,转至步骤6 ; 步骤5 :调用用户界面,读取系数矩阵A和常数矩阵b的文件后,转至步骤6 ; 步骤6 :将系数矩阵A和常数矩阵b转换成可操作数据类型; 步骤7 :利用求解器对系数矩阵A进行LU分解,得到待求线性方程组的解; 步骤8 :断第三方软件源代码是否可修改,是则转至步骤10,否则转至步骤9 ; 步骤9 :将待求线性方程组的解以文件的形式,通过用户界面存储到硬盘上; 步骤10 :将待求线性方程组的解进行数据类型转换后,返回给作为调用方的第三方软件。
2.根据权利要求I所述的方法,其特征在于步骤7又包括 步骤71 :将系数矩阵A分成左上角矩阵块%、右上角矩阵块b、左下角矩阵块Ctl和右下角矩阵块も; 步骤72 :对左上角矩阵块%和左下角矩阵块c进行列选主元的LU分解,得到左上角矩阵块4和左下角矩阵块C1,以及置換向量P ; 步骤73 :用置換向量P对左上角矩阵块%和左下角矩阵块Ctl左右两侧实施行交換,得到左上角矩阵块aン、右上角矩阵块bン、左下角矩阵块cン和右下角矩阵块dン; 步骤74 :读取左上角矩阵块%丨和右上角矩阵块K丨,并对其进行LU分解,得到左上角矩阵块^和右上角矩阵块Id1 ; 步骤75:用左上角矩阵块覆盖左上角矩阵块%丨,右上角矩阵块Id1覆盖右上角矩阵块bン,左下角矩阵块C1覆盖左下角矩阵块cン; 步骤76:读取右下角矩阵块d/,利用公式Cln=Cllri ' -CnXbn计算右下角矩阵块Cl1,并用右下角矩阵块Cl1覆盖右下角矩阵块も丨; 步骤77 :对右下角矩阵块Cl1覆盖重复步骤71至步骤76,直到dn的阶数小于等于当前软硬件环境下的LU分解极限阶数; 步骤78 :对dn覆盖进行LU分解,得到下三角矩阵L和上三角矩阵U,并回代求解,得到待求线性方程组的解。
3.根据权利要求2所述的方法,其特征在于对于CPU版的双精度,当前软硬件环境下的LU分解极限阶数满足:LU分解极限阶数=^ I ; 对于GPU版的単精度,当前软硬件环境下的LU分解极限阶数满足LU分解极限阶数:ぶ1=‘I。
全文摘要
本发明公开了一种线性方程组的单机并行求解方法,该方法利用求解器对系数矩阵A进行LU分解,得到待求线性方程组的解,与现有方法相比,本发明可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性能。
文档编号G06F17/16GK102722470SQ20121015722
公开日2012年10月10日 申请日期2012年5月18日 优先权日2012年5月18日
发明者李红霞, 王普, 陈景杰, 黄一 申请人:大连理工大学