Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: [OMPI users] Intel compiled undefined reference errors (i.e. mpi_reduce_)
From: Jason Maldonis (maldonis_at_[hidden])
Date: 2013-06-24 12:00:09


Hello all,

I am using OpenMPI version 1.6.4 (installed with the Intel compilers) and I
am getting some undefined reference errors.

First, I will give you some background.

While reinstalling and upgrading our cluster, this is how I installed
openmpi:
While installing CentOS with ROCKS 6.1, openmpi was preinstalled. I left
this alone and installed the Intel compilers, and then installed openmpi
with the Intel compilers in a new directory
(/export/apps/openmpi_intel_20130618). So my understanding is that there
are now two openmpi version installed, one with gcc etc and one with the
Intel compilers.

I then put our personal simulation code back onto the machine and tried to
"make" it. I received multiple errors, some of which I have fixed. I have
mostly done this by changing the PATH and LD_LIBRARY_PATH variables to
correctly point to the Intel version of OpenMPI. I also linked in mpi.mod
and some mpi*.h files, which may not have been the correct thing to do???
Note that these are linked to the Intel version of OpenMPI, not the GNU
version.

The makefile I am using is a few years old, and I am still terrible at
understanding makefiles so there could easily be a problem in there (it is
pasted at the end).

The Intel version of OpenMPI is installed in
/export/apps/openmpi_intel_20130618
and the GNU version is installed in /opt/openmpi
(At least this is my understanding...)

Now I am still getting some undefined reference errors. Namely:
[root_at_odie 060911_rmc_eam_gr_vk_t4]# make
ifort -g -debug all -check all -implicitnone -warn all -o rmc_test ran2.o
globals.o read_inputs.o model.o rmc_functions.o scattering_factors.o fem1.o
gr.o eam.o rmc_v_1_0.o -L /export/apps/openmpi_intel_20130618/lib -lmpi
ifort: warning #10182: disabling optimization; runtime debug checks enabled
fem1.o: In function `fem':
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/fem1.f90:583:
undefined reference to `mpi_reduce_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/fem1.f90:584:
undefined reference to `mpi_reduce_'
fem1.o: In function `fem_update':
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/fem1.f90:888:
undefined reference to `mpi_reduce_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/fem1.f90:889:
undefined reference to `mpi_reduce_'
rmc_v_1_0.o: In function `rmc':
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:79:
undefined reference to `mpi_init_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:80:
undefined reference to `mpi_comm_rank_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:81:
undefined reference to `mpi_comm_size_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:188:
undefined reference to `mpi_wtime_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:237:
undefined reference to `mpi_bcast_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:339:
undefined reference to `mpi_wtime_'
/state/partition1/home/jjmaldonis/Jinwoo/2011/060911_rmc_eam_gr_vk_t4/rmc_v_1_0.f90:370:
undefined reference to `mpi_finalize_'
make: *** [debug] Error 1

The above undefined reference errors are my problem.

Below are my PATH and LD_LIBRARY_PATH variables, if they are of help.
echo $PATH
/usr/lib64/qt-3.3/bin:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/bin/intel64:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/mpirt/bin/intel64:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/bin/intel64:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/bin/intel64_mic:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/debugger/gui/intel64:/export/apps/intel_20130618/advisor_xe_2013/bin64:/export/apps/intel_20130618/inspector_xe_2013/bin64:/export/apps/intel_20130618/vtune_amplifier_xe_2013/bin64:/usr/local/bin:/bin:/usr/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/eclipse:/opt/ganglia/bin:/opt/ganglia/sbin:/usr/java/latest/bin:/opt/maven/bin:/export/apps/openmpi_intel_20130618/:/opt/pdsh/bin:/opt/rocks/bin:/opt/rocks/sbin:/opt/condor/bin:/opt/condor/sbin:/usr/local/samba/sbin:/opt/gridengine/bin/linux-x64:/export/apps/openmpi_intel_20130618/bin/:/usr/local/samba/sbin:/export/apps/openmpi_intel_20130618/bin/

echo $LD_LIBRARY_PATH
/opt/gridengine/lib/linux-x64:/export/apps/openmpi_intel_20130618/lib:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/compiler/lib:/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/compiler/lib/intel64/

Below I will paste my makefile, and attached are the compressed
"./configure ..." and "make all install" command logs. Please let me know
anything else that you need.

I am still new to all this, so please be thorough in your explanations for
me!

Thank you in advance,
Jason

#
# default makefile for ifort compiler with more or less
# appropriate options for debugging and high performance
#

# application name
APP = rmc_test

# list of source files
SRC = ran2.f90 globals.f90 read_inputs.f90 model.f90 rmc_functions.f90
scattering_factors.f90 fem1.f90 gr.f90 eam.f90 rmc_v_1_0.f90

# list of object files
OBJ = ran2.o globals.o read_inputs.o model.o rmc_functions.o
scattering_factors.o fem1.o gr.o eam.o rmc_v_1_0.o

# define libraries needed by the linker
LIBS = -L /export/apps/openmpi_intel_20130618/lib -lmpi
# -rpath
/state/partition1/apps/intel_20130618/composer_xe_2013.3.163/compiler/lib/

# compiler options for debugging
FC_DEBUG = ifort -g -debug all -check all -implicitnone -warn all

# compiler options for optmized running
#FC_OPT = ifort -O3 -xO -ipo -no-prec-div -static
#FC_OPT = mpif90 -O3 -ipo -static
FC_OPT = mpif90 -O3

# build rules

.SUFFIXES: .f90 .o
.f90.o:
        ${FC_DEBUG} -c $<

debug: ${OBJ}
        ${FC_DEBUG} -o ${APP} ${OBJ} ${LIBS}

opt: ${SRC}
        ${FC_OPT} -o ${APP} ${SRC} ${LIBS}

clean:
        rm -f *.mod *.o ${APP}
        ln -s /export/apps/openmpi_intel_20130618/lib/mpi.mod ./mpi.mod