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.