Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] RFC: MPI Interface Extensions Infrastructure
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2009-05-12 09:14:30


I *believe* we chose to make it a separate <mpi-ext.h> file to drive
the point home to the MPI application developer that these are non-
standard API functions, use at their own risk, yadda yadda yadda.

Maybe it would be worthwhile to have an extra #define that indicates
whether these functions are available, though, so a programmer could
do something like this:

#if OMPI_HAVE_MPI_EXTENDED_INTERFACES
   OMPI_Progress();
#else
#error "We need progress!!"
#endif

(probably with a shorter #define name, though ;-) )

On May 12, 2009, at 8:49 AM, Terry Dontje wrote:

> I like this, however wouldn't it possibly be nice to have a the
> mpi-ext.h pulled in by mpi.h when the -enable-ext configure option is
> used? That way one would be able to compile and run current tests for
> regressions without having to change the code.
>
> --td
>
> Jeff Squyres wrote:
> > I'm [obviously] in favor of this RFC. :-)
> >
> > On May 11, 2009, at 2:37 PM, Josh Hursey wrote:
> >
> >>
> >> What: Infrastructure for MPI Interface Extensions
> >>
> >> Why: Allow for experimentation with new interfaces without
> changing
> >> mpi.h
> >>
> >> Where: Temporary Mercurial branch (link below)
> >>
> >> http://cgi.cs.indiana.edu/~jjhursey/public-tmp/hg/hgwebdir.cgi/mpi-ext/
> >>
> >> When: Apply on trunk before branching for v1.5
> >>
> >> Timeout: 2 weeks - May 26, 2009 after the teleconf.
> >>
> >>
> ---------------------------------------------------------------------
> >> Description:
> >>
> >> At times developers want to expose non-standard, optional
> interfaces
> >> to users. These interfaces may represent MPI interfaces to be
> >> presented to the MPI Forum for standardization. In order to add
> such
> >> an interface to Open MPI you must add it directly to the ompi/mpi/
> >> directory and mpi.h. The combination of standard and non-standard
> >> interfaces inside mpi.h becomes troublesome to many developers and
> >> users.
> >>
> >> This branch allows developers to create a directory under ompi/
> mpiext/
> >> for their extension (see ompi/mpiext/example in the HG branch for
> an
> >> example). By default, all extensions are disabled. They can be
> enabled
> >> through a configure option '--enable-ext='. This option takes a
> list
> >> of extensions that should be built as part of Open MPI. The user
> can
> >> include all of the extensions by referencing the appropriate header
> >> file (e.g., #include <mpi-ext.h> ), and compiling with the normal
> >> wrapper compilers (e.g., mpicc).
> >>
> >> This infrastructure was designed and discussed on July 2, 2008 at
> an
> >> Open MPI developers meeting directly following an MPI Forum
> meeting. I
> >> have been developing this branch over the past few months under the
> >> advisement of Jeff and Brian. The C interface is functional and
> >> stable. The C++, F77, and F90 interfaces have not been completed.
> >> There are comments in the appropriate build system files
> (particularly
> >> config/ompi_ext.m4) that indicate where a developer would need to
> >> focus to finish support for these language bindings if needed. I
> have
> >> not completed them since I do not feel comfortable enough at this
> time
> >> with these languages to provide such functionality.
> >>
> >> I would like to bring this into the trunk before v1.5 branch.
> Having
> >> the infrastructure in the trunk will make it easier to maintain
> off-
> >> trunk experimental interface development.
> >>
> >> As part of this RFC, I will also update the 'MPI Extensions' wiki
> page
> >> to describe how a developer can get started using this
> infrastructure:
> >> https://svn.open-mpi.org/trac/ompi/wiki/MPIExtensions
> >>
> >>
> ---------------------------------------------------------------------
> >> How to use the branch:
> >>
> >> Configure with this additional option:
> >> --enable-ext=example
> >>
> >> Compile the following sample MPI program with 'mpicc' per usual.
> >> /*---------------------------------*/
> >> #include <stdio.h>
> >> #include <mpi.h>
> >> #include <mpi-ext.h>
> >>
> >> int main(int argc, char *argv[])
> >> {
> >> int rank, size;
> >>
> >> MPI_Init(&argc, &argv);
> >>
> >> MPI_Comm_rank(MPI_COMM_WORLD, &rank);
> >> MPI_Comm_size(MPI_COMM_WORLD, &size);
> >>
> >> OMPI_Progress("Go OMPI! Go!");
> >>
> >> MPI_Finalize();
> >>
> >> return 0;
> >> }
> >> /*---------------------------------*/
> >>
> >> _______________________________________________
> >> devel mailing list
> >> devel_at_[hidden]
> >> http://www.open-mpi.org/mailman/listinfo.cgi/devel
> >
> >
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
Jeff Squyres
Cisco Systems