⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icpi.c

📁 MPICH2+VC6.0,并行计算程序
💻 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 + -