Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] on SEEK_*
From: Jed Brown (jed_at_[hidden])
Date: 2008-10-16 06:29:01


I've just run into this chunk of code.

/* MPICH2 will fail if SEEK_* macros are defined
 * because they are also C++ enums. Undefine them
 * when including mpi.h and then redefine them
 * for sanity.
 */
# ifdef SEEK_SET
# define MB_SEEK_SET SEEK_SET
# define MB_SEEK_CUR SEEK_CUR
# define MB_SEEK_END SEEK_END
# undef SEEK_SET
# undef SEEK_CUR
# undef SEEK_END
# endif
#include "mpi.h"
# ifdef MB_SEEK_SET
# define SEEK_SET MB_SEEK_SET
# define SEEK_CUR MB_SEEK_CUR
# define SEEK_END MB_SEEK_END
# undef MB_SEEK_SET
# undef MB_SEEK_CUR
# undef MB_SEEK_END
# endif

MPICH2 (1.1.0a1) gives these errors if SEEK_* are present:

/opt/mpich2/include/mpicxx.h:26:2: error: #error "SEEK_SET is #defined but must not be for the C++ binding of MPI"
/opt/mpich2/include/mpicxx.h:30:2: error: #error "SEEK_CUR is #defined but must not be for the C++ binding of MPI"
/opt/mpich2/include/mpicxx.h:35:2: error: #error "SEEK_END is #defined but must not be for the C++ binding of MPI"

but when SEEK_* is not present and iostream has been included, OMPI-dev
gives these errors.

/home/ompi/include/openmpi/ompi/mpi/cxx/mpicxx.h:53: error: ‘SEEK_SET’ was not declared in this scope
/home/ompi/include/openmpi/ompi/mpi/cxx/mpicxx.h:54: error: ‘SEEK_CUR’ was not declared in this scope
/home/ompi/include/openmpi/ompi/mpi/cxx/mpicxx.h:55: error: ‘SEEK_END’ was not declared in this scope

There is a subtle difference between OMPI 1.2.7 and -dev at least with
GCC 4.3.2. If iostream was included before mpi.h and then SEEK_* are
#undef'd then 1.2.7 succeeds while -dev fails with the message above.
If stdio.h is included and SEEK_* are #undef'd then both OMPI versions
fail. MPICH2 requires in both cases that SEEK_* be #undef'd.

What do you recommend to remain portable? Is this really an MPICH2
issue? The standard doesn't seem to address this issue. The MPICH2 FAQ
has this

http://www.mcs.anl.gov/research/projects/mpich2/support/index.php?s=faqs#cxxseek

Jed



  • application/pgp-signature attachment: stored