[petsc-dev] OpenMPI && petsc-2.3.3-p15
Harald Pfeiffer
pfeiffer at cita.utoronto.ca
Wed Jan 6 14:46:56 CST 2010
Hi,
to add another data-point to this discussion: I found that adding
-DMPI_SKIP_MPICXX dramatically reduces the number of compiler warnings
arising from OpenMPI-code.
Without doing this, the important compiler warnings about my own code
get lost in the noise. Examples with and without -DOMPI_SKIP_MPICXX
below (coincidentally, this example triggers a warning on Petsc code).
Cheers,
Harald
WITH -DOMPI_SKIP_MPICXX
[pfeiffer at bee EllipticSolver]$ make -s
========== compile EllipticSolverCore.cpp
In file included from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.h:1796,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscis.h:7,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscvec.h:9,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscmat.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscpc.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscksp.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscsnes.h:6,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/EllipticResidual/Petsc.hpp:8,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/Preconditioning/Preconditioner.hpp:13,
from EllipticSolverCore.hpp:11,
from EllipticSolverCore.cpp:9:
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.hh: In
constructor ‘PETSc::Exception::Exception(const std::string&)’:
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.hh:10: warning:
declaration of ‘msg’ shadows a member of 'this'
WITHOUT -DOMPI_SKIP_MPICXX:
[pfeiffer at bee EllipticSolver]$ make -s
========== compile EllipticSolverCore.cpp
In file included from
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/mpicxx.h:246,
from /usr/include/openmpi/1.2.4-gcc/mpi.h:1783,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.h:137,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscis.h:7,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscvec.h:9,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscmat.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscpc.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscksp.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscsnes.h:6,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/EllipticResidual/Petsc.hpp:8,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/Preconditioning/Preconditioner.hpp:13,
from EllipticSolverCore.hpp:11,
from EllipticSolverCore.cpp:9:
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/request_inln.h: In
static member function ‘static MPI::Grequest MPI::Grequest::Start(int
(*)(void*, MPI::Status&), int (*)(void*), int (*)(void*, bool), void*)’:
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/request_inln.h:347:
warning: declaration ‘struct MPI::Grequest_intercept_t’ does not declare
anything
In file included from
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/mpicxx.h:247,
from /usr/include/openmpi/1.2.4-gcc/mpi.h:1783,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.h:137,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscis.h:7,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscvec.h:9,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscmat.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscpc.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscksp.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscsnes.h:6,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/EllipticResidual/Petsc.hpp:8,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/Preconditioning/Preconditioner.hpp:13,
from EllipticSolverCore.hpp:11,
from EllipticSolverCore.cpp:9:
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/comm_inln.h: In
static member function ‘static int MPI::Comm::NULL_COPY_FN(const
MPI::Comm&, int, void*, void*, void*, bool&)’:
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/comm_inln.h:641:
warning: the address of ‘int
OMPI_C_MPI_NULL_COPY_FN(ompi_communicator_t*, int, void*, void*, void*,
int*)’ will never be NULL
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/comm_inln.h: In
static member function ‘static int MPI::Comm::NULL_DELETE_FN(MPI::Comm&,
int, void*, void*)’:
/usr/include/openmpi/1.2.4-gcc/openmpi/ompi/mpi/cxx/comm_inln.h:698:
warning: the address of ‘int
OMPI_C_MPI_NULL_DELETE_FN(ompi_communicator_t*, int, void*, void*)’ will
never be NULL
In file included from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.h:1796,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscis.h:7,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscvec.h:9,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscmat.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscpc.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscksp.h:6,
from
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petscsnes.h:6,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/EllipticResidual/Petsc.hpp:8,
from
/scratch/pfeiffer/SpEC/gccO/Elliptic/Preconditioning/Preconditioner.hpp:13,
from EllipticSolverCore.hpp:11,
from EllipticSolverCore.cpp:9:
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.hh: In
constructor ‘PETSc::Exception::Exception(const std::string&)’:
/scratch/pfeiffer/opt/src/petsc-3.0.0-p9/include/petsc.hh:10: warning:
declaration of ‘msg’ shadows a member of 'this'
Barry Smith wrote:
>
> Eric,
>
> Could you describe, preferably with error messages printed by
> compilers etc, why this is necessary? I read the comment in petsc.h
>
>
> PETSc does not use the C++ binding of MPI at ALL. The following flag
> makes sure the C++ bindings are not included. The C++ bindings REQUIRE
> putting mpi.h before ANY C++ include files, we cannot control this
> with all PETSc users.
> */
>
> but could not reproduce the problem (I put C++ include files before
> mpi.h without that flag and everything compiled and ran fine for both
> MPICH and OpenMPI on my Apple).
>
> Do we really need the flags. I have no problem putting in the OpenMPI
> also, but it does mean that PETSc users cannot use the C++ bindings of
> MPI (which some may want to). So I would like to avoid both flags unless
> they are really needed.
>
> Thanks
>
> Barry
>
>
> On Jan 6, 2010, at 8:21 AM, Eric Chamberland wrote:
>
>> Hi,
>>
>> we have compile petsc-2.3.3-p15 with openMPI 1.3.4. To have it working
>> with our C++ code, I did a "#define OMPI_SKIP_MPICXX".
>>
>> In petsc.h, this is already done but for MPICH, on line #137:
>>
>> #define MPICH_SKIP_MPICXX 1
>>
>> It would be nice to also have a:
>>
>> #define OMPI_SKIP_MPICXX" 1
>>
>> But I don't know if it would be necessery also in petsc release 3.
>>
>> Thank you!
>>
>> Eric
More information about the petsc-dev
mailing list