[mpich-discuss] F90FLAGS "-i4" statement formpich2 configuration

Rajeev Thakur thakur at mcs.anl.gov
Fri Apr 30 10:01:01 CDT 2010


Or change real to real*8 in the variable declarations.

Rajeev 

> -----Original Message-----
> From: mpich-discuss-bounces at mcs.anl.gov 
> [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of 
> Steenhauer, Kate
> Sent: Friday, April 30, 2010 9:26 AM
> To: mpich-discuss at mcs.anl.gov
> Subject: Re: [mpich-discuss] F90FLAGS "-i4" statement 
> formpich2 configuration
> 
> So if I understand correctly I can change all the MPI_REAL8 
> into MPI_REAL  in my messenger.mpi8.f90 file (it is located 
> in many places, see file attached)?
> 
> Or otherwise add an extension in my makefile with a compiler flag e.g.
> F90     = $(MPIR_HOME)/bin/mpif90 -r8 -WB -Vaxlib -w95 ? BUT 
> iam not sure if this is correct when using Gfortran?? Have 
> you got another extension maybe for me, because I am not sure 
> what it all means.
> 
> Thanks kate
> 
> -----Original Message-----
> From: mpich-discuss-bounces at mcs.anl.gov 
> [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Rajeev Thakur
> Sent: 30 April 2010 15:16
> To: mpich-discuss at mcs.anl.gov
> Subject: Re: [mpich-discuss] F90FLAGS "-i4" statement for 
> mpich2 configuration
> 
> The code has declared the array as real, but is using 
> MPI_REAL8 in the MPI_Scatter call. You need to use a compiler 
> flag that automatically promotes reals to 8 bytes, or declare 
> them as real*8, or use MPI_REAL instead of MPI_REAL8.
> 
> Rajeev
> 
> 
> > -----Original Message-----
> > From: mpich-discuss-bounces at mcs.anl.gov 
> > [mailto:mpich-discuss-bounces at mcs.anl.gov] On Behalf Of Steenhauer, 
> > Kate
> > Sent: Friday, April 30, 2010 5:19 AM
> > To: Anthony Chan; mpich-discuss at mcs.anl.gov
> > Subject: Re: [mpich-discuss] F90FLAGS "-i4" statement for
> > mpich2 configuration
> >
> > I have gfortran installed , i re-installed mpich2, i have 
> > re-configured mpich2 using ________________________________________
> > ./configure --prefix=.... CC=gcc CXX=g++ F77=gfortran F90=gfortran  
> > mpich2version
> > MPICH2 Version:         1.2.1p1
> > MPICH2 Release date:    Unknown, built on Fri Apr 30 
> 10:16:59 BST 2010
> > MPICH2 Device:          ch3:nemesis
> > MPICH2 configure:       --prefix=/opt/mpich-test F77=gfortran
> > F90=gfortran
> > MPICH2 CC:      gcc  -O2
> > MPICH2 CXX:     c++  -O2
> > MPICH2 F77:     gfortran  -O2
> > MPICH2 F90:     gfortran  -O2
> >
> > It still runs into the same error at MPI_Scatter.
> >
> > I created the program below and I tried gfortran 
> ts_sizeof.f && a.out 
> > as was suggested. The following error occurs
> >
> > gfortran ts_sizeof.f90 && a.out
> > /tmp/cceMCvOn.o: In function `MAIN__':
> > ts_sizeof.f90:(.text+0x6f): undefined reference to `sizeof_'
> > ts_sizeof.f90:(.text+0xf5): undefined reference to `sizeof_'
> > ts_sizeof.f90:(.text+0x17b): undefined reference to `sizeof_'
> > ts_sizeof.f90:(.text+0x201): undefined reference to `sizeof_'
> > collect2: ld returned 1 exit status
> >
> > What am I doing wrong and what will this tell? The code itself has 
> > been heavily tested with INTEL fortran, iam not sure if any 
> > compatibility problems occur because of the differences in data 
> > declaration between gfortran and INTEL.
> >
> > In my code the following data is declared as e.g. in 
> scatter routine  
> > real A(nx,ny,nz), B(nx_1,ny_1,nz_1)
> >     real, allocatable :: sendbuf(:)
> >     integer i1(nproc), i2(nproc), &
> >             j1(nproc), j2(nproc), &
> >             k1(nproc), k2(nproc)
> > other parametrization  used is
> > real*8
> >
> > What am I doing wrong?
> > kate
> >
> >
> > From: mpich-discuss-bounces at mcs.anl.gov 
> > [mpich-discuss-bounces at mcs.anl.gov] On Behalf Of chan at mcs.anl.gov 
> > [chan at mcs.anl.gov]
> > Sent: 29 April 2010 16:18
> > To: mpich-discuss at mcs.anl.gov
> > Subject: Re: [mpich-discuss] F90FLAGS "-i4" statement for
> > mpich2 configuration
> >
> > ----- "Kate Steenhauer" <k.steenhauer at abdn.ac.uk> wrote:
> >
> > > [eng923 at cops-021026 job]$ mpich2version
> > > MPICH2 Version:         1.2.1p1
> > > MPICH2 Release date:    Unknown, built on Mon Mar 29 14:37:13 BST
> > > 2010
> > > MPICH2 Device:          ch3:nemesis
> > > MPICH2 configure:       --prefix=/opt/mpich2
> > > MPICH2 CC:      gcc  -O2
> > > MPICH2 CXX:     c++  -O2
> > > MPICH2 F77:     gfortran  -O2
> > > MPICH2 F90:     f95  -O2
> >
> > If you didn't install any other fortran compiler on 
> machine, I would 
> > think
> > f95 is gfortran, i.e. a symbolic link.  Do "readlink -f `which f95`"
> > to see what it says.
> >
> > > When I read the following (see below) in migrating from mpich1 to 
> > > mpich2, is this possibly causding the problem in
> > mpi_scatter? As I am
> > > using an Intel fortran compiler on a 64 bit linux 
> platform? Would I 
> > > need to reinstall and configure MPIch2 and where and how do
> > I include
> > > the F90FLAGS "-i4" statement on a bash Shell?
> >
> > The paragraph you quoted refers to g95 which is variant 
> distribution 
> > of GNU Fortran compiler.  I believe that most modern 
> distribution of 
> > linux do not ship with it by default, i.e. you need to specifically 
> > download that version of fortran compiler.  Try do "which 
> g95" to see 
> > if your machine has it.
> >
> > If you worry your fortran integer does not have the correct length, 
> > you can check the sizeof of fortran integers and reals as 
> follows (you 
> > can use the kind parameter instead)
> >
> > > cat ts_sizeof.f
> >         program test_sizeof
> >         integer  ii
> >         real     rr
> >         integer*8  ii8
> >         real*8     rr8
> >         write(6,*) "sizeof(integer) = ", sizeof(ii)
> >         write(6,*) "sizeof(rr) = ", sizeof(rr)
> >         write(6,*) "sizeof(integer*8) = ", sizeof(ii8)
> >         write(6,*) "sizeof(rr*8) = ", sizeof(rr8)
> >         end
> >
> > > gfortran ts_sizeof.f && a.out
> > > f95 ts_sizeof.f && a.out
> >
> > To avoid any potential problem, you may want to configure
> > MPICH2 by explicitly specifying which compilers you are using
> >
> > ./configure --prefix=.... CC=gcc CXX=g++ F77=gfortran F90=gfortran
> >
> > (Be sure to do a make distclean before reconfiguring MPICH2 
> if you are 
> > doing an inpath build).  You mentioned you were using intel fortran 
> > compiler, did you configure MPICH2 with ifort, i.e. F77=ifort 
> > F90=ifort ?
> > Again to avoid any potential incompatibility, the rule is always to 
> > use the same compilers to configure/build MPICH2 as the 
> ones that are 
> > used to compile/link your code (using mpicc/mpif90 from MPICH2 
> > installation will avoid the issue).
> >
> > A.Chan
> >
> > >
> > > D.4 Q: When I use the g95 Fortran compiler on a 64-bit
> > platform, some
> > > of the tests fail
> > > A: The g95 compiler incorrectly defines the default Fortran
> > integer as
> > > a 64- bit integer while defining Fortran reals as 32-bit
> > values (the
> > > Fortran standard requires that INTEGER and REAL be the same size).
> > > This was apparently done to allow a Fortran INTEGER to hold
> > the value
> > > of a pointer, rather than requiring the programmer to select an 
> > > INTEGER of a suitable KIND.
> > > To force the g95 compiler to correctly implement the
> > Fortran standard,
> > > use the -i4 flag. For example, set the environment variable
> > F90FLAGS
> > > before configuring MPICH2:
> > > setenv F90FLAGS "-i4"
> > > G95 users should note that there (at this writing) are two 
> > > distributions of
> > > g95 for 64-bit Linux platforms. One uses 32-bit integers 
> and reals 
> > > (and conforms to the Fortran standard) and one uses 
> 32-bit integers 
> > > and 64-bit reals. We recommend using the one that conforms to the 
> > > standard (note that the standard specifies the ratio of
> > sizes, not the
> > > absolute sizes, so a Fortran 95 compiler that used 64 
> bits for both 
> > > INTEGER and REAL would also conform to the Fortran
> > standard. However,
> > > such a compiler would need to use 128 bits for DOUBLE PRECISION 
> > > quantities).
> > >
> > > Thanks kate
> > >
> > >
> > >
> > > The University of Aberdeen is a charity registered in 
> Scotland, No 
> > > SC013683.
> > >
> > > _______________________________________________
> > > mpich-discuss mailing list
> > > mpich-discuss at mcs.anl.gov
> > > https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
> > _______________________________________________
> > mpich-discuss mailing list
> > mpich-discuss at mcs.anl.gov
> > https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
> >
> >
> > The University of Aberdeen is a charity registered in Scotland, No 
> > SC013683.
> > _______________________________________________
> > mpich-discuss mailing list
> > mpich-discuss at mcs.anl.gov
> > https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
> >
> 
> _______________________________________________
> mpich-discuss mailing list
> mpich-discuss at mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss
> 
> 
> The University of Aberdeen is a charity registered in 
> Scotland, No SC013683.
> 



More information about the mpich-discuss mailing list