[Mpi-forum] overloading MPI_Init etc.
Jeff Hammond
jhammond at alcf.anl.gov
Sun Mar 4 20:22:40 CST 2012
I have a user who insists it is MPI-compliant to do the following:
user file mpi.h, which is included in the application with #include "mpi.h":
==================================
#include <mpi.h>
<snip>
void MPI_Init(int argc, char* argv[], int& my_rank, int& mpi_size, int& Master)
{
MPI::Init(argc, argv);
my_rank = MPI::COMM_WORLD.Get_rank();
mpi_size = MPI::COMM_WORLD.Get_size();
Master = 0;
std::cout << "Hello World! I am " << my_rank << " of " << mpi_size
<< std::endl;
}
void MPI_finalize()
{MPI::Finalize();}
==================================
I believe that it is a terrible practice, if not a violation of the
MPI standard to:
(1) define one's own mpi.h, since this may confuse the preprocessor
(or are there precedence rules in the ANSI C standard?) as to which to
include first (especially if CC=mpicc or CXX=mpicxx), and
(2) overload MPI_Init, even if one is using C++ and relying upon C++
name-mangling to avoid a symbol conflict.
The user believes that the inability to overload MPI_Init in C++ means
that MPI is not compliant with the C++ standard.
Thanks,
Jeff
--
Jeff Hammond
Argonne Leadership Computing Facility
University of Chicago Computation Institute
jhammond at alcf.anl.gov / (630) 252-5381
http://www.linkedin.com/in/jeffhammond
https://wiki.alcf.anl.gov/old/index.php/User:Jhammond
https://wiki-old.alcf.anl.gov/index.php/User:Jhammond
More information about the mpi-forum
mailing list