[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、本发明方法可适用于计算数学和计算物理等科学与工程计算领域中求解大规模稀疏线性代数方程组。