Funktionsübersicht . . Gruppen, Kontexte und Kommunikatoren

Hilfesystem für den Message Passing Interface Standard MPI


Beispiel

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