Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] RFC: Warn user about deprecated MPI functionality and "wrong" compiler usage
From: Rainer Keller (keller_at_[hidden])
Date: 2009-05-18 01:34:03


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: keller_at_[hidden]
Oak Ridge, TN 37831-2008    AIM/Skype: rusraink