On Wed, Dec 17, 2014 at 7:29 PM, Jeff Squyres (jsquyres) <jsquy...@cisco.com
> wrote:

> Returning to a super-old thread that was never finished...
>
>
> On Dec 2, 2014, at 6:49 PM, George Bosilca <bosi...@icl.utk.edu> wrote:
>
> > That's not enough. They will have to check for the right version of Open
> MPI and then for the availability of the OMPI_<something> functions. That
> looks as having the sabe cost as checking for the MPIX_<something> function
> without looking for a specific MPI library.
>
> I don't understand how MPIX_<something> is better.
>
> Given that there is *zero* commonality between any MPI extension
> implemented between MPI implementations, how exactly is having the same
> prefix any less confusing?
>

This is an overstatement. There were quite a few examples over the last few
years (PERUSE, libNBC, ULFM). They all took different approaches for the
naming of their functions, increasing the potential users confusion. As a
developer for one of these MPI extensions I would rather go with a unique
naming scheme to free our users from the hassle of the name checking.


> My point is that using an extension is inherently non-portable.  The
> chances for <something> to collide between different MPI implementations is
> actually quite high.  Indeed, if everyone uses MPIX_<something>, then
> there's a very real possibility that MPIX_Foo != MPIX_Foo != MPIX_Foo.
> That's *horrible*.
>

Horrible sure, but highly improbable (function names have a meaning)


> This is at least slightly more readable, and more clear that you're using
> an Open MPI-specific extension:
>
> -----
> #if defined(OPEN_MPI) && OPEN_MPI
>   OMPI_Foo(a,b,c);
> #endif
>
> ...
>
> #if defined(MPICH) && MPICH
>   MPIX_Foo(f,e,d,c,b,a);
> #endif
> -----
>

This is horrible! This is the kind of solution that neither a developer or
a user of such an extension would promote.


> I guess my fundamental question is: why impose commonality of names where
> there is no commonality of function signature and behavior?
>

The overarching goal of an MPI extension is to show the interest of the
approach and eventually become part of the standard. A well designed
extension will have a unique function signature and behavior, not only
across different implementations but across different versions.

As I mentioned earlier, as a developer of such extensions I do consider
that having a common naming scheme across multiple MPI implementation for
extensions is a good thing. However, as an alternative I don't care about
ditching all-together the library specific flavor from the naming scheme,
and going directly to something extension specific (<MYEXT>_Foo).

  George.

Reply via email to