[mpich-discuss] F90FLAGS "-i4" statement for mpich2 configuration
Rajeev Thakur
thakur at mcs.anl.gov
Fri Apr 30 09:15:47 CDT 2010
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
>
More information about the mpich-discuss
mailing list