[MPICH] Porting the MPICH "back-end"

William Gropp gropp at mcs.anl.gov
Sat Jan 13 14:37:55 CST 2007


Sorry for the null message; it escaped.

What you want to do is exactly what MPICH2 is intended to support.

The basic channel interface is pretty simple.  The best place to look  
is in mpich2/src/mpid/ch3/src .  This shows how the full ADI is  
implemented in terms of the channel routines.  If you ignore dynamic  
processes to begin with, you really only need a init/finialize/ 
progress/read/readv/write/writev set of routines.  You should be able  
to implement these using a file system, though be careful; systems  
like NFS are not coherent so different processes may not see data  
when you might expect.

The actual hierarchy is

MPICH2
ADI3
CH3 (there are other implementations of ADI3, such as that used by  
IBM for BG/L)
SOCK, SHM, Nemesis, ...

What you should do is start by creating a new CH3 channel.  This is  
the smallest set of routines; look at the sock or shm channel for an  
illustration (the sock channel uses a somewhat complicated interface  
to socket operations; a simpler interface is possible and in fact  
would provide better performance, so when looking at the code, don't  
look *too* closely :) ).

An alternative is to build a communication method for the Nemesis  
channel; this is our newest, high-performance, multi-method channel.   
However, for what you want to do, I suspect building a ch3 channel is  
more appropriate.

Please keep asking questions; once I'm back home, I can help provide  
more documentation for you.

Bill

On Jan 12, 2007, at 12:45 PM, Daniel Marques wrote:

> Rajeev & Bill,
>
> Thanks for the replies.
>
> Before I get started with anything, I would like to gain some insight
> into the complexity of implementing my own MPICH backend.  From the
> documentation I saw on the web, it seems that the 'lower' parts of
> MPICH could be built to conform to one of two APIs, the ADI   or the
> channel interface.  One of the documents makes it seem that writing an
> implementation of the channel interface would be the easier of the
> two.  For MPICH 1, at least, it states that there are only five
> functions that one would need to implement.
> (http://www-unix.mcs.anl.gov/mpi/mpich1/papers/mpicharticle/ 
> node23.html#Node23)
>
> What I'd like to do (as a feasibility experiment, not the final goal)
> would be to build a very simple and low performance implementation
> that used a basic mechanism, e.g. the shared file system, for
> communication.  From my understanding of the above document, such an
> implementation should be relatively easy to develop.  Does that sound
> reasonable, or am I missing something crucial?
>
> Has the channel interface changed much since that document was
> written?  If not, is there anywhere a description of that API and
> notes on how to integrate a new implementation with the MPICH code
> base?
>
> Thanks for all your help.
>
> Dan
>
>
> On 1/12/07, William Gropp <gropp at mcs.anl.gov> wrote:
>> Hi,
>> In addition to some of the documentation that is available (and the
>> information on the web site), we'd be happy to talk to you about the
>> current state, answer questions that you may have about the design,
>> and even entertain changes that might make your project easier.
>>
>> Bill
>>
>> On Jan 8, 2007, at 8:33 PM, Daniel Marques wrote:
>>
>> > Hello.
>> >
>> > I'm new to MPICH, so please excuse if any of these questions have
>> > obvious answers or if my terminology is completely wrong.  I  
>> thank you
>> > for your help in advance.
>> >
>> > If I understand it correctly, MPICH is composed of a bunch of  
>> software
>> > layers - the idea being that MPICH can be ported to a new  
>> platform by
>> > providing a platform-specific implementation of one these lower  
>> layers
>> > and placing the rest of the MPICH stack above it.  Some of (the
>> > perhaps really outdated) information I read on the web makes it  
>> seem
>> > that the lowest such levels are or can be, rather simple.
>> >
>> > I'm interested in developing my own 'back-end' for MPICH (as a
>> > research implementation for testing various coordination protocols,
>> > etc.) and was wondering if there existed any resources  
>> describing the
>> > architecture of MPICH and exactly how one would go around  
>> implementing
>> > their own back end.  Any links, references to the code, pointers to
>> > previous discussions, etc, will be most appreciated.
>> >
>> > Thanks a lot!
>> >
>> > Dan
>> >
>>
>>
>




More information about the mpich-discuss mailing list