Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] what's the relationship between proc, endpoint and btl?
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2010-02-24 21:34:37

On Feb 24, 2010, at 12:16 PM, Aurélien Bouteiller wrote:

> btl is the component responsible for a particular type of fabric. Endpoint is somewhat the instantiation of a btl to reach a particular destination on a particular fabric, proc is the generic name and properties of a destination.

A few more words here...

btl = Byte Transfer Layer. It's our name for the framework that governs one flavor of point-to-point communications in the MPI layer. Components in this framework are used by the ob1 and csum PMLs to effect MPI point-to-point communications (they're used in other ways, too, but let's start at the beginning here...). There are several btl components: tcp, sm (shared memory), self (process loopback), openib (OpenFabrics), ...etc. Each one of these effects communications over a different network type. For purposes of this discussion, "component" == "plugin".

The btl plugin is loaded into an MPI process and its component open/query functions are called. If the btl component determines that it wants to run, it returns one or more modules. Typically, btls return a module for every interface that they find. For example, if the openib module finds 2 OpenFabrics device ports, it'll return 2 modules.

Hence, we typically describe components as analogous to a C++ class; modules are analogous to instances of that C++ class.

Note that in many BTL component comments and variables/fields, they typically use shorthand language such as, "The btl then does this..." Such language almost always refers to a specific module of that btl component.

Modules are marshalled by the bml and ob1/csum to make an ordered list of who can talk to whom.

Endpoints are data structures used to represent a module's connection to a remote MPI process (proc). Hence, a BTL component can create multiple modules; each module can create lots of endpoints. Each endpoint is tied to a specific remote proc.

> Aurelien
> Le 24 févr. 2010 à 09:59, hu yaohui a écrit :
> > Could someone tell me the relationship between proc,endpoint and btl?
> > thanks & regards
> > _______________________________________________
> > devel mailing list
> > devel_at_[hidden]
> >
> _______________________________________________
> devel mailing list
> devel_at_[hidden]

Jeff Squyres
For corporate legal information go to: