1 /* $Id: grouptest.c,v 1.2 1998/11/28 04:04:56 gropp Exp $ */
7 int main( int argc, char **argv )
10 MPI_Group group1, group2, group3, groupall, groupunion, newgroup;
12 int ranks1[100], ranks2[100], ranks3[100];
13 int nranks1=0, nranks2=0, nranks3=0;
15 MPI_Init( &argc, &argv );
16 MPI_Barrier( MPI_COMM_WORLD );
17 MPI_Comm_rank( MPI_COMM_WORLD, &rank );
18 MPI_Comm_size( MPI_COMM_WORLD, &size );
19 MPI_Comm_group( MPI_COMM_WORLD, &groupall );
22 for (i=0; i<size; i++)
24 ranks1[nranks1++] = i;
26 ranks2[nranks2++] = i;
28 ranks3[nranks3++] = i;
30 MPI_Group_incl ( groupall, nranks1, ranks1, &group1 );
31 MPI_Group_incl ( groupall, nranks2, ranks2, &group2 );
32 MPI_Group_incl ( groupall, nranks3, ranks3, &group3 );
34 MPI_Group_difference ( groupall, group2, &groupunion );
36 MPI_Comm_create ( MPI_COMM_WORLD, group3, &newcomm );
37 newgroup = MPI_GROUP_NULL;
38 if (newcomm != MPI_COMM_NULL)
40 /* If we don't belong to group3, this would fail */
41 MPI_Comm_group ( newcomm, &newgroup );
45 /* MPI_Group_free( &groupall );
46 MPI_Group_free( &group1 );
47 MPI_Group_free( &group2 );
48 MPI_Group_free( &group3 );
49 MPI_Group_free( &groupunion );*/
50 if (newgroup != MPI_GROUP_NULL)
52 //MPI_Group_free( &newgroup );
55 /* Free the communicator */
56 if (newcomm != MPI_COMM_NULL)
57 //MPI_Comm_free( &newcomm );