William Gropp wrote: > At 08:44 AM 10/11/2005, Toon Knapen wrote: > >> William Gropp wrote: >> > in the Fortran source mapped to >> > >> > MPI_INIT >> > mpi_init >> > mpi_init_ >> > mpi_init__ >> > MPI_Init_ >> > >> > Each of these has been chosen by some Fortran 77 compiler. Confusion >> > over this is one of the most common problems that users face, >> > particularly when they use command line options to *change* the way the >> > Fortran compiler maps the names in their code. >> >> >> but that's an easy one to solve. We already do it for BLAS and LAPACK. >> Based on some preprocessor directives we generate macro's that convert >> every 'dgemm' in our C/C++ app into DGEMM, dgemm_, dgemm__ etc. > > > That's not the point; all MPI implementations do something like this > anyway (as far as I know, all MPI implementations implement the Fortran > interface using C code and something to handle these issues). The > problem is: which of these names do you put into the MPI object > library?
Correct, the fortran interface is not exactly an ABI. However the fortran interface makes developing a MorphMPI easy. What I mean with a MorphMPI library is a small lightweight library that is inbetween the application and the MPI library. By recompiling the MorphMPI library, the application can be relinked with whatever MPI library (without thus having access to the sources of the application). The MorphMPI just needs to provide a function to return the value of the different named constants and the logical value's. Additionally it needs to map the symbols (corresponding to the function-names) as used by the app to the symbols as defined by the mpi library. That's all there is to it AFAICT toon