CN102722470A - 一种线性方程组的单机并行求解方法 - Google Patents
一种线性方程组的单机并行求解方法 Download PDFInfo
- Publication number
- CN102722470A CN102722470A CN2012101572278A CN201210157227A CN102722470A CN 102722470 A CN102722470 A CN 102722470A CN 2012101572278 A CN2012101572278 A CN 2012101572278A CN 201210157227 A CN201210157227 A CN 201210157227A CN 102722470 A CN102722470 A CN 102722470A
- Authority
- CN
- China
- Prior art keywords
- block
- matrix
- corner matrix
- left corner
- right corner
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种线性方程组的单机并行求解方法,该方法利用求解器对系数矩阵A进行LU分解,得到待求线性方程组的解,与现有方法相比,本发明可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性能。
Description
技术领域
本发明属于单机数据处理领域,特别是一种线性方程组的单机并行求解方法。
背景技术
在工程应用中,超大规模的线性方程组的数值解法是经常遇到的问题,由于线性方程组的维数巨大,对计算机的内存需求很大,为了加快计算机求解速度,目前普遍采用迭代解法。
现有技术从公开了一种用于用向量乘矩阵的方法,该矩阵可以表示大型稀疏线性方程组。该大型稀疏线性方程组可以用于估计视频文件的帧之间的运动以转换帧频。向量可以是该线性方程组的解的第一估计值。可以按照与所述元素在所述向量中的排列顺序不同的顺序用所述向量的元素乘所述矩阵。可以并行地乘向量中的多个元素。线性方程组的解的第二向量估计值可以是乘法的积。例如当第一和第二向量估计值的差小于预定的量时,可以设置线性方程组的解。
现有技术对线性方程组的求解是基于迭代解法,此方法利于并行处理,可以高速地进行求解运算。但是,针对任意类型(稀疏、稠密、三角线性方程组等)的线性方程组的单机求解,该方法存在如下缺陷:
1、该方法仅适用于对稀疏线性方程组的求解,不适用于对其他类型线性方程组的求解。
2、由于迭代解法自身的缺陷,求解某一线性方程组时,可能迭代不收敛,导致无解。
3、在单台计算机中,最大的求解规模为16GB。
发明内容
针对现有存在的上述问题,本发明提出了一种线性方程组的单机并行求解方法。本发明采用的技术手段如下:
一种线性方程组的单机并行求解方法,其特征在于包括:
步骤1:输入第三方软件生成的待求线性方程组的系数矩阵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:将待求线性方程组的解进行数据类型转换后,返回给作为调用方的第三方软件。
与现有技术相比,本发明具有如下有益效果:可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性能。
附图说明
图1为本发明线性方程组的单机并行求解方法的流程图。
图2为图1中步骤7的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
如图1所示,本发明方法包括以下步骤:
步骤1:输入第三方软件生成的待求线性方程组的系数矩阵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分成左上角矩阵块a0、右上角矩阵块b0、左下角矩阵块c0和右下角矩阵块d0。系数矩阵A为方阵,左上角矩阵块a0为方阵;左上角矩阵块a0、右上角矩阵块b0、左下角矩阵块c0和右下角矩阵块d0的大小由当前软硬件环境下的LU分解极限阶数决定,该软硬件环境主要取决于用户通过用户界面选择的LAPACK封装形式或BLAS封装形式的求解器,一般CPU版的采取双精度,GPU版的采取单精度。对于CPU版的双精度,左上角矩阵块a0的LU分解极限阶数满足:对于GPU版的单精度,左上角矩阵块a0的LU分解极限阶数满足:
步骤72:对左上角矩阵块a0和左下角矩阵块c进行列选主元的LU分解,得到左上角矩阵块a1和左下角矩阵块c1,以及置换向量P。
步骤73:用置换向量P对左上角矩阵块a0和左下角矩阵块c0左右两侧实施行交换,即:用置换向量P乘以右上角矩阵块b0和右下角矩阵块d0构成的矩阵,得到左上角矩阵块a0'、右上角矩阵块b0'、左下角矩阵块c0'和右下角矩阵块d0'。
步骤74:读取左上角矩阵块a0'和右上角矩阵块b0',并对其进行LU分解,得到左上角矩阵块a1和右上角矩阵块b1。
步骤75:用左上角矩阵块a1覆盖左上角矩阵块a0',右上角矩阵块b1覆盖右上角矩阵块b0',左下角矩阵块c1覆盖左下角矩阵块c0'。
步骤76:读取右下角矩阵块d0',利用公式dn=dn-1'–cn×bn计算右下角矩阵块d1,并用右下角矩阵块d1覆盖右下角矩阵块d0'。
步骤77:对右下角矩阵块d1覆盖重复步骤71至步骤76,直到dn的阶数小于等于当前软硬件环境下的LU分解极限阶数。
步骤78:对dn覆盖进行LU分解,得到下三角矩阵L和上三角矩阵U,并回代求解,得到待求线性方程组的解。之后,还可对待求线性方程组的解进行迭代精度改善。
上述方法实现了单机环境下,大规模(系数矩阵占用内存2GB以上)乃至超大规模线性方程组(系数矩阵占用内存16GB以上)的高效求解,该单机特指共享内存对称多处理器系统(SMP),也可理解为1台计算机。与现有技术相比,本发明具有如下有益效果:可为多种大型工程软件提供后期求解线性方程组的支撑,在单机环境下,可最大化的利用硬件资源;在线性方程组求解领域,同等硬件条件下,求解规模、求解速度、求解精度三方面同时超过现有软件方法的最高性能。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (3)
1.一种线性方程组的单机并行求解方法,其特征在于包括:
步骤1:输入第三方软件生成的待求线性方程组的系数矩阵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.根据权利要求1所述的方法,其特征在于步骤7又包括:
步骤71:将系数矩阵A分成左上角矩阵块a0、右上角矩阵块b0、左下角矩阵块c0和右下角矩阵块d0;
步骤72:对左上角矩阵块a0和左下角矩阵块c进行列选主元的LU分解,得到左上角矩阵块a1和左下角矩阵块c1,以及置换向量P;
步骤73:用置换向量P对左上角矩阵块a0和左下角矩阵块c0左右两侧实施行交换,得到左上角矩阵块a0'、右上角矩阵块b0'、左下角矩阵块c0'和右下角矩阵块d0';
步骤74:读取左上角矩阵块a0'和右上角矩阵块b0',并对其进行LU分解,得到左上角矩阵块a1和右上角矩阵块b1;
步骤75:用左上角矩阵块a1覆盖左上角矩阵块a0',右上角矩阵块b1覆盖右上角矩阵块b0',左下角矩阵块c1覆盖左下角矩阵块c0';
步骤76:读取右下角矩阵块d0',利用公式dn=dn-1'-cn×bn计算右下角矩阵块d1,并用右下角矩阵块d1覆盖右下角矩阵块d0';
步骤77:对右下角矩阵块d1覆盖重复步骤71至步骤76,直到dn的阶数小于等于当前软硬件环境下的LU分解极限阶数;
步骤78:对dn覆盖进行LU分解,得到下三角矩阵L和上三角矩阵U,并回代求解,得到待求线性方程组的解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157227.8A CN102722470B (zh) | 2012-05-18 | 2012-05-18 | 一种线性方程组的单机并行求解方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210157227.8A CN102722470B (zh) | 2012-05-18 | 2012-05-18 | 一种线性方程组的单机并行求解方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102722470A true CN102722470A (zh) | 2012-10-10 |
CN102722470B CN102722470B (zh) | 2015-04-22 |
Family
ID=46948241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210157227.8A Active CN102722470B (zh) | 2012-05-18 | 2012-05-18 | 一种线性方程组的单机并行求解方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102722470B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615584A (zh) * | 2015-02-06 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
CN105426345A (zh) * | 2015-12-25 | 2016-03-23 | 南京大学 | 一种矩阵求逆运算方法 |
CN110021339A (zh) * | 2017-12-27 | 2019-07-16 | 北京大学 | 基于蛋白质折叠测算蛋白质结构的集群并行计算加速方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533387A (zh) * | 2009-04-24 | 2009-09-16 | 西安电子科技大学 | 基于fpga的边角块稀疏矩阵并行lu分解器 |
US20100082724A1 (en) * | 2008-09-30 | 2010-04-01 | Oleg Diyankov | Method For Solving Reservoir Simulation Matrix Equation Using Parallel Multi-Level Incomplete Factorizations |
CN102142052A (zh) * | 2011-03-28 | 2011-08-03 | 清华大学 | 一种针对电路仿真中电路稀疏矩阵的快速lu分解方法 |
-
2012
- 2012-05-18 CN CN201210157227.8A patent/CN102722470B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100082724A1 (en) * | 2008-09-30 | 2010-04-01 | Oleg Diyankov | Method For Solving Reservoir Simulation Matrix Equation Using Parallel Multi-Level Incomplete Factorizations |
CN101533387A (zh) * | 2009-04-24 | 2009-09-16 | 西安电子科技大学 | 基于fpga的边角块稀疏矩阵并行lu分解器 |
CN102142052A (zh) * | 2011-03-28 | 2011-08-03 | 清华大学 | 一种针对电路仿真中电路稀疏矩阵的快速lu分解方法 |
Non-Patent Citations (2)
Title |
---|
游聪伟: "基于GPU平台的KLU并行算法的研究:对角线块的LU分解", 《中国优秀硕士学位论文全文数据库-信息科技辑》, no. 11, 15 November 2011 (2011-11-15) * |
骆志刚 等: "稀疏线性方程组求解中的预处理技术综述", 《计算机工程与科学》, vol. 32, no. 12, 31 December 2010 (2010-12-31) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615584A (zh) * | 2015-02-06 | 2015-05-13 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
CN104615584B (zh) * | 2015-02-06 | 2017-12-22 | 中国人民解放军国防科学技术大学 | 面向gpdsp的大规模三角线性方程组求解向量化计算的方法 |
CN105426345A (zh) * | 2015-12-25 | 2016-03-23 | 南京大学 | 一种矩阵求逆运算方法 |
CN110021339A (zh) * | 2017-12-27 | 2019-07-16 | 北京大学 | 基于蛋白质折叠测算蛋白质结构的集群并行计算加速方法 |
CN110021339B (zh) * | 2017-12-27 | 2021-04-30 | 北京大学 | 基于蛋白质折叠测算蛋白质结构的集群并行计算加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102722470B (zh) | 2015-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110533164B (zh) | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 | |
CN102339217B (zh) | 一种浮点数乘加器融合处理装置及方法 | |
CN108170639B (zh) | 基于分布式环境的张量cp分解实现方法 | |
CN102110079B (zh) | 一种基于mpi的分布式共轭梯度法的调优计算方法 | |
Kardoš et al. | Two-level parallel augmented schur complement interior-point algorithms for the solution of security constrained optimal power flow problems | |
CN104484234A (zh) | 一种基于gpu的多波前潮流计算方法和系统 | |
CN102722470B (zh) | 一种线性方程组的单机并行求解方法 | |
US9727529B2 (en) | Calculation device and calculation method for deriving solutions of system of linear equations and program that is applied to the same | |
EP3876092B1 (en) | Method for executing matrix multiplication, circuit and soc | |
CN109753682B (zh) | 一种基于gpu端的有限元刚度矩阵模拟方法 | |
CN103455518A (zh) | 一种数据处理方法及装置 | |
CN102799564A (zh) | 基于多核dsp平台的fft并行方法 | |
Misra et al. | SPIN: A fast and scalable matrix inversion method in apache spark | |
CN103092571B (zh) | 支持多种数据类型的单指令多数据算术单元 | |
US20160357707A1 (en) | Parallel computer system, parallel computing method, and program storage medium | |
Salinas-Hilburg et al. | Energy-aware task scheduling in data centers using an application signature | |
Du et al. | Providing GPU capability to LU and QR within the ScaLAPACK framework | |
CN205540690U (zh) | 一种高速多模式模加运算的电路 | |
Kong | Parallel memory-efficient all-at-once algorithms for the sparse matrix triple products in multigrid methods | |
US20160314093A1 (en) | Parallel computer system, arithmetic method, and storage medium | |
Na et al. | Scalable Smartphone Cluster for Deep Learning | |
Kannan et al. | Highly scalable computational algorithms on emerging parallel machine multicore architectures: development and implementation in CFD context | |
Liao et al. | Parallel matrix multiplication algorithms in supercomputing | |
Li et al. | Research on parallel solution of GRAPES Helmholtz equation | |
Zhang et al. | Hlanc: heterogeneous parallel implementation of the implicitly restarted Lanczos method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |