MPI one-sided stuff is actually pretty complicated; I wouldn't suggest it for a 
beginner (I don't even recommend it for many MPI experts ;-) ).

Why not look at the MPI_SOURCE in the status that you got back from the 
MPI_RECV?  In fortran, it would look something like (typed off the top of my 
head; forgive typos):

-----
integer, dimension(MPI_STATUS_SIZE) :: status
...
call MPI_Recv(buffer, ..., status, ierr)
-----

The rank of the sender will be in status(MPI_SOURCE).


On Jan 9, 2014, at 6:29 AM, Christoph Niethammer <nietham...@hlrs.de> wrote:

> Hello,
> 
> I suggest you have a look onto the MPI one-sided functionality (Section 11 of 
> the MPI Spec 3.0).
> Create a window to allow the other processes to access the arrays A directly 
> via MPI_Get/MPI_Put.
> Be aware of synchronization which you have to implement via MPI_Win_fence or 
> manual locking.
> 
> Regards
> Christoph
> 
> --
> 
> Christoph Niethammer
> High Performance Computing Center Stuttgart (HLRS)
> Nobelstrasse 19
> 70569 Stuttgart
> 
> Tel: ++49(0)711-685-87203
> email: nietham...@hlrs.de
> http://www.hlrs.de/people/niethammer
> 
> 
> 
> ----- Ursprüngliche Mail -----
> Von: "Pradeep Jha" <prad...@ccs.engg.nagoya-u.ac.jp>
> An: "Open MPI Users" <us...@open-mpi.org>
> Gesendet: Donnerstag, 9. Januar 2014 12:10:51
> Betreff: [OMPI users] Calling a variable from another processor
> 
> 
> 
> 
> 
> I am writing a parallel program in Fortran77. I have the following problem: 
> 1) I have N number of processors.
> 2) Each processor contains an array A of size S.
> 3) Using some function, on every processor (say rank X), I calculate the 
> value of two integers Y and Z, where Z<S. (the values of Y and Z are 
> different on every processor)
> 4) I want to get the value of A(Z) on processor Y to processor X. 
> 
> I thought of first sending the numerical value X to processor Y from 
> processor X and then sending A(Z) from processor Y to processor X. But it is 
> not possible as processor Y does not know the numerical value X and so it 
> won't know from which processor to receive the numerical value X from. 
> 
> I tried but I haven't been able to come up with any code which can implement 
> this action. So I am not posting any codes. 
> 
> Any suggestions? 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to: 
http://www.cisco.com/web/about/doing_business/legal/cri/

Reply via email to