grouptest.c

来自「MPICH是MPI的重要研究,提供了一系列的接口函数,为并行计算的实现提供了编程」· C语言 代码 · 共 62 行

C
62
字号
/* 	$Id: grouptest.c,v 1.2 1998/11/28 04:04:56 gropp Exp $	 */#include "mpi.h"#include <stdio.h>#include "test.h"int main( int argc, char **argv ){    int rank, size, i;    MPI_Group group1, group2, group3, groupall, groupunion, newgroup;    MPI_Comm newcomm;    int ranks1[100], ranks2[100], ranks3[100];    int nranks1=0, nranks2=0, nranks3=0;    MPI_Init( &argc, &argv );    MPI_Barrier( MPI_COMM_WORLD );    MPI_Comm_rank( MPI_COMM_WORLD, &rank );    MPI_Comm_size( MPI_COMM_WORLD, &size );    MPI_Comm_group( MPI_COMM_WORLD, &groupall );    /* Divide groups */    for (i=0; i<size; i++)       if ( (i%3)==0 )	ranks1[nranks1++] = i;      else if ( (i%3)==1 )	ranks2[nranks2++] = i;      else	ranks3[nranks3++] = i;    MPI_Group_incl ( groupall, nranks1, ranks1, &group1 );    MPI_Group_incl ( groupall, nranks2, ranks2, &group2 );    MPI_Group_incl ( groupall, nranks3, ranks3, &group3 );    MPI_Group_difference ( groupall, group2, &groupunion );    MPI_Comm_create ( MPI_COMM_WORLD, group3, &newcomm );    newgroup = MPI_GROUP_NULL;    if (newcomm != MPI_COMM_NULL)    {	/* If we don't belong to group3, this would fail */	MPI_Comm_group ( newcomm, &newgroup );    }    /* Free the groups */    MPI_Group_free( &groupall );    MPI_Group_free( &group1 );    MPI_Group_free( &group2 );    MPI_Group_free( &group3 );    MPI_Group_free( &groupunion );    if (newgroup != MPI_GROUP_NULL)    {	MPI_Group_free( &newgroup );    }    /* Free the communicator */    if (newcomm != MPI_COMM_NULL)	MPI_Comm_free( &newcomm );    Test_Waitforall( );    MPI_Finalize();    return 0;}

⌨️ 快捷键说明

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