As a heads up, this RFC expires today. We discussed it last week
during the teleconf and there were no objections.
I updated the HG branch to the current trunk, and, if there are not
objections, I will commit it to the trunk this afternoon [target 1.5].
Cheers,
Josh
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
de...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/devel