如果这个博客帮到了你,不要忘记给个赞!
运行环境为:win10 + MS-MPI v10.1.2 + python 3.7 + mpi4py
1. 代码设计思路
总体设计思路:以0号进程作为主进程,除了处理自己负责的计算任务之外,还需要对其他进程处理完的数据进行汇总和归一化。计算分为两个部分:1. 首先是遍历所有的行数,在遍历的过程中将矩阵的每一行处理为上三角的形式。N行矩阵一共遍历N轮,算法复杂度为 O(n2)。每个子进程处理完自己的行数后,将结果发送给0号进程。0号进程得到汇总数据后进行对角线元素归一化处理,然后将新的矩阵广播给其他进程进行下一步处理;2. 每个进程收到广播后将上三角矩阵中分配给自己的行数进行消元处理,将消元后的结果再次发送给0号进程,0号进程汇集成单位矩阵形式得出最终结果,消元过程中迭代时间复杂度为O(n) 。因此,总体时间复杂度为 ,最终的时间复杂度为 ,比串行计算要求的 要小一个数量级。
具体流程