Newsgroups: comp.parallel.mpi
From: impellus@ames.ucsd.edu (Tom Impelluso)
Subject: inter-"process group" communication
Organization: UC San Diego, AMES Department
Date: 24 Oct 1995 01:19:31 GMT
Message-ID: <46hev3$nis@soenews.ucsd.edu>

Hi
I just posted twice (once in error) about a problem I was having.
I am now getting my code to do what I want.

In a nutshell:
        include "mpif.h"
        integer stat(MPI_STATUS_SIZE), irank(2)
        master = 0
        idata = -5

        call MPI_INIT(ierr)
        call MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierr)
        call MPI_COMM_RANK(MPI_COMM_WORLD, mygid, ierr)
        call MPI_COMM_GROUP(MPI_COMM_WORLD, iwgrp,ierr)

        irank(1) = 0
        irank(2) = 1
        call MPI_GROUP_EXCL(iwgrp, 2, irank, isgrp, ierr)
        call MPI_COMM_CREATE(MPI_COMM_WORLD, isgrp, isend, ierr)

        if(mygid.ge.2) call MPI_COMM_RANK(isend,mysid,ierr)

        if(mygid.eq.2)then
                 call MPI_SEND(idata,1,MPI_INTEGER,1,0,isend,ierr)
        endif

        if(mygid.ge.2.and.mysid.eq.1) then
                call MPI_RECV(i, 1, MPI_INTEGER, 0,
     &                 MPI_ANY_TAG, isend,stat, ierr)
        print *,i
        endif
        call MPI_FINALIZE(ierr)
        END

But, if you notice, in this case, processors IN THE SAME group
can only send data.  My question is this:
can one send and receive to designated rankings BETWEEN two
different groups?

Tom

