NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.

To learn about what's going on, see About the Archive Site.

Re: [netcdfgroup] NetCDF 4.0.1 with --enable-netcdf-4 conflicts with Open MPI by redefining MPI_Comm, etc

  • To: Constantine Khroulev <c.khroulev@xxxxxxxxx>
  • Subject: Re: [netcdfgroup] NetCDF 4.0.1 with --enable-netcdf-4 conflicts with Open MPI by redefining MPI_Comm, etc
  • From: Ted Mansell <Ted.Mansell@xxxxxxxx>
  • Date: Mon, 05 Oct 2009 15:38:06 -0500
You can use non-MPI netcdf with an MPI program as long as you don't try to use parallel IO. At least it works for me with Fortran with the netcdf module ("USE NETCDF"). I guess you are using C?

Could there be an ifndef to check if MPI is in use before defining those vars in netcdf.h? Like:

#ifndef MPI_COMM_WORLD
#define MPI_Comm int
#define MPI_Info int
#define MPI_COMM_WORLD 0
#define MPI_INFO_NULL 0
#endif

And make sure that netcdf.h comes after mpi.h.

An alternative would be to turn off the create_par and open_par in the header and code.

-- Ted


On Oct 5, 2009, at 3:08 PM, Constantine Khroulev wrote:

Hello,

I have a problem: NetCDF 4.0.1 adds the following lines to netcdf.h (HDF5 is, in fact, built without parallel I/O support.):

===
/* These defs added by netCDF configure because parallel HDF5 is not present. */
#define MPI_Comm int
#define MPI_Info int
#define MPI_COMM_WORLD 0
#define MPI_INFO_NULL 0
===

This (it seems to me) makes it impossible to use MPI (or PETSc) with NetCDF, producing warnings like
===
/opt/local/include/netcdf.h:43:1: warning: "MPI_COMM_WORLD" redefined
In file included from /Users/constantine/Documents/PISM/petsc-3.0.0- p0/include/petsc.h:137, from /Users/constantine/Documents/PISM/petsc-3.0.0- p0/include/petscis.h:7, from /Users/constantine/Documents/PISM/petsc-3.0.0- p0/include/petscvec.h:9, from /Users/constantine/Documents/PISM/petsc-3.0.0- p0/include/petscda.h:7,
                from ../src/base/grid.cc:20:
===

and errors similar to
===
../src/base/grid.cc:64: error: invalid conversion from ‘int’ to ‘ompi_communicator_t*’
===




  • 2009 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: