help me: compile undefined reference ...

1,326 views
Skip to first unread message

netscape

unread,
Dec 28, 2009, 4:45:19 PM12/28/09
to cp2k
Dear *,*

I am trying to compile the latest CP2K on our linux cluster, Dual-Core
AMD Opteron x86_64 GNU/Linux. Using Intel Fortran compiler ifort
(version 10.1), the serial CP2K version was successfully installed
using Linux-x86-64-intel.sopt. But when I come to the MPI parallel
version, it has tortured me for several days, and no lucky at all. I
first installed the mpich2, all binary files like mpicc and mpif90 are
appeared. Under the help of scalapack_installer_0.96, I compiled BLAS,
BLACS, lapack-3.2.1 and scalapck-1.8.0 by mpicc and mpif90 without any
error. A ifort64_mp ACML was downloaded from website.

In my Linux-x86-64-intel.popt file:

CC = /home/zhang/software/cp2k/intel/mpich2-ifort/bin/mpicc
CPP =
FC = /home/zhang/software/cp2k/intel/mpich2-ifort/bin/mpif90
LD = /home/zhang/software/cp2k/intel/mpich2-ifort/bin/mpif90
AR = ar -r
DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -
D__FFTW3
CPPFLAGS =
FCFLAGS = $(DFLAGS) -I /home/zhang/software/cp2k/intel/include -I /
home/zhang/software/cp2k/intel/acml4.3.0/ifort64_mp/include -mp -O3 -
xW -heap-arrays 64 -funroll-loops -fpp -free
FCFLAGS2 = $(DFLAGS) -I /home/zhang/software/cp2k/intel/include -I /
home/zhang/software/cp2k/intel/acml4.3.0/ifort64_mp/include -mp -O1 -
xW -heap-arrays 64 -fpp -free
LDFLAGS = $(FCFLAGS) -I /home/zhang/software/cp2k/intel/include -I /
home/zhang/software/cp2k/intel/acml4.3.0/ifort64_mp/include
LIBS = /home/zhang/software/cp2k/intel/lib/lib/libscalapack.a \
/home/zhang/software/cp2k/intel/lib/lib/blacsF77.a \
/home/zhang/software/cp2k/intel/lib/lib/blacs.a \
/home/zhang/software/cp2k/intel/acml4.3.0/ifort64_mp/lib/
libacml.a \
/home/zhang/software/cp2k/intel/acml4.3.0/ifort64_mp/lib/
libacml_mv.a \
/home/zhang/software/cp2k/intel/lib/libfftw3.a

OBJECTS_ARCHITECTURE = machine_intel.o

graphcon.o: graphcon.F
$(FC) -c $(FCFLAGS2) $<

With this script file, it generates lots of undefined reference error
messages when it's trying to use libscapack.a. For example,

/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(pdelget.o):pdelget.f:(.text+0x2cb): more undefined references to
`lsame_'
follow
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(PB_Cstypeset.o): In function `PB_Cstypeset':
PB_Cstypeset.c:(.text+0x176): undefined reference to
`saxpy_'
PB_Cstypeset.c:(.text+0x181): undefined reference to
`scopy_'
PB_Cstypeset.c:(.text+0x18c): undefined reference to
`sswap_'
PB_Cstypeset.c:(.text+0x197): undefined reference to
`sgemv_'
PB_Cstypeset.c:(.text+0x1a2): undefined reference to
`ssymv_'
PB_Cstypeset.c:(.text+0x1ad): undefined reference to
`ssymv_'
PB_Cstypeset.c:(.text+0x1b8): undefined reference to
`strmv_'
PB_Cstypeset.c:(.text+0x1c3): undefined reference to
`strsv_'
PB_Cstypeset.c:(.text+0x1fa): undefined reference to
`sger_'
PB_Cstypeset.c:(.text+0x205): undefined reference to
`sger_'
PB_Cstypeset.c:(.text+0x210): undefined reference to
`ssyr_'
PB_Cstypeset.c:(.text+0x21b): undefined reference to
`ssyr_'
PB_Cstypeset.c:(.text+0x226): undefined reference to
`ssyr2_'
PB_Cstypeset.c:(.text+0x231): undefined reference to
`ssyr2_'
PB_Cstypeset.c:(.text+0x23c): undefined reference to
`sgemm_'
PB_Cstypeset.c:(.text+0x247): undefined reference to
`ssymm_'
PB_Cstypeset.c:(.text+0x252): undefined reference to
`ssymm_'
PB_Cstypeset.c:(.text+0x25d): undefined reference to
`ssyrk_'
PB_Cstypeset.c:(.text+0x268): undefined reference to
`ssyrk_'
PB_Cstypeset.c:(.text+0x273): undefined reference to
`ssyr2k_'
PB_Cstypeset.c:(.text+0x27e): undefined reference to
`ssyr2k_'
PB_Cstypeset.c:(.text+0x289): undefined reference to
`strmm_'
PB_Cstypeset.c:(.text+0x294): undefined reference to
`strsm_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtran.o): In
function `pbdtran_':
pbdtran.f:(.text+0xc0): undefined reference to
`lsame_'
pbdtran.f:(.text+0xe5): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtran.o): In
function `pbdtr2af_':
pbdtran.f:(.text+0x1f86): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtran.o): In
function `pbdtr2bt_':
pbdtran.f:(.text+0x22d8): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtran.o): In
function `pbdtr2at_':
pbdtran.f:(.text+0x25f9): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(pbdmatadd.o):pbdmatadd.f:(.text+0xd9): more undefined references to
`lsame_'
follow
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdmatadd.o):
In function `pbdmatadd_':
pbdmatadd.f:(.text+0x34f1): undefined reference to
`daxpy_'
pbdmatadd.f:(.text+0x351c): undefined reference to
`lsame_'
pbdmatadd.f:(.text+0x358d): undefined reference to
`daxpy_'
pbdmatadd.f:(.text+0x3d13): undefined reference to
`dcopy_'
pbdmatadd.f:(.text+0x3d3e): undefined reference to
`lsame_'
pbdmatadd.f:(.text+0x3da3): undefined reference to
`dcopy_'
pbdmatadd.f:(.text+0x4045): undefined reference to
`dscal_'
pbdmatadd.f:(.text+0x4070): undefined reference to
`lsame_'
pbdmatadd.f:(.text+0x40bb): undefined reference to
`dscal_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtrsrt.o): In
function `pbdtrsrt_':
pbdtrsrt.f:(.text+0x62): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbdtrget.o): In
function `pbdtrget_':
pbdtrget.f:(.text+0x49): undefined reference to
`lsame_'
pbdtrget.f:(.text+0x28f): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(PB_Cdtypeset.o): In function `PB_Cdtypeset':
PB_Cdtypeset.c:(.text+0x185): undefined reference to
`daxpy_'
PB_Cdtypeset.c:(.text+0x190): undefined reference to
`dcopy_'
PB_Cdtypeset.c:(.text+0x19b): undefined reference to
`dswap_'
PB_Cdtypeset.c:(.text+0x1a6): undefined reference to
`dgemv_'
PB_Cdtypeset.c:(.text+0x1b1): undefined reference to
`dsymv_'
PB_Cdtypeset.c:(.text+0x1bc): undefined reference to
`dsymv_'
PB_Cdtypeset.c:(.text+0x1c7): undefined reference to
`dtrmv_'
PB_Cdtypeset.c:(.text+0x1d2): undefined reference to
`dtrsv_'
PB_Cdtypeset.c:(.text+0x209): undefined reference to
`dger_'
PB_Cdtypeset.c:(.text+0x214): undefined reference to
`dger_'
PB_Cdtypeset.c:(.text+0x21f): undefined reference to
`dsyr_'
PB_Cdtypeset.c:(.text+0x22a): undefined reference to
`dsyr_'
PB_Cdtypeset.c:(.text+0x235): undefined reference to
`dsyr2_'
PB_Cdtypeset.c:(.text+0x240): undefined reference to
`dsyr2_'
PB_Cdtypeset.c:(.text+0x24b): undefined reference to
`dgemm_'
PB_Cdtypeset.c:(.text+0x256): undefined reference to
`dsymm_'
PB_Cdtypeset.c:(.text+0x261): undefined reference to
`dsymm_'
PB_Cdtypeset.c:(.text+0x26c): undefined reference to
`dsyrk_'
PB_Cdtypeset.c:(.text+0x277): undefined reference to
`dsyrk_'
PB_Cdtypeset.c:(.text+0x282): undefined reference to
`dsyr2k_'
PB_Cdtypeset.c:(.text+0x28d): undefined reference to
`dsyr2k_'
PB_Cdtypeset.c:(.text+0x298): undefined reference to
`dtrmm_'
PB_Cdtypeset.c:(.text+0x2a3): undefined reference to
`dtrsm_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pdswap_.o): In
function `pdswap_':
pdswap_.c:(.text+0x1505): undefined reference to
`dcopy_'
pdswap_.c:(.text+0x1ab2): undefined reference to
`dswap_'
pdswap_.c:(.text+0x1d68): undefined reference to
`dcopy_'
pdswap_.c:(.text+0x23b3): undefined reference to
`dswap_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbztrnv.o): In
function `pbztrnv_':
pbztrnv.f:(.text+0x6d): undefined reference to
`lsame_'
pbztrnv.f:(.text+0x8d): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbzvecadd.o):
In function `pbzvecadd_':
pbzvecadd.f:(.text+0x191): undefined reference to
`lsame_'
pbzvecadd.f:(.text+0x31c): undefined reference to
`lsame_'
pbzvecadd.f:(.text+0x730): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(pbzvecadd.o):pbzvecadd.f:(.text+0xabb): more undefined references to
`lsame_'
follow
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbzvecadd.o):
In function `pbzvecadd_':
pbzvecadd.f:(.text+0x138f): undefined reference to
`zcopy_'
pbzvecadd.f:(.text+0x1909): undefined reference to
`zaxpy_'
pbzvecadd.f:(.text+0x1bd7): undefined reference to
`zscal_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pbztrst1.o): In
function `pbztrst1_':
pbztrst1.f:(.text+0x51): undefined reference to
`lsame_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a
(PB_Cztypeset.o): In function `PB_Cztypeset':
PB_Cztypeset.c:(.text+0x198): undefined reference to
`zaxpy_'
PB_Cztypeset.c:(.text+0x1a3): undefined reference to
`zcopy_'
PB_Cztypeset.c:(.text+0x1ae): undefined reference to
`zswap_'
PB_Cztypeset.c:(.text+0x1b9): undefined reference to
`zgemv_'
PB_Cztypeset.c:(.text+0x1cf): undefined reference to
`zhemv_'
PB_Cztypeset.c:(.text+0x1da): undefined reference to
`ztrmv_'
PB_Cztypeset.c:(.text+0x1e5): undefined reference to
`ztrsv_'
PB_Cztypeset.c:(.text+0x21c): undefined reference to
`zgerc_'
PB_Cztypeset.c:(.text+0x227): undefined reference to
`zgeru_'
PB_Cztypeset.c:(.text+0x23d): undefined reference to
`zher_'
PB_Cztypeset.c:(.text+0x253): undefined reference to
`zher2_'
PB_Cztypeset.c:(.text+0x25e): undefined reference to
`zgemm_'
PB_Cztypeset.c:(.text+0x269): undefined reference to
`zsymm_'
PB_Cztypeset.c:(.text+0x274): undefined reference to
`zhemm_'
PB_Cztypeset.c:(.text+0x27f): undefined reference to
`zsyrk_'
PB_Cztypeset.c:(.text+0x28a): undefined reference to
`zherk_'
PB_Cztypeset.c:(.text+0x295): undefined reference to
`zsyr2k_'
PB_Cztypeset.c:(.text+0x2a0): undefined reference to
`zher2k_'
PB_Cztypeset.c:(.text+0x2ab): undefined reference to
`ztrmm_'
PB_Cztypeset.c:(.text+0x2b6): undefined reference to
`ztrsm_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pzswap_.o): In
function `pzswap_':
pzswap_.c:(.text+0x1505): undefined reference to
`zcopy_'
pzswap_.c:(.text+0x1ab2): undefined reference to
`zswap_'
pzswap_.c:(.text+0x1d68): undefined reference to
`zcopy_'
pzswap_.c:(.text+0x23b3): undefined reference to
`zswap_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pzscal_.o): In
function `pzscal_':
pzscal_.c:(.text+0x25e): undefined reference to
`zscal_'
pzscal_.c:(.text+0x34a): undefined reference to
`zscal_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pzgemv_.o): In
function `pzgemv_':
pzgemv_.c:(.text+0x6a4): undefined reference to
`zgemv_'
pzgemv_.c:(.text+0xade): undefined reference to
`zgemv_'
pzgemv_.c:(.text+0xe5e): undefined reference to
`zscal_'
pzgemv_.c:(.text+0xf3a): undefined reference to
`zscal_'
/home/zhang/software/cp2k/intel/lib/lib/libscalapack.a(pzhemv_.o): In
function `pzhemv_':
pzhemv_.c:(.text+0x80e): undefined reference to
`zscal_'
pzhemv_.c:(.text+0x9de): undefined reference to
`zgemv_'
pzhemv_.c:(.text+0xa75): undefined reference to
`zgemv_'
pzhemv_.c:(.text+0x1118): undefined reference to
`zscal_'
pzhemv_.c:(.text+0x13c1): undefined reference to
`zgemv_'
pzhemv_.c:(.text+0x1469): undefined reference to
`zgemv_'
pzhemv_.c:(.text+0x1796): undefined reference to
`zscal_'
pzhemv_.c:(.text+0x1903): undefined reference to `zscal_'

Any idea is welcomed and thanks in advance
Zhang

flo

unread,
Dec 29, 2009, 6:11:57 AM12/29/09
to cp2k
Hi Zhang,

to me the arch file looks reasonable. I don't use ifort, therefore I
don't know about the details for this compiler. But to me it looks
like it is not compiler related. All missing routines are basic BLAS
routines. That means, something is wrong the way you link in acml or
the path you specify for this library.

Sorry, that I can't tell you more, but I hope this helps a bit.

Flo

Luca

unread,
Dec 29, 2009, 7:56:30 AM12/29/09
to cp2k
Hi Zhang,
you have an inconsistency in appending underscores to the fortran name
entities,
it seems to be only for the scalapack library.
You may check your scalapack config file (SLmake.in):
# (-DNoChange, -DAdd_, -DUpCase, or -Df77IsF2C)
CDEFS =-DAdd_ $(USEMPI)
This problem may depend on the compiler options (in gnu compiler : -
fno-second-underscore,-fno-underscoring ).
Search for similar topics in the mailing list.
Luca

> `zswap_' ...
>
> read more »

netscape

unread,
Dec 29, 2009, 12:28:18 PM12/29/09
to cp2k
Thanks, but there is no further information searching the mailing
list. While in my SLmake.in file of compiling scalapack, there has
F77 = /home/zhang/software/cp2k/intel/mpich2-ifort/bin/
mpif90
CC = /home/zhang/software/cp2k/intel/mpich2-ifort/bin/mpicc
NOOPT = -mp
F77FLAGS = $(NOOPT) -O3
CCFLAGS = -O3
SRCFLAG =
F77LOADER = $(F77)
CCLOADER = $(F77)
F77LOADFLAGS =
CCLOADFLAGS = -nofor_main

CDEFS = -DNO_IEEE $(USEMPI) -DAdd_

ARCH = ar
ARCHFLAGS = cr
RANLIB = /usr/bin/ranlib

Since the compile error message is so long that I miss some beginning
part, I noticed that the lib files, libcp2k_base_lib.a
libcp2k_fft_lib.a libcp2k_lib.a, generated in CP2K/lib/Linux-x86-64-
intel/popt/ also have the undefined reference problems. Such as:

/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_types.o): In function
`kg_gpw_fm_mol_types_mp_kg_gpw_fm_mol_to_fm_mol_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_types.F:(.text+0xf48): undefined reference to `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o): In function
`kg_gpw_fm_mol_utils_mp_read_mo_mol_restart_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x740): undefined reference to `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x79f): undefined reference to `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x7fe): undefined reference to `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x222f): undefined referenceto `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o):/home/zhang/
software/cp2k/intel/test/cp2k/makefiles/../src/kg_gpw_fm_mol_utils.F:
(.text+0x2371): more undefined references to `dcopy_' follow
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o): In function
`kg_gpw_fm_mol_utils_mp_mol_mo_random_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x79f1): undefined referenceto `dlarnv_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o): In function
`kg_gpw_fm_mol_utils_mp_fm_mol_syevx_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x7b8a): undefined referenceto `dlamch_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x7e40): undefined referenceto `ilaenv_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x7e86): undefined referenceto `ilaenv_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x8277): undefined referenceto `dsyevx_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o): In function
`kg_gpw_fm_mol_utils_mp_fm_mol_syevd_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x8c9a): undefined referenceto `dsyevd_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x8d07): undefined referenceto `dcopy_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../lib/Linux-
x86-64-intel/popt/libcp2k_lib.a(kg_gpw_fm_mol_utils.o): In function
`kg_gpw_fm_mol_utils_mp_fm_mol_power_':
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x9181): undefined referenceto `dlamch_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x9500): undefined referenceto `ilaenv_'
/home/zhang/software/cp2k/intel/test/cp2k/makefiles/../src/
kg_gpw_fm_mol_utils.F:(.text+0x9547): undefined referenceto `ilaenv_'

Zhang

Luca

unread,
Dec 29, 2009, 6:13:17 PM12/29/09
to cp2k
You should report all details for a correct ansewer.
Anyway the problem is the same and it relies on an inconsistency
in adding a trailing undescore in the object file name.
By default, ifort add a trailing underscore, therefore you do not have
problems to compile the cp2k.sopt serial version.
When you use mpif90, mpicc gcc icc ifort etc. to compile libraries
and cp2k.popt parallel
version, you should check consistency of the compiler options.
In your case I suggest you check underscore compatibility.
you should see also in mpi and ifort manuals.
In this mailing list there are a some notes for g95 compiler.
If you have problem with ifort, you can follow these notes.
good luck

sudipta sinha

unread,
Apr 14, 2016, 7:16:14 AM4/14/16
to cp2k

Hi All,

Anyone has resolved this issue. I am also facing the same problem as Zhang mentioned.

I look forward your answer.

Best
Sudipta
Reply all
Reply to author
Forward
0 new messages