软件环境

第一性原理计算软件

VASP、ABACUS、CP2K、QE、SIESTA、GPAW及配套工具的环境、功能和用法。

更新于 2026-10-21约 55 分钟阅读按任务与环境选择适用配置
阅读本篇目录

各章节保留原指南中的版本、平台、操作示例与适用边界;章节日期不同,使用时按所列版本核对。全部软件分项

环境与使用说明#

5.1 VASP#

增加GPU前,参阅逐软件多卡修改说明,同步核对资源、启动命令和输入限制。

VASP 提供 CPU 与 GPU 构建,并按功能分别安装。选择版本时,同时确认功能分支和目标节点。

VASP 编译方式与环境#

VASP 使用源码自带的 Make 构建系统,以对应版本 arch 模板生成 makefile.include,分别构建 std/gam/ncl。功能分支是在独立源码树中接入相应补丁或库后编译,不是运行时随意加载插件。

构建范围 工具链 MPI / 数学库 CPU / GPU 目标与证据
本次重建的 5.4.4 CPU 扩展分支 oneAPI 2023.2;ifort/icc 2021.10 Intel MPI;MKL、ScaLAPACK、Intel MPI BLACS 8173m,-xCORE-AVX512;各分支保留批准配置
本次重建的 6.3.2 CPU 分支(普通版是否重建见正文) oneAPI 2024.2;ifx/icx/icpx 2024.2.1 Intel MPI 2021.13;MKL 2024.2 LP64、ScaLAPACK 8173m,通常显式 -xCORE-AVX512;历史普通版另见下文
本次重建的 6.4.2 CPU 分支(普通版是否重建见正文) oneAPI 2024.2;ifx/icx/icpx 2024.2.1 Intel MPI 2021.13;MKL 2024.2 LP64、ScaLAPACK 8173m,通常显式 -xCORE-AVX512;历史普通版另见下文
本次重建的 6.4.3 CPU 分支(普通版是否重建见正文) oneAPI 2024.2;ifx/icx/icpx 2024.2.1 Intel MPI 2021.13;MKL 2024.2 LP64、ScaLAPACK 8173m,通常显式 -xCORE-AVX512;历史普通版另见下文
本次重建的 6.5.1 CPU 分支(普通版是否重建见正文) oneAPI 2024.2;ifx/icx/icpx 2024.2.1 Intel MPI 2021.13;MKL 2024.2 LP64、ScaLAPACK 8173m,通常显式 -xCORE-AVX512;历史普通版另见下文
本次重建的 6.6.1 CPU 分支(普通版是否重建见正文) oneAPI 2024.2;ifx/icx/icpx 2024.2.1 Intel MPI 2021.13;MKL 2024.2 LP64、ScaLAPACK 8173m,通常显式 -xCORE-AVX512;历史普通版另见下文
GPU 普通 6.3.2 NVHPC 25.3;oneAPI 2023.2 仅提供 MKL NVHPC 自带 HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU 普通 6.4.3 NVHPC 25.3;oneAPI 2023.2 仅提供 MKL NVHPC 自带 HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU 普通 6.5.1 NVHPC 25.3;oneAPI 2023.2 仅提供 MKL NVHPC 自带 HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU VTST 6.3.2(本次补齐) NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU VTST 6.4.2(本次补齐) NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU VTST 6.4.3(本次补齐) NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU VTST 6.5.1(本次补齐) NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译
GPU optcell 6.3.2 NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译;每节点最多 make -j16
GPU optcell 6.4.2 NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译;每节点最多 make -j16
GPU optcell 6.4.3 NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译;每节点最多 make -j16
GPU optcell 6.5.1 NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译;每节点最多 make -j16
GPU optcell 6.6.1 NVHPC 25.3;oneAPI 2023.2 MKL HPC-X 2.22.1 / Open MPI 4.1.7rc1;MKL OpenMPI BLACS CUDA 12.8;P100 cc60、V100 cc70,分别编译;每节点最多 make -j16
既有普通 6.4.2 沿用已有交付,非上述普通版重编批次 以保存配置、依赖核查和正式模板为准 不把后补模板当成重新编译的证据
既有普通 6.6.1 沿用已有交付,非上述普通版重编批次 以保存配置、依赖核查和正式模板为准 不把后补模板当成重新编译的证据

CPU 5.4.4 optcell 使用 arch/makefile.include.linux_intel;6.4.2 等新 CPU 构建使用各自 arch/makefile.include.intel,Fortran 包装器改为 mpiifx,C/C++ 分别为 icx/icpx。新 CPU 构建采用 MKL sequential 接口及 MPI 分布式线性代数;默认 56 MPI 的模板不代表同时启动 56 个 OpenMP 线程。

CPU 指令集不能简单按目录统一推断:例如已存档的普通 6.6.1 配置保留 -xHOST,而新编普通 6.3.2/6.4.3/6.5.1 及相应扩展构建明确采用 -xCORE-AVX512。旧普通 5.4.4/6.4.2 的历史配置证据不完整,本页不把其所有参数等同于新构建。

GPU 新编版本以自身 makefile.include.nvhpc_ompi_mkl_omp_acc 为模板,关键配置含义如下:

设置 当前新编 GPU 构建采用方式
GPU 卸载 mpif90 -acc -mp,NVHPC OpenACC + OpenMP;P100/V100 分别选择 cc60/cc70、cuda12.8
CPU 目标 保留 -tp host;P100 在 E5-2696v3 节点编译,V100 在 Gold 6146 节点编译
数学库 cuBLAS/cuSOLVER/cuFFT/NCCL + MKL ScaLAPACK/OpenMPI BLACS
四倍精度支持 NVHPC 自带 QD 软件模拟库
nonlr 优化 OFLAG_IN = -fast -Mwarperf、SOURCE_IN := nonlr.o 已启用,并核对实际日志
tripcount 旧模板显式补 -gpu=tripcount:host,较新模板保留其判断块;逐版以批准配置为准
独立 ScaLAPACK 未使用模板中 /path/to/... 的独立库覆盖行,使用 MKL 提供的实现

-tp host 优化的是宿主 CPU,不是自动选择任意 GPU;因此程序仍按 P100/V100 分目录。普通 GPU 6.4.2 的早期记录主要是二进制依赖证据,不能把新 VTST/optcell 的开关全部追认到该旧程序。NVHPC 26.9 手工构建也不属于本页已验收的 25.3 正式程序。

VASP + Libxc(CPU,2026-10-20)#

6.3.2、6.4.2、6.4.3、6.5.1、6.6.1 已接入 Libxc 7.1.2,各提供独立的 vasp/<版本>-8173m-libxc 模块,保留 HDF5 与 std/gam/ncl。程序安装在 /public/software/vasp/vasp-libxc/<版本>/8173m/,依赖由匹配模块处理。

输入 yskit,选 1.复制 Slurm 脚本 → 核时用户 → vasp → Libxc 泛函库(CPU) → 所需版本 → 8173m。模板默认 56 MPI 的 vasp_std,检查 INCAR 中的泛函设置后,通过 Slurm 提交。模块示例为 vasp/6.6.1-8173m-libxc;原有普通版和 HDF5 入口继续保留。

此分支仅支持 CPU,5.4.4 原版无通用 Libxc 接口,菜单4分段能带尚未接入。6.4.2、6.3.2 已包含 GGA 非正密度保护修复;内置/Libxc PBE 的水分子绝对总能量对照保留约 0.0353–0.0372 meV 的实测差异。完整步骤、PBE/SCAN/r²SCAN/PBE0 设置与版本范围见 Libxc 使用指南。

GPU VASP + Wannier90(2026-10-02)#

五个6.x版本均提供P100/V100的std、gam、ncl,安装在/public/software/vasp/vasp-wannier90/<版本>/<p100或v100>/。编译环境为NVHPC25.3、CUDA12.8、随NVHPC的HPC-X2.22.1/OpenMPI4.1.7rc1、oneAPI2023.2 MKL LP64/ScaLAPACK;P100 cc60、V100 cc70,宿主CPU使用-tp host。没有叠加VTST/optcell等补丁。

Wannier90 3.1.0串行库由匹配的nvfortran以COMMS=serial、-O2 -tp host编译,安装在/public/software/wannier90/3.1.0/nvhpc-25.3/<p100或v100>/lib/libwannier.a。VASP启用-DVASP2WANNIER90并静态链接,不能改用Intel编译的库。库内局域化仍在CPU执行;独立wannier90.x/postw90.x继续使用8173m的MPI构建及56核脚本。

GPU脚本位于/public/slurm_scripts/{hs_user,tc_user}/vasp/vasp-wannier90/<版本>/<p100或v100>/。默认1GPU/1MPI/1CPU;增加GPU时同步修改--gres和--ntasks,cpus-per-task保持1。Gamma或SOC修改VASP_BIN末尾为vasp_gam或vasp_ncl;INCAR、K点与投影必须匹配实际科学任务。

验收覆盖50项GPU接口/局域化/Gamma/SOC及10组GPU文件→8173m 56MPI后处理;P100最终在gcn001验收。gcn002默认通信双卡初始化停滞记录保留,本次未修复该节点问题。主验收沿用不含exclude_bands的6.3.2输入及显式设置三项UMCO的6.5.1/6.6.1 Gamma输入;另做GPU定向诊断,具体结果见交付记录,旧CPU故障不能直接外推到新GPU构建。

另10组NVHPC库内部生成的wannier90.chk直接由8173m Intel MPI postw90读取并完成56MPI固定展宽DOS,结果与CPU重新局域化一致。内部局域化结束后,可保留匹配的.chk/.win及所需数据,使用8173m的postw90脚本;其他后处理功能需准备各自所需输入。

GPU Wannier90交付记录。

VASP 功能分支如何编入#

分支 编译时增加的内容 是否默认包含其他分支
普通版 原版源码及该版本批准的配置 不默认包含下列扩展
optcell 对应版本的晶胞约束补丁;5.4.4 使用 patch -p0 < cell_relax_finner.patch 不叠加 VTST/溶剂模型
VTST 按版本接入 VTST 源文件、对象顺序和主程序接口;新 GPU 批次用 revision 214 的对应目录 不表示所有 VTST 步骤均在 GPU 执行
Wannier90 / VASP 5.4.4 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 2.1.0;本次为 CPU
Wannier90 / VASP 6.3.2 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 3.1.0;CPU及P100/V100 GPU
Wannier90 / VASP 6.4.2 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 3.1.0;CPU及P100/V100 GPU
Wannier90 / VASP 6.4.3 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 3.1.0;CPU及P100/V100 GPU
Wannier90 / VASP 6.5.1 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 3.1.0;CPU及P100/V100 GPU
Wannier90 / VASP 6.6.1 -DVASP2WANNIER90,链接匹配工具链的 libwannier.a Wannier90 3.1.0;CPU及P100/V100 GPU
VASPsol 按对应 VASP 版本接入经典 VASPsol 源码/补丁 与 VASPsol++ 分开交付
VTST + VASPsol++ 5.4.4 按该版本兼容补丁构建 是明确组合构建,不代表其他分支也含 VTST
VTST + VASPsol++ 6.3.2 按该版本兼容补丁构建 是明确组合构建,不代表其他分支也含 VTST
CP-VASP v2 / VASP 6.3.2 在 sol++ 基础上接入 按 sol++ 配置输入
CP-VASP v2 / VASP 6.4.2 在经典 sol 基础上接入 按经典 sol 配置输入
BEEF 5.4.4 加 -Dlibbeef 并静态链接 libbeef 0.1.3 无 VTST/sol/optcell/Wannier 叠加

libbeef 本身用 oneAPI 2023.2 ICC/ifort 构建,目标 AVX-512,安装在 /public/software/vasp/libbeef/0.1.3/oneapi-2023.2-icc/8173m。静态链接的 libbeef.a 不需要额外设置其动态库路径;VASP 仍需匹配的 Intel/MPI 环境。

构建证据:GPU 普通版、GPU VTST、GPU optcell、5.4.4 CPU optcell、6.4.2 CPU optcell、libbeef。

正式路径规则:

/public/software/vasp/<功能分支>/<版本>/<节点>/vasp_std

vasp_std 是标准程序;Gamma-only 或非共线任务按对应构建选择 vasp_gam、vasp_ncl。不同功能分支是独立构建,不表示所有补丁同时包含。

功能分支 版本 用途 8173m P100 / V100
vasp 5.4.4 普通版本 已部署 未列入已交付 GPU 构建
vasp 6.3.2 普通版本 已部署 已部署
vasp 6.4.2 普通版本 已部署 已部署
vasp 6.4.3 普通版本 已部署 已部署
vasp 6.5.1 普通版本 已部署 已部署
vasp 6.6.1 普通版本 已部署 已部署
vasp-optcell 5.4.4 IOPTCELL 晶胞约束 已部署 未列入已交付 GPU 构建
vasp-optcell 6.3.2 IOPTCELL 晶胞约束 已部署 已部署
vasp-optcell 6.4.2 IOPTCELL 晶胞约束 已部署 已部署
vasp-optcell 6.4.3 IOPTCELL 晶胞约束 已部署 已部署
vasp-optcell 6.5.1 IOPTCELL 晶胞约束 已部署 已部署
vasp-optcell 6.6.1 IOPTCELL 晶胞约束 已部署 已部署
vasp-vtst 5.4.4 VTST 相关功能 已部署 未列入已交付 GPU 构建
vasp-vtst 6.3.2 VTST 相关功能 已部署 已部署
vasp-vtst 6.4.2 VTST 相关功能 已部署 已部署
vasp-vtst 6.4.3 VTST 相关功能 已部署 已部署
vasp-vtst 6.5.1 VTST 相关功能 已部署 已部署
vasp-vtst 6.6.1 VTST 相关功能 已部署 已部署
vasp-wannier90 5.4.4 Wannier90 接口 已部署 未列入已交付 GPU 构建
vasp-wannier90 6.3.2 Wannier90 接口 已部署 已部署
vasp-wannier90 6.4.2 Wannier90 接口 已部署 已部署
vasp-wannier90 6.4.3 Wannier90 接口 已部署 已部署
vasp-wannier90 6.5.1 Wannier90 接口 已部署 已部署
vasp-wannier90 6.6.1 Wannier90 接口 已部署 已部署
vasp-sol 5.4.4 VASPsol 已部署 未列入已交付 GPU 构建
vasp-sol 6.3.2 VASPsol 已部署 P100/V100 std、gam、ncl 已部署
vasp-sol 6.4.2 VASPsol 已部署 P100/V100 std、gam、ncl 已部署
vasp-sol 6.4.3 VASPsol 已部署 P100/V100 std、gam、ncl 已部署
vasp-sol 6.5.1 VASPsol 已部署 P100/V100 std、gam、ncl 已部署
vasp-sol 6.6.1 VASPsol 已部署 P100/V100 std、gam、ncl 已部署
vasp-vtst-sol++ 5.4.4 VTST + VASPsol++ 已部署 未列入已交付 GPU 构建
vasp-vtst-sol++ 6.3.2 VTST + VASPsol++ 已部署 未列入已交付 GPU 构建
vasp-cpvasp 6.3.2 CP-VASP v2 已部署 未列入已交付 GPU 构建
vasp-cpvasp 6.4.2 CP-VASP v2 已部署 未列入已交付 GPU 构建
vasp-beef 5.4.4 libbeef / BEEF 已部署 未列入已交付 GPU 构建

CP-VASP 6.3.2 对应 VASPsol++,6.4.2 对应经典 VASPsol。两者的参数和电势定义不能直接互换。

例如,普通 VASP 6.4.2 的 P100 程序位于:

/public/software/vasp/vasp/6.4.2/p100/vasp_std

公共脚本根目录:

/public/slurm_scripts/hs_user/vasp
/public/slurm_scripts/tc_user/vasp

P100 核时用户单卡示例,与当前公共模板的环境一致:

#!/bin/bash
#SBATCH --job-name=vasp
#SBATCH --partition=gpu-8p100-hs
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:p100-16g:1
#SBATCH --output=%j.out

VASP_BIN=/public/software/vasp/vasp/6.4.2/p100/vasp_std
source /public/toolkit/oneapi/2023.2/mkl/latest/env/vars.sh
module load nvhpc/25.3/nvhpc

export OMPI_MCA_coll_hcoll_enable=0
export NO_STOP_MESSAGE=1
export OMP_NUM_THREADS="${SLURM_CPUS_PER_TASK}"

mpirun --bind-to none -np "${SLURM_NTASKS}" "${VASP_BIN}"

多卡 GPU VASP 通常需要同步调整 --ntasks 与 --gres,并检查 INCAR 中的并行参数。CPU 版脚本不能只修改分区就作为 GPU 版使用。

Wannier 接口、CP-VASP、BEEF 等分支存在特定输入限制,开始使用前查阅对应部署记录,不要把短算例通过理解为所有输入均已验证。

VASP:提交前准备什么#

文件 作用 检查重点
POSCAR 晶格、元素与原子坐标 元素顺序、数量、坐标类型是否正确
POTCAR PAW 数据 元素顺序与 POSCAR 一致,使用所需泛函对应的数据
INCAR 计算参数 任务类型、收敛条件、精度和并行参数
KPOINTS k 点采样 与体系和计算目的匹配;Gamma-only 程序并非适合任意网格
提交脚本 分区、程序和资源 版本、功能分支、节点架构、进程数

这里不提供一份“所有体系通用”的 INCAR。结构优化、静态能量、杂化泛函、非共线、自旋轨道、溶剂模型与过渡态搜索需要不同参数。使用 optcell/VTST/sol 等分支前,先核对该分支的输入约定。

VASP:如何检查运行结果#

# 在算例目录查看,不会启动计算
tail -n 30 OSZICAR
tail -n 60 OUTCAR

先看作业输出中的版本、GPU 检测和错误信息,再检查电子与离子迭代是否达到自己的收敛目标。OSZICAR 有能量记录只说明程序进行过迭代;出现正常计时尾部也不代表结构优化一定收敛。

结构优化后的结构通常保存在 CONTCAR;是否作为下一步 POSCAR 使用,应先检查几何和收敛状态。WAVECAR/CHGCAR 是否保留取决于后续任务,不要在不清楚后处理需求时直接删除。

对比 CPU/GPU 或不同并行配置时,使用完全相同的初始输入和收敛条件。不要一组读取已有 WAVECAR、另一组从头计算,然后把耗时差全部归因于 GPU。

GPU VASPsol(2026-10-10部署)#

经典 VASPsol 的 OpenACC GPU 移植,源自 gweng0718/VASPsol_gpu,固定提交 c0967a2f88d003259d69448cd16421f962418450,已包含 FERMI_SHIFT、力与同步修复。与 VASPsol++、CP-VASP、VTST、Wannier 分支分别部署。

VASP版本 平台 GPU架构 编译环境 安装路径
6.4.2 P100 cc60 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.4.2/p100
6.4.2 V100 cc70 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.4.2/v100
6.4.3 P100 cc60 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.4.3/p100
6.4.3 V100 cc70 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.4.3/v100
6.3.2 P100 cc60 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.3.2/p100
6.3.2 V100 cc70 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.3.2/v100
6.5.1 P100 cc60 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.5.1/p100
6.5.1 V100 cc70 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.5.1/v100
6.6.1 P100 cc60 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.6.1/p100
6.6.1 V100 cc70 NVHPC25.3 + CUDA12.8 + oneAPI2023.2 MKL + 配套MPI /public/software/vasp/vasp-sol/6.6.1/v100

每套包含 vasp_std、vasp_gam、vasp_ncl。保持已批准普通 GPU 版的 makefile.include 逐字不变:-tp host,P100 cc60/V100 cc70,Mwarperf/nonlr与现有tripcount设置;没有增加 -Dsol_compat,GPU移植直接使用内置 ERFC。只替换 GPU solvation.F、接入 pot.F 的 GET_FERMISHIFT;6.5.1另增加已验证的新模块导入,未改物理方程。对象顺序保持 solvation.o 在 pot.o 前。

示例模块:module load vasp/6.4.2-p100-sol 或 module load vasp/6.4.2-v100-sol。脚本在 /public/slurm_scripts/{hs_user,tc_user}/vasp/vasp-sol/<版本>/<p100或v100>/,yskit会自动列出;使用风格与普通GPU VASP相同。改为两卡需同时设置 --ntasks=2 和相应 --gres=gpu:<类型>:2,--cpus-per-task=1 保持。选择 Gamma/非共线程序时将 VASP_BIN 末尾改成 vasp_gam/vasp_ncl,输入参数按该变体准备。保留 HCOLL 关闭及 NO_STOP_MESSAGE,不单设err文件,不禁用P2P。

验收使用3原子中性水、POTCAR默认8电子、不显式设置 NELECT,ENCUT400、NBANDS56;含 LSOL关闭普通GPU对照、无电解质/有限Debye电解质、单/双GPU、同版本56核CPU对照。三变体均实际收敛、正常退出,NVML确认各MPI进程使用分配的显卡。所有对照最大能量差 2.49e-06 eV、力分量差 0.000247 eV/Å、FERMI_SHIFT差 2.19824e-14 eV。标准版用 ±0.002Å 的坐标扰动检查能量导数,CPU/GPU最大力差分残差 0.0170935 eV/Å,阈值0.02;这是指定小算例的功能/数值验收,不是大型体系性能基准或所有带电/泛函情形的全面回归。附带旧2025-12-05上游日志未作为验收依据。

gcn002-8p100 的同NUMA P2P尚未通过。 本次普通版和GPU VASPsol在GPU0/1均卡于初始化,内核有04:00.0、05:00.0的DMAR DMA写权限错误,cuMem=0对照也失败。P100双卡验收改用跨NUMA GPU0/4,默认NCCL按拓扑走SHM,未导出NCCL_P2P_DISABLE、未关闭P2P。该结果证明所测组合的单/双卡程序与数值可用,不能称为同NUMA P2P底层修复;gcn002同组多卡任务需后续维护IOMMU,普通用户不要自行覆盖Slurm分配的CUDA_VISIBLE_DEVICES来选物理卡。没有为此改BIOS/GRUB或重启节点。

5.2 ABACUS#

增加GPU前,参阅逐软件多卡修改说明,同步核对资源、启动命令和输入限制。

ABACUS 3.10.1 提供 PW 平面波、LCAO 局域轨道和 LCAO 杂化泛函相关功能,已安装 CPU、P100、V100 三套程序。

平台 程序 模块
8173m /public/software/abacus/3.10.1/8173m/bin/abacus abacus/3.10.1-8173m
P100 /public/software/abacus/3.10.1/p100/bin/abacus abacus/3.10.1-p100
V100 /public/software/abacus/3.10.1/v100/bin/abacus abacus/3.10.1-v100

ABACUS 编译方式与环境#

使用 ABACUS 3.10.1 源码,CMake Release 构建,CPU/P100/V100 分别配置、安装;每套依赖也分别保存,不复用未经匹配的 VASP 数学库。

项目 8173m CPU P100 / V100 GPU
C/C++/Fortran oneAPI 2024.2 的 icx/icpx/ifx GCC/G++/GFortran 13.3
MPI Intel MPI 2021.13 原装 HPC-X 2.50 ompi5
CPU 目标 AVX-512 AVX2
CUDA 不启用 CUDA Toolkit 12.8;sm_60 / sm_70
BLAS/LAPACK MKL LP64,sequential OpenBLAS 0.3.30
ScaLAPACK MKL,Intel MPI 接口 独立 ScaLAPACK 2.2.2
FFT 配套 MKL/FFTW 接口 FFTW 3.3.10 单/双精度、GPU 配套 CUDA 库
ELPA 2024.05.001 CPU 构建 2024.05.001,GPU 支持
泛函与杂化支持库 Libxc 6.2.2、LibRI 0.2.1.1、LibComm 0.1.1 相同版本,按 GPU 工具链构建
其他依赖 cereal 1.3.0 cereal 1.3.0

主要 CMake 开关:

CMAKE_BUILD_TYPE=Release
ENABLE_MPI=ON
USE_OPENMP=ON
ENABLE_LCAO=ON
USE_ELPA=ON
ENABLE_LIBXC=ON
ENABLE_LIBRI=ON
ENABLE_LIBCOMM=ON
ENABLE_FLOAT_FFTW=ON
ENABLE_NATIVE_OPTIMIZATION=OFF

GPU 两套另设 USE_CUDA=ON 和对应 CMAKE_CUDA_ARCHITECTURES,CPU 为 USE_CUDA=OFF。关闭 DeepKS、PAW、PEXSI;GPU 关闭 cuSOLVERMp。ENABLE_FLOAT_FFTW=ON 是允许支持的 PW 路径选择单精度,默认计算仍为 double。关闭 native optimization 后使用显式指定的 CPU 指令集,避免管理节点编译时意外生成不适合目标节点的代码。

构建采用 cmake -S ... -B ...、cmake --build ...、cmake --install ... 三阶段;各前缀写入匹配的依赖搜索路径。CPU 主程序显式优化参数为 -O2 -xCORE-AVX512;GPU 宿主为 -O2 -march=haswell -mtune=generic。GPU 运行环境加载 HPC-X 的多线程 UCX,以满足 MPI 线程支持需求,同时关闭 HCOLL。

依赖安装根目录:/public/software/abacus/deps/3.10.1/{8173m,p100,v100}。可追溯配置见 主程序构建脚本和依赖构建脚本;它们是维护证据,不应由普通用户直接重跑覆盖公共安装。

通过 yskit 选择 abacus → 3.10.1 → 节点,准备 INPUT、STRU、KPT 及相应赝势、轨道文件后提交。

单、双精度支持已编入同一套程序,默认使用双精度。在 INPUT 中设置:

precision double

PW SCF 使用受支持的求解器时,可以选择 precision single;3.10.1 文档列出 cg、bpcg、dav,本次实际验证 cg。LCAO 不通过该参数切换为全流程单精度。单精度应先检查目标体系的能量、力和应力误差。

GPU PW 通常设置 device gpu,并结合显卡数量设置 kpar。LCAO 可选择 cusolver 或 elpa;genelpa 与 elpa 是不同接口,不能只凭名字认定 GPU 加速已经启用。

已验证 P100 单、双、四、八卡和 V100 32GB 单、双卡;V100 16GB、V100 四/八卡及跨节点未逐项验收。小算例不一定随 GPU 数量增加而加速。

详细使用和性能数据见 ABACUS 验收报告。

ABACUS:输入文件与求解路径#

输入/组件 用途
INPUT 计算类型、基组、求解器、精度与收敛参数
STRU 原子结构,并引用元素赝势、所需轨道文件
KPT k 点设置;是否需要独立文件取决于所选输入方式
赝势文件 对应元素的离子实相互作用数据
数值原子轨道 LCAO 路径需要与体系和计算方法匹配的轨道
LCAO 以局域原子轨道展开电子波函数的基组方法
ELPA 分布式本征值求解库,本次编译了适用的 GPU 支持
cuSOLVER NVIDIA 数值求解库;ABACUS 的 cusolver 路径与 ELPA 路径不同

下列内容是对现有 INPUT 的参数片段,不是完整可运行输入。不要在同一个 INPUT 末尾重复追加已经存在的同名参数。

PW GPU 单卡、双精度的选择示例:

basis_type pw
device gpu
ks_solver cg
precision double
kpar 1

LCAO GPU 的选择示例:

basis_type lcao
device gpu
ks_solver cusolver

使用已经验收的 ELPA GPU 路径时选择 ks_solver elpa。杂化泛函还需要正确的泛函及相关输入配置;加载了 LibRI/Libxc 并不等于任意 INPUT 自动变成 HSE 计算。

PW 多卡时同步修改 Slurm 的进程数、GPU 数和适用的 kpar,并检查实际 k 点是否足以分配。Gamma 点小体系不应简单照搬多 k 点测试的扩展结论。

ABACUS:精度与性能怎么选#

先用 double 得到参考结果,再评估 single 对目标量的影响。已有 Si16 测试中,GPU single 相对 double 的总能量差约 0.00046 eV,最大力差约 0.0057 eV/Å;这些数值只对应该测试输入,不能作为所有体系的误差上限。

现有 Si16 PW PBE、double、相同收敛阈值的计时:

平台 配置 耗时/s
CPU 8173m 56 MPI × 1 线程 16.10
CPU 8173m 28 MPI × 2 线程 17.22
P100 1 GPU,1 MPI × 2 线程 25.87
P100 2 GPU,2 MPI × 2 线程 18.24
P100 4 GPU,4 MPI × 2 线程 13.59
P100 8 GPU,8 MPI × 2 线程 14.07
V100 32GB 1 GPU,1 MPI × 2 线程 22.64
V100 32GB 2 GPU,2 MPI × 2 线程 19.04

该小体系的 P100 四卡比八卡更快,整节点 CPU 也比单卡 GPU 更快。测试环境和样本有限,生产任务应使用自己的规模、k 点和输入做短基准,而不是直接固定用最多 GPU。原始条件及误差数据见本节上方验收报告。

5.8 ATAT#

版本 平台 编译器 构建方式 安装前缀
3.52 8173m CPU GCC/G++ 13.3.0 源码 GNU Make,普通与 MPI 分树构建 /public/software/atat/3.52/gcc-13.3/8173m

完整常规工具集采用上游 -O3、默认数学实现(链接 -lm),未额外启用 MKL、AVX-512、fast-math 或 CUDA。不依赖 Conda。兼容检查由上游 foolproof 生成;mcsqs -best 的辅助 Shell 比较符从 == 修为 POSIX =,修复 Ubuntu dash 报错;同时将汇总用的 grep -n 改为 grep -Hn,确保仅一个结果文件时也保留文件名。不改变搜索算法。

额外 MPI 工具使用独立 Open MPI 5.0.10、-DATAT_MPI -DSLOWENUMALGO,包括 mpigenstr、mpimmaps、splitjob、dispatch。原始程序位于 libexec/mpi;atat-mpigenstr、atat-mpimmaps、atat-dispatch 包装器在 Slurm 内选择此 MPI 并启动,不能再套一层 mpirun。CPU 环境显式选择无 CUDA 加速器及 CPU rcache,关闭 HCOLL,避免加载无关 GPU 组件。

mcsqs 多核采用多个独立搜索,不是 MPI 协同搜索;不同 -ip/-sd 输出分开,-best 汇总。原子数、截断范围、MC步数属于用户输入,结束不表示必然 perfect match。

module load atat/3.52-8173m
yskit atat-init

也可在 yskit 主菜单选择 (2) 初始化软件 → ATAT。只创建缺失的 ~/.atat.rc 与 ~/.ezvasp.rc;已有文件保留。前者指向正式前缀 share/atat 保留的资源;后者指定 CPU普通VASP6.4.2 与 version64 PBE/LDA 势库。不自动覆盖旧配置,旧用户需核对自己的内容。

VASP 接口通过脚本调用,不重编 VASP。atat-vasp 在 Slurm 分配内加载 oneAPI2024.2/Intel MPI,运行 /public/software/vasp/vasp/6.4.2/8173m/vasp_std。ATAT MPI 与 VASP Intel MPI 分作业环境使用。

脚本位于 /public/slurm_scripts/{hs_user,tc_user}/atat/3.52/8173m,包括 mcsqs 单搜索/多搜索、单结构 VASP、maps+VASP、mpigenstr、mpimmaps。先初始化个人配置、准备输入,再通过 yskit 复制;详细参数见同目录 README。

已通过普通用户 Slurm 短验收:SQS搜索与汇总、MPI单/双进程枚举、mpimmaps结构生成、emc2,以及 maps/pollmach/VASP能量回传。未验收完整收敛的团簇展开、相图、跨节点、dispatch/splitjob生产工作流或GPU VASP接口。详见 ATAT 交付记录。

5.9 CP2K#

增加GPU前,参阅逐软件多卡修改说明,同步核对资源、启动命令和输入限制。

既有2026.2从官方发布源码包构建,采用上游工具链安装依赖,再使用 CMake + Ninja 编译安装主程序。三套均为双精度、MPI + OpenMP 的 cp2k.psmp;psmp 表示并行方式,不表示单精度。各平台的依赖目录独立,不能混用 Intel/GNU Fortran 模块或不同 MPI 的运行环境。

版本 平台 编译器 MPI 数学库与 GPU 工具链 安装路径
2026.2 8173m oneAPI 2024.2,icx/icpx/ifx 2024.2.1 Intel MPI 2021.13 MKL 2024.2 LP64、MKL FFTW 接口、MKL ScaLAPACK;AVX-512 /public/software/cp2k/2026.2/8173m
2026.2 P100 GCC/G++/GFortran 13.3 私有 MPICH 5.0.1 OpenBLAS 0.3.33、ScaLAPACK 2.2.3、FFTW 3.3.11、CUDA 12.9;sm_60 /public/software/cp2k/2026.2/p100
2026.2 V100 GCC/G++/GFortran 13.3 私有 MPICH 5.0.1 OpenBLAS 0.3.33、ScaLAPACK 2.2.3、FFTW 3.3.11、CUDA 12.9;sm_70 /public/software/cp2k/2026.2/v100

依赖位于 /public/software/cp2k/deps/2026.2/<平台>。启用 Libint2 2.13.1(CP2K lmax=5 包)、Libxc 7.0.0、DBCSR 2.10.0、ELPA 2026.02.002、SpLA 1.6.1、LIBXS 1.0.0、LIBXSMM 2.0.0、spglib 2.7.0、HDF5 2.1.1、DFT-D4 4.2.0、PLUMED 2.10.1;GPU 版另含 libGint v1。PLUMED 包含 opes、ves、funnel,不启用 pytorch/libtorch;2.10.1 不含旧 crystallization 模块。

CPU 主程序使用 Release 与本机 AVX-512 优化;GRID 的 grid_dgemm_prepare_pab.c 因 icx 优化器内部错误沿用上游 -O2 规避,其余文件按原设置编译。CPU ELPA 明确启用 AVX-512 内核,避免上游在指定 CPU 名称时默认禁用向量内核。GPU 主程序与 DBCSR、ELPA、SpLA 使用 CUDA 版本,GRID、DBM、PW 加速开启。未启用 SIRIUS、COSMA、PEXSI、DLAF、MiMiC、DeePMD、LibTorch、GauXC、cuSOLVERMp 等额外接口。

运行前加载对应平台的环境,例如:

source /public/software/cp2k/2026.2/8173m/env.sh
cp2k.psmp --version

环境脚本设置主程序、自身共享库、对应 MPI 与依赖库,以及 CP2K_DATA_DIR。基组、赝势等数据随安装保存在 <安装路径>/share/cp2k/data。不要另外加载其他版本的 MPI;GPU 版采用 MPICH,不能套用 OpenMPI 的 --map-by slot:PE=... 或 HCOLL 参数;模板使用 MPICH 的 -bind-to core:<线程数>。数学库线程数固定为 1,计算线程用 OMP_NUM_THREADS 设置,避免 MPI/OpenMP 与数学库线程叠加。

公共脚本位于 /public/slurm_scripts/{hs_user,tc_user}/cp2k/2026.2/<平台>。默认读取 input.inp,CP2K 主输出为 cp2k.out,Slurm 输出为作业号 .out。提交前按账号选择分区与 GPU 型号。单节点 GPU 建议从每 GPU 一个 MPI 进程起步,同时修改 --ntasks 和 --gres;小体系增加 GPU 数未必加速。

杂化泛函默认仍用 CPU 上的 Libint 计算相关积分,即使主程序为 GPU 版也是如此。使用 libGint 必须在 FORCE_EVAL / DFT / XC / HF 显式设置 HFX_LIBRARY libGint,并针对自己的体系与 Libint 对照。本次三水分子测试中,Schwarz 筛选阈值 1e-6 时两者能量差约 1.9e-6 Hartree;收紧到 1e-10 并令 SCF 阈值为 1e-9 后,差异降到约 1.6e-11 Hartree。这是特定算例的对照,不能代替生产体系的精度验证。上游测试清单对 ifx 排除了部分 HFX/ADMM 官方回归;本次 CPU 独立算例通过不代表全部此类回归得到覆盖。

构建与验收详情见 CP2K 构建记录。本次验收已完成:CPU/P100/V10016GB分别通过普通用户Slurm808/809/810。P100和V10016GB单/双卡PBE、ADMM、Libint/libGint通过,两套GPU官方PLUMED+ADMM回归各11/11通过;CPU独立算例、短MD和PLUMED回归通过。P100另通过4/8卡检查;V10032GB只做版本及缺库检查,未做GPU数值验收,V1004/8卡未测。

可加载 cp2k/2026.2-8173m、cp2k/2026.2-p100、cp2k/2026.2-v100 模块。yskit 会自动列出相应公共脚本。

历史16核性能样例(8173m当前公共脚本已采用全56核):96原子PBE32中,CPU16×1/8×2/4×4(均16核)约46/50/55秒;P1001/2/4/8卡、每卡1MPI×2OMP约80/80/53/53秒。小体系未体现GPU优势,4卡后也未继续加速;这些结果不能外推到大体系。CPU/P100/V100的该算例能量差约1e-10Hartree,最大力分量差约1e-10原子单位。

CP2K 2025.2#

2025.2 使用官方固定发行源码,独立构建依赖,再以 CMake/Ninja Release 编译双精度 MPI+OpenMP 程序 cp2k.psmp。CPU/P100/V100模块和公共脚本已发布;CPU两项已知回归偏差已由用户接受,原测试结果保留。2026.2 的程序、模块和依赖保持并存。

版本 平台 编译器 MPI 数学库与目标架构 安装路径
2025.2 8173m oneAPI2024.2,icx/icpx/ifx2024.2.1 IntelMPI2021.13 MKL2024.2 LP64、MKL FFTW/ScaLAPACK;AVX512 /public/software/cp2k/2025.2/8173m
2025.2 P100 GCC/G++/GFortran 13.3、nvcc 私有 MPICH 4.3.1 OpenBLAS 0.3.30、ScaLAPACK 2.2.2、FFTW 3.3.10;Haswell/AVX2、CUDA 12.9 sm_60 /public/software/cp2k/2025.2/p100
2025.2 V100 GCC/G++/GFortran 13.3、nvcc 私有 MPICH 4.3.1 OpenBLAS 0.3.30、ScaLAPACK 2.2.2、FFTW 3.3.10;Haswell/AVX2、CUDA 12.9 sm_70 /public/software/cp2k/2025.2/v100

CPU 8173m版保持oneAPI2024.2/IntelMPI/MKL/AVX512,已按用户接受决定交付。五个独立收敛算例通过,原始PLUMED/ADMM回归为8/10;MO_NO_DIAG与NO_CORR_GAPW两项能量偏差超原容差。用户接受这些已知偏差,未将原结果改写为10/10。旧工具链MKL接口混用与临时对照记录保留,未重编、未永久预加载MKL,也未改用GNU方案B。CPU公共模块加载/卸载、Slurm948全56核模板及相同输入能量对照通过。具体范围见2025.2构建记录。

依赖与编译功能。 每个平台依赖位于 /public/software/cp2k/deps/2025.2/<平台>:DBCSR 2.8.0、Libint 2.6.0 CP2K lmax=5、Libxc 7.0.0、LIBXSMM 固定提交 e0c4a2389afba36c453233ad7de07bd92c715bec、ELPA 2024.05.001、SpLA 1.6.1、spglib 2.5.0、HDF5 1.14.6、DFT-D4 3.7.0、PLUMED 2.9.3。PLUMED 启用 opes、ves、funnel,关闭 pytorch/libtorch。依赖与2026.2完全分开,2025.2 GPU版的MPI为4.3.1,不能混用2026.2的MPICH5.0.1。

GPU构建明确选择CUDA版DBCSR,GRID、DBM、PW加速开启,并链接NVIDIA版ELPA及启用SpLA GEMM卸载。DBCSR/ELPA/SpLA分别编译到sm_60或sm_70;主机代码采用Haswell兼容指令,未使用-march=native。ELPA CUDA对象增加主机-fPIC,共享库与程序显式加入CUDA链接目录。这些是构建配置修正,CP2K科学算法源码未修改。未启用SIRIUS、COSMA、PEXSI、DLAF、MiMiC、DeePMD、LibTorch、ACE或cuSOLVERMp等额外接口。

2025.2没有2026.2的libGint CUDA HFX接口。GPU版支持HFX/ADMM,但相关杂化积分由CPU上的Libint计算;不能使用新版HFX_LIBRARY libGint输入。是否获得加速取决于体系规模、基组和算法,不代表所有计算都在GPU上执行。

module load cp2k/2025.2-8173m
# P100使用:module load cp2k/2025.2-p100
# V100使用:module load cp2k/2025.2-v100

模块设置CP2K_ROOT、CP2K_DATA_DIR、PLUMED_KERNEL及对应私有MPI/依赖路径;也可source对应安装前缀的env.sh。基组和赝势在$CP2K_DATA_DIR。不要额外加载其他MPI或叠加不同CP2K版本。GPU程序依赖计算节点的NVIDIA驱动库;login01没有libcuda.so.1,版本检查和计算都应在GPU分配内运行。

脚本位于/public/slurm_scripts/{hs_user,tc_user}/cp2k/2025.2/{8173m,p100,v100},yskit可交互复制。CPU模板为单节点28MPI×2OMP=56CPU,使用IntelMPI,保持全56核申请及MKL单线程;GPU配置如下。准备input.inp后执行sbatch,程序输出cp2k.out,Slurm日志为作业号.out。hs的V100模板默认16GB,tc的V100模板默认32GB;修改GPU型号时也要匹配对应分区。hs的V100模板默认16GB,tc的V100模板默认32GB;修改GPU型号时也要匹配对应分区。hs的V100模板默认16GB,tc的V100模板默认32GB;修改GPU型号时也要匹配对应分区。GPU默认单节点1GPU、1MPI×2OMP;增加为2/4/8卡时,同步修改--ntasks及--gres中的数量,保持每卡一个MPI进程。--cpus-per-task控制每进程线程数,OMP_NUM_THREADS随其变化;OpenBLAS线程固定1。GPU启动采用MPICH的-bind-to core:<线程数>,不要套用OpenMPI的映射或HCOLL参数。保留Slurm分配的CUDA_VISIBLE_DEVICES及默认P2P。

验收:P100和V10016GB分别通过单/双卡PBE、显式ELPA、HFX/ADMM、Libint HFX及3步MD,4/8卡另通过PBE数值检查;两套GPU的原始PLUMED/ADMM回归各10/10通过,未改参考值、容差或测试输入。普通用户hs分区作业937/938/939/941与942/945/946/947通过,公共模块载入/运行/卸载和环境恢复、yskit复制均已核对。CPU原始回归8/10由用户接受,公共模板948(28MPI×2OMP)通过;三模块和六脚本均已交付。V10032GB仅通过版本及动态库检查,tc账号模板仅检查语法、资源和复制,未执行tc科学作业。这些为短功能和数值一致性验收,未覆盖跨节点或生产规模性能。记录、输入哈希、完整能量/力、实际ELPA内核和普通用户作业信息见 2025.2 构建记录。

5.11 Quantum ESPRESSO(QE)#

QE 用于平面波赝势密度泛函计算。本次部署 7.6,提供 pw.x、ph.x、neb.x、cp.x、pp.x、dos.x、projwfc.x、pw2wannier90.x、epw.x、hp.x、TDDFPT 等标准程序。不同程序和算法的 GPU 支持范围不同,安装 GPU 版不代表所有步骤都在 GPU 上执行。

版本 平台 编译器与 MPI 数学库与加速方式 安装路径
7.6 8173m oneAPI 2024.2:ifx/icx,Intel MPI 2021.13 MKL 2024.2 LP64、Intel MPI BLACS;AVX-512,MPI+OpenMP /public/software/qe/7.6/8173m
7.6 P100 NVHPC 25.3:nvfortran/nvc,配套 HPC-X 2.22.1 Open MPI CUDA 12.8,sm_60,OpenACC+CUDA Fortran;MKL 2023.2 LP64、Open MPI BLACS /public/software/qe/7.6/p100
7.6 V100 NVHPC 25.3:nvfortran/nvc,配套 HPC-X 2.22.1 Open MPI CUDA 12.8,sm_70,OpenACC+CUDA Fortran;MKL 2023.2 LP64、Open MPI BLACS /public/software/qe/7.6/v100

CPU/P100基础功能验收通过;V100已通过SSH单/双卡PBE/HSE/Libxc/结构优化、声子、后处理、QE-Wannier90接口及设备MPI验收。GPU生产保留 -ndiag 1,显式分布式对角化未通过验收。

三套均使用上游双精度、MPI+OpenMP;MKL 使用顺序版计算库,避免和外层 OpenMP 重复占用线程。CPU 指令集明确为 -xCORE-AVX512;GPU 版主机代码面向 Haswell 及更新 CPU,分别生成 P100/V100 设备代码。CPU、GPU 的 Fortran 模块和 MPI ABI 不同,不能混用另一套依赖、mpirun 或运行环境。

构建方式与依赖。 使用固定 qe-7.6 源码、CMake 和 Ninja;依赖放在 /public/software/qe/deps/7.6/<平台>,分别编译 Libxc 7.0.0、HDF5 1.14.6(MPI+Fortran)、ELPA 2026.02.002。CPU ELPA 启用 AVX-512 内核;GPU ELPA 编入对应架构的 NVIDIA 内核。在 P100 节点完成的独立 ELPA 解析矩阵测试覆盖 CPU/GPU 模式及 1/4 个 MPI 进程,均通过;这不代替 QE 集成验收。QE GPU 分布式对角化集成路径未验收通过,因此不在用户模板中启用这条路径。GPU ELPA 的 C/C++ 包装使用 GNU 编译器,Fortran 接口仍使用匹配 QE 的 nvfortran。Wannier90、FoX、MBD 采用 QE 锁定子模块,DeviceXlib 使用对应 0.1.0 上游发布包;完整来源、补丁和参数位于 管理员维护记录。

QE 7.6 的 GPU 配置使用 QE_GPU=openacc;cuda 和 QE_GPU_ARCHS=sm_60/sm_70,不使用已移除的 QE_ENABLE_CUDA 安装选项。保留上游 NVFortran Release=-fast 设置。启用 ScaLAPACK、ELPA、Libxc、HDF5 和 GPU-aware MPI。未加入 PLUMED、Environ、GIPAW 等额外插件。

NVHPC 25.3 与 HDF5 的半精度接口存在兼容限制,本次过滤了不可用的 REAL(2) 接口,单精度/双精度接口保留。ELPA 使用记录在案的构建兼容补丁;不会把“成功链接 GPU ELPA”直接等同于每次计算都调用 GPU ELPA。QE 的对角化分组、矩阵大小及运行参数决定实际求解路径。

ELPA 的官方说明与本集群使用范围。 QE 官方将 ELPA 和 ScaLAPACK 列为子空间并行对角化的优先选择;这是针对矩阵求解部分,不代表整个计算都由 ELPA 加速。QE 并行说明

QE 7.6 的 GPU 说明同时指出,小算例常可禁用 ScaLAPACK,因为单 GPU 求解器在很多情况下快于并行 CPU 求解器。这一比较不能推导出 GPU ELPA 没有价值,也不是要求所有 GPU 计算禁用 ELPA。QE 7.6 GPU 说明

ELPA 官方支持 NVIDIA GPU,要求编译时加入 GPU 支持、运行时启用相应选项,并推荐至少两个 MPI 进程的 MPI+GPU 运行方式。官方指出 GPU 上通常 ELPA1 更快,但局部矩阵较小时 ELPA2 可能更合适;应通过代表性算例选择,不能只凭算法名称判断性能。ELPA 手册 §5.6

功能 本次安装及验收情况 当前使用建议
CPU ELPA 8173m 已启用,QE 四进程 ELPA及默认 CPU 模板计算通过 可使用已验证的 CPU 配置
GPU ELPA P100/V100 均编入对应 GPU 内核;P100 独立库测试通过,但 QE 显式分布式对角化测试失败 GPU 模板保留 -ndiag 1,使用 cuSOLVER 路径,不强制启用 GPU ELPA
GPU-aware MPI P100/V100 正式构建均开启;同节点双卡设备缓冲区 Allreduce/Sendrecv 及 QE 算例通过 保持开启,使用本版配套 MPI;跨节点尚未验收

GPU 的 -ndiag 4 对照曾出现 Cholesky 分解失败,也出现过退出码为 0 但能量不正确的情况。关闭 GPU-aware MPI 的对照未解决问题,根因尚未完全定位,不能直接归咎于 ELPA 库、MPI 或驱动。当前限制来自本集群软件组合的实测结果,不代表官方宣布 QE 不支持 GPU ELPA。-ndiag 1 只限制对角化进程组,其他计算仍可使用多个 MPI 进程和多张 GPU。具体测试范围和失败对照见验收记录。

加载与提交。 使用 module load qe/7.6-8173m、qe/7.6-p100 或 qe/7.6-v100,也可 source /public/software/qe/7.6/<平台>/env.sh。优先用 yskit 复制公共模板:

/public/slurm_scripts/hs_user/qe/7.6/{8173m,p100,v100}
/public/slurm_scripts/tc_user/qe/7.6/{8173m,p100,v100}

每个平台提供 PW、PH、NEB 模板,分别读取 pw.in、ph.in、neb.in。CPU 分区为 cpu-8173m;GPU 的 hs 模板使用 P100 或 V100 16 GB 分区,tc 模板使用 P100 或 V100 32 GB 分区。V100 两种显存容量使用同一 sm_70 程序。模板将错误输出并入 %j.out。

增加 GPU 数量。 默认一张 GPU、一个 MPI 进程,每进程两个 OpenMP 线程。两卡同时修改 --ntasks=2 和 --gres=gpu:<型号>:2;四卡同时改为 4,--cpus-per-task=2 可先保持不变。脚本的 mpirun -np 和 OMP_NUM_THREADS 自动读取 Slurm 变量,不必再次改启动命令。GPU 模板沿用 --bind-to none 和禁用 HCOLL 的设置;不通过屏蔽全部错误日志掩盖运行故障。

-npool(或 -nk)决定 k 点池,-ndiag 决定对角化进程组,不能直接把这些参数一律改成 GPU 数量。Gamma-only 小体系没有多个 k 点可分;对角化组通常取平方数,并受每个计算组的 MPI 数量约束。本次 GPU 模板明确保留 -ndiag 1,这也符合上游 GPU 默认设置。GPU 的显式 -ndiag 4 对照出现 Cholesky 错误及能量不一致,当前不要用于生产计算,也不要因为增加卡数就增大此值;CPU 的 ELPA 四进程测试已通过。GPU 数量更多不保证更快,需按代表性体系比较耗时和结果。

GPU-aware MPI 表示 MPI 能接收 GPU 内存缓冲区;它不保证所有通信均通过 NVLink 或 GPUDirect RDMA,实际路径取决于驱动、互联和通信库。本次验证覆盖 P100/V100 同节点双卡,不包含跨节点通信或性能验收。QE 的 GPU-aware MPI 开关与 ELPA 自身的通信选项是不同配置,不能混为一谈。不要从其他 MPI 环境直接调用本版 QE。

输入与功能选择。 杂化泛函由 QE 自身实现,可在适用计算中选择 HSE、PBE0 等,不需要额外 Libint。Libxc 提供额外交换关联泛函,并不意味着任意泛函均可用于所有程序和 GPU 路径。赝势需由用户按元素、泛函、相对论与 NC/USPP/PAW 类型选配;本次验收用赝势仅作为测试数据,不作为通用生产赝势库。pseudo_dir、outdir、prefix 应与当前任务一致;并发计算请使用独立 outdir,不要互相覆盖波函数和电荷密度。

随 QE 构建的内部 Wannier90 使用上游集成方式,不能因为 QE 支持 MPI 就推断其独立 wannier90.x/postw90.x 也支持 MPI。原有单独 Wannier90 部署另见相应章节;pw2wannier90.x 是 QE 到 Wannier90 数据的转换程序。

实际完成的验收范围、作业号和未覆盖项以 管理员维护记录 及 validation 下结果为准。

5.12 PFD-kit#

PFD-kit 0.10.13 已安装,用于 Deep Potential 预训练模型的微调与蒸馏。固定源码commit4564e0c601eaa92a4e54794efa5f84c492a08ba6,通过pip构建安装;QUESTS固定2026.2.22及其commit,并修正子包打包范围。PFD本体不使用Intel/NVHPC源码编译。

版本 环境与配套后端 程序/配置路径 模块
0.10.13 独立Conda环境pfd-kit-0.10.13;Python3.12.14、DeePMD3.2.0、PyTorch2.12.0,保留TF2.21.0 /public/software/pfd-kit/0.10.13 pfd-kit/0.10.13

环境在 /public/toolkit/miniconda3/envs/pfd-kit-0.10.13,从现有DeePMD3.2.0已编译运行栈建立独立副本并补装依赖;原DeePMD/DP-GEN环境未修改,VASP/LAMMPS无需因此重编。pydflow1.8.95、dpdispatcher1.1.0、QUESTS等依赖已安装。未安装MatterSim/MACE后端,也未部署Argo/Kubernetes/Bohrium服务。

module load pfd-kit/0.10.13
pfd --help

公共脚本位于 /public/slurm_scripts/{hs_user,tc_user}/pfd-kit/0.10.13/{p100,v100},yskit可复制。准备个人目录中的input.json及模型/数据后,例如:

sbatch sub_pfd_0.10.13_p100.sh input.json

模板申请单节点单GPU、1task×2CPU,在计算节点内运行本地dflow debug工作流。debug不是干运行,探索、训练和推理会真实执行,不要在login01直接提交本地重计算工作流。当前不是自动生成完整VASP远程标注配置的模板;若使用DispatcherExecutor,须按用户授权分区、对应Python环境和计算引擎MPI另行配置,不能照抄官方host/password及16rank命令。不要只增加ntasks/gres就认为实现分布式训练。

公共安装不绑定预训练权重、材料体系、元素或head。用户需选择与DeePMD基线兼容的模型、训练脚本、type_map、标注泛函及赝势,先完成小规模验证。任何新增依赖应由管理员审核或放到用户独立环境,不能为一个模型升级公共后端。

验收:pip check和CLI通过;CPU上游测试55通过、1项上游预期失败(CollectData的optional_structures处理缺陷,使用该可选路线前须另行验证);dflow本地执行PFD扰动OP成功。P100/V100的PFD调用DeePMD推理、QUESTS数值对照、短训练、短微调及模型重读通过。CPU采用普通用户Slurm851;GPU采用获授权SSH共享短验收,不作为Slurm提交或性能验证。未完成用户预训练大模型、完整探索—DFT标注—微调—蒸馏闭环、多GPU训练或跨节点验收。短训练模型不作为生产势交付。

详细说明与证据:PFD安装记录、公共使用说明。

5.29 GPAW#

GPAW 是以 Python/ASE 为操作入口的 PAW 第一性原理程序,可进行基态电子结构、结构优化、杂化泛函及相关响应计算。当前采用方案 B,提供 8173m CPU 版。

版本 平台 构建方式 程序/依赖前缀 module
26.7.0 8173m CPU 固定官方源码、pip构建C++扩展,MPI/OpenMP /public/software/gpaw/26.7.0/8173m gpaw/26.7.0-8173m

编译器、数学库和环境#

GPAW 26.7.0 的扩展由 GCC/G++ 13.3.0、C++17 编译,MPI 包装器 mpicxx 来自现有 hpcx/25.0 的原装 /public/toolkit/hpcx/2.50/ompi5,实际版本 Open MPI 5.0.10rc2,运行时使用同套HPC-X的 ucx/mt 多线程库,满足GPAW OpenMP和mpi4py的MPI_THREAD_MULTIPLE要求。CPU 优化为 -O3 -march=skylake-avx512 -fopenmp,目标为 8173m。Fortran 数学依赖使用 GFortran 13.3.0。Python 解释器本身是 Conda 预编译 Python,不应把 GPAW 扩展编译器误写成解释器的构建编译器。

组件 实际配置
独立环境 /public/toolkit/miniconda3/envs/gpaw-26.7.0-8173m,Python 3.11.16
Python核心依赖 ASE 3.29.0、NumPy 2.3.5、SciPy 1.16.3、mpi4py 4.1.2
BLAS/LAPACK MKL 2023.2.0,LP64、GNU线程层/libgomp
标准ScaLAPACK/BLACS 私有ScaLAPACK 2.2.3源码,绑定原装HPC-X MPI;MKL专用pzgeevx另行保留
FFTW 3.3.11,私有双精度共享库、MPI、OpenMP、AVX2/AVX512
Libxc 7.0.0,私有共享库,保留泛函及导数能力
ELPA 2026.02.002,私有MPI/OpenMP库
非局域范德华库 libvdwxc 0.5.0,MPI/FFTW,应用MPI FFTW执行接口补丁,未启用PFFT
数据包 gpaw-data 1.2.1;官方PAW数据集26.8.0
精度与GPU 常规计算双精度;当前没有GPU构建

构建使用上游 GPAW_BUILD_JOBS=32,pip调用源码生成的Makefile并以 make -j32 编译。26.7.0的MKL专用ScaLAPACK接口增加了严格C++复数指针兼容修复,兼容补丁、Makefile构建扩展收纳进wheel的修复及原始源码哈希保存在项目记录;仍保留MKL非对称对角化功能,验收不放宽上游数值容差。

标准分布式矩阵运算使用私有ScaLAPACK,避免MKL标准ScaLAPACK与当前MPI通信句柄的兼容问题;MKL仍提供BLAS/LAPACK及专用非对称对角化接口。libvdwxc补丁仅修正MPI FFTW plan的执行API,保留科学公式及数值容差。正式运行使用永久库路径,无需预加载临时库。

私有依赖位于程序前缀的 deps/<库版本>。NumPy/SciPy wheel自带的OpenBLAS与GPAW扩展链接的MKL是不同层,运行脚本同步控制OMP/MKL/OpenBLAS线程数,避免超额占核。不需要额外加载 oneAPI 全套环境、Intel MPI、NVHPC 或另一套 Conda 环境。

模式、功能与数据#

PW 为平面波,FD 为实空间有限差分,LCAO 为原子轨道;三种模式的截断能、实空间网格和基组收敛要求不同,不能直接以相同参数要求能量完全一致。保留GPAW上游新旧计算后端。26.7.0的新后端已为默认,部分旧响应、特殊泛函或溶剂化接口仍需 legacy_gpaw=True;编译了ELPA不表示所有新后端模式都会使用它。

公共PAW数据位于 /public/software/gpaw/datasets/26.8.0,加载模块或env.sh会设置 GPAW_SETUP_PATH。这些数据是GPAW压缩XML与基组文件,不能用VASP的POTCAR替代。gpaw-data的软件包版本与数据集版本是两个标识。更换数据集会影响结果,应在算例记录中保存数据版本。

使用和提交#

在自己的算例目录准备 Python 脚本,例如 run.py,通过yskit的“复制Slurm脚本”选择 GPAW → 26.7.0 → 8173m,或复制:

cp /public/slurm_scripts/hs_user/gpaw/26.7.0/8173m/sub_gpaw_26.7.0_8173m.sh .
cp /public/software/gpaw/26.7.0/8173m/examples/run.py .
sbatch sub_gpaw_26.7.0_8173m.sh run.py

套餐用户选择对应 tc_user/gpaw/26.7.0/8173m 目录,使用CPU资源的资格与账户配置一致。模板默认56MPI×1CPU;可按体系对比28MPI×2线程等配置,每节点总核数始终保持56。26.7.0新后端PW模式明确提示增加OpenMP线程没有收益,PW生产计算优先保持默认每MPI进程1线程;28×2等混合配置应按实际模式和体系比较,不应假定线程越多越快。单进程56线程对照是数值验收,不代表最佳性能配置。程序并行入口是 mpirun -np N gpaw python run.py,不能直接套成 mpirun -np N python run.py,否则可能得到N份串行计算。脚本里的 world.size 和计算日志可确认实际MPI进程数。

from gpaw.mpi import world
if world.rank == 0:
    print('MPI processes:', world.size)

模板实际使用 gpaw python -- run.py;-- 将后面的脚本名及自定义参数传给用户脚本,例如 sbatch sub_gpaw_26.7.0_8173m.sh run.py --input input.json。

GPAW可按k点、能带和网格分解,通常先采用上游自动分配;明确设置parallel参数时,要核对实际k点、能带及网格能否满足划分。FD小网格不能无限增加空间分区;读取 .gpw 重启时可显式沿用合适的 parallel 设置,避免自动划分产生小于差分模板的局部网格。CPU任务不申请GPU,也不设置 parallel={'gpu': True}。结构优化可以通过ASE优化器实现,生产参数应自行收敛,公共示例只用于验证运行流程。

可以在登录节点加载module查看 gpaw info;生产计算通过Slurm在8173m运行。源码编译、数值验收、功能边界与完整日志见 管理员维护记录。公共README记录实际验收范围,不能把代表性验收当作全部科学模块的完整回归。

5.31 SIESTA、TranSIESTA、TBtrans 与 sisl#

SIESTA 使用数值原子轨道进行第一性原理计算;TranSIESTA 用于开放边界下的自洽电子输运;TBtrans 从自洽哈密顿量计算透射、态密度和电流。TranSIESTA 已集成在 siesta 程序中,通过输入文件的 SolutionMethod transiesta 选择,不需要单独寻找 transiesta 可执行文件。sisl 是配套的 Python 结构、哈密顿量和输运数据分析工具。

版本 平台/构建 模块 安装目录
SIESTA 5.4.2 8173m,MPI siesta/5.4.2-8173m-mpi /public/software/siesta/5.4.2/8173m/mpi
SIESTA 5.4.2 8173m,MPI+OpenMP siesta/5.4.2-8173m-mpi-omp /public/software/siesta/5.4.2/8173m/mpi-omp
sisl 0.16.4 Python 3.11.16,数据分析 sisl/0.16.4 /public/toolkit/miniconda3/envs/sisl-0.16.4

两套 SIESTA 均从官方 5.4.2 源码编译。工具链为 oneAPI 2024.2 的 ifx/icx 2024.2.1、Intel MPI 2021.13、MKL 2024.2 LP64,使用 Intel MPI 对应的 BLACS;目标指令集为 -xCORE-AVX512。采用上游 Release 的 -O2 -fp-model=strict 设置,SIESTA_WITH_GRID_SP=OFF,不启用实空间网格单精度。程序面向 8173m CPU 队列;这两套不是 GPU 构建。

本站构建包含一项已确认的两行兼容性修正:近邻列表检查真实数组容量,并按实际邻居数扩容,解决 ifx 优化构建在官方石墨算例中的越界;仍保留 -O2,不改变泛函或求解方法。官方选定检查两套各 48/48 通过,另有电极、自洽输运、有限偏压和后处理验收;这不是整个上游测试库或生产体系收敛保证。原补丁、编译命令、失败诊断和验收记录均保留。

私有依赖根目录为 /public/software/siesta/deps/5.4.2/oneapi-2024.2/8173m。HDF5 1.14.6、NetCDF-C 4.10.1 与 NetCDF-Fortran 4.6.4 使用同套 Intel MPI 编译,支持 NetCDF4 和并行 IO。Libxc 7.0.0 提供附加交换关联泛函;ELSI 2.12.0 与原生 SIESTA 共用外部 ELPA 2026.02.002,MPI/OpenMP 库按两套构建分别匹配。MKL 使用顺序数学库,MKL_NUM_THREADS=1 避免与程序 OpenMP 线程嵌套。

libfdf 0.5.1、xmlf90 1.6.3、libpsml 2.0.1、libgridxc 2.0.2 和 DFT-D3 均固定到 SIESTA 5.4.2 发布提交对应源码。保留 DFT-D3,不启用 FLOOK/Lua、SIESTA 内置 Wannier90、PEXSI、MUMPS 或 CheSS。ELPA 在此负责 CPU 对角化,输运部分采用适合问题的 BTD 等求解方式;安装 Libxc 不等于全部泛函和开放边界输运组合都已经验证。

公共赝势为 PseudoDojo 0.4 / PBE / scalar-relativistic / standard / PSML,位于 /public/software/siesta/pseudos/pseudo-dojo/0.4/PBE/SR/standard/psml,实际提供 72 个元素。模块自动设置 SIESTA_PS_PATH。这类 PSML 不能用 VASP POTCAR 替代;仍须检查元素、价电子、相对论近似、基组及实空间网格收敛。自备赝势可放在算例目录并明确其来源,避免同名文件造成混用。

提交与并行配置。 在 yskit 的“复制 Slurm 脚本”中选择用户类型 → siesta → 5.4.2 → 8173m,按阶段复制电极、TranSIESTA、TBtrans 或偏压链脚本。公共目录为 /public/slurm_scripts/{hs_user,tc_user}/siesta/5.4.2/8173m。

用法 MPI 进程 每进程线程 总 CPU 核数
纯 MPI 模板 56 1 56
MPI+OpenMP 模板 28 2 56
MPI+OpenMP 的另一可测试布局 14 4 56

8173m 为整节点 56 核计费,公共脚本保持 ntasks × cpus-per-task = 56。调整 MPI/OpenMP 时同时修改这两个值,纯 MPI 构建固定每进程一个线程。更多 MPI 不一定更快:小基组矩阵、较少 k 点或能量积分点可能限制可用并行度,应对自己的算例比较布局。多节点需要另行核对资源、网络和并行效率,不应只修改节点数。

显式选择 SolutionMethod ELSI 时,SIESTA 按 k 点与内部自旋表示划分进程,MPI 数目须满足代码中 nk × spin%spinor 的整除要求;不能把默认对角化的任意布局直接套到 ELSI。先从输出的 k-grid: Number of k-points 确认实际 k 点数,再选择与总 56 核一致的进程/线程配置。若不可约 k 点数不能整除可用 MPI 数,应重新选择合适的网格/布局或采用原生对角化,保持计算参数收敛要求;不要只为整除而降低科研所需的 k 点精度。

# 在自己的算例目录复制对应模板,修改输入文件名后提交
cp /public/slurm_scripts/hs_user/siesta/5.4.2/8173m/sub_electrode_5.4.2_8173m_mpi.sh .
sbatch sub_electrode_5.4.2_8173m_mpi.sh

电极模板默认读 electrode.fdf,TranSIESTA/TBtrans 默认读 device.fdf,输出合并到作业的 %j.out。先完成电极,再运行散射区零偏压,确认自洽收敛后运行 TBtrans;每个偏压点也要单独自洽。电极和器件必须使用相同的元素赝势、基组及一致的电极几何,横向 k 点、化学势、温度和能量零点必须对应。

偏压链模板默认使用 0.0 → 0.1 → 0.2 V,每个点写入独立新目录,只将上一点的密度矩阵传给下一点。它不会自动覆盖已有结果。先修改 BIASES、LABEL 和输入文件名;电极 HS 文件以及 %include 文件使用绝对路径。正、负偏压建议分别从零偏压起步。不能把零偏压透射简单积分得到的曲线当作完整的有限偏压自洽结果。可复制入门小样 /public/software/siesta/5.4.2/examples/carbon-chain,其中 README 说明逐阶段提交、绝对电极路径和输出读取;它是功能示例,科研计算仍需独立收敛测试。

Python 后处理。 sisl 环境提供 NumPy 2.3.5、SciPy 1.16.3、Matplotlib 3.10.8、xarray 2025.12.0、pandas 2.3.3、netCDF4 1.7.4、pyparsing 3.3.2 和 tqdm 4.67.3。加载模块后,在自己的结果目录执行轻量分析:

module load sisl/0.16.4
python - <<'PY'
import sisl
import numpy as np
with sisl.get_sile('device.TBT.nc') as tbt:
    data = np.column_stack([tbt.E, tbt.transmission()])
    np.savetxt('transmission.csv', data, delimiter=',',
               header='E_minus_EF_eV,T', comments='')
    print('electrodes:', tbt.elecs)
    print('current for this stored spin channel / A:', tbt.current())
PY

TBtrans 和 sisl.current() 的电流采用未额外乘自旋简并的 e/h 积分约定。非自旋极化且两个自旋完全等价时,总电流需乘 2;自旋极化时应读取两个自旋结果并求和,不能再机械乘 2。不同电极、自旋及横向 k 点分辨数据应明确选择和归一化后再比较。相干弹性 NEGF 是电子输运方法,不能直接给出包含声子散射的体相迁移率或晶格热导率。大矩阵后处理和批量计算应通过计算节点运行。当前编译配置、修正与验收边界见 SIESTA 项目记录(详见对应公共安装说明)。

量子化学软件指南#

ORCA、Gaussian、xTB与CREST已整理到独立的量子化学软件指南。

5.19 ORCA →

5.22 xTB →

5.25 CREST →

5.28 Gaussian(个人初始化) →

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗