cannon算法是一种优化矩阵分块乘法的算法,是一种存储有效的算法。
1、算法背景
nxn的矩阵A与nxn的矩阵B相乘
2、传统矩阵分块并行乘法的基本思路
把大的矩阵划分成小的矩阵块,比如n=6,有4个处理器(p=4),则把A和B矩阵均划分成由3x3的矩阵快组成的2x2的矩阵,如图所示:
存储: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算法的原理和算法
原理:
算法举例:
4、用MPI实现cannon算法
cannon算法的原理及MPI C语言实现
最新推荐文章于 2024-06-20 23:50:49 发布