ABACUS toolchain编译记录

主要参考Deepmodeling社区的NoteBook,然后根据自己的配置稍微修改

https://nb.bohrium.dp.tech/detail/5215742477

1. 从网上下载abacus-develop

国内就用 gitee,比较快

git clone https://gitee.com/deepmodeling/abacus-develop.git

cd abacus-develop/toolchain

需要编辑 toolchian_intel.shbuild_abacus_intel.sh 两个文件

2. 环境设置

在编译之前,需要加载的环境

module load mpi/oneAPI/2021.1 #官方推荐oneAPI
module load cmake/3.21.2
module load gcc/10.2.0

之前一直只加载了mpi和cmake编译不通过,后来加了gcc才编译通过。

3. 编辑 toolchian_intel.sh 和 build_abacus_intel.sh 两个文件

1. toolchain_intel.sh

这是原来的样子:
在这里插入图片描述

可以根据自己的需要修改,但基本不用修改。这是我因为之前环境没配正确乱七八糟修改后的
在这里插入图片描述
这里加载了mpi,gcc后,即使设置了–with-gcc=install --with-fftw=install,–with-scalapack=install 他也不会安装的,除此之外,加载了cmake环境,也可以不用 install cmake了,但最好还是install一下,我重新编译了一下,没有修改这两个文件,报错明显变少了。

这里需要注意的是,如果直接运行 ./toolchain_intel.sh 的话这样是通过github 下载的,国内的网络环境会很慢,所以在这里,我们先把所需要的这些库给他先下载下来,然后再执行就很快了。

从 README.md里面可以看到,需要的库有:
在这里插入图片描述
去这个cp2k的网页里面下载:

https://www.cp2k.org/static/downloads

下载到以后,在 abacus-develop/toolchain/ 目录下面 mkdir build ,把刚刚下载的那些依赖库上传进build里面去。然后执行

./toolchain.sh

在这里插入图片描述
看吧,这个gcc和mpi都是读取的我加载的gcc和mpi,即使我写了gcc=install也并没有install。所以最后就只有这四个依赖库被装在了toolchain/install里面
在这里插入图片描述

2. build_abacus_intel.sh

上面配置好了依赖库,可以直接不用修改 build_abacus_intel.sh 然后直接运行他。因为我当时前面库没配好,乱七八糟的改,我把 LCAO给关了。
下面是我的 build_abacus_intel.sh 文件:

#!/bin/bash
#SBATCH -J build
#SBATCH -N 1
#SBATCH -n 16
#SBATCH -o install.log
#SBATCH -e install.err
# install ABACUS with libxc and deepks
# JamesMisaka in 2023.08.22

# Build ABACUS by intel-toolchain

# module load mkl compiler mpi
# source path/to/vars.sh

ABACUS_DIR=..
TOOL=$(pwd)
INSTALL_DIR=$TOOL/install
source $INSTALL_DIR/setup
cd $ABACUS_DIR
ABACUS_DIR=$(pwd)

BUILD_DIR=build_abacus_intel
rm -rf $BUILD_DIR

PREFIX=$ABACUS_DIR
ELPA=$INSTALL_DIR/elpa-2023.05.001/cpu
CEREAL=$INSTALL_DIR/cereal-1.3.2/include
LIBXC=$INSTALL_DIR/libxc-6.2.2
# LIBTORCH=$INSTALL_DIR/libtorch-2.0.1/share/cmake/Torch
# LIBNPY=$INSTALL_DIR/libnpy-1.0.1/include
# LIBRI=$INSTALL_DIR/LibRI-0.1.1
# LIBCOMM=$INSTALL_DIR/LibComm-0.1.0
# DEEPMD=$HOME/apps/anaconda3/envs/deepmd

# if use deepks and deepmd
cmake -B $BUILD_DIR -DCMAKE_INSTALL_PREFIX=$PREFIX \
        -DCMAKE_CXX_COMPILER=icpc \
        -DMPI_CXX_COMPILER=mpiicpc \
        -DMKLROOT=$MKLROOT \
       -DELPA_DIR=$ELPA \
       -DCEREAL_INCLUDE_DIR=$CEREAL \
        -DLibxc_DIR=$LIBXC \
        -DENABLE_LCAO=OFF \
        -DENABLE_LIBXC=ON \
        -DUSE_OPENMP=ON \
        -DUSE_ELPA=OFF \
#         -DENABLE_DEEPKS=1 \
#         -DTorch_DIR=$LIBTORCH \
#         -Dlibnpy_INCLUDE_DIR=$LIBNPY \
#         -DENABLE_LIBRI=ON \
#         -DLIBRI_DIR=$LIBRI \
#         -DLIBCOMM_DIR=$LIBCOMM \
# 	      -DDeePMD_DIR=$DEEPMD \
# 	      -DTensorFlow_DIR=$DEEPMD \
#         -DENABLE_RAPIDJSON=ON \

cmake --build $BUILD_DIR -j `nproc` 
cmake --install $BUILD_DIR 2>/dev/null

# if one want's to include deepmd, your gcc version should be >= 11.3.0

# generate abacus_env.sh
cat << EOF > "${TOOL}/abacus_env.sh"
source $INSTALL_DIR/setup
export PATH="${PREFIX}/bin":\${PATH}
EOF

然后执行

./build_abacus_intel.sh

这个过程中有很多的这种warning,可以忽略,这是因为oneAPI推荐支持 icxicpx 编译器,但我们用的 -DCMAKE_CXX_COMPILER=icpc
在这里插入图片描述
最后编译结束,会在abacus-develop/bin里面生成可执行文件 abacus_pw,有一个后缀pw猜测可能是我把LCAO关了的原因。
在这里插入图片描述

4. 程序运行

在编译成功后,会在toolchain文件夹下面生成一个 abacus_env.sh 的文件,每次执行计算任务之前,先source一下,当然,也需要module load oneAPI, gcc, 和 cmake。所以可以把这几个module写进这个abacus_env.sh里面。这样每次就只需要执行一次 source就行了。

source ~/software/abacus-develop/toolchain/abacus_env.sh

先看一下 abacus 的版本

abacus_pw --version

在这里插入图片描述

程序测试

进入 abacus-develop/examples/scf/pw_Si2

执行以下命令:

OMP_NUM_THREADS=1
mpirun -np 48 abacus_pw | tee abacus_mpi.log

我的一个节点有48个核,后面的这个 | tee abacus_mpi.log 表示日志输出到这个文件里,也会输出到slurm-PID.out里面

最后成功输出,程序编译成功~~~~

--------------------------------------------手动分割线----------------------------------------------

5. 带PW和LCAO版本的abacus

下面是正式编译带PW和LCAO版本的abacus
LCAO也算是abacus的一个亮点吧,所以上面编译的abacus误打误撞把LCAO关闭了心里不太爽,决定重新编译一下。

5.1 软件下载

5.2 环境加载

软件下载和环境加载不说了。还是cmake3.21.2,gcc-10.2.0。但是不知道为什么,上面编译只带PW的版本加载oneAPI-2021是可以成功编译出来的,但现在加了LCAO后,oneAPI-2021不行了,必须要加载oneAPI-2022,可能是某些库冲突了。

5.3 toolchain_intel.sh

在这里我把cmake和gcc关了,打开了rapidjson
在这里插入图片描述
然后执行

./toolchian_intel.sh

然后直接执行build_abacus_intel.sh,不用修改

./build_abacus_intel.sh

在这里插入图片描述

基本没有什么报错信息,不太懂。
然后就在abacus-develop/bin目录下面生成了abacus这个可执行文件,后面同上~~

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱喝辣白菜牛肉汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值