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核上。