资源描述:
《矩阵相乘的并行算法的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、仲恺农业工程学院实验报告纸汁算机科学与工程学院(院、系)网络工程专业083班—组并行计算应用试验课学号:200810224311姓名:李志冬实验FI期:2011・05・19教师评定实验三矩阵相乘的并行算法的设计与实现一、实验目的理解和掌握矩阵相乘的并行算法的设计思想以及实现原理二、实验内容编译和运行一个两矩阵相乘算法的并行程序三、实验步骤1使用Vi编辑器输入并行计算的代码,保存在multi.c屮#include#include"mpi.h"#defineNRA62#defineNCA15#d
2、efineNCB7#defineMASTER0#defineFROM_MASTER1#defineFROM_WORKER2MPI_Statusstatus;intmain(intargc,char*argvfl){intnumtasks,taskid,numworkers,source,dest,nbytes,mtype,intsize,dbsize,rows,averow,extra,offset,i,j,k,count;doublea[NRA][NCA],b[NCA][NCB],c[NRA][NCB];i
3、ntsize=sizeof(int);dbsize=sizeof(double);MPI_Init(&argc,&argv);MPI_Comm_rank(MPI_COMM_WORLD,&taskid);MPI_Comm_size(MPI_COMM_WORLD,&numtasks);numworkers=nunitasks・1;if(taskid==MASTER){printf("Numberofworkertasks=%dM,numworkers);for(i=0;i4、NCA;j++)a[i][j]=i+j;for(i=0;i5、Send(&offset,1,MPIJNT,dest,mtype,MPI_COMM_WORLD);MPI_Send(&rows,1,MPI_INT,dest,mtype,MPI_COMM_WORLD);count=rows*NCA;MPI_Send(&a[offset][0],count,MPI_DOUBLE,dest,mtype,MPI_COMM_WORLD);count=NCA*NCB;MPI_Send(&b,count,MPl_DOUBLE,dest,mtype,MPI_COMM_WORLD);offs
6、et=offset+rows;}mtype=FROM_WORKER;for(i=1;i<=numworkers;i++){source=i;MPI_Recv(&offset,l,MPI_INT,source,mtype,MPI_COMM_WORLD,&status);MPI_Recv(&rows,l,MPI」NT,source,mtype,MPI_COMM_WORLD,&stalus);count=rows*NCB;MPI_Recv(&c[offset][0],count,MPI_DOUBLE,source,
7、mtype,MPI_COMM_WORLD,&status);}printf("HereistheresultmatrixH);for(i=0;iMASTER){mtype=FROM_MASTER;source=MASTER;printf(,,Master=%d,mtype=%d,source,mtype);MPI_Recv(
8、&offset,1,MPI」NT,source,mtype,MPl_COMM_WORLD,&status);printf("offset=%d",offset);MPI_Recv(&rows,l,MPI_INT,source,mtype,MPI_COMM_WORLD,&status);printf("rows=%d'rows);count=rows*NCA;MPI_Recv(&a,coun