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] 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: