MPI矩阵与向量乘法

原创 2012年03月22日 09:50:44
并行矩阵与向量乘法,为简单起见,这里假设矩阵为n维方阵,向量为n维。进程数为矩阵的维数。按行卷帘存储。这里设n为3。每个进程存储矩阵的一行及向量的一个元素。
#include<stdio.h>
#include "mpi.h"
int main(int argc ,char ** argv)
{
	
	MPI_Init(&argc,&argv);	
	int np,rank;
	MPI_Status sta;
	MPI_Comm_size(MPI_COMM_WORLD,&np);
	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	int A[3][3]={1,2,3,4,5,6,7,8,9};
	int x[3]={3,2,1};
        int B[3]={0,0,0};
	int y=x[rank];
	int mp1=(rank+1)%np;
	int mm1=(rank-1+np)%np;
	for(int i=0;i<3;i++)
	{

		B[rank]+=A[rank][(rank+i)%3]*y;
		if(i!=2){
		MPI_Send(&y,1,MPI_INT,mm1,0,MPI_COMM_WORLD);
		MPI_Recv(&y,1,MPI_INT,mp1,0,MPI_COMM_WORLD,&sta);
		}
	}
	printf("%d on rank %d process\n",B[rank],rank);
	MPI_Finalize();

}

 

mpicc -o matrix matrix.c  --std=c99
编译时加入--std=c99选项,否则出现


错误:在 C99 模式之外使用 ‘for’ 循环初始化声明
解决办法:

C99 允许在for语句的 “表达式1 ”中定义并初始变量, gcc4 编译c语言的默认标准是C89, 编译C99程序需加参数 “–-std=c99” 如:
#gcc hello.c -o hello.c --std=c99

 mpicc -o matrix matrix.c  --std=c99
mpiexec -n 3 ./matrix


 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

MPI矩阵乘法的两种实现方法

MPI矩阵乘法去年学习了并行计算,接触了MPI、Pthreads和OpenMP等常用的并行方法实现了并行的矩阵乘法,本章在此总结一下MPI的矩阵乘法使用。 使用简单的MPI_Send和MPI_Recv...

MPI多进程并行计算矩阵乘法实现

MPI多进程并行计算矩阵乘法实现

矩阵乘法的并行算法

设两个矩阵A和B,大小分别为M * N 和 N * P, 如果C = A * B, 则C的大小为M * P。 矩阵算法的算法表示,伪代码如下: for (i = 0; i < M; ++i){ ...

并行处理 mpi矩阵乘法

基于MPI并行方法实现矩阵乘法 目录 1. 实验目的 3 2. 实验环境 4 3. 实验内容 4 3.1. 实验题目 4 3.2. 实验过程 5 3.2.1. 集群使用 5 3.2.2...

矩阵乘法的并行化算法讨论

矩阵乘法是线性代数里面会讲到的一种非常基础、也十分普遍的计算规则。另一方面,矩阵乘法同时也是并行计算领域常常被用来作为范例的一个话题。它的特点是首先计算量可能相当大,适合利用并行实现来提高效率。其次,...

MPI实现矩阵乘法

矩阵乘法 mpi

  • 2013-01-10 20:51
  • 15KB
  • 下载

矩阵乘法的MPI并行计算

1、问题描述矩阵乘法问题描述如下:  给定矩阵A和B,其中A是m*p大小矩阵,B是p*n大小的矩阵。求C = A*B。求解这个问题最简单的算法是遍历A的行和B的列,求得C的相应元素,时间复杂度O(mn...

矩阵向量乘法

  • 2012-03-10 14:47
  • 921B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)