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


 

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

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

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

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

MPI实现矩阵乘法程序--实现MPI传递连续数组

怎么样用用MPI编写两个n阶的方阵A和B的相乘程序,结果存放在方阵C中,A、B和C都在节点0中呢? //#include //#include //#pragma comment(lib,"mpi...

并行处理 mpi矩阵乘法

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

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

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

MPI群通信与矩阵乘法的Fox算法实现

原本以为,MPI天生只能在Linux上运行。但这次却发现了Intel MPI Library 这个好用的东西。基本不需要设置,安上之后,用自己能登录windows的帐号和密码注册就行了。虽然不是局域网...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

MPI群通信与矩阵乘法的Fox算法实现

原本以为,MPI天生只能在Linux上运行。但这次却发现了Intel MPI Library 这个好用的东西。基本不需要设置,安上之后,用自己能登录windows的帐号和密码注册就行了。虽然不是局域网...
  • Augusdi
  • Augusdi
  • 2013年04月28日 13:31
  • 2720
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MPI矩阵与向量乘法
举报原因:
原因补充:

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