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:
> > DEFINES='-DALLOW_USE_MPI -DALWAYS_USE_MPI -D_BYTESWAPIO -DWORDLENGTH=4'
> > 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:
> > _USE_MPI -DALWAYS_USE_MPI -DHAVE_SYSTEM -DHAVE_ETIME
> > -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))
> 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