Wählt die Prozesse 1, 3, 5, 6 und 7 aus und bildet aus ihnen eine neue Prozeßgruppe
#include "mpi.h"
#include <stdio.h>
#define MAX 2
int main(int argc, char *argv[]) {
int comm_me, group_me, newgroup_me, numprocs, n;
MPI_Group group, newgroup;
int ranges[MAX][3];
if (MPI_Init(&argc, &argv)!=MPI_SUCCESS) {
fprintf( stderr,"MPI_Init failed.\n");
}
MPI_Comm_rank(MPI_COMM_WORLD, &comm_me);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
if (numprocs<8) {
fprintf(stderr,"Program needs at least 8 processes.\n");
MPI_Finalize();
return -1;
}
MPI_Comm_group(MPI_COMM_WORLD, &group);
MPI_Group_rank(group, &group_me);
ranges[0][0]=1; /* erster */
ranges[0][1]=5; /* letzter */
ranges[0][2]=2; /* Schrittweite */
ranges[1][0]=6; /* erster */
ranges[1][1]=7; /* letzter */
ranges[1][2]=1; /* Schrittweite */
n=MAX;
MPI_Group_range_incl(group, n, ranges, &newgroup);
MPI_Group_rank(newgroup, &newgroup_me);
if (newgroup_me!=MPI_UNDEFINED) {
fprintf(stderr,"Proc %d: in group %d, in newgroup %d\n", comm_me,
group_me, newgroup_me);
}
MPI_Group_free(&newgroup);
MPI_Finalize();
}
| Makefile | C-Quelltext |