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 de...@open-mpi.org http://www.open-mpi.org/mailman/listinfo.cgi/devel
-- Jeff Squyres Cisco Systems