ABACUS:DeePKS与TDOFDFT独立环境
固定新版源码和DeePKS接口,在个人目录准备CPU环境,复用于机器学习修正和实时电子密度实例。
阅读本篇目录
本组实例使用同一套独立CPU构建,完成DeePKS描述符、训练与自洽推断,以及TDOFDFT实时电子密度传播。首次准备环境后,其他包直接复用,不必反复编译。
公共ABACUS 3.10.1模块与本组固定的3.11.0-beta10分别使用。本组环境只写入解压目录,不修改公共module或个人.bashrc。
unzip abacus-ml-env-wave679-*.zip
cd abacus-ml-env
bash results.sh
bash plot.sh
以上仅读取已完成的参考数据并重绘,未启动新计算。reference-data/是本集群实算参考,重新执行的原生结果放在work/、提取的数值和图片放在analysis/。每次完整重算使用新解压的目录,避免覆盖已有结果。
1. 准备源码和Python依赖#
bash prepare.sh
cat SOURCE-LOCK.json
脚本下载以下固定来源并检查SHA256,解压到toolchain/sources/:
| 组件 | 本组固定版本 |
|---|---|
| ABACUS | 3.11.0-beta10,提交40e7ce8c575abb2ae7fc0df1bd6ec4b48a695d2d |
| DeePKS-kit | develop提交bf7175bf5e887fa16f98becdcfb72d05528a5d82 |
| libnpy | 提交a445a8bce52569f01168e1b04b564ce5712c62b6 |
| PyTorch | 现有2.8.0+cu126,C++11 ABI |
| ruamel.yaml | 0.17.40,安装在本目录toolchain/python |
DeePKS旧版安装说明提到的abacus分支目前已不存在;本组固定了保留ABACUS接口的官方develop提交。源码准备同时处理归档版本元数据和NumPy公开API的兼容写法,未改变训练算法。
2. 提交编译#
sbatch build.slurm
squeue -u "$USER"
tail -f build-作业号.log
把作业号换成提交返回的数字。脚本申请56核整节点,最多16个并行编译进程。主要选项如下,完整设置在build.py:
ENABLE_MPI=ON
ENABLE_LCAO=ON
ENABLE_MLALGO=ON
ENABLE_ELPA=ON
ENABLE_LIBXC=ON
ENABLE_OPENMP=ON
ENABLE_LIBRI=OFF
USE_CUDA=OFF
MKL_THREADING=sequential
CMAKE_CXX_FLAGS=-O2 -xCORE-AVX512
编译器使用oneAPI 2024.2的icx/icpx/ifx,MPI为Intel MPI 2021.13,MKL为2024.2顺序库。ELPA与Libxc复用现有库。PyTorch发行包带CUDA依赖,编译阶段通过CUDA 12.8发现相关依赖;ABACUS的CUDA求解器未启用,本文计算和模型训练都走CPU。运行时OMP_NUM_THREADS和数学库线程均为1。
cat toolchain/BUILD-FINISHED.json
ls toolchain/install/bin/abacus
确认编译、安装均成功后继续。此构建面向AVX512 CPU,只提供本组所需功能;LibRI未启用,不应据此推断所有杂化泛函、BSE或其他专用功能都已具备。
3. 实例包选择环境#
进入DeePKS或TDOFDFT包,执行:
bash use-toolchain.sh ../abacus-ml-env/toolchain
cat TOOLCHAIN_PATH
目录不相邻时,填入已编译toolchain的完整路径。该选择只作用于当前包;env.sh自动设置程序、Python源码及动态库路径。
4. 接下来按顺序操作#
编译接口依据:ABACUS固定源码与安装说明。