星逸arm的k8s docker镜像(1)siesta安装
·
本文记录了在ARM架构的Ubuntu系统(基于天河星逸arm架构的docker镜像)上使用K8s镜像安装SIESTA量子化学软件包的过程。主要步骤包括:1)安装GCC-9等基础工具;2)安装OpenMPI并行计算库;3)安装OpenBLAS、LAPACK等数学库;4)安装SCALAPACK并行线性代数库;5)安装FFTW3傅里叶变换库;6)编译SIESTA主程序及工具包。期间解决了编译器版本过高导致的SCALAPACK编译错误、系统架构识别问题等。最终成功构建了完整的SIESTA计算环境。
0. gcc安装
apt-get update
apt-get install gcc-9 g++-9 gfortran-9
apt-get install make cmake vim
apt-get install rsync //vasp安装需要
镜像其实可以安装gcc11,gcc14,但是在安装scalapack的时候会报错Rank mismatch between actual argument at (1) and actual argument at (2).错误就是编译器版本太高了,网上说编译命令后边加上-fallow-argument-mismatch可以解决,但似乎又会出现新的错误,只有把编译器版本降低
1. openmpi安装
./configure CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 --prefix=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/openmpi-gcc9
CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 make all install
2. openblas安装
CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 make PREFIX=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9
CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 make PREFIX=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9 install
3. lapack安装
vi make.inc
CC=gcc-9
FC=gfortran-9
BLASLIB = /HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/libopenblas.a
CBLASLIB = /HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/libcblas.a
LAPACKLIB = /HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/liblapack.a
TMGLIB = /HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/libtmglib.a
LAPACKELIB = /HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/liblapacke.a
make cblaslib
make lapackelib
make lapacklib
//vasp还需要编译tmglib
make tmglib
4. scalapack安装
mkdir build && cd build
CC=mpicc FC=mpifort cmake -DMPI_ROOT=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/openmpi-gcc9 -DBLAS_LIBRARIES=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/libopenblas.a -DLAPACK_LIBRARIES=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/liblapack.a -DCMAKE_INSTALL_PREFIX=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib ..
CC=mpicc FC=mpifort make -j4
5. fftw3安装
fftw3并不是siesta必须的,只是在编译siesta之后编译Util文件夹的时候, STM/ol-stm文件夹的Makefile需要指定FFTW位置,而且需要--enable-float
CC=gcc-9 Fc=gfortran-9 ./configure --prefix=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9 --enable-mpi --enable-float --enable-openmp
make -j4
make install
5. siesta安装
wget https://launchpad.net/siesta/4.0/4.0.2/+download/siesta-4.0.2.tar.gz
tar zxvf siesta-4.0.2.tar.gz
cd siesta-4.0.2
cd Obj
sh ../Src/obj_setup.sh
CC=gcc-9 FC=gfortran-9 ../Src/configure --with-blas=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/libopenblas.a --with-lapack=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9/lib/liblapack.a --with-scalapack=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/software/scalapack-2.2.2/libscalapack.a --prefix=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/siesta --enable-mpi
报错configure: error: cannot guess build type; you must specify one‘,这是因为 uname -a 显示的是aarch64,在config.guess种找不到对应的,因此需要在config.guess文件增加该选项,通过vim打开文件,增加aarch64判断
arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
//增加一下内容
aarch64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit 0 ;;
make siesta
cd ../Util
vi STM/ol-stm/Src/Makefile
#修改FFTW-ROOT
FFTW_ROOT=/HOME/nscc-gz/nscc-gz_qmo3/HDD_POOL/install/mathlib-gcc9
sh build_all.sh
报错及解决
gcc: fatal error: cannot execute 'f951': execvp: No such file or directory
原因:gcc和mpif90版本不同,将Makefile和Makefile.include里面所有gcc改成gcc-9,g++改成g++-9
更多推荐
所有评论(0)