[MPICH2-dev] mpid/ch3/channel

Noah Yan yanyh at cs.uh.edu
Sat Dec 13 11:14:25 CST 2003


Thanks very much Briian. If I understand correctly, MPI is built on device
and device is on channel, with routins reduced to simplify the development
on device layer and even more less on channel.

More question, see below:

On Fri, 12 Dec 2003, Brian R. Toonen wrote:

> Perhaps some definitions will help.  In MPICH2, a device is code that
> implements the abstract device interface (ADI3).  Device implementation code
> is placed in a subdirectory under src/mpid.
>
> The CH3 device, located in src/mpid/ch3, implements the ADI3 in terms of
> another interface that we call the CH3 (or channel) interface.  The CH3
> interface is significantly smaller than the ADI3 and requires the programmer
> to know substantially less about internal MPICH2 data structures.  A channel
> is code that implements the CH3 interface.  Channel implementation code is
> placed in subdirectory under src/mpid/ch3/channels.  The shared memory (or
> shm) channel is one example of a channel and is located in
> src/mpid/ch3/channel/shm.  Other channels include sockets (sock), Infiniband
> (ib), and sockets and shared memory (ssm).
>
> So, if you are interested in developing a device from scratch, implementing
> all of the ADI3 routines yourself, then you should add a device to
> src/mpid/<DEVICE>.  However, if you want to take advantage of the existing
> CH3 device with its smaller and simpler CH3 interface, then you would add a
> new channel to src/mpid/ch3/channels/<CHANNEL>.
>
> To be fair, the CH3 interface is simpler than the ADI3; however, the ADI3
> provides the most flexibility.  This flexibility can be important when
> squeezing out those last few nanoseconds in order to obtain maximum possible
> performance.  However, we recommend starting with a channel and then moving
> to a separate device only if performance necessitates it.
Yes, I would like first introduce a new channel under
src/mpid/ch3/channels/mynewchannel, and code it.
if I have mynewchannel finished and want to test it, should I configure it
with --with-device=mynewchannel and make it??, especially when I donot
want other channel to join in the communication, only want to test this
channel.

 Also if I understand
correctly, device and channel implement message passing in
non-blocking mode, and blocking send/receive in MPI (like MPI_Send) use
polling(or other, like AM, agent,let's first consider polling) on those
calls to implement block call.
So, if my low-level communication library on which channel build only has blocking
send/receive(e.g. some remote shared memory library), how can I do that?
How those blocking  and nonblocking MPI calls be implemented based on only
blocking mesage passing in channel?

Thanks very much.
Noah Yan

 >
> --brian
>
>
> > -----Original Message-----
> > From: owner-mpich2-dev at mcs.anl.gov
> > [mailto:owner-mpich2-dev at mcs.anl.gov] On Behalf Of Noah Yan
> > Sent: Friday, December 12, 2003 10:47
> > To: mpich2-dev at mcs.anl.gov
> > Subject: [MPICH2-dev] mpid/ch3/channel
> >
> >
> > Dear All,
> >
> > I am new to MPICH2 development. And currently I am involving
> > develop a
> > new device implementation based on MPICH2 ADI3. And I am
> > looking at the
> > source code and implementation doc for it.
> >
> > One questions: src/mpid/ch3 is for ADI3 device
> > implementation, what is
> > the channel dir for in /mpid/ch3/channel, they are folder
> > like ib, shm,
> > sock?? If I understand ADI and channel correclty, they are differenct
> > devices for ADI3, like sock, shm, etc??
> >
> > If I want to have another channel under ch3, should I
> > introduce it under
> > channel dir or directly under mpid/??
> >
> > Thanks very much.
> >
> > Noah Yan
> >
>




More information about the mpich2-dev mailing list