资源描述:
《矩阵相乘的并行算法的设计与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、仲恺农业工程学院实验报告纸计算机科学与工程学院(院、系)网络工程专业083班组并行计算应用试验课学号:200810224311姓名:李志冬实验日期:2011-05-19教师评定实验三矩阵相乘的并行算法的设计与实现一、实验目的理解和掌握矩阵相乘的并行算法的设计思想以及实现原理二、实验内容编译和运行一个两矩阵相乘算法的并行程序三、实验步骤1使用vi编辑器输入并行计算的代码,保存在multi.c中#include#include"mpi.h"#defineNRA62#defineNCA15#defineNCB7#defineMASTER0#defineFROM_MA
2、STER1#defineFROM_WORKER2MPI_Statusstatus;intmain(intargc,char*argv[]){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];intsize=sizeof(int);第7页共7页dbsize=sizeof(double);MPI_Init(&argc,&argv);MPI
3、_Comm_rank(MPI_COMM_WORLD,&taskid);MPI_Comm_size(MPI_COMM_WORLD,&numtasks);numworkers=numtasks-1;if(taskid==MASTER){printf("Numberofworkertasks=%d",numworkers);for(i=0;i4、mworkers;offset=0;mtype=FROM_MASTER;for(dest=1;dest<=numworkers;dest++){rows=(dest<=extra)?averow+1:averow;printf("sending%drowstotask%d",rows,dest);MPI_Send(&offset,1,MPI_INT,dest,mtype,MPI_COMM_WORLD);MPI_Send(&rows,1,MPI_INT,dest,mtype,MPI_COMM_WORLD);count=rows*NCA;MPI_Send(&a[offset][
5、0],count,MPI_DOUBLE,dest,mtype,MPI_COMM_WORLD);count=NCA*NCB;MPI_Send(&b,count,MPI_DOUBLE,dest,mtype,MPI_COMM_WORLD);offset=offset+rows;}mtype=FROM_WORKER;for(i=1;i<=numworkers;i++){source=i;MPI_Recv(&offset,1,MPI_INT,source,mtype,MPI_COMM_WORLD,&status);MPI_Recv(&rows,1,MPI_INT,source,mtype
6、,MPI_COMM_WORLD,&status);count=rows*NCB;MPI_Recv(&c[offset][0],count,MPI_DOUBLE,source,mtype,MPI_COMM_WORLD,&status);}printf("Hereistheresultmatrix");for(i=0;iMASTER){mtype=FROM_MASTER;source=MA
7、STER;printf("Master=%d,mtype=%d",source,mtype);MPI_Recv(&offset,1,MPI_INT,source,mtype,MPI_COMM_WORLD,&status);printf("offset=%d",offset);MPI_Recv(&rows,1,MPI_INT,source,mtype,MPI_COMM_WORLD,&status);printf("rows=%d",rows);count=rows*NCA;MPI_