MPI矩阵转置

问题描述 投票:0回答:2

大家好,我想做矩阵转置,但我是个完全的新手,请帮助我完成矩阵转置:请建议我,如果有任何来源在互联网上学习关于mpi.Should I start parallel programming first?请解决下面的空白代码......。

#include <stdio.h>
#include <mpi.h>

int main(int argc,char* argv[])
{
int rank,size,m[4];
int matrix[4][4]={
    {1,2,3,4},
    {5,6,7,8},
    {9,10,11,12},
    {13,14,15,16}
}
int transpose[4][4];

MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);

if (rank==0)
{
//Store first row of the matrix.
}
if(size!=4)
{
 exit(0);
}
else
{

}

MPI_Finalize();
}
c parallel-processing mpi mpich
2个回答
0
投票

你可以看到这里的参考资料:1. 使用MPI_Type_create_subarray发送时,可以对数组进行转置吗?2. http:/suraj.lums.edu.pk~ahmadhresourcescodematrixtransp.c。3. https:/www.macs.hw.ac.uk~hwloidlCoursesF21DPsrcsmatrix4.c。

但首先我觉得你应该尝试一些简单的例子,比如并行一些for循环的计算,比如sum或multi。


0
投票

在没有MPI知识的情况下,解决矩阵转置确实是很困难的。如果你知道基本的概念,那么解决起来就很容易。作为一个起点,你可以访问 网站 的MPI课程。

第一步,熟悉点对点的通信机制,尝试使用 MPI_SendMPI_Recv 来解决一些简单的任务,正如在评论中所指出的那样 高性能标志.

其次,转入集体作业,如 MPI_Scatter, MPI_Gather 等来完成同样的任务。

然后你会熟悉基本概念,有了这些知识你就可以解决你的任务。

这个解决方案 1, 2 解决矩阵转置问题,使用 MPI_Alltoall 例程 Gilles Gouaillardet).

© www.soinside.com 2019 - 2024. All rights reserved.