MPI学习笔记:进程组与通信域

本文详细介绍了MPI中的进程组和通信域概念,包括进程组的组成与管理,通信域的定义及其与进程组的关系。重点讨论了MPI_Comm_split函数的使用,以及如何创建组间通信域。通过实例展示了如何在不同通信域内执行操作,强调了操作限制和进程编号变化的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程组与通信域

进程组

进程组是通信域的重要组成部分,一个进程组是一组不同进程的有序集合。同一进程可以属于不同的进程组,编号也不一定相同。
在这里练习了进程组管理中的常用调用函数。使用不同函数定义了不同的进程组。在之前的MPI学习中一直使用的通信域MPI_COMM_WORLD所对应的进程组就是全体进程的集合。可以直接对MPI_COMM_WORLD通信域执行MPI_Comm_group来获得包含全体进程的进程组。

...
//打印某个进程组中进程在MPI_COMM_WORLD中的进程号
void printf_ranknumber_in_world(MPI_Group group,MPI_Group world_group)
{
   
   
  int size;
  int *rank1;
  int *rank2;
  MPI_Group_size(group,&size);
  rank1=(int *)malloc(size*sizeof(int));
  rank2=(int *)malloc(size*sizeof(int));
  for(int i=0;i<size;i++){
   
   rank1[i]=i;}
  MPI_Group_translate_ranks(group,size,rank1,world_group,rank2);
  for(int j=0;j<size;j++){
   
   printf("%d,",rank2[j]);}
  printf("\n");
  MPI_Group_free(&group);
}

int main(int argc,char** argv)
{
   
   
  int myrank,proc_nums;
  MPI_Group WORLD_GROUP,MY_GROUP12345,MY_GROUP67,MY_GROUP54321,MY_GROUP13567;
  MPI_Group MY_GROUP12345_,MY_GROUP1234567;
  MPI_Comm MY_COMM;
  int rank_operation[]={
   
   0,6,7};
  int *rank_resort;
  int resort_size;
  int ranges[2][3];

  MPI_Init
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值