北航并行计算矩阵转置作业

北航并行计算矩阵转置作业

ID:41792839

大小:63.93 KB

页数:5页

时间:2019-09-02

北航并行计算矩阵转置作业_第1页
北航并行计算矩阵转置作业_第2页
北航并行计算矩阵转置作业_第3页
北航并行计算矩阵转置作业_第4页
北航并行计算矩阵转置作业_第5页
资源描述:

《北航并行计算矩阵转置作业》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、矩阵转置并行实现K算法描述:若处理器个数为P,且它们的编号依次是0,1,则将n阶矩阵A分成p个大小为mxm的子块,m=[n/p]0p个子块组成一个子块阵列,记其中第i行第j列的子块为Aij,它含有M(i-l)m+l至第im行中的第(j-l)m+l至第jm列的所有元索。对每一处理器按行主方式赋以二维下标,记编号为i的处理器的二维下标为(v,u),其屮V二[i/“],u二imod",将A的子块存入下标为(v,u)表示的对应处理器中。转置分为两步进行:第一步,子块转置;第二步,处理器内部转置。为了避免对应子块交换数据是处理

2、器发生死锁,可令下三角块先向与之对应的上三角子块发送数据,然后从上三角子块接收数据;上三角子块数据先存放在缓冲区buffer中,然后从与Z对应的卞三角了块接收数据,最后再将缓冲区中的数据发送给下三角子块,流程图如下所示:#include,lstdio.hn#includeHstdlib.h"#include"mpi.h"include"math.h"#defineE0.0001#definea(x,y)a[x*m+y]#defineb(x,y)b[x*m+y]#defineA(x,y)A[x*size+y]#defi

3、neB(x,y)B[x*size+y]#defineintsizesizeof(int)#definefloatsizesizeof(float)#definecharsizesizeof(char)intsize’N;intm;intt;float*AZ*B;doublestarttime;doubletimel;doubletime2;intmy_rank;intp;MPI_Statusstatus;FILE*fdA;voidEnvironment_Finalize(float*a,float*b)free(a)

4、;free(b);intmain(intargc,char**argv)inti,j,k,my_rank/group_size;float*a,*b;intu,v;floattemp;MPI_lnit(&argc,&argv);MPI_Comm_size(MPI_COMM_WORLD,&group_size);MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);p=group_size;if(my_rank==0)starttime=MPI_Wtime();fdA=fopen(,,datal

5、n.txt";,rH);fscanf(fdA,"%d%d",&size,&N);if(size!=N){puts("Theinputiserror「');exit(O);}A=(float*)malloc(floatsize*size*size);B=(float*)malloc(floatsize*size*size);for(i=0;i

6、I_INT,0,MPI_COMM_WORLD);t=(int)sqrt(p);if(t>size)t=size;if(size%t!=O)for(;;){t-;if(size%t==O)break;}p=t*t;m=size/t;a=(float*)malloc(floatsize*m*m);b=(float*)malloc(floatsize*m*m);讦(a==NULL

7、

8、b==NULL)printff'allocatespacefail!");讦(my_rank==0)for(i=0;i

9、=0;j

10、mel=MPI_Wtime();讦((my_rank/t)>(my_rank%t)&&my_rankvp){v=my_rank/t;u=my_rank%t;MPI_Send(a,m*m,MPI_FLOAT,(u*t+v),(u*t+v)zMPI_COMM_WORLD);MPI_Recv(a,m*m,MPI_FLOAX(u*t+v),my_ran

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。