cannon算法的原理及MPI C语言实现

  cannon算法是一种优化矩阵分块乘法的算法,是一种存储有效的算法。
1、算法背景
  nxn的矩阵A与nxn的矩阵B相乘
2、传统矩阵分块并行乘法的基本思路
  把大的矩阵划分成小的矩阵块,比如n=6,有4个处理器(p=4),则把A和B矩阵均划分成由3x3的矩阵快组成的2x2的矩阵,如图所示:
  cannon算法的原理及MPI C语言实现_第1张图片
  存储:P1处理器存储A00,B00;P2处理器存储A01,B01;P3处理器存储A10,B10;P4处理器存储A11,B11;
  计算:
  4个处理器分别计算C00,C01,C10,C11,由于C00=A00xB00+A01xB10,而P1处理器中只有A00和B00,所以A01和B10就需要从其他线程中传递过来,最终完成C00的计算。
  缺点:
  最终每个线程中都存储一行A和一列B(矩阵块),如P1中存储有A00,A01和B00,B10。于是大大增加了存储量,存储量由O(n平方)—>O(n立方)
  cannon算法的目标就是减少分块矩阵乘法的存储量
3、cannon算法的原理和算法
原理:
cannon算法的原理及MPI C语言实现_第2张图片
算法举例:
cannon算法的原理及MPI C语言实现_第3张图片
cannon算法的原理及MPI C语言实现_第4张图片
cannon算法的原理及MPI C语言实现_第5张图片
cannon算法的原理及MPI C语言实现_第6张图片
4、用MPI实现cannon算法

你可能感兴趣的:(mpi)