LAM/MPI logo

LAM/MPI General User's Mailing List Archives

  |   Home   |   Download   |   Documentation   |   FAQ   |   all just in this list

From: Prashanth (pcharapa_at_[hidden])
Date: 2004-03-09 21:51:05


Hello,

MPI_Put probably provides the functionality you are looking for. MPI_Put
though requires that the receiving process have a buffer large enough to
hold the data that is being 'put'.

The following URL seems to give very good information on MPI_Put and the
subsequent synchronization needed (not necessarily global).

http://www.epcc.ed.ac.uk/overview/publications/training_material/tech_watch/98_tw/techwatch-mpi2/MPI2-3.html

MPI_Put does not require global synchronization nor global broadcasting.

Hope this helps.

Prashanth Charapalli,
LAM/MPI Team.

Thus spake Lei_at_ICS in the message sent on Tue, 9 Mar 2004

->Hi all,
->
->The following simple example illustrates
->what I wanted to do with one-sided communication.
->
->I have three processors p1, p2, and p3.
->On p1 there is a large array A[10000]
->that needs to be sent to p2 or p3 depending
->on a parameter X which is computed on
->p1. X is not available initially on p2 or p3.
->
->if(X < 0.5)
-> put A[10000] to p2;
->else
-> put A[10000] to p3;
->
->Now after this I want whoever owns A[]
->to compute using it. In other words,
->p2 or p3, but not p1 will compute using A[].
->This is for efficiency.
->
->I would like to have p2 or p3 be interrupted
->or awakened by p1 only when the data A[]
->is coming to the processor. In other words,
->the one who does not get the data should
->not waste a single CPU cycle doing busy
->waiting. A solution with a global synchronization
->or broadcasting is not desirable.
->
->Is there a way to do it with MPI-2 one-sided
->communication?
->
->Thanks a lot for your help in advance,
->-Lei mailto:pan_at_[hidden]
->
->_______________________________________________
->This list is archived at http://www.lam-mpi.org/MailArchives/lam/
->