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*’
===