Sorry for the delay on this -- we ran this idea by all the other
developers and got a resounding "sounds like a good idea!".
So OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION, and OMPI_RELEASE_VERSION
(all integers) will be in mpi.h in Open MPI v1.2. For the v1.2
release, these three macros will correspond to 1, 2, and 0,
respectively.
If we do a v1.1.5 release, these macros will be in mpi.h as well (as
1, 1, and 5, respectively, of course).
Don't forget that you can always check for the macro OPEN_MPI, too
(it's set to 1 in mpi.h). That's been in there since v1.0.
Thanks for the suggestion!
On Feb 2, 2007, at 6:50 PM, Audet, Martin wrote:
Thanks Bert for the reply but having these macros in ompi/version.h
only if a special option is given to configure is useless for what
I would like to enable in OpenMPI with the present suggestion.
This is because the whole idea is to make it possible to write
portable MPI compliant C/C++ programs that are able to chose to use
or not workarounds for eventual bugs in OpenMPI at compile time
based on the exact OpenMPI version.
Declaring the versions macros I suggested would make it possible to
dectect at compilation if the current OpenMPI version is affected
by a specific bug and to eventually activate a workaround if
possible (or terminate compilation with #error preprocessor
directive if no workaround exists). With the help of the existing
OPEN_MPI macro these checks could be easilly ignored when using an
MPI implantation other than OpenMPI.
And this would be very convenient since the application would
adjust itself to the OpenMPI implentation without any user
intervention.
What I am describing is a common practice. I have checks in my code
that check for example ROMIO_VERSION or to activate workarounds for
known bugs or checks for __GNUC__ or __INTEL_COMPILER to activate
features in newer gcc or icc compilers versions (like the
"restrict" pointer qualifier).
But to do similar things with OpenMPI we need these version OMPI_
macro defined by default in mpi.h. They have to be always defined
otherwise the save no burden for users.
Regards,
Martin
Hello,
you can build your ompi with --with-devel-headers and use the header
<ompi/version.h>:
#define OMPI_MAJOR_VERSION 1
#define OMPI_MINOR_VERSION 1
#define OMPI_RELEASE_VERSION 4
#define OMPI_GREEK_VERSION ""
Bert
Audet, Martin wrote:
Hi,
I would like to suggest you to add macros indicating the version
of the
OpenMPI library in the C/C++ header file mpi.h analogous to the
parameter constants in the Fortran header file:
parameter (OMPI_MAJOR_VERSION=1)
parameter (OMPI_MINOR_VERSION=1)
parameter (OMPI_RELEASE_VERSION=4)
parameter (OMPI_GREEK_VERSION="")
parameter (OMPI_SVN_VERSION="r13362")
This would be very handy if someone discover a bug XYZ and a
workaround
for it in OpenMPI versions before (and not including) 1.1.4 for
example
and wants his code to be portable on many OpenMPI versions and
also on
other MPI-2 implementations. In this situation he could do something
like this in a common C header file:
#ifdef OPEN_MPI
/* true iff (x.y.z < u.v.w) */
#define DOTTED_LESS_THAN(x,y,z, u,v,w) \
(((x) < (u)) || (((x) == (u)) && (((y) < (v)) || (((y) == (v)) &&
((z) < (w))))))
# if DOTTED_LESS_THAN(OMPI_MAJOR_VERSION, OMPI_MINOR_VERSION,
OMPI_RELEASE_VERSION, 1,1,4)
# define USE_MPI_WORKAROUND_XYZ
# endif
#endif
And later in the C source code:
#ifdef USE_MPI_WORKAROUND_XYZ
/* use the workaround */
#else
/* use the normal method */
#endif
Thanks,
Martin
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
--
Jeff Squyres
Server Virtualization Business Unit
Cisco Systems