SIESTA编译、资源整理

1.编译安装

本文还是以intel oneapi环境为例,siesta的编译非常简单。官方源码在GitLab发布,可以在https://gitlab.com/siesta-project/siesta/-/releases获取软件包,以siesta-v4.1.5版本为例,下载siesta-v4.1.5.tar.gz并解压,进入该文件夹。

mkdir build 
cd build

bash ../Src/obj_setup.sh
cp ../Obj/intel.make ./arch.make

这里我们需要对arch.make进行修改,主要是需要修改两个地方,首先根据实际情况修改需要用到的编译器,这里我使用了mpicc和mpiifort

CC = mpicc
FPP = $(FC) -E -P
FC = mpiifort
FC_SERIAL = ifort

其次是我们需要使用MKL的BLAS,在Dependency rules ———一行之前的位置加入下面的内容,如果将这部分放在文件开头,可能会被后面的命令给覆盖导致无效

MKL_PATH=根据实际情况填写
BLAS_LIBS=-L$(MKL_PATH) -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64
LAPACK_LIBS=
BLACS_LIBS=
SCALAPACK_LIBS=
LIBS =$(SCALAPACK_LIBS) $(BLACS_LIBS) $(LAPACK_LIBS) $(BLAS_LIBS)

MPI_INTERFACE = libmpi_f90.a
MPI_INCLUDE = .
FPPFLAGS += -DMPI

这里如果不清楚MKL的安装目录,可以使用下面的命令来获取

MKL_PATH=$(echo $MKLROOT | awk -F: '{ print $1 }')
echo $MKL_PATH

之后使用make -jN进行编译(N为核心数),我们就可以在当前目录下得到siesta的二进制文件了。

参考:

https://zhuanlan.zhihu.com/p/609209355

2.赝势获取

SIESTA提供了一个生成赝势的程序ATOM,对于学术用户是免费的,可以在https://siesta-project.org/SIESTA_MATERIAL/Pseudos/atom_licence.html进行获取。我们也可以从下面几个赝势库获取生成好的赝势直接使用:

3.辅助软件

在LAMMPS中使用NequIP的方法

之前我们介绍过在LAMMPS中使用CHGNet的方法,最近,具有E(3)等变的NequIP也得到了很多的关注,笔者测试也觉得在很多场景下其相比CHGNet会更加好用,在这里介绍一下安装加入了NequIP pair style的Lammps安装方法。

1.安装Conda

2.新建Conda环境

由于NequIP对于Python和PyTorch版本有以下要求:

  • Python >= 3.7
  • PyTorch >= 1.8, !=1.9, <=1.11.*.

NequIP也要求PyTorch or LibTorch >= 1.10.0。

综合考虑我们选择Python 3.8+PyTorch 1.11.0环境,而且注意如果只是用NequIP不需要装torchvision和torchaudio,可以节省空间。这里Wandb是用来可视化训练日志的工具Weights & Biases,如果没有需求可以不装。

conda create -n nequip python=3.8
conda activate nequip

pip install wandb
conda install pytorch=1.11.0 cpuonly -c pytorch
pip install nequip

3.下载LAMMPS

从LAMMPS官方Github仓库下载LAMMPS stable_29Sep2021_update2版本,以及下载NequIP pair style。

git clone -b stable_29Sep2021_update2 --depth 1 [email protected]:lammps/lammps
git clone [email protected]:mir-group/pair_nequip

进入pair_nequip目录,执行

./patch_lammps.sh /path/to/lammps/

其中/path/to/lammps/是刚才下载的LAMMPS源码位置。,该脚本会自动完成pair style复制以及CMakeLists的修改。

4.编译

接下来使用Intel Oneapi进行编译,自行加载相应环境。

cd lammps
mkdir build
cd build
cmake ../cmake -DCMAKE_PREFIX_PATH=`python -c 'import torch;print(torch.utils.cmake_prefix_path)'`

make -j$(nproc)

完成后/path/to/lammps/build/lmp即为我们所需的支持NequIP的LAMMPS二进制文件。不过需要注意的是,由于消息传递神经网络的特点,NequIP不支持MPI,该课题组还有支持MPI和并行加速的程序Allegro(https://github.com/mir-group/allegro)。

NequIP官方仓库:

https://github.com/mir-group/nequip

https://github.com/mir-group/pair_nequip

OCTOPUS编译记录

最近打算试一试td-dft计算,查阅了一些文献发现OCTOPUS似乎比较合适。由于软件比较冷门,而且官方文档对于使用Intel编译器进行编译的方法写的并不清楚,因此编译过程中遇到了不少坑,在此记录一下我的编译方法,希望能够帮助到后来人。

1.安装Intel oneAPI

在Intel官网(https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html)获取Intel® oneAPI Base Toolkit和Intel® oneAPI HPC Toolkit,并按照页面指示安装,配置环境变量

安装Octopus需要依赖BLAS、LAPACK、FFTW 3,由于我们使用了Intel oneAPI,我们可以直接调用Intel MKL,无需再手动安装了,但除此之外的GSL和LibXC仍是必须手动安装的依赖。

2.安装LibXC

libxc通过gitlab进行发布,官方下载地址https://gitlab.com/libxc/libxc/-/releases

由于libxc的cmake安装方式还不完善,推荐使用make进行安装,如果没有./configure文件,需要先运行GNU autotools生成。PATH/TO/LIBXC是LibXC的安装路径。

autoreconf -i
./configure --prefix=PATH/TO/LIBXC CC=mpiicc CXX=mpiicpc FC=mpiifort
make
make install

3.安装GSL

GSL也同样通过make方式安装,PATH/TO/GSL是GSL的安装路径。

./configure --prefix=PATH/TO/GSL CC=mpiicc 
make
make install

4.安装Octopus

首先进行configure,PATH/TO/OCTOPUS是Octopus的安装路径。这里blas的配置主要参考了官网https://www.octopus-code.org/documentation/main/manual/installation/porting_octopus_and_platform_specific_instructions/,并且由于blas已经包含了lapack所以这里我们可以将–with-lapack留空。

MKL_DIR=$(echo $MKLROOT | awk -F: '{ print $1 }')
./configure CC=mpiicc CXX=mpiicpc FC=mpiifort \
--prefix=PATH/TO/OCTOPUS \
--with-libxc-prefix=PATH/TO/LIBXC \
--with-gsl-prefix=PATH/TO/GSL \
--with-blas="-L$MKL_DIR/lib/intel64 -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lpthread -lmkl_blacs_intelmpi_lp64 -lmkl_scalapack_lp64 " \
FCFLAGS_FFTW=-I$MKL_DIR/include/fftw \
--enable-mpi

这里可能会遇到一个问题,如果libxc的安装目录里面的lib目录在你的系统里安装完成后叫lib64,这里configure的时候会找不到lib目录而报错,直接创建一个软连接ln -s lib64 lib即可解决这个问题。

此外,octopus的configure似乎并不是非常完善,有的时候即使报错了configure也不会提示,因此如果之后编译遇到问题,可以考虑检查一下日志config.log里面是否存在其他问题。

如果configure顺利,接下来就可以正式安装了。

make
make install

如果一切顺利,在PATH/TO/OCTOPUS的bin目录下面就有我们所需的octopus二进制文件了,share目录下也提供了一些可供测试的示例,我们就可以运行软件进行测试了。

参考:

https://cndaqiang.github.io/2020/10/19/huairou-octopus(提供了不同编译环境的安装方法及简单测试)

https://www.cnblogs.com/HuaNeedsPills/p/12732926.html(Intel环境下的编译)

https://blog.csdn.net/ChenXiao93/article/details/95769666(Onpenmpi环境下的编译)

https://blog.csdn.net/qq_34718338/article/details/123039137

https://cndaqiang.github.io/2019/04/11/octopus