参考:https://docs.siesta-project.org/projects/siesta/en/latest/installation/build-manually.html
说明:5.0.0
版本已支持cmake
编译,这里默认需要的依赖已经安装,如果在自己的Linux
上没有这些依赖,请参考siesta
编译环境查阅相关软件官网完成安装。
一、flook-0.8.4
官网:https://e-cam.readthedocs.io/en/latest/Electronic-Structure-Modules/modules/flook/readme.html
1. 编译环境
module purge
module load Intel_compiler/19.0.4
module load readline/8.2-gcc8.5.0
export CC=icc FC=ifort
2. 编译
git clone https://github.com/ElectronicStructureLibrary/flook.git
cd flook
# 创建setup.make文件写入编译参数
{
echo "CC = $CC"
echo "FC = $FC"
echo "CFLAGS = $CFLAGS"
echo "FFLAGS = $FFLAGS"
} > setup.make
# readline依赖于ncurses
sed -i "s/-ldl -lreadline/-ldl -lreadline -lncurses/" aotus/external/lua-5.3.5/src/Makefile
sed -i "s|CC= gcc -std=gnu99|CC= icc -std=c99|g" aotus/external/lua-5.3.5/src/Makefile
make liball -j16
make install PREFIX=$HOME/software/flook-0.8.4-icc19.0
二、siesta-5.0.0
1. 编译环境
module purge
module load cmake/3.27.7
module load Intel_compiler/19.0.4
module load MPI/mpich/4.0.2-mpi-x-icc19.0
module load MKL/19.1.2
module load fftw/3.3.10-icc19.0-mpi-x
module load netcdf/4.8.0-icc19.0-mpi-x
module load libxc/5.1.6-icc19.0
module load elpa/2021.05.001-icc19.0-mpi-x
export CMAKE_PREFIX_PATH=$HOME/software/flook-0.8.4-icc19.0:$CMAKE_PREFIX_PATH
2. elpa处理
说明:
cmake
使用pkg-config
查找elpa.pc
,而安装elpa
后默认为elpa-<version>.pc
;- 具体查看
siesta-5.0.0/Config/cmake/Modules/FindCustomElpa.cmake
。
解决方法:
-
创建下面软链接并设置环境变量:
ln -s /path/to/elpa-<version>.pc /path/to/lib/pkg-config/elpa.pc export PKG_CONFIG_PATH=/path/to/lib/pkg-config:$PKG_CONFIG_PATH
如果
elpa
启用了openmp
支持,则为elpa_openmp.pc
,请修改/path/to/elpa-<version>.pc
和/path/to/lib/pkg-config
为本地路径。
3. 编译
wget https://gitlab.com/siesta-project/siesta/-/archive/5.0.0/siesta-5.0.0.tar.gz
tar xzf siesta-5.0.0.tar.gz
cd siesta-5.0.0
####使用第1种方法处理elpa####
mkdir pkgconfig && ln -s $(dirname $(dirname `which elpa2_print_kernels_openmp`))/lib/pkgconfig/*.pc pkgconfig/elpa_openmp.pc
export PKG_CONFIG_PATH=`pwd`/pkgconfig:$PKG_CONFIG_PATH
##########################
cmake -B build \
-DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpif90 \
-DSCALAPACK_LIBRARY="-L${MKLROOT}/lib/intel64 -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64" \
-DNetCDF_PATH=$(dirname $(dirname `which nf-config`)) \
-DLIBFDF_FIND_METHOD=fetch \
-DSIESTA_WITH_OPENMP=ON -DSIESTA_WITH_MPI=ON \
-DSIESTA_WITH_FFTW=ON -DSIESTA_WITH_ELPA=ON \
-DCMAKE_INSTALL_PREFIX=$HOME/software/siesta-5.0.0-icc19.0-mpi-x
make install -C build -j16