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

📄 q1.cpp

📁 10 Mpi source examples for begginers
💻 CPP
字号:
# include <mpi.h>
# include <stdlib.h>
# include <stdio.h>

# define NPROCS 9

int main(argc,argv)
int argc;
char *argv[]; {
  int rank, new_rank, numtasks,i,
      ranks1[3]={0,1,2}, ranks2[3]={3,4,5}, ranks3[3]={6,7,8};
  MPI_Group  orig_group, new_group1, new_group2, new_group3, group_union, f_group;


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

  if (numtasks != NPROCS) {
    printf("Must specify MP_PROCS= %d. Terminating.\n", NPROCS);
    MPI_Finalize();
  }

//  sendbuf = rank;

  
  MPI_Comm_group(MPI_COMM_WORLD, &orig_group);


  for ( rank=1; rank<=NPROCS; rank++)
  {
  switch (rank % 3)
  {
      case 0:
          MPI_Group_incl(orig_group,NPROCS/3,ranks1,&new_group1);
          break;
      case 1:
          MPI_Group_incl(orig_group,NPROCS/3,ranks2,&new_group2);
          break;
      case 2:
          MPI_Group_incl(orig_group,NPROCS/3,ranks3,&new_group3);
          break;
  };
  }
	
	MPI_Group_union(new_group1,new_group2,&group_union);
	MPI_Group_difference(group_union,new_group3,&f_group);
	MPI_Group_rank (f_group, &new_rank);

 
	if (new_rank!=MPI_UNDEFINED)
	{
		printf("\nrank((1+2)-3)=  %d\n ",new_rank);
	}
  MPI_Finalize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -