二维矩阵相乘的串行和并行实现
2011-06-09 10:05
387 查看
通常的二维矩阵相乘的串行算法实现很常见,如下:
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate result
//通常矩阵相乘的实现算法
for (int k = 0 ; k < m ; k++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
就是一个三重的for循环;
并行实现的思想如下:
临时三维矩阵Dk, i, j=Ai, k * Bk, j
第一步骤:8个Dk, i, j的计算,
第二步骤:D*, i, j相加,Ci, j:
实现如下:
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate result
//Step1 其中m为矩阵的列数
for (int k = 0 ; k < m ; k ++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
D[k][i][j] = A[i][k] * B[k][j];
}
}
}
//step2 中间结果相加构成最后结果
for (int k = 0 ; k < m ; k ++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j++)
{
C[i][j] += D[k][i][j];
}
}
}
之后可以通过多线程等方法实现矩阵相乘的并行运算。
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate result
//通常矩阵相乘的实现算法
for (int k = 0 ; k < m ; k++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
C[i][j] += A[i][k] * B[k][j];
}
}
}
就是一个三重的for循环;
并行实现的思想如下:
临时三维矩阵Dk, i, j=Ai, k * Bk, j
第一步骤:8个Dk, i, j的计算,
第二步骤:D*, i, j相加,Ci, j:
实现如下:
int m;//column of the Matrix
int A[][]; int B[][]; //two matrix used to do the multiplication
int C[][]; //used to strore the final result
int D[][][];//used to store the intermediate result
//Step1 其中m为矩阵的列数
for (int k = 0 ; k < m ; k ++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j ++)
{
D[k][i][j] = A[i][k] * B[k][j];
}
}
}
//step2 中间结果相加构成最后结果
for (int k = 0 ; k < m ; k ++)
{
for (int i = 0 ; i < m ; i ++)
{
for (int j = 0 ; j < m ; j++)
{
C[i][j] += D[k][i][j];
}
}
}
之后可以通过多线程等方法实现矩阵相乘的并行运算。
相关文章推荐
- CUDA编程——矩阵乘法的串行和两种并行实现
- Erlang实现的矩阵相乘C=A*B单线程与并行多线程性能对比
- 矩阵相乘-c++代码实现及运行实例结果
- 矩阵相乘strassen-c++代码实现及运行实例结果
- MapReduce实现二阶矩阵相乘
- 任意维矩阵相乘-C实现
- 利用Hadoop实现超大矩阵相乘之我见(一)
- 算法系列:矩阵相乘算法的MapReduce实现
- 矩阵相加、相乘,Java实现
- mpi实现矩阵相乘
- opencv 矩阵与一个常数相乘的 两种实现方法
- MapReduce实现矩阵相乘
- iOS-GCD的串行队列和并行队列的任务及实现
- 【转载】OpenCL实现矩阵相乘
- CUDA编程接口:共享存储器实现矩阵相乘
- 用Python实现根据角4点进行矩阵二维插值并画出伪彩色图
- 利用Hadoop实现超大矩阵相乘之我见(二)
- 矩阵相乘-c++代码实现及运行实例结果
- 矩阵相乘strassen-c++代码实现及运行实例结果
- 【CUDA并行编程之四】矩阵相乘