Installation of libint and libxc using the Cray Compiler wrappers

581 views
Skip to first unread message

iskarmou

unread,
Dec 1, 2015, 9:24:06 AM12/1/15
to cp2k
Dear all,

I am trying to install the libint-1.1.4 and libxc-2.2.0 libraries in order
to compile cp2k-2.5.0 on a Cray supercomputer ( Titan).
When I am trying to use the cc and CC wrappers in the Cray environment
I cannot compile the libraries. On the other hand, there is no problem
with gnu and intel compilers.
Any ideas on how to resolve this problem?

The error message for libxc is:
libtool: link: cc -g -O2 -o xc-info xc-info.o  -lm ./.libs/libxc.a
./.libs/libxc.a(gga_c_q2d.o): In function `work_gga_c$$CFE_id_af3916ee_7fd6a169':
/autofs/nccs-svm1_home1/iskarmou/soft_tgz/libxc-2.2.0/src/work_gga_c.c:86: undefined reference to `xc_gga_c_q2d_func'
/opt/cray/cce/8.4.0/cray-binutils/x86_64-unknown-linux-gnu/bin/ld: link errors found, deleting executable `xc-info'


libint error:

make[3]: Entering directory `/autofs/nccs-svm1_home1/iskarmou/soft_tgz/libint-1.1.4/src/lib/libint'
if test -f "make_libsrcdir"; then \
make rm_libsrcdir; \
fi; \
/usr/bin/install -c -d -m 0755 tmp/libint || exit 1; \
ln -s tmp/libint src || exit 1; \
    echo "Last time the library source directory was created:\c" > make_libsrcdir
date >> make_libsrcdir
cp -f /autofs/nccs-svm1_home1/iskarmou/soft_tgz/libint-1.1.4/src/lib/libint/Makefile.library tmp/libint/Makefile
cd src; /ccs/home/iskarmou/soft_tgz/libint-1.1.4/src/lib/libint/../../../src/bin/libint/build_libint
/bin/sh: line 1: 13487 Illegal instruction     /ccs/home/iskarmou/soft_tgz/libint-1.1.4/src/lib/libint/../../../src/bin/libint/build_libint
make[3]: *** [tmp/libint/libint.h] Error 132

Alfio Lazzaro

unread,
Dec 2, 2015, 2:48:14 AM12/2/15
to cp2k
Dear iskarmou,
CP2K doesn't support entirely the CRAY compiler (time ago I was able to compile CP2K with CCE, but there were a coupe of problems).
I can suggest to use GNU instead.

However, if you want to give a try with new CCE version, I did a test compiling libint-1.1.5 with CCE and it worked for me on Daint (Cray XC30 at CSCS):

My modules:

[08:44:26] alazzaro@daint102:~/project/cp2k/libint/libint-1.1.5_cray > module list
Currently Loaded Modulefiles:
  1) modules/3.2.10.3                      10) udreg/2.3.2-1.0502.10518.2.17.ari     19) atp/1.8.2
  2) eswrap/1.1.0-1.020200.1231.0          11) ugni/6.0-1.0502.10863.8.29.ari        20) PrgEnv-cray/5.2.82
  3) switch/1.0-1.0502.60522.1.61.ari      12) pmi/5.0.7-1.0000.10678.155.25.ari     21) craype-sandybridge
  4) craype-network-aries                  13) dmapp/7.0.1-1.0502.11080.8.76.ari     22) slurm
  5) cce/8.4.0                             14) gni-headers/4.0-1.0502.10859.7.8.ari  23) cray-mpich/7.2.2
  6) craype/2.4.0                          15) xpmem/0.1-2.0502.64982.5.3.ari        24) alps/5.2.4-2.0502.9822.32.1.ari
  7) totalview-support/1.1.4               16) dvs/2.5_0.9.0-1.0502.2188.1.116.ari   25) ddt/5.1
  8) totalview/8.11.0                      17) alps/5.2.4-2.0502.9774.31.11.ari      26) fftw/3.3.4.3
  9) cray-libsci/13.0.4                    18) rca/1.0.0-2.0502.60530.1.62.ari

(Note that I don't have GPU modules loaded, that's fine. Make sure to have the right CRAYPE module)

./configure --prefix=/project/ch5/alazzaro/cp2k/libint/libint_cray CC=cc CXX=CC 
make -j8
make install

I didn't try for libxc, but there it looks like that you are mixing static and dynamic linking. Could you check that?

Alfio

iskarmou

unread,
Dec 2, 2015, 5:31:56 AM12/2/15
to cp2k
Dear Alfio,

using the GNU programming environment (by performing a module swap)
I managed to compile libxc.
However I still have the same problem with libint.
The support group of Titan told me that
the compiler wrappers create executables for
the compute nodes' architecture, which produce an "Illegal instruction" error
when executed on the login/external nodes.
So I was advised to run the
configure step on the login node, and then submit an interactive job and
execute the make step on a compute node via aprun.
However, when I do such a thing I get an error:
Exec /usr/bin/make failed: chdir /autofs/nccs-svm1_home1/iskarmou No such file or directory
Any ideas on how to proceed further?

Yannis

Alfio Lazzaro

unread,
Dec 2, 2015, 7:11:37 AM12/2/15
to cp2k
Dear Yannis,
the suggestion makes sense... 

The directory you are using is not exported to the computer nodes, so you need to change to scratch (just copy everything in the scratch and run from there).
But, but, you can also try to use my libint compiled for XK7:


Download and see if it works with CP2K :)

Best regards,

Alfio

iskarmou

unread,
Dec 2, 2015, 11:01:50 AM12/2/15
to cp2k
Dear Alfio,

thanks for the suggestions.
I will give it a try.
Which compiler did you use to
compile this libint version?

Yannis

Alfio Lazzaro

unread,
Dec 3, 2015, 12:04:41 AM12/3/15
to cp2k
Sorry, I didn't mention that: it is GNU.

Alfio

iskarmou

unread,
Dec 3, 2015, 8:11:50 AM12/3/15
to cp2k
Dear ALfio,

Finally I managed to compile the library, working as you suggested
in the scratch directory!
Now I will try to build cp2k and I will keep you posted!

Yannis

iskarmou

unread,
Dec 4, 2015, 6:57:51 AM12/4/15
to cp2k
Last update:

Finally the libraries and the cp2k code were succesfully compiled on Titan
and the code is running.
Note that the compilation failed with libxc-2.0.1, however it worked
for libxc-2.2.0. Libint-1.1.4 was also used.
CP2K versions 2.5.0, 2.5.1 and 2.6.2 were succesfully compiled.
The arch file used was:

CC = cc
CPP =
FC = ftn
LD = ftn
AR = ar -r
CPPFLAGS =
DFLAGS = -D__GFORTRAN -D__FFTW3 -D__LIBINT -D__LIBXC2 -D__parallel -D__BLACS -D__SCALAPACK \
-D__HAS_NO_SHARED_GLIBC
CFLAGS = $(DFLAGS)
FCFLAGS = $(DFLAGS) -O3 -mavx -funroll-loops -ffast-math -ftree-vectorize \
-ffree-form -ffree-line-length-512
LDFLAGS = $(FCFLAGS)
LIBS = -lfftw3 \
        -L/ccs/home/iskarmou/soft_tgz/libint/lib -lderiv -lint -lstdc++ \
        -L/ccs/home/iskarmou/soft_tgz/libxc-2.2.0/soft/lib -lxcf90 -lxc

Dear Alfio, thanks for the suggestions!!

Yannis
Reply all
Reply to author
Forward
0 new messages