What: Warn user about deprecated MPI functionality and "wrong" compiler usage
Why: Because deprecated MPI functions, are ... deprecated
Where: On trunk
When: Apply on trunk before branching for v1.5 (it is user-visible)
Timeout: 1 weeks - May 26, 2009 after the teleconf.
---------------------------------------------------------------------
I'd like to propose a patch that addresses two issues:
- Users shoot themselves in the foot compiling with a different compiler
than what was used to compile OMPI (think ABI)
- The MPI-2.1 std. defines several functions to be deprecated.
This will warn Open MPI users, when accessing deprecated functions, even
giving a proper warning such as:
"MPI_TYPE_HVECTOR is superseded by MPI_TYPE_CREATE_HVECTOR"
Also, now we may _warn_ when using a different compiler (gcc vs. intel vs.
pgcc)
This is achieved using __opal_attribute_deprecated__ and obviously needs to be
added into mpi.h, therefore being a user-visible change.
This however has a few caveats:
1.) Having Open MPI compiled with gcc and having users compiling with another
compiler, which is not supporting __attribute__((deprecated)) is going to be a
problem
2.) The attribute is most useful, when having a proper description (as above)
-- which requires support for the optional argument to __deprecate__. This
feature is offered only in gcc>4.4 (see http://gcc.gnu.org/ml/gcc-
patches/2009-04/msg00087.html).
Therefore, I added a configure-check for the compiler's support of the
optional argument.
And we need to store, which compiler is used to compile Open MPI and at (user-
app) compile-time again check (within mpi.h), which compiler (and version!) is
being used.
This is then compared at user-level compile-time.
To prevent users getting swamped with error msg. this can be turned off using
the configure-option:
--enable-mpi-interface-warning
which turns on OMPI_WANT_MPI_INTERFACE_WARNING (default: DISabled), as
suggested by Jeff.
The user can however override that with (check mpi2basic_tests):
mpicc -DOMPI_WANT_MPI_INTERFACE_WARNING -c lalala.c
lots of warnings follow
Please take a look into:
http://bitbucket.org/jsquyres/ompi-deprecated/
With best regards,
Rainer
PS:
Also, we need to disable the warning, when building Open MPI itselve ;-)
PPS:
Thanks to Paul Hargrove and Dan Bonachea for the GASnet file
portable_platform.h which offers the CPP magic to figure out compilers and
esp. compiler-versions.
--
------------------------------------------------------------------------
Rainer Keller, PhD Tel: +1 (865) 241-6293
Oak Ridge National Lab Fax: +1 (865) 241-4811
PO Box 2008 MS 6164 Email: [email protected]
Oak Ridge, TN 37831-2008 AIM/Skype: rusraink