No worries - these are good questions. :-) Yes, it is very much our intent to allow these generic byte-transfer plugins to be used by things other than MPI. MPI is currently the focus and is what HPC is using *today* (and probably for quite a long time -- oodles of today's applications will be tomorrow's legacy application). But *tomorrow*, who knows what the favorite programming genre will be? UPC? CoArray Fortran? ...?
The intent of the specific layering of OPAL, ORTE, and OMPI was such that one could build other transport APIs on top of the fundamentals that we have created. Hence, you could have JPI (John's Passing Interface) implemented on top of ORTE/OPAL and re-use the BMLs/BTLs, etc. That being said, the configure/build system is not well setup (yet) to do this, meaning that you'll still need to build the whole MPI layer to get the BMLs/BTLs. Hence, this "build other things on top of the high-speed fundamentals in the OMPI layer" is goal that hasn't yet been realized. But it's definitely in the roadmap. > -----Original Message----- > From: users-boun...@open-mpi.org > [mailto:users-boun...@open-mpi.org] On Behalf Of John Robinson > Sent: Friday, May 26, 2006 9:32 AM > To: Open MPI Users > Subject: Re: [OMPI users] Help regarding send/recv code > > Jeff, > > How about writing applications that use the OMPI plugins > as-is? Suppose > I want to write an application that makes use of generic > byte-movement > operations. Is it feasible to write my applicaiton to use a > btl plugin? > > - my apologies in advance if this is well covered in the docs you > mention - just slap me down ;-). > > thanks, > /jr > --- > Jeff Squyres (jsquyres) wrote: > > Open MPI is based on a component architecture, where > plugins are used > > for various types of back-end functionality. > > > > For MPI point-to-point communication, there are three types > of plugins > > that are used: > > > > - pml: Point to Point Messaging Layer (what is directly > invoked behind > > MPI_SEND and friends). This layer understands MPI semantics. > > - btl: Byte Transfer Layer (lowest layer "network driver" for > > communicating across specific networks). This layer is completely > > MPI-agnostic; it just pushes bytes between endpoints (usually > > processes). > > - bml: BTL Management Layer (for loading, unloading, and generally > > run-time managing multiple BTL plugins). > > > > Note that previous generations of Open MPI used "ptl" > plugins instead of > > "btl" plugins. > > > > I would suggest reading the "Open MPI: A Flexible High > Performance MPI" > > paper on the Open MPI web site (see the "Publications" > section) to get > > an overview of the OB1 pml plugin. It describes the basis > and top-level > > design of how the pml, bml, and btls interact at run-time. > Also read > > "InfiniBand Scalability in Open MPI" (also in the > publications section). > > It is much more recent and, although somewhat IB-specific, > also gives a > > good overview of how things work. Finally, look at the MPI > Developer's > > Workshop slides. They probably provide the best > description of what is > > happening for point-to-point messaging (there's whole > sections devoted > > to this). > > > > If you simply want to implement a new network driver (e.g., raw > > ethernet), you will want to write a new BTL plugin. If you > want to play > > with various scheduling policies, you probably want to > modify / write a > > new PML plugin. This code is not well documented other > than comments in > > the code and the description of the plugin interfaces; your > best bet is > > to ask questions here on the mailing list. > > > > I strongly recommend working with a Subversion checkout -- > things have > > changed since the 1.0 release. See http://www.open-mpi.org/svn/ for > > details on getting a subversion checkout. > > > > Within the code base, you'll be working within the ompi/ > tree (the MPI > > layer). You'll find the MPI C API bindings in ompi/mpi/c/*.c (e.g., > > MPI_SEND is in ompi/mpi/c/send.c). Also in ompi/ is the > mca/ directory > > which, in turn, has subdirectories for each kind of plugin (a.k.a. > > "frameworks"), so you'll see subdirectories for pml/ and > bml/ and btl/. > > In each framework's directory are subdirectories for each > plugin (a.k.a. > > "components"). So you'll see ompi/mca/pml/ob1 (code for the ob1 PML > > plugin), ompi/mca/bml/r2 (code for the r2 BML plugin), > ompi/mca/btl/tcp > > (code for the tcp BTL plugin), etc. > > > > This is probably enough to get you started. Let us know > what your next > > questions are. > > > > > > > > > >>-----Original Message----- > >>From: users-boun...@open-mpi.org > >>[mailto:users-boun...@open-mpi.org] On Behalf Of Mahesh Barve > >>Sent: Tuesday, May 23, 2006 1:24 AM > >>To: us...@open-mpi.org > >>Subject: [OMPI users] Help regarding send/recv code > >> > >>Hi, > >> I am a novice to openmpi. Just managed to get openmpi > >>running on my system. > >> I would like to modify the code for send and recv. > >>The target lower level device will be ethernet and > >>infiniband. I would like to know the files/functions > >>to look for. Could you please guide me in this. > >> thanks, > >>-Mahesh > >> > >> > >> > >>__________________________________________________ > >>Do You Yahoo!? > >>Tired of spam? Yahoo! Mail has the best spam protection around > >>http://mail.yahoo.com > >>_______________________________________________ > >>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 > > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users >