CN102110079B - 一种基于mpi的分布式共轭梯度法的调优计算方法 - Google Patents
一种基于mpi的分布式共轭梯度法的调优计算方法 Download PDFInfo
- Publication number
- CN102110079B CN102110079B CN201110053792A CN201110053792A CN102110079B CN 102110079 B CN102110079 B CN 102110079B CN 201110053792 A CN201110053792 A CN 201110053792A CN 201110053792 A CN201110053792 A CN 201110053792A CN 102110079 B CN102110079 B CN 102110079B
- Authority
- CN
- China
- Prior art keywords
- matrix
- node
- vector
- cluster
- computing
- 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.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 61
- 238000002939 conjugate gradient method Methods 0.000 title abstract 3
- 239000011159 matrix material Substances 0.000 claims abstract description 64
- 238000000034 method Methods 0.000 claims abstract description 60
- 239000013598 vector Substances 0.000 claims abstract description 53
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000008901 benefit Effects 0.000 claims abstract description 14
- 230000008859 change Effects 0.000 claims description 10
- 238000000638 solvent extraction Methods 0.000 claims description 4
- 230000008707 rearrangement Effects 0.000 claims description 3
- 230000006835 compression Effects 0.000 abstract description 2
- 238000007906 compression Methods 0.000 abstract description 2
- 230000009467 reduction Effects 0.000 abstract description 2
- 238000007630 basic procedure Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Landscapes
- Complex Calculations (AREA)
Abstract
Description
技术领域
本发明涉及一种基于共轭梯度法的计算方法,尤其涉及一种基于MPI的分布式共轭梯度法的调优计算方法。
背景技术
传统的共轭梯度法演算计算方法为串行方法,该方法是共轭梯度法在计算机上的一种简单实现。共轭梯度法是求解特定线性系统的数值解的方法,其中的系数矩阵为对称和正定的实数阵。共轭梯度法是一个迭代方法,所以它适用于稀疏矩阵系统,因为这些系统通过类似乔莱斯基分解这样的直接方法去计算量太大。而这类系统在数值求解偏微分方程时是很常见的。
共轭梯度法主要用于求解下列线性系统:
传统的串行计算方法严格按照以上的算法流程进行演算,并能够得到正确的演算结果。然而由于串行计算本身存在的瓶颈,当计算量相对较大,计算机本身的性能将大大制约其进行演算的效率。并且当实对称正定矩阵维数过大,计算机也无法对其数据进行有效的存储与管理。
近年来,随着计算机硬件的不断发展,越来越多的计算机采用了多核的平台构架,传统的串行计算方法的演算流程不能有效地利用多核平台的优势,其对机器本身性能的利用也不充分。随着分布式计算技术的不断推广,也使得集群并行计算成为提高计算性能的有效方法。相比而言,传统的串行计算方法则表现出计算上极大的局限性。
发明内容
针对上述传统的串行计算方法存在的问题,本发明提出一种能充分利用计算机性能以及硬件平台,组织进行分布式计算的方法。该方法应拥有自动调优的功能,使之能根据所部署计算机的特性进行调整,从而使其作为节点所参与的并行计算体现出更高的计算性能。通过利用集群以及多核平台的优势,提升共轭梯度法的演算效率,充分利用计算机硬件与网络资源,进行高性能计算,解决传统串行计算方法资源利用不足,演算效率低下的问题。
传统的串行计算方法如下方伪代码所示:
本发明关注于传统的串行计算方法在演算中极为活跃的计算热点——矩阵与向量乘,设计了一种基于MPI的分布式共轭梯度法的调优计算方法,该方法的优化工作包括:当有新的节点加入计算集群时,采用预调优算法确定该节点的计算线程数并得到适用于集群计算的最优矩阵分块大小;读入系数矩阵时,将矩阵数据结构按最优分块大小,转换为方便灵活的分块压缩结构;在计算任务执行之前,根据各个节点的预调优数据为每个节点的线程分配计算量;当共轭梯度法演算流程执行矩阵与向量乘时,利用MPI自动将计算任务分配到集群中的计算节点,当计算完成后将结果主动归约到主节点,以多线程集群的工作方式提高运算效率。
本发明方法的具体步骤是:
(1) 准备节点
1-1.首先进行各节点的硬件部署;
1-2.判断是否有新节点加入,如果有,则进行步骤1-3的预调优过程,否则转入步骤2进行数据格式化过程。
设为的基准矩阵,其中与分别为相应基准矩阵的行数与列数,对其生成的随机向量,选用所有的矩阵分块方式,将基准矩阵按分块方式格式化为相应的BCSR结构,利用计算量分配算法进行节点部署,根据进行节点部署时得到的计算量分配方案,通过MPI控制集群中的各计算节点进行并行的矩阵向量乘运算,从而统计出集群在不同分块方式下的运算开销。
在完成基准矩阵集的运算开销的统计之后,对于不同的分块方式分别计算出集群运算的平均开销,选取其中平均开销最小的分块方式作为集群进行矩阵向量乘的最终分块方式。
其中基准矩阵按分块方式格式化为相应的BCSR结构的具体流程如下:
3. 在当前划分区间内,不断以第一个未被划分进向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用向量控制当前块中非零元素在向量与向量内所处的区间,直到所有的非零元素均被成功划分,此时用向量记录该划分内所形成的块在向量内的索引区间。
计算量分配算法其流程如下:
2.根据集群节点数将计算子矩阵的块数平均分配到各节点。
3.各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
以上为本发明方法的预调优过程,通过该过程将使集群的计算性能达到一种平均最优的状态。
(2)准备数据
2-1判断是否有计算任务,若无计算任务,则结束,否则对矩阵进行读取,
2-2对读取的矩阵按步骤1得到的最终分块方式格式化为相应的BCSR结构;
(3)分配部署
通过计算量分配算法针对当前计算任务进行节点的部署,来获得计算量的分配方案。其目的在于获得一个令集群中各个节点的计算量大致相等的方案,从而达到负载平衡的目的。
(4) 演算
4-1.开始共轭梯度法的迭代;
4-2.判断演算流程是否涉及到矩阵向量乘,若涉及到矩阵向量乘,则根据步骤3中得到的分配方案,对子矩阵在集群节点上的进行分配;否则跳转至步骤4-4;
4-3.通过MPI控制集群中的各计算节点进行并行计算,然后跳转至步骤4-5;
4-4.利用主节点进行演算,严格按照计算量的分配,开启计算线程,并与CPU核一一绑定,从而使得各CPU核之间的运算以及各自cache的命中与刷新互不干扰;
4-5.判断迭代是否结束,未结束则跳转至步骤4-2,否则转入步骤4-6;
4-6.判断向量是否满足演算终止条件,若满足,则演算结束,否则转入步骤4-1重新开始迭代。
本发明具有的效果是:
2、本发明充分利用了多核平台以及集群计算的性能优势,将计算中的热点并行化处理,利用多线程以及MPI的分布式技术,以较小的通讯开销换取了高性能的计算效率。
3、本发明对集群可以进行整体性能上的自动调优,新的节点可以在加入后迅速发挥计算效力。
4、本发明方法可适用于计算数学和计算物理等科学与工程计算领域中求解大规模稀疏线性代数方程组。
附图说明
图1为本发明进行共轭梯度法演算的流程图。
具体实施方式
下面结合附图和实施方法对本发明作进一步的详细说明。
参照图1执行步骤来说明本发明实施过程:
(1)准备节点
步骤1-1进行各节点的硬件部署;
步骤1-2判断是否有新节点加入,如果有,则进行步骤1-3的预调优过程,否则转入步骤(2)进行数据格式化过程;
设为的基准矩阵,其中与分别为相应基准矩阵的行数与列数,对其生成的随机向量,选用所有的矩阵分块方式,将基准矩阵按分块方式格式化为相应的BCSR结构,利用计算量分配算法进行节点部署,根据进行节点部署时得到的计算量分配方案,通过MPI控制集群中的各计算节点进行并行的矩阵向量乘运算,从而统计出集群在不同分块方式下的运算开销。
在完成基准矩阵集的运算开销的统计之后,对于不同的分块方式分别计算出集群运算的平均开销,选取其中平均开销最小的分块方式作为集群进行矩阵向量乘的最终分块方式。
其中基准矩阵按分块方式格式化为相应的BCSR结构的具体流程如下:
3. 在当前划分区间内,不断以第一个未被划分进向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用向量控制当前块中非零元素在向量与向量内所处的区间,直到所有的非零元素均被成功划分,此时用向量记录该划分内所形成的块在向量内的索引区间。
计算量分配算法其流程如下:
2.根据集群节点数将计算子矩阵的块数平均分配到各节点。
3.各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
以上为本发明方法的预调优过程,通过该过程将使集群的计算性能达到一种平均最优的状态。
(2)准备数据
节点准备过程结束后,通过执行步骤2-1判断是否有计算任务,若无计算任务,则结束演算,否则对矩阵进行读取,然后进行步骤2-2的数据格式化过程,采用了结构来对数据进行格式化,该结构降低了存储的冗余度,使用了四个不同意义的向量,有效保存了原矩阵的信息,并保持了对矩阵中划分块的控制,从而便于计算量在各个节点上的相关部署。
(3)部署分配
执行完数据格式化过程,转入步骤3-1通过节点部署算法针对当前计算任务进行节点的部署,来获得计算量的分配方案。其目的在于获得一个令集群中各个节点的计算量大致相等的方案,从而达到负载平衡的目的。
(4)演算过程
完成节点部署后,执行步骤4-1,开始共轭梯度法的迭代。该方法中的共轭梯度法的演算采用传统串行方法的基本流程来求解下列线性系统:
转入步骤4-2,判断演算流程是否涉及到矩阵向量乘,若涉及到矩阵向量乘,则根据步骤3中得到的分配方案,对子矩阵在集群节点上的进行分配;否则跳转至步骤4-4
进入步骤4-3,通过MPI控制集群中的各计算节点进行并行计算,然后跳转至步骤4-5
进入步骤4-4,利用主节点进行演算,严格按照计算量的分配,开启计算线程,并与CPU核一一绑定,从而使得各CPU核之间的运算以及各自cache的命中与刷新互不干扰。
进入步骤4-5,判断迭代是否结束,未结束则跳转至步骤4-2,否则转入步骤4-6。
进入步骤4-6,判断是否满足演算终止条件,若满足,则演算结束,否则转入步骤4-1重新开始迭代。
Claims (1)
1.一种基于MPI的分布式共轭梯度法的调优计算方法,其特征在于该方法包括以下步骤:
步骤1.准备节点,具体是:
1-1.进行各节点的硬件部署;
1-2.判断是否有新节点加入,如果有新节点加入,则进行步骤1-3的预调优,否则转入步骤2;
设为的基准矩阵,其中与分别为相应基准矩阵的行数与列数,对其生成的随机向量,选用所有的矩阵分块方式,将基准矩阵按分块方式格式化为相应的BCSR结构,利用计算量分配算法进行节点部署,根据进行节点部署时得到的计算量分配方案,通过MPI控制集群中的各计算节点进行并行的矩阵向量乘运算,从而统计出集群在不同分块方式下的运算开销,其中;
在完成基准矩阵集的运算开销的统计之后,对于不同的分块方式分别计算出集群运算的平均开销,选取其中平均开销最小的分块方式作为集群进行矩阵向量乘的最终分块方式;
步骤2.准备数据,具体是:
2-1.判断是否有计算任务,若无计算任务,则结束,否则对矩阵进行读取;
2-2.对读取的矩阵按步骤1得到的最终分块方式格式化为相应的BCSR结构;
步骤3.分配部署,具体是:通过计算量分配算法针对当前计算任务进行节点的部署,来获得计算量的分配方案;
步骤4.进行演算,具体是:
4-1.开始共轭梯度法的迭代;
4-2.判断演算流程是否涉及到矩阵向量乘,若涉及到矩阵向量乘,则根据步骤3中得到的分配方案,对子矩阵在集群节点上的进行分配;否则跳转至步骤4-4;
4-3.通过MPI控制集群中的各计算节点进行并行计算,然后跳转至步骤4-5
4-4.利用主节点进行演算,按照计算量的分配,开启计算线程,并与CPU核一一绑定,从而使得各CPU核之间的运算以及各自cache的命中与刷新互不干扰;
4-5.判断迭代是否结束,未结束则跳转至步骤4-2,否则转入步骤4-6;
4-6.判断是否满足演算终止条件,若满足,则演算结束,否则转入步骤4-1重新开始迭代;
步骤1-3中基准矩阵按分块方式格式化为相应的BCSR结构的具体流程如下:
C.在当前划分区间内,不断以第一个未被划分进向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用向量控制当前块中非零元素在向量与向量内所处的区间,直到所有的非零元素均被成功划分,此时用向量记录该划分内所形成的块在向量内的索引区间;
步骤1-3中计算量分配算法其流程如下:
2)根据集群节点数将计算子矩阵的块数平均分配到各节点;
3)各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110053792A CN102110079B (zh) | 2011-03-07 | 2011-03-07 | 一种基于mpi的分布式共轭梯度法的调优计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110053792A CN102110079B (zh) | 2011-03-07 | 2011-03-07 | 一种基于mpi的分布式共轭梯度法的调优计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102110079A CN102110079A (zh) | 2011-06-29 |
CN102110079B true CN102110079B (zh) | 2012-09-05 |
Family
ID=44174242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110053792A Expired - Fee Related CN102110079B (zh) | 2011-03-07 | 2011-03-07 | 一种基于mpi的分布式共轭梯度法的调优计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102110079B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045767A (zh) * | 2015-06-24 | 2015-11-11 | 南昌大学 | 一种快速存贮及读取电力系统稀疏矩阵数据的方法 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2013070106A1 (en) * | 2011-11-08 | 2013-05-16 | Intel Corporation | Message passing interface tuning using collective operation modeling |
CN102521463B (zh) * | 2011-12-26 | 2013-12-18 | 杭州电子科技大学 | 一种优化Cache行为提升油藏数值模拟效率的方法 |
CN102737010B (zh) * | 2012-04-09 | 2014-12-17 | 深圳大学 | 以摩尔图为拓扑结构的并行矩阵乘计算的方法和系统 |
CN103150290A (zh) * | 2013-02-28 | 2013-06-12 | 杭州电子科技大学 | 一种新型的三维不可压缩管流数值模拟方法 |
CN105005505B (zh) * | 2015-06-25 | 2018-06-26 | 南京航空航天大学 | 空中多目标轨迹预测的并行处理方法 |
US10310826B2 (en) * | 2015-11-19 | 2019-06-04 | Intel Corporation | Technologies for automatic reordering of sparse matrices |
CN107305535B (zh) * | 2016-04-19 | 2022-07-26 | 全球能源互联网研究院 | 一种加速电路网络状态方程迭代求解的方法 |
CN111176797B (zh) * | 2019-12-18 | 2023-10-27 | 北京百度网讯科技有限公司 | 数据并发的处理方法、装置、电子设备及可读存储介质 |
CN111240744B (zh) * | 2020-01-03 | 2022-03-22 | 支付宝(杭州)信息技术有限公司 | 一种提高涉及稀疏矩阵并行计算效率的方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763087A (zh) * | 2009-12-29 | 2010-06-30 | 浙江大学 | 一种基于非线性共轭梯度法的工业过程动态优化系统及方法 |
CN101908087A (zh) * | 2010-07-16 | 2010-12-08 | 清华大学 | 基于gpu的集成电路电源地线网络的并行仿真方法 |
CN101977120A (zh) * | 2010-10-15 | 2011-02-16 | 清华大学 | 基于图形处理器的大规模静态网络划分方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102138146A (zh) * | 2008-09-30 | 2011-07-27 | 埃克森美孚上游研究公司 | 使用并行多级不完全因式分解求解储层模拟矩阵方程的方法 |
-
2011
- 2011-03-07 CN CN201110053792A patent/CN102110079B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763087A (zh) * | 2009-12-29 | 2010-06-30 | 浙江大学 | 一种基于非线性共轭梯度法的工业过程动态优化系统及方法 |
CN101908087A (zh) * | 2010-07-16 | 2010-12-08 | 清华大学 | 基于gpu的集成电路电源地线网络的并行仿真方法 |
CN101977120A (zh) * | 2010-10-15 | 2011-02-16 | 清华大学 | 基于图形处理器的大规模静态网络划分方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045767A (zh) * | 2015-06-24 | 2015-11-11 | 南昌大学 | 一种快速存贮及读取电力系统稀疏矩阵数据的方法 |
CN105045767B (zh) * | 2015-06-24 | 2017-11-17 | 南昌大学 | 一种快速存贮及读取电力系统稀疏矩阵数据的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102110079A (zh) | 2011-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102110079B (zh) | 一种基于mpi的分布式共轭梯度法的调优计算方法 | |
Lu et al. | SpWA: An efficient sparse winograd convolutional neural networks accelerator on FPGAs | |
EP2212806B1 (en) | Allocation of resources for concurrent query execution via adaptive segmentation | |
Yang et al. | A hybrid computing method of SpMV on CPU–GPU heterogeneous computing systems | |
Tang et al. | Optimizing and auto-tuning scale-free sparse matrix-vector multiplication on Intel Xeon Phi | |
Hong et al. | Efficient sparse-matrix multi-vector product on gpus | |
CN103336758A (zh) | 一种稀疏矩阵的存储方法CSRL及基于该方法的SpMV实现方法 | |
CN110222029A (zh) | 一种大数据多维分析计算效率提升方法及系统 | |
CN109978171B (zh) | 一种基于云计算的Grover量子仿真算法优化方法 | |
Yao et al. | Evaluating and analyzing the energy efficiency of CNN inference on high‐performance GPU | |
CN103279330A (zh) | 一种基于虚拟机GPU计算下的MapReduce并行编程模型 | |
Motamedi et al. | Fast and energy-efficient CNN inference on IoT devices | |
CN105808339A (zh) | 大数据并行计算方法及装置 | |
US9965343B2 (en) | System and method for determining concurrency factors for dispatch size of parallel processor kernels | |
Han et al. | Distme: A fast and elastic distributed matrix computation engine using gpus | |
WO2015143985A1 (zh) | 一种确定结果向量的方法和装置 | |
CN103593304B (zh) | 基于并行设备模型的高效使用缓存的量化方法 | |
CN112560356A (zh) | 面向众核架构的稀疏矩阵向量乘众核优化方法 | |
CN116167304B (zh) | 基于神威架构的油藏数值模拟gmres优化方法及系统 | |
CN103049322A (zh) | 一种针对拓扑关系并行计算的矢量目标集均衡划分方法 | |
CN103150290A (zh) | 一种新型的三维不可压缩管流数值模拟方法 | |
CN115130672A (zh) | 一种软硬件协同优化卷积神经网络计算的方法及装置 | |
CN110415162B (zh) | 大数据中面向异构融合处理器的自适应图划分方法 | |
CN102073798B (zh) | 基于多核处理器的核糖核酸次级结构并行预测方法 | |
CN104793985A (zh) | 一种虚拟机调度方法和管理设备 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120905 |