Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: George Bosilca (bosilca_at_[hidden])
Date: 2007-07-07 12:33:57

On Jul 4, 2007, at 2:28 PM, Karol Mroz wrote:

> In order to have this, though, I'd need to be able to fetch the
> context
> and tag information from the header when it arrives at the BTL. This
> data appears to have been transformed somehow when it gets to that
> layer, though, and I'm trying to figure out how. Has something arcane
> been done to this data aside from switching byte ordering?

I have a hard time to figure out how do you know what kind of header
you're working on ? I suspect that looking into the first char in the
pointer you can find out what's there but only if you know what PML
you're working for. That will tie your BTL to a specific PML (right
now I suppose it's OB1). But try to run with DR and you will see that
your approach will not work.

If you really think that getting access to the MPI level tags and
context it's a very important information fro you then the BTL is not
the right way to go. Implement a MTL (the one that work with the CM
PML) instead of a BTL. There you will have access to the full
information of the MPI level. However, keep in mind that you will
lose multi BTL support, all pipeline and fault tolerance features and
that you will have to support by yourself the communications in the
same node and in the same process. But, if you really need the MPI
level information that the only consistent way to do it.


> Thanks,
> Karol
>> George Bosilca wrote:
>>> Karol,
>>> There is no way to know the MPI tag at the BTL level. The BTL is
>>> protocol agnostic, it only moves bytes around (BTL = Byte Transport
>>> Layer). Moreover, the BTLs can be (and are) used by different PML,
>>> each of them supporting a different protocol.
>>> Now, let talk specifically about the OB1 PML. The first X bytes
>>> contain a message header, but this message header differ based on
>>> the
>>> protocol used to transmit the message. There are multiple protocols:
>>> eager, send/recv, RDMA. If you look in ompi/mca/pml/ob1/
>>> pml_ob1_hdr.h
>>> you will see the different types of headers used by the OB1 PML.
>>> However, do not use this file in the BTL, as the BTL is PML
>>> agnostic.
>>> Thanks,
>>> george.
>>> On Jul 2, 2007, at 4:56 PM, Karol Mroz wrote:
>>>> Good morning everyone. I had a question about obtaining the
>>>> message tag
>>>> from the iovec array in mca_btl_sctp_frag_t* frag from within the
>>>> mca_btl_tcp_frag_send() function. If I understand correctly, the
>>>> first X
>>>> bytes in the first iovec entry contain message header
>>>> information in the
>>>> form of an mca_pml_ob1_match_hdr_t struct that contains a
>>>> hdr_tag field.
>>>> When I extract this, I get a number that resembles an address.
>>>> Dereferencing this gives, from what I can tell, an incorrect
>>>> value and
>>>> passing the value into ntohl() etc brings me no closer. There is
>>>> probably something basic I'm overlooking... any help would be
>>>> appreciated.
>>>> Thanks,
>>>> Karol
>>>> --Karol Mroz
>>>> kmroz_at_[hidden]
>>>> _______________________________________________
>>>> devel mailing list
>>>> devel_at_[hidden]
>>> --------------------------------------------------------------------
>>> ----
>>> _______________________________________________
>>> devel mailing list
>>> devel_at_[hidden]
> --
> Karol Mroz
> kmroz_at_[hidden]
> _______________________________________________
> devel mailing list
> devel_at_[hidden]

  • application/pkcs7-signature attachment: smime.p7s