📄 icpi.c
字号:
//求 A[2,2]=B[2,2]+C[2,2]+D[2,2]
#include "stdio.h"
#include "mpi.h"
#define SIZE 2
int main(int argc, char **argv)
{
int j;
int rank,size,root;
int B[SIZE][SIZE],C[SIZE][SIZE],D[SIZE][SIZE];
int A[SIZE][SIZE];
int MID[3];
int SUM=0;
root=0;
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &size);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
if (rank==root)
{
B[0][0]=1;B[0][1]=2;
B[1][0]=3;B[1][1]=4;
C[0][0]=3;C[0][1]=4;
C[1][0]=5;C[1][1]=6;
D[0][0]=5;D[0][1]=6;
D[1][0]=7;D[1][1]=8;
}
MPI_Barrier(MPI_COMM_WORLD);
MPI_Scatter(B,1,MPI_INT,&MID[0],1,MPI_INT,root,MPI_COMM_WORLD);
MPI_Scatter(C,1,MPI_INT,&MID[1],1,MPI_INT,root,MPI_COMM_WORLD);
MPI_Scatter(D,1,MPI_INT,&MID[2],1,MPI_INT,root,MPI_COMM_WORLD);
for(j=0;j<3;j++)
SUM=SUM+MID[j];
MPI_Gather(&SUM,1,MPI_INT,A,1,MPI_INT,root,MPI_COMM_WORLD);
/* if(rank==1)
printf("%d %d %d %d %d\n\n",rank,SUM,MID[0],MID[1],MID[2]);
*/
if (rank==0)
{
// printf("%d %d %d %d %d\n\n",rank,SUM,MID[0],MID[1],MID[2]);
printf("%d %d\n",A[0][0],A[0][1]);
printf("%d %d\n",A[1][0],A[1][1]);
}
MPI_Finalize();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -