Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.

ifc 7.0 and mpich-1.2.5 problems.

sdx1
Beginner
667 Views
Hi,

I installed ifc 7.0(with the latest patches) on a dual Pentium IV(Xeons) running on Kernel 2.4.18-3smp
with glibc-2.2.5-34
I compiled mpich 1.2.5 from http://www-unix.mcs.anl.gov/mpi/mpich/
with configure options
./configure --enable-f90modules --prefix=/apps/mpich-1.2.5ifc -cc=icc -fc=ifc -f90=ifc -c++=icc -rsh=ssh --enable-sharedlib
I compiled and did the testing.
All the tests pass excepts for f90
It fails for examples/basic/pi3f90.f90

mpif90 -c pi3f90.f90
program MAIN
ifc: error: Fatal error in /apps/intel/compiler70/ia32/bin/f90com, terminated by segmentation violation
compilation aborted for pi3f90.f90 (code 1)
make[1]: *** [pi3f90.o] Error 1
make: *** [default] Error 2

All the other codes(C,C++,F77) work fine except for any F90/F95 codes.

Any help will be apreciated.
-VG
0 Kudos
5 Replies
Steven_L_Intel1
Employee
667 Views
I suggest trying it with 7.1, which is the current version.

Steve
0 Kudos
Ning_W_Intel
Employee
667 Views
This is not the version problem of ifc.

To fix this ,edit the source code of pi3f90.f90
change the code "use mpi" to "include 'mpif.h' "

it will ok!
0 Kudos
tangsk
Beginner
667 Views
Hi,
I also meet this problem. If I keep "use mpi", I got the following error message:
examples% mpif90 -c pi3f90.f90
program MAIN
Error FCE37 : Module MPI not found

f(a) = 4.d0 / (1.d0 + a*a)
^
Comment 18 at (31:pi3f90.f90) : The statement function is obsolescent in Fortran 95

sum = sum + f(x)
^
Comment 18 at (60:pi3f90.f90) : The statement function is obsolescent in Fortran 95

1 Error
compilation aborted for pi3f90.f90 (code 1)

While if I use "include 'mpi.h'", I got the following error message:
examples% mpif90 pi3f90.f90
program MAIN

integer*8 MPI_DISPLACEMENT_CURRENT
^
Warning 2 at (248:mpif.h) : Type size specifiers are an extension to standard Fortran 95

f(a) = 4.d0 / (1.d0 + a*a)
^
Comment 18 at (31:pi3f90.f90) : The statement function is obsolescent in Fortran 95

sum = sum + f(x)
^
Comment 18 at (60:pi3f90.f90) : The statement function is obsolescent in Fortran 95

346 Lines Compiled
pi3f90.o(.text+0x1b): In function `main':
: undefined reference to `mpi_init_'
pi3f90.o(.text+0x32): In function `main':
: undefined reference to `mpi_comm_rank_'
pi3f90.o(.text+0x49): In function `main':
: undefined reference to `mpi_comm_size_'
pi3f90.o(.text+0x153): In function `main':
: undefined reference to `mpi_bcast_'
pi3f90.o(.text+0x1fb): In function `main':
: undefined reference to `mpi_reduce_'
pi3f90.o(.text+0x28b): In function `main':
: undefined reference to `mpi_finalize_'

It seems that some PATH isn't right. But How to solve this problem? Thanks!
0 Kudos
TimP
Honored Contributor III
667 Views
In examples which I have in front of me:
Compiling is done with the mpich include path made explicit:
ifc -I/mpich/include *.f
Where ifc is used as the link command for an mpich build, the libraries are specified explicitly e.g.:
ifc *.o -L/mpich/lib -lfmpich -lmpich
I am more used to lam-mpi, where the mpif77 and mpif90 commands are built with ifc and a specific path to the installation (specified in .configure) and carry inside them the information about mpi library paths. If you don't have the paths built into mpif90, or chose not to use it as the link command, you surely will need to specify the paths.
0 Kudos
tangsk
Beginner
667 Views
I found out the path problem. But it seems that the function MPI_Wtime() doesn't work for.
mpif90 -o flash2 Cosmology.o .......... -L /usr/local/lib -lhdf5
flash.o(.text+0x1f): In function `main':
: undefined reference to `mpi_wtime_'
flash.o(.text+0x2d9): In function `main':
: undefined reference to `mpi_wtime_'
init_flash.o(.text+0x229): In function `init_flash_':
: undefined reference to `mpi_wtime_'
output.o(.text+0x2d9): In function `output_':
: undefined reference to `mpi_wtime_'
output.o(.text+0x420): In function `output_':
: undefined reference to `mpi_wtime_'
output.o(.text+0x51b): more undefined references to `mpi_wtime_' follow
make[1]: *** [flash2] Error 1
make[1]: Leaving directory `/usr/local/flash/sources/FLASH2.3/object'
make: *** [default] Error 2

Other mpi_(functions) are ok.
0 Kudos
Reply