首页 > 专利 > 杭州电子科技大学 > 一种基于MPI的分布式共轭梯度法的调优计算方法专利详情

一种基于MPI的分布式共轭梯度法的调优计算方法   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2011-03-07
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2011-08-10
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2012-09-05
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2031-03-07
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201110053792.5 申请日 2011-03-07
公开/公告号 CN102110079B 公开/公告日 2012-09-05
授权日 2012-09-05 预估到期日 2031-03-07
申请年 2011年 公开/公告年 2012年
缴费截止日
分类号 G06F17/16 主分类号 G06F17/16
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 0
权利要求数量 1 非专利引证数量 0
引用专利数量 4 被引证专利数量 2
非专利引证
引用专利 CN101908087A、CN101977120A、US2010/0082724A1、CN101763087A 被引证专利 CN201510364827.5
专利权维持 7 专利申请国编码 CN
专利事件 事务标签 公开、实质审查、授权
申请人信息
申请人 第一申请人
专利权人 杭州电子科技大学 当前专利权人 杭州电子科技大学
发明人 张纪林、徐向华、万健、蒋从锋、张伟、任永坚 第一发明人 张纪林
地址 浙江省杭州市下沙高教园区2号大街 邮编
申请人数量 1 发明人数量 6
申请人所在省 浙江省 申请人所在市 浙江省杭州市
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
杭州求是专利事务所有限公司 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
杜军
摘要
本发明涉及一种基于MPI的分布式共轭梯度法的调优计算方法。传统的串行计算方法的演算流程不能有效地利用多核平台的优势。本发明当有新的节点加入计算集群时,采用预调优算法确定该节点的计算线程数并得到适用于集群计算的最优矩阵分块大小;将矩阵数据结构按最优分块大小,转换为分块压缩结构;在计算任务执行之前,根据各个节点的预调优数据为每个节点的线程分配计算量;当共轭梯度法演算流程执行矩阵与向量乘时,利用MPI自动将计算任务分配到集群中的计算节点,当计算完成后将结果主动归约到主节点。本发明采用高度压缩及灵活方便的结构针对稀疏矩阵进行分块处理,降低了计算时间复杂度中的常数,节省了存储空间。
  • 摘要附图
    一种基于MPI的分布式共轭梯度法的调优计算方法
  • 说明书附图:图1
    一种基于MPI的分布式共轭梯度法的调优计算方法
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2012-09-05 授权
2 2011-08-10 实质审查的生效 IPC(主分类): G06F 17/16 专利申请号: 201110053792.5 申请日: 2011.03.07
3 2011-06-29 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种基于MPI的分布式共轭梯度法的调优计算方法,其特征在于该方法包括以下步骤:
步骤
1.准备节点,具体是:
1-
1.进行各节点的硬件部署;
1-
2.判断是否有新节点加入,如果有新节点加入,则进行步骤1-3的预调优,否则转入步骤2;
1-
3. 利 用 选 取 的 个 矩 阵 所 构 成 的 基 准 矩 阵 集
,对集群计算性能进行调优,其具体过程如
下:
设 为 的基准矩阵,其中 与 分别为相应基准矩阵的行数
与列数,对其生成 的随机向量 ,选用所有 的矩阵分块方式,将基准矩阵按分块方式格式化为相应的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结构的具体流程如下:
A.按照行主序依次读入待划分矩阵中的非零元素,并按先后顺序将其列号记录于向量内,数值记录于 向量内;
B.将待划分矩阵按分块方式的行高,对行进行平均划分,并对每个划分内的元素按列主序重新排序存储,此次排序将重新调整 向量与 向量中元素的分布;
C.在当前划分区间内,不断以第一个未被划分进 向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用 向量控制当前块中非零元素在向量与 向量内所处的区间,直到所有的非零元素均被成功划分,此时用 向量记录该划分内所形成的块在 向量内的索引区间;
步骤1-3中计算量分配算法其流程如下:
1)从 向量中获得待划分矩阵所划分的总块数;
2)根据集群节点数将计算子矩阵的块数平均分配到各节点;
3)各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
说明书

技术领域

[0001] 本发明涉及一种基于共轭梯度法的计算方法,尤其涉及一种基于MPI的分布式共轭梯度法的调优计算方法。

背景技术

[0002] 传统的共轭梯度法演算计算方法为串行方法,该方法是共轭梯度法在计算机上的一种简单实现。共轭梯度法是求解特定线性系统的数值解的方法,其中的系数矩阵为对称和正定的实数阵。共轭梯度法是一个迭代方法,所以它适用于稀疏矩阵系统,因为这些系统通过类似乔莱斯基分解这样的直接方法去计算量太大。而这类系统在数值求解偏微分方程时是很常见的。
[0003] 共轭梯度法主要用于求解下列线性系统:
[0004] ,其中 矩阵 是对称的(即 ),正定的(即对于所有非0向量属于 , )实系数矩阵。经过一些简化,可以得到求解 的算法,如图1所示。其中 是实对称正定矩阵。
[0005] 传统的串行计算方法严格按照以上的算法流程进行演算,并能够得到正确的演算结果。然而由于串行计算本身存在的瓶颈,当计算量相对较大,计算机本身的性能将大大制约其进行演算的效率。并且当实对称正定矩阵 维数过大,计算机也无法对其数据进行有效的存储与管理。
[0006] 近年来,随着计算机硬件的不断发展,越来越多的计算机采用了多核的平台构架,传统的串行计算方法的演算流程不能有效地利用多核平台的优势,其对机器本身性能的利用也不充分。随着分布式计算技术的不断推广,也使得集群并行计算成为提高计算性能的有效方法。相比而言,传统的串行计算方法则表现出计算上极大的局限性。

发明内容

[0007] 针对上述传统的串行计算方法存在的问题,本发明提出一种能充分利用计算机性能以及硬件平台,组织进行分布式计算的方法。该方法应拥有自动调优的功能,使之能根据所部署计算机的特性进行调整,从而使其作为节点所参与的并行计算体现出更高的计算性能。通过利用集群以及多核平台的优势,提升共轭梯度法的演算效率,充分利用计算机硬件与网络资源,进行高性能计算,解决传统串行计算方法资源利用不足,演算效率低下的问题。
[0008] 传统的串行计算方法如下方伪代码所示:
[0009]
[0010] 其中向量 用于判断是否满足演算的精度需要,若满足则演算结束。
[0011] 本发明关注于传统的串行计算方法在演算中极为活跃的计算热点——矩阵与向量乘,设计了一种基于MPI的分布式共轭梯度法的调优计算方法,该方法的优化工作包括:当有新的节点加入计算集群时,采用预调优算法确定该节点的计算线程数并得到适用于集群计算的最优矩阵分块大小;读入系数矩阵时,将矩阵数据结构按最优分块大小,转换为方便灵活的分块压缩结构;在计算任务执行之前,根据各个节点的预调优数据为每个节点的线程分配计算量;当共轭梯度法演算流程执行矩阵与向量乘时,利用MPI自动将计算任务分配到集群中的计算节点,当计算完成后将结果主动归约到主节点,以多线程集群的工作方式提高运算效率。
[0012] 本发明方法的具体步骤是:
[0013] (1) 准备节点
[0014] 1-1.首先进行各节点的硬件部署;
[0015] 1-2.判断是否有新节点加入,如果有,则进行步骤1-3的预调优过程,否则转入步骤2进行数据格式化过程。
[0016] 1-3.所涉及的预调优过程,利用选取的 个矩阵所构成的基准矩阵集,对集群计算性能进行调优,其具体过程如下:
[0017] 设 为 的 基 准 矩 阵,其 中 与 分 别为相应基准矩阵的行数与列数,对其生成 的随机向量 ,选用所有
的矩阵分块方式,将基准矩阵按分块方式格式
化为相应的BCSR结构,利用计算量分配算法进行节点部署,根据进行节点部署时得到的计算量分配方案,通过MPI控制集群中的各计算节点进行并行的矩阵向量乘运算,从而统计出集群在不同分块方式下的运算开销。
[0018] 在完成基准矩阵集的运算开销的统计之后,对于不同的分块方式分别计算出集群运算的平均开销,选取其中平均开销最小的分块方式作为集群进行矩阵向量乘的最终分块方式。
[0019] 其中基准矩阵按分块方式格式化为相应的BCSR结构的具体流程如下:
[0020] 1. 首先按照行主序依次读入待划分矩阵中的非零元素,并按先后顺序将其列号记录于 向量内,数值记录于 向量内。
[0021] 2. 将待划分矩阵按分块方式的行高,对行进行平均划分,并对每个划分内的元素按列主序重新排序存储,此次排序将重新调整 向量与 向量中元素的分布。
[0022] 3. 在当前划分区间内,不断以第一个未被划分进 向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用 向量控制当前块中非零元素在 向量与 向量内所处的区间,直到所有的非零元素均被成功划分,此时用 向量记录该划分内所形成的块在 向量内的索引区间。
[0023] 计算量分配算法其流程如下:
[0024] 1.从 向量中获得待划分矩阵所划分的总块数。
[0025] 2.根据集群节点数将计算子矩阵的块数平均分配到各节点。
[0026] 3.各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
[0027] 以上为本发明方法的预调优过程,通过该过程将使集群的计算性能达到一种平均最优的状态。
[0028] (2)准备数据
[0029] 2-1判断是否有计算任务,若无计算任务,则结束,否则对矩阵进行读取, [0030] 2-2对读取的矩阵按步骤1得到的最终分块方式格式化为相应的BCSR结构;
[0031] (3)分配部署
[0032] 通过计算量分配算法针对当前计算任务进行节点的部署,来获得计算量的分配方案。其目的在于获得一个令集群中各个节点的计算量大致相等的方案,从而达到负载平衡的目的。
[0033] (4) 演算
[0034] 4-1.开始共轭梯度法的迭代;
[0035] 4-2.判断演算流程是否涉及到矩阵向量乘,若涉及到矩阵向量乘,则根据步骤3中得到的分配方案,对子矩阵在集群节点上的进行分配;否则跳转至步骤4-4;
[0036] 4-3.通过MPI控制集群中的各计算节点进行并行计算,然后跳转至步骤4-5;
[0037] 4-4.利用主节点进行演算,严格按照计算量的分配,开启计算线程,并与CPU核一一绑定,从而使得各CPU核之间的运算以及各自cache的命中与刷新互不干扰;
[0038] 4-5.判断迭代是否结束,未结束则跳转至步骤4-2,否则转入步骤4-6;
[0039] 4-6.判断向量 是否满足演算终止条件,若满足,则演算结束,否则转入步骤4-1重新开始迭代。
[0040] 本发明具有的效果是:
[0041] 1、本发明利用了cache局部性原理,采用高度压缩及灵活方便的 结构针对稀疏矩阵进行分块处理,大大降低了计算时间复杂度中的常数,节省了大量的存储空间,提升了算法的演算效率。
[0042] 2、本发明充分利用了多核平台以及集群计算的性能优势,将计算中的热点并行化处理,利用多线程以及MPI的分布式技术,以较小的通讯开销换取了高性能的计算效率。
[0043] 3、本发明对集群可以进行整体性能上的自动调优,新的节点可以在加入后迅速发挥计算效力。
[0044] 4、本发明方法可适用于计算数学和计算物理等科学与工程计算领域中求解大规模稀疏线性代数方程组。

实施方案

[0046] 下面结合附图和实施方法对本发明作进一步的详细说明。
[0047] 参照图1执行步骤来说明本发明实施过程:
[0048] (1)准备节点
[0049] 步骤1-1进行各节点的硬件部署;
[0050] 步骤1-2判断是否有新节点加入,如果有,则进行步骤1-3的预调优过程,否则转入步骤(2)进行数据格式化过程;
[0051] 步骤1-3所涉及的预调优过程,利用选取的 个矩阵所构成的基准矩阵集,对集群计算性能进行调优,其具体步骤描述如下:
[0052] 利 用 选 取 的 个 矩 阵 所 构 成 的 基 准 矩 阵 集,对集群计算性能进行调优,其具体过程如
下:
[0053] 设 为 的 基 准 矩 阵,其 中 与 分 别为相应基准矩阵的行数与列数,对其生成 的随机向量 ,选用所有
的矩阵分块方式,将基准矩阵按分块方式格式
化为相应的BCSR结构,利用计算量分配算法进行节点部署,根据进行节点部署时得到的计算量分配方案,通过MPI控制集群中的各计算节点进行并行的矩阵向量乘运算,从而统计出集群在不同分块方式下的运算开销。
[0054] 在完成基准矩阵集的运算开销的统计之后,对于不同的分块方式分别计算出集群运算的平均开销,选取其中平均开销最小的分块方式作为集群进行矩阵向量乘的最终分块方式。
[0055] 其中基准矩阵按分块方式格式化为相应的BCSR结构的具体流程如下:
[0056] 1. 首先按照行主序依次读入待划分矩阵中的非零元素,并按先后顺序将其列号记录于 向量内,数值记录于 向量内。
[0057] 2. 将待划分矩阵按分块方式的行高,对行进行平均划分,并对每个划分内的元素按列主序重新排序存储,此次排序将重新调整 向量与 向量中元素的分布。
[0058] 3. 在当前划分区间内,不断以第一个未被划分进 向量所在区间的非零元素所在列为起始列,按分块方式的列宽划分出子矩阵块,并用 向量控制当前块中非零元素在 向量与 向量内所处的区间,直到所有的非零元素均被成功划分,此时用 向量记录该划分内所形成的块在 向量内的索引区间。
[0059] 计算量分配算法其流程如下:
[0060] 1.从 向量中获得待划分矩阵所划分的总块数。
[0061] 2.根据集群节点数将计算子矩阵的块数平均分配到各节点。
[0062] 3.各节点根据自身CPU的核数,将计算量再平均分配到相应的CPU核上。
[0063] 以上为本发明方法的预调优过程,通过该过程将使集群的计算性能达到一种平均最优的状态。
[0064] (2)准备数据
[0065] 节点准备过程结束后,通过执行步骤2-1判断是否有计算任务,若无计算任务,则结束演算,否则对矩阵进行读取,然后进行步骤2-2的数据格式化过程,采用了结构来对数据进行格式化,该结构降低了存储的冗余度,使用了四个不同意义的向量,有效保存了原矩阵的信息,并保持了对矩阵中划分块的控制,从而便于计算量在各个节点上的相关部署。
[0066] (3)部署分配
[0067] 执行完数据格式化过程,转入步骤3-1通过节点部署算法针对当前计算任务进行节点的部署,来获得计算量的分配方案。其目的在于获得一个令集群中各个节点的计算量大致相等的方案,从而达到负载平衡的目的。
[0068] (4)演算过程
[0069] 完成节点部署后,执行步骤4-1,开始共轭梯度法的迭代。该方法中的共轭梯度法的演算采用传统串行方法的基本流程来求解下列线性系统:
[0070] ,其中 矩阵 是对称的(即 ),正定的(即对于所有非0向量属于 , )实系数矩阵。经过一些简化,可以得到求解 的算法,如图1所示。其中 是实对称正定矩阵。
[0071] 转入步骤4-2,判断演算流程是否涉及到矩阵向量乘,若涉及到矩阵向量乘,则根据步骤3中得到的分配方案,对子矩阵在集群节点上的进行分配;否则跳转至步骤4-4[0072] 进入步骤4-3,通过MPI控制集群中的各计算节点进行并行计算,然后跳转至步骤4-5
[0073] 进入步骤4-4,利用主节点进行演算,严格按照计算量的分配,开启计算线程,并与CPU核一一绑定,从而使得各CPU核之间的运算以及各自cache的命中与刷新互不干扰。
[0074] 进入步骤4-5,判断迭代是否结束,未结束则跳转至步骤4-2,否则转入步骤4-6。
[0075] 进入步骤4-6,判断是否满足演算终止条件,若满足,则演算结束,否则转入步骤4-1重新开始迭代。

附图说明

[0045] 图1为本发明进行共轭梯度法演算的流程图。
专利联系人(活跃度排行)
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号