Вчера мне понадобилось установить на кластер программу CP2K, которая позволяет проводить расчеты кристаллических и молекулярных систем методами DFT и DFTB. Процесс установки оказался не очень сложным, но тем не менее стоит про него написать.
Установка производилась с использованием компиляторов Intel. Для начала, что нужно было сделать, это скомпилировать библиотеку для FFTW, которая находится в папке
/opt/intel/mkl/interfaces/fftw3xf/, т.к. для компиляции CP2K она нам будет нужна, собрать эту FFTW библиотеку можно следующим образом, написав:
make libintel64 compile=intel
После чего мы получим библиотеку с именем libfftw3xf_intel.a.
Далее нужно подготовить makefile нашей программы, для этого заходим в папку /cp2k-2.3/arch/ в которой видим множество шаблонов для файлов. Копируем файл Linux-x86-64-intel.popt
cp Linux-x86-64-intel.popt Linux-x86-64-MY.popt
После чего в новый скопированный файл вносим изменения в соответствие с нижеуказанными строками:
CC = cc
CPP =
FC = mpiifort
LD = mpiifort
AR = ar -r
INTEL_MKL=/share/intel/mkl
INTEL_INC = $(INTEL_MKL)/include/fftw
INTEL_LIB = $(INTEL_MKL)/lib/intel64
DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3
CPPFLAGS =
FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -O3 -msse2 -heap-arrays 64 -funroll-loops -fpp -free
FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -O1 -msse2 -heap-arrays 64 -fpp -free
LDFLAGS = $(FCFLAGS) -I$(INTEL_INC)
LIBS = /share/intel/mkl/interfaces/fftw3xf/libfftw3xf_intel.a \
-L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_blas95_lp64 \
-L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_lapack95_lp64 \
${INTEL_LIB}/libmkl_scalapack_lp64.a ${INTEL_LIB}/libmkl_solver_lp64_sequential.a -Wl,--start-group ${INTEL_LIB}/libmkl_intel_lp64.a ${INTEL_LIB}/libmkl_sequential.a ${INTEL_LIB}/libmkl_core.a ${INTEL_LIB}/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group -lpthread
OBJECTS_ARCHITECTURE = machine_intel.o
graphcon.o: graphcon.F
$(FC) -c $(FCFLAGS2) $<
qs_vxc_atom.o: qs_vxc_atom.F
$(FC) -c $(FCFLAGS2) $<
После этого делаем
make ARCH=Linux-x86-64-MY VERSION=popt
и получаем на выходе в папке exe/Linux-x86-64-MY запускаемый файл cp2k.popt :)
Установка производилась с использованием компиляторов Intel. Для начала, что нужно было сделать, это скомпилировать библиотеку для FFTW, которая находится в папке
/opt/intel/mkl/interfaces/fftw3xf/, т.к. для компиляции CP2K она нам будет нужна, собрать эту FFTW библиотеку можно следующим образом, написав:
make libintel64 compile=intel
После чего мы получим библиотеку с именем libfftw3xf_intel.a.
Далее нужно подготовить makefile нашей программы, для этого заходим в папку /cp2k-2.3/arch/ в которой видим множество шаблонов для файлов. Копируем файл Linux-x86-64-intel.popt
cp Linux-x86-64-intel.popt Linux-x86-64-MY.popt
После чего в новый скопированный файл вносим изменения в соответствие с нижеуказанными строками:
CC = cc
CPP =
FC = mpiifort
LD = mpiifort
AR = ar -r
INTEL_MKL=/share/intel/mkl
INTEL_INC = $(INTEL_MKL)/include/fftw
INTEL_LIB = $(INTEL_MKL)/lib/intel64
DFLAGS = -D__INTEL -D__FFTSG -D__parallel -D__BLACS -D__SCALAPACK -D__FFTW3
CPPFLAGS =
FCFLAGS = $(DFLAGS) -I$(INTEL_INC) -O3 -msse2 -heap-arrays 64 -funroll-loops -fpp -free
FCFLAGS2 = $(DFLAGS) -I$(INTEL_INC) -O1 -msse2 -heap-arrays 64 -fpp -free
LDFLAGS = $(FCFLAGS) -I$(INTEL_INC)
LIBS = /share/intel/mkl/interfaces/fftw3xf/libfftw3xf_intel.a \
-L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_blas95_lp64 \
-L${INTEL_LIB} -I${INTEL_INC} -I${INTEL_INC}/intel64/lp64 -lmkl_lapack95_lp64 \
${INTEL_LIB}/libmkl_scalapack_lp64.a ${INTEL_LIB}/libmkl_solver_lp64_sequential.a -Wl,--start-group ${INTEL_LIB}/libmkl_intel_lp64.a ${INTEL_LIB}/libmkl_sequential.a ${INTEL_LIB}/libmkl_core.a ${INTEL_LIB}/libmkl_blacs_intelmpi_lp64.a -Wl,--end-group -lpthread
OBJECTS_ARCHITECTURE = machine_intel.o
graphcon.o: graphcon.F
$(FC) -c $(FCFLAGS2) $<
qs_vxc_atom.o: qs_vxc_atom.F
$(FC) -c $(FCFLAGS2) $<
После этого делаем
make ARCH=Linux-x86-64-MY VERSION=popt
и получаем на выходе в папке exe/Linux-x86-64-MY запускаемый файл cp2k.popt :)
Комментариев нет:
Отправить комментарий