[MITgcm-support] mpich

Constantinos Evangelinos ce107 at ocean.mit.edu
Thu Apr 20 10:45:18 EDT 2006

On Thu 20 Apr 2006 09:23, Ed Hill wrote:

> On Thu, 2006-04-20 at 16:02 +0300, Eli Biton wrote:
> > Hi all
> > I'm trying to use  MPICH on  an opteron machine running redhat AS 4U1.
> > The optFile we are using is:
> >
> >
> > CPP='cpp  -traditional -P'
> >
> > FC='/shared/pgi/bin/mpif77 -fast -fastsse -tp k8-64 -Mipa=fast '
> > CC='/shared/pgi/bin/mpicc  -fast -fastsse  -tp k8-64 -Mipa=fast '
> > LINK='/shared/pgi/bin/mpif77 '
> >
> > but we get the following error message when we are compiling:
> >
> > -I/usr/pgi/linux86-64/6.0/include  > exch_r8_recv_get_x.f
> > /shared/pgi/bin/mpif77 -fast -fastsse -tp k8-64 -Mipa=fast    -c
> > exch_r8_recv_get_x.f PGFTN-S-0038-Symbol, mpi_real8, has not been
> > explicitly declared (exch_r8_recv_get_x.f: 1513) 0 inform,   0 warnings, 
> >  1 severes, 0 fatal for exch_r8_recv_get_x PGFTN/x86-64 Linux/x86-64
> > 6.0-2: compilation completed with severe errors gmake: ***
> > [exch_r8_recv_get_x.o] Error 2
> >
> > Any suggestions?
> Hi Eli,
> The error above indicates that mpi_real8 is undefined.  Its supposed to
> be defined within the MPI headers -- specifically, within the mpif.h
> file which is included in the model in various places using:
>   #include "mpif.h"

To be exact mpif.h may never include MPI_REAL8 as the standard strongly 
suggests it but does not mandate it:

MPI requires support of the datatypes listed above, which match the basic 
datatypes of Fortran 77 and ANSI C. Additional MPI datatypes should be 
provided if the host language has additional data types: MPI_LONG_LONG_INT, 
for (64 bit) C integers declared to be of type longlong int; 
MPI_DOUBLE_COMPLEX for double precision complex in Fortran declared to be of 
type DOUBLE COMPLEX; MPI_REAL2, MPI_REAL4 and MPI_REAL8 for Fortran reals, 
declared to be of type REAL*2, REAL*4 and REAL*8, respectively; MPI_INTEGER1 
MPI_INTEGER2 and MPI_INTEGER4 for Fortran integers, declared to be of type 
INTEGER*1, INTEGER*2 and INTEGER*4, respectively; etc.

Certain versions of LAM, MPT on IRIX and IBM MPI for example apparently did 
not include MPI_REAL4 and hence we've had to introduce the 

#if (defined (TARGET_SGI) || defined (TARGET_AIX) || defined(TARGET_LAM))

in ini_procs.F.

> So, I think the failure is that your CPP is not finding the mpif.h file.
> If thats the problem (and it probably is), then you can fix it by adding
> something similar to:

MPICH should include them however and should be indeed a problem with not 
including the path to the MPI header files.

Dr. Constantinos Evangelinos
Department of Earth, Atmospheric and Planetary Sciences
Massachusetts Institute of Technology

More information about the MITgcm-support mailing list