資源描述:
《矩陣相乘的并行算法的設計與實現(xiàn)》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在學術論文-天天文庫。
1、仲愷農(nóng)業(yè)工程學院實驗報告紙汁算機科學與工程學院(院、系)網(wǎng)絡工程專業(yè)083班—組并行計算應用試驗課學號:200810224311姓名:李志冬實驗FI期:2011?05?19教師評定實驗三矩陣相乘的并行算法的設計與實現(xiàn)一、實驗目的理解和掌握矩陣相乘的并行算法的設計思想以及實現(xiàn)原理二、實驗內(nèi)容編譯和運行一個兩矩陣相乘算法的并行程序三、實驗步驟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