全文预览

Cannon矩阵乘法MPI实现及性能的分析

上传者:科技星球 |  格式:doc  |  页数:8 |  大小:0KB

文档介绍
n,imax,jmin,jmax; int sp= (int)sqrt(p); ...页眉....页脚/* 根处理器中的 c 赋给总矩阵 C */ for (i=0;i<np;i++) { for(j=0;j<np;j++) C[i][j]=c[i*np+j]; } for (k=1;k<p;k++) { /* 根处理器从其他处理器接收相应的分块 c*/ MPI_Recv(c, np*np, MPI_DOUBLE, k, 1, M_WORLD, &status); //printf("rank = %d\n", k);Printc(); imin = (k/ sp) * np; imax = imin + np- 1; jmin = (k% sp) * np; jmax = jmin + np -1; /* 将接收到的 c 拷至 C 中的相应位置, 从而构造出 C*/ for(i=imin,m=0; i<=imax; i++,m++) { for(j=jmin,s=0; j<=jmax; j++,s++) C[i][j]=c[m*np+s]; }}} void Mutiply() // 矩阵相乘{ int i,j,k; for(i=0; i<np; i++) for(j=0; j<np; j++) for(k=0; k<np; k++) ...页眉....页脚 c[i*np+j] += a[i*np+k]*b[ j *np+ k ]; //b 按列优先来搞} 注意: 1.以.c 来编译 2.realease 需单独配环境,并以 realease 跑比较快 3.64 位的 mpich2 要以 x64 平台编译,否则通不过 4.mpiexec 中一定要勾选以单独窗口运行,否则跑不动 5. 矩阵乘法, 第二个矩阵按列优先存储性能提升数倍。若以二维存储, 先转置再乘, 同样的效果。

收藏

分享

举报
下载此文档