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

ifort complie error and mpif90 complie strange phenomenon

xiaoming_l_
Beginner
792 Views

I complie my program with ifort, in Makefile .I got these erros

/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:780: undefined reference to `mpi_bcast_'
wrap_mpi.o: In function `mpiallmaxint':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:808: undefined reference to `mpi_allreduce_'
wrap_mpi.o: In function `mpialltoallv':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:846: undefined reference to `mpi_alltoallv_'
wrap_mpi.o: In function `mpialltoallint':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:879: undefined reference to `mpi_alltoall_'
wrap_mpi.o: In function `mpiallgatherv':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:918: undefined reference to `mpi_allgatherv_'
wrap_mpi.o: In function `mpiallgatherint':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:951: undefined reference to `mpi_allgather_'
wrap_mpi.o: In function `altalltoallv':
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/wrap_mpi.F90:1109: undefined reference to `mpi_sendrecv_'
gmake: *** [/home/jp/nersc/camnersc6/cam31/benchmark/bld/cam] 错误 1

I think I should complie with mpif90 instead of ifort ,these error will die out.....,but I think wrong . 

I complie my program with mpif90 instead of ifort ,I got these error..

/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/time_manager.F90(1139): error #6406: Conflicting attributes or multiple declaration of name. [ESMF_DATE]
type(esmf_date) :: date1
--------^
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/time_manager.F90(1140): error #6406: Conflicting attributes or multiple declaration of name. [ESMF_DATE]
type(esmf_date) :: date2
--------^
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/time_manager.F90(1141): error #6406: Conflicting attributes or multiple declaration of name. [ESMF_TIME]
type(esmf_time) :: diff
--------^
/home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/time_manager.F90(8): error #6580: Name in only-list does not exist. [ESMF_ERRHANDLERSETTYPE]
esmf_errhandlersettype, esmf_err_return, esmf_errprint, esmf_success, &
------^
/tmp/ifortnFeUlu.i90(1183): catastrophic error: Too many errors, exiting
compilation aborted for /home/jph/nersc/camnersc6/cam31/models/atm/cam/src/control/time_manager.F90 (code 1)
gmake: *** [time_manager.o] 错误 1

but firstly I complie my program with ifort , then I got errors , and I complie my program ,I will got the executable,Can you tell my why ?

if I want complie my program with mpif90 instead of ifort ,what should I do ?

0 Kudos
3 Replies
TimP
Honored Contributor III
792 Views

You don't give enough information. 

I would be concerned that your unspecified mpif90 isn't compatible with ifort. 

For example, Intel MPI has the convention that mpif90 works with gfortran, while mpiifort works with ifort.

OpenMPI has deprecated mpif90, but mpifort could be bulit with the Fortran compiler of your choice.

Simply showing us the screen echo from

mpif90 -V

mpif90 -v

mpif90 --showme

......

would help

When you get dissed on other forums for asking ambiguous questions, please think about how you can pose a more meaningful question.

If your esmf_ functions have MPI data type arguments, mixing implementations of MPI could produce an error.

The users' guide for your application has advice about how to ask questions.  If you don't follow that advice, some may suspect that you didn't consult the guide at all.

0 Kudos
xiaoming_l_
Beginner
792 Views

Thanks for your help . I think I should be independent,and learn how to ask a questions.

mpif90 -v :ifort version 13.0.0

mpif90 -V:

Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.0 Build 20120731
Copyright (C) 1985-2012 Intel Corporation. All rights reserved.

mpif90 --show me:

ifort -I/opt/openmpi-icc/include -I/opt/openmpi-icc/lib -L/opt/openmpi-icc/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil

I installed the openmpi-icc ,but I don't find the mpiifort.

0 Kudos
Casey
Beginner
792 Views

That looks like a proper build of OpenMPI using ifort (at least that --showme is the same as my OpenMPI install which works for me).

One question though.  Are you cleaning your build tree between trying to compile with ifort / mpif90?  Aside from that, Tim is right, this isn't so much a compiler question as it is a CAM question.  The advice to check the user guide is what you should do.

http://www.cesm.ucar.edu/models/cesm1.0/cam/

Scroll down to the version of CAM you are using and read the user guide chapter for building and installing CAM.  If you still have problems, I would advise posting your questions to the proper forum: http://bb.cgd.ucar.edu/forums/problems-building-cam .

0 Kudos
Reply