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

  • 63
  • 0
  • 约 6页
  • 2016-12-25 发布于重庆
  • 举报
矩阵转置并行实现 1、算法描述: 若处理器个数为p,且它们的编号依次是0,1,…,p-1,则将n阶矩阵A分成p个大小为mxm的子块,m=[n/p]。p个子块组成一个子块阵列,记其中第i行第j列的子块为Aij,它含有第(i-1)m+1至第im行中的第(j-1)m+1至第jm列的所有元素。对每一处理器按行主方式赋以二维下标,记编号为i的处理器的二维下标为(v,u),其中v=[i/],u=imod,将A的子块存入下标为(v,u)表示的对应处理器中。转置分为两步进行:第一步,子块转置;第二步,处理器内部转置。为了避免对应子块交换数据是处理器发生死锁,可令下三角块先向与之对应的上三角子块发送数据,然后从上三角子块接收数据;上三角子块数据先存放在缓冲区buffer中,然后从与之对应的下三角子块接收数据,最后再将缓冲区中的数据发送给下三角子块,流程图如下所示: 2、程序代码: #include stdio.h #include stdlib.h #include mpi.h #include math.h #define E 0.0001 #define a(x,y) a[x*m+y] #define b(x,y) b[x*m+y] #define A(x,y) A[x*size+y] #define B(x,y) B[x*size+y] #define intsize sizeof

文档评论(0)

1亿VIP精品文档

相关文档