Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI devel] Amateur Guidance
From: Eugene Loh (Eugene.Loh_at_[hidden])
Date: 2008-11-03 10:39:33

Timothy Hayes wrote:
I'm a regular OpenMPI user but I'm new to the strange world of development and hence this mailing list. I'm currently working on a project that involves OpenMPI and I was wondering if I might get some guidance and pointers in the right direction.
The problem I'm having is jumping into the OpenMPI code. I've read two papers I found on the homepage: "Open MPI: Goals, Concept, and Design of a Next Generation MPI Implementation" and "TEG: A High-Performance, Scalable, Multi-Network Point-to-Point Communications Methodology" which gave me some insight about the MCA, PML and PTL. However, I'm finding it quite difficult to get a foothold into the codebase and I'm wondering if anyone might be able to point me to a guide or some documentation that might help get me started.

I'm very eager to do this project well and contribute to the OpenMPI community, and if anyone has some advice or pointers I'd really appreciate it.

I'm no expert.  Indeed, I'm quite the opposite.  I started looking at OMPI a few months ago.  As a newbie, I'd say:

There seems to be no really great docs here for developers.  You just need to start reading source code, asking questions, stepping through with a debugger, etc., and immerse yourself for a while ... a few months?  This is a little frustrating since one of the objectives of OMPI is to provide a framework in which a researcher should be able to modify only one component and do something interesting.  Meanwhile, there is no good description of what the interfaces are among the various components nor what they all really do.  And, you do kind of need an understanding of what other pieces are doing and what your component is supposed to do.  So, instead of just reading up on one component and writing it, you end up having to study a big body of source code, reverse engineering a number of its parts, and then try implementing the piece you're interested in playing with.

I do have a bunch of notes I've accumulated that could theoretically help someone else who is trying to learn the same things I am.  My focus has been on the sm BTL, so might not be 100% of interest to you.  I've walked through and found the code paths of interest to me, expanded data structures, done some analysis, etc.  I guess I should try to clean these notes up for other people and share them.  There are lots of pointers in there to source code so one can look at the notes and click to see the relevant source code.  These notes are invaluable to me (and the product of 3 buckets full of blood, sweat, and tears), but again reflect my own interests.  The pointers to the source code use OpenGrok -- -- but you may have your own favorite tools.

Main answer: no great docs to look at.  I think I've asked some OMPI experts and that was basically the answer they gave me.