[MPICH] Can I ask MPI to not copy the data to shared-mem ?

chong tan chong_guan_tan at yahoo.com
Tue Oct 9 15:44:18 CDT 2007


I have a lot of issues with my legal department on 3rd party code.  I jumped through hoops to get approval starting at 1.0.4.  Every litle change is the begining of endless paper works and reviews.  The approval to use 106 was on conditions that I use only the enahncment and bug fixes in that version.  So, I have to stay with what I am approved for.
   
  For now, I will just write some if..else in my code, and use an external flag to control it.
   
  tan
  

Darius Buntinas <buntinas at mcs.anl.gov> wrote:
  
Hmm. I can't see a way that an MPI implementation could (efficiently 
and reliably) check that two virtual addresses from different processes 
point to the same location in a shared memory region. An MPI 
implementation wouldn't have enough information to do what you're asking.

Rusty Lusk mentioned to me that there was a message-passing library 
called p4 that would allow this kind of thing. You would allocate a 
message using p4_msg_alloc(), then fill the message and send it. The 
receiver can receive the message without specifying a destination 
buffer. In this case, on a shared memory machine, the receiver gets a 
pointer to the original buffer allocated by the sender using 
p4_msg_alloc(), and no copy is made.

-d

On 10/09/2007 11:53 AM, chong tan wrote:
> Well, shared-mem and sending 0 byte does not work if the processes are 
> on differnt boxes. My thought is that since MPICH already make the 
> dicission on wheter to use shared memory. It is a nature fit that the 
> 'no copy' rule be applied in that domain.
> 
> thanks
> tan
> 
> 
> */Darius Buntinas /* wrote:
> 
> 
> 
> On 10/08/2007 01:38 PM, chong tan wrote:
> > I am interested in the case that the send and recieve buffer are the
> > same buffer allocated from shared-memory, in which case there is
> no need
> > for the data copying, send and recieve just only do the sync.
> 
> In this case, why not use a zero-byte message? The sender fills in the
> shared buffer, does a write barrier, then calls MPI_Send with a
> zero-byte message. The receiver calls MPI_Recv, to receive zero bytes,
> then when it returns, it does a read barrier and reads the data from
> the
> shared buffer.
> 
> > A side question, when MPI_Send is called, does MPICH copy the
> data into
> > a intermediate global buffer ? and have the data copy from this same
> > buffer on MPI_Recv call ?
> 
> It depends on the channel and what you're sending. For non-contiguous
> data, the data may be packed into a contiguous buffer before sending
> and
> unpacked from a contiguous buffer when receiving. Otherwise, if a
> channel uses sockets, an intermediate buffer is not used by MPICH2, but
> the OS will perform intermediate copies. For a channel that uses a
> high-performance network, an intermediate buffer is used for small
> messages, but for large messages the data is transferred directly from
> or into the user's buffer.
> 
> -d
> 
> > tan
> >
> >
> > */Darius Buntinas /* wrote:
> >
> >
> > Well, you specify one buffer in the call to MPI_Send and another
> buffer
> > in MPI_Recv, so there would have to be at least one copy. You
> can't do
> > it without any copies (otherwise, how would the data get from the
> send
> > buffer to the receive buffer?).
> >
> > MPICH2 does support communication over shared memory (as opposed to
> > over
> > a network) which improves performance for intranode communication.
> > Configure with --with-device=ch3:ssm or --with-device=ch3:nemesis.
> >
> > Darius
> >
> >
> > On 10/08/2007 12:22 PM, chong tan wrote:
> > > If I the pointer passed to MPI_Send and MPI_Recieve are already
> > shared
> > > memory, and need not be copied at all ?
> > >
> > > If so, How ?
> > >
> > > thanks
> > > tan
> > >
> > >
> > >
> >
> ------------------------------------------------------------------------
> > > Be a better Heartthrob. Get better relationship answers
> > > from
> > > someone who knows.
> > > Yahoo! Answers - Check it out.
> >
> >
> >
> ------------------------------------------------------------------------
> > Need a vacation? Get great deals to amazing places
> > on
> > Yahoo! Travel.
> 
> 
> ------------------------------------------------------------------------
> Boardwalk for $500? In 2007? Ha!
> Play Monopoly Here and Now 
> 
> (it's updated for today's economy) at Yahoo! Games.



       
---------------------------------
Boardwalk for $500? In 2007? Ha! 
Play Monopoly Here and Now (it's updated for today's economy) at Yahoo! Games.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/mpich-discuss/attachments/20071009/2f4687ad/attachment.htm>


More information about the mpich-discuss mailing list