Actually I am working on the course project in which I am running a huge
computational intensive code.
I am running this code on cluster.
Now my work is to find out when does the process send control messages
(e.g. compute process to I/O process indicating I/O data is ready)
and when does they send actual data (e.g I/O nodes fetching actual data
that is to be transfered.)
And I have to log the timing and duration in other file.
For this I need to know the States of Open MPi (Control messges)
So that I can simply put print statements in Open MPi code and find out
how it works.
For this reason I was asking to know the state changes or atleast the way
to find it out.
Also my proff asked me to look into BTl transport layer to be used with
I hope you will help.
Thanks and Regards
> On Apr 1, 2007, at 3:12 PM, Ralph Castain wrote:
>> I can't help you with the BTL question. On the others:
> Yes, you can "sorta" call BTL's directly from application programs
> (are you trying to use MPI alongside other communication libraries,
> and using the BTL components as a sample?), but there are issues
> involved with this.
> First, you need to install Open MPI with all the development
> headers. Open MPI normally only installs "mpi.h" and a small number
> of other heads; installing *all* the headers will allow you to write
> applications that use OMPI's internal headers (such as btl.h) while
> developing outside of the Open MPI source tree.
> Second, you probably won't want to access the BTL's directly. To
> make this make sense, here's how the code is organized (even if the
> specific call sequence is not exactly this layered for performance/
> optimization reasons):
> MPI layer (e.g., MPI_SEND)
> -> PML
> -> BML
> -> BTL
> You have two choices:
> 1. Go through the PML instead (this is what we do in the MPI
> collectives, for example) -- but this imposes MPI semantics on
> sending and receiving, which assumedly you are trying to avoid.
> Check out ompi/mca/pml/pml.h.
> 2. Go through the BML instead -- the BTL Management Layer. This is
> essentially a multiplexor for all the BTLs that have been
> instantiated. I'm guessing that this is what you want to do
> (remember that OMPI has true multi-device support; using the BML and
> multiple BTLs is one of the ways that we do this). Have a look at
> ompi/mca/bml/bml.h for the interface.
> There is also currently no mechanism to get the BML and BTL pointers
> that were instantiated by the PML. However, if you're just doing
> proof-of-concept code, you can extract these directly from the MPI
> layer's global variables to see how this stuff works.
> To have full interoperability of the underlying BTLs and between
> multiple upper-layer communication libraries (e.g., between OMPI and
> something else) is something that we have talked about a little, but
> have not done much work on.
> To see the BTL interface (just for completeness), see ompi/mca/btl/
> You can probably see the pattern here... In all of Open MPI's
> frameworks, the public interface is in <level>/mca/<framework>/
> <framework>.h, where <level> is one of opal, orte, or ompi, and
> <framework> is the name of the framework.
>> 1. states are reported via the orte/mca/smr framework. You will see
>> states listed in orte/mca/smr/smr_types.h. We track both process
>> and job
>> states. Hopefully, the state names will be somewhat self-
>> explanatory and
>> indicative of the order in which they are traversed. The job states
>> are set
>> when *all* of the processes in the job reach the corresponding state.
> Note that these are very coarse-grained process-level states (e.g.,
> is a given process running or not?). It's not clear what kind of
> states you were asking about -- the Open MPI code base has many
> internal state machines for various message passing and other
> What information are you looking for, specifically?
>> 2. I'm not sure what you mean by mapping MPI processes to "physical"
>> processes, but I assume you mean how do we assign MPI ranks to
>> processes on
>> specific nodes. You will find that done in the orte/mca/rmaps
>> framework. We
>> currently only have one component in that framework - the round-robin
>> implementation - that maps either by slot or by node, as indicated
>> by the
>> user. That code is fairly heavily commented, so you hopefully can
>> what it is doing.
>> Hope that helps!
>> On 4/1/07 1:32 PM, "pooja_at_[hidden]" <pooja_at_[hidden]> wrote:
>>> I am Pooja and I am working on a course project which requires me
>>> -> to track the internal state changes of MPI and need me to
>>> figure out
>>> how does ORTE maps MPi Process to actual physical processes
>>> ->Also I need to find way to get BTL transports work directly with
>>> level calls.
>>> I just want to know is this posible and if yes what procedure I
>>> follow or I should look into which files (for change).
>>> Please Help
>>> Thanks and Regards
>>> devel mailing list
>> devel mailing list
> Jeff Squyres
> Cisco Systems
> devel mailing list