VASP 专题

VASP GPU 加速专题六:显存容量规划

理解软件版本、科学参数和并行布局的显存影响。

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

显存需求由体系、科学参数、并行布局和软件实现共同决定。本文先比较本集群五个VASP版本,再解释原子、赝势、真空、k点、ENCUT、KPAR和NSIM等因素,最后给出试算与排查方法。

表格中的显存均指运行期间最满单卡的采样最大已用量,不是瞬时分配的精确峰值,也不是多卡占用的总和。实验采用短电子步并覆盖力和正常退出,仅用于研究显存需求。

1. 显存容量决定能否装下算例,算力决定装下后有多快#

同样是216原子,稀疏和稠密的k点网格、空带数量、真空层厚度和杂化泛函等等都会影响显存需求。“16G显卡最多算多少原子”没有脱离这些设置的统一答案。先按自己的科学精度判断容量,再在可运行的候选中比较速度。

2. 更换VASP版本会怎样改变显存#

2.1 先区分版本、构建与实际计算路径#

VASP版本能够影响设备数组的组织、临时工作区、通信调用以及释放时机。升级版本后显存可能升高、降低或基本不变,方向还可能随体系与并行参数改变。

本节比较鸢算科技集群已经部署的普通GPU版本。固定每卡1个MPI进程、1个CPU核心;两类卡分别使用同一节点、同一批GPU。全部运行使用NVHPC25.3所带CUDA12.8库、NCCL2.25.1、HPC-X2.22.1/OpenMPI4.1.7rc1和MKL2023.2,节点驱动580.173.02。比较保留各版本原有构建,结果体现这套公共程序在统一运行环境中的整体差异。

VASP版本 本集群GPU实现与构建记录
6.3.2 NVIDIA OpenACC;旧式_OPENACC宏,包含USENCCL和USENCCLP2P
6.4.2 NVIDIA OpenACC;旧式_OPENACC宏,配置保留USENCCLP2P
6.4.3 NVIDIA OpenACC;_OPENACC与USENCCL
6.5.1 NVIDIA OpenACC;ACC_OFFLOAD、NVCUDA与USENCCL
6.6.1 NVIDIA OpenACC;ACC_OFFLOAD、NVCUDA与USENCCL

本节只比较普通版的vasp_std与Γ点专用vasp_gam,不将CPU专属扩展、GPU溶剂、Wannier90或HDF5构建混成同一组。不同二进制即使版本号相同,也应先确认构建类型。

2.2 对照设计与读图方法#

每个平台、每个版本运行以下七个配置。原子坐标、POTCAR、INCAR和KPOINTS在版本间相同。这里的2×2×2网格经过实际输出核对为8个不可约k点。

配置 Si原子数 程序 GPU数 实际NKPTS NBANDS KPAR NSIM
单卡小批量 96 std 1 8 280 1 8
单卡大批量 96 std 1 8 280 1 64
Γ点通用程序 216 std 1 1 560 1 32
Γ点专用程序 216 gam 1 1 560 1 32
多卡、同一k点组 96 std 8 8 280 1 32
多卡、两个k点组 96 std 8 8 280 2 32
较大体系多卡 216 std 8 8 560 1 32

共同使用ENCUT=350 eV、PREC=Normal、ALGO=Normal、LREAL=Auto、ADDGRID、非自旋极化、静态计算。每次独立启动,固定10个电子步并运行到力和正常退出。

2.3 单卡:版本差异与NSIM的影响#

VASP GPU 加速专题六:显存容量规划:图1

图M1:相同96原子、NKPTS=8、NBANDS=280,只在同一版本中改变NSIM。各柱是最满单卡采样最大值,纵轴从零开始。

P100的五个版本中,NSIM从8增至64,最满单卡占用增加33.8%~37.7%。固定NSIM64比较版本,记录范围为5.313~5.469 GiB,跨度0.156 GiB。

V100的五个版本中,NSIM从8增至64,最满单卡占用增加32.8%~36.4%。固定NSIM64比较版本,记录范围为5.488~5.668 GiB,跨度0.180 GiB。

NSIM是轨道处理批量,较大的NSIM可能改善GPU效率,也提高部分暂存需求。相同输入在P100和V100上的占用也不完全相同,这可能是由硬件相关的库工作区、上下文与通信实现的不同造成的。

2.4 Γ点:程序类型与版本应分别选择#

VASP GPU 加速专题六:显存容量规划:图2

图M2:固定216原子、NBANDS=560、NSIM=32、KPAR=1、单GPU和相同Γ点输入。

P100在这五个版本中,gam相对std的整次占用减少10.4%~14.4%。gam本身的跨版本记录范围为5.576~5.762 GiB,跨度0.186 GiB。

V100在这五个版本中,gam相对std的整次占用减少10.1%~14.0%。gam本身的跨版本记录范围为5.759~5.968 GiB,跨度0.209 GiB。

本组除SYSTEM标题外的科学输入相同;实际带数与网格也一致,Γ点专用程序能够显著减少显存占用。

2.5 多卡:版本差异还包含通信行为#

VASP GPU 加速专题六:显存容量规划:图3

图M3:固定八卡与NSIM32;96原子KPAR1/2作为跨版本的通信诊断对照,216原子为较大体系对照。它们与第6节保留的216原子KPAR容量曲线分别讨论。

P100的216原子八卡KPAR1配置,有效版本记录范围为2.840~3.459 GiB,跨度0.619 GiB。

V100的216原子八卡KPAR1配置,有效版本记录范围为3.664~4.095 GiB,跨度0.432 GiB。

一个值得注意的反例是6.5.1→6.6.1:相同Si216八卡KPAR1,P100由2.840升至3.272 GiB(+15.2%);V100由3.664升至4.095 GiB(+11.8%)。两平台都增加442 MiB,而Si96单卡NSIM64在同一升级中略有下降。因此版本影响随工作负载和并行布局改变,不能统一套用“升级后更省”的规则。

完整主矩阵按平台列出,单位GiB;—表示被排除,没有以失败前占用代替完整容量。S表示NSIM,K表示KPAR;各列条件对应第2.2节。

P100:

版本 Si96/1卡/S8 Si96/1卡/S64 Si216/Γ/std Si216/Γ/gam Si96/8卡/K1 Si96/8卡/K2 Si216/8卡/K1
6.3.2 4.086 5.469 6.729 5.762 2.451 2.420 3.459
6.4.2 4.078 5.469 6.729 5.762 1.918 1.889 2.926
6.4.3 4.059 5.449 6.727 5.760 1.889 1.858 2.897
6.5.1 3.877 5.340 6.234 5.576 1.871 1.830 2.840
6.6.1 3.914 5.313 6.350 5.692 2.029 2.012 3.272

V100:

版本 Si96/1卡/S8 Si96/1卡/S64 Si216/Γ/std Si216/Γ/gam Si96/8卡/K1 Si96/8卡/K2 Si216/8卡/K1
6.3.2 4.269 5.668 6.939 5.968 — — —
6.4.2 4.269 5.668 6.939 5.968 2.900 2.402 3.773
6.4.3 4.226 5.625 6.914 5.943 2.843 2.343 3.720
6.5.1 4.045 5.515 6.422 5.759 2.826 2.316 3.664
6.6.1 4.076 5.488 6.537 5.875 2.986 2.500 4.095

3. 从电子数、平面波和FFT网格理解显存#

中性体系的默认电子数由每种原子的数量及所用POTCAR的ZVAL求和。这里的ZVAL是赝势显式处理的价电子数;含半芯态的赝势也会把相应电子纳入计算。当前Si赝势ZVAL=4,96原子对应384个电子。本文所有实验都使用这样的默认电子数。

电子数与能带数不是同一个量。非磁性计算每条占据态通常容纳两个电子,还需一定空带;实际NBANDS也可能被程序按并行布局向上取整。显存通常更直接受存储多少轨道影响,所以应同时记录实际NELECT与NBANDS。比较不同元素时,赝势投影等也变化,不能把显存差异全部归因于电子数。

波函数的代表性存储分量随k点、能带和平面波规模共同增长。平面波数由晶胞盒子与截断能决定;从截断关系可推导其量级近似正比于晶胞体积×ENCUT^(3/2)。这是趋势模型,实际分配还受FFT维度、填充、并行布局和临时数组影响,不能直接据此给出单卡GiB值。

同元素等密度扩胞、固定Γ或固定k网格时,体积和所需带数都增加,某些主要分量可接近原子数平方增长;保持k×a近似恒定时网格又会变疏,增长关系不同。单看原子数而忽略网格,可能得出相反结论。

真空中即使没有原子,平面波仍覆盖完整周期盒子,FFT也覆盖这段空间。因此增加真空能增加基函数与网格容量,而原子数和电子数保持不变。本文用相同64原子Si片层、相同面内晶胞和Γ采样改变空白z间隔,避免把真空效应与扩胞增加原子混在一起。

4. KPAR和NSIM需要同时考虑速度与显存#

KPAR改变k点组数,也改变每组内处理轨道的MPI进程数。k点计算可以分组,相关存储和工作区却不一定全部按k点组拆分;增大KPAR可能提高重复存储或每进程数组规模。另一方面,算法暂存及CUDA库工作区会使真实峰值偏离简单单调模型。应固定卡数、实际NBANDS和NSIM逐项比较,不能直接认为KPAR越大就越省显存。

NSIM控制一批处理多少条能带。较大的批量可能提高GPU效率,也会改变临时轨道、投影和子空间矩阵规模。本机VASP6.6.1源码中可以看到这些按NSIM分配的设备工作数组;它并不意味着全部显存随NSIM等比例变化。容量吃紧时,应在保持科学输入不变的条件下尝试较小NSIM,重新核对正常退出、数值和时间。

选择更多GPU也不保证每卡显存恰好除以卡数。不同数组有带并行、复制、当前k点暂存等布局,CUDA上下文和一些工作区还会在每卡出现。对单个算例,应联合选择“卡数、KPAR、NSIM”,保留容量余量,而不是分别按三个简单公式拼出配置。

5. 其他参数怎样影响显存#

估算时应先确定完整晶胞、实际能带数、实际 k 点数和并行布局,再考虑计算方法及后处理。以下机制由官方参数定义、数组规模和本集群记录解释;其中涉及设备驻留量的判断属于建模推断,只有已完成对照的项目才给出实测结论。不能给每个 INCAR 开关统一加上一个固定 GiB,也不能将主机内存变化直接换算成显存变化。

5.1 完整晶胞、截断能和网格#

因素 对容量的作用 估算时应记录什么
完整晶胞体积 平面波及 FFT 网格覆盖包括真空在内的整个周期晶胞;原子不变也能增加这部分存储 用晶格矩阵行列式的绝对值,不扣除真空,也不以原子所占几何体积替代
晶胞形状、倾斜及长宽比 相同体积不保证相同的离散 FFT 尺寸、数组填充或求解工作区 三条晶格矢量、夹角和实际粗/细网格;倾斜、细长晶胞需单独核验
ENCUT 改变平面波数量及默认网格;连续近似的平面波规模为体积乘 ENCUT 的 3/2 次方 350→700 eV 时这一规模约增至 2.83 倍,整个显存不一定乘 2.83
PREC Normal/Accurate 改变默认粗网格及投影精度;实际网格会离散取整 不能把 Accurate 当成平面波数量本身增加,也不能把 Single 理解成全程序改用浮点单精度
NGX、NGY、NGZ 手动指定波函数的粗 FFT 网格,覆盖对应默认维度 三个实际维度及其乘积;不能只看某一方向或只看 ENCUT
NGXF、NGYF、NGZF 控制电荷密度、势等使用的细网格;一个网格数组的规模由三维点数共同决定 任一方向增大都会影响相关数组;三个方向都翻倍是该网格点数乘 8
ADDGRID 增加计算增广电荷的支撑网格,三个方向各为细网格的两倍 支撑网格有细网格 8 倍点数,不表示整次显存乘 8;部分额外工作也可能在主机侧完成
ENAUG 是否生效取决于 PREC;不是所有现代精度模式都会用它决定细网格 官方说明其仅在旧的 Low/Medium/High 设置下生效,Normal/Accurate 下不能给它额外的网格增量

5.2 能带、自旋、对称性和实际 k 点#

参数或特征 影响机制 容量判断中的注意点
原子种类、数量及 POTCAR 默认 NELECT 来自各元素原子数乘 ZVAL 的求和;不同赝势还改变投影通道、推荐截断能等 原子数相同的不同材料不能共用一个每原子显存常数;含半芯态的势不能只按元素名称比较
NBANDS 更多轨道增加波函数存储;子空间矩阵还存在与能带数平方有关的分量 使用 OUTCAR 实际 NBANDS,包含 MPI 分组向上补齐;空带不能为了省显存随意删减
ISPIN=2 两个自旋通道分别处理,默认带数也可能变化 额外自旋数组、带数和实际 k 点共同作用,不能给整次显存固定乘 2
MAGMOM 影响初始磁性、默认带数和所允许的对称操作 磁矩更大不等于直接按比例占用更多显存;磁性破坏对称后,NKPTS 可能增加
LNONCOLLINEAR、LSORBIT 使用旋量轨道;SOC 自动启用非共线,需 vasp_ncl;非共线默认 NBANDS 增大 同时核对旋量分量、实际 NBANDS 和 NKPTS;不能把普通 std 估算简单乘 2 或乘 4
ISYM、SYMPREC 及结构对称性 决定自动网格约化;对称化本身也有工作区,ISYM=2 比 1 使用更节省内存的实现 关闭对称可能减少部分对称化工作区,却增加 k 点总量,整次峰值未必下降
KPOINTS、KSPACING、KGAMMA 和网格偏移 改变网格及约化结果;不同居中或偏移不能只按网格乘积比较 优先采用实际 NKPTS;ISYM=0 仍可能约化 k 与 −k,不能一律当作完全无约化
零权重点、能带路径 权重为零不表示轨道无需计算或存储 显式 KPOINTS 中零权重点也应计入;SCF 网格的 NKPTS 不能代替全部路径点
KPOINTS_OPT、KPOINTS_OPT_NKBATCH 自洽完成后有独立的额外 k 点计算;批次越大,官方说明其内存需求越高 分开记录 SCF 网格与后处理网格和批量;不能用一个普通 SCF 的 NKPTS 覆盖两个阶段

本集群的固定 64 原子对照中,同一网格从 ISYM=2 改为 0、−1,实际 NKPTS 从 8 增至 14、27;P100 单卡采样最大值相应为 3.305、3.621、4.246 GiB。这证明对称性会通过实际 k 点改变容量,但不是独立的对称化数组增量测量。

5.3 算法、投影与交换相关方法#

参数或方法 影响机制 当前证据与使用边界
ALGO、IALGO Davidson、RMM 等使用不同轨道、子空间及暂存工作区;Exact 是更耗内存的完全对角化路径 已比较 Normal/Fast/VeryFast 的部分配置;必须观察真正进入目标算法,而不只是启动时的 DAV 阶段
LREAL、ROPT 实空间与倒空间使用不同的非局域投影表示;ROPT 改变实空间投影优化 已比较 Auto 与 .FALSE.;手动 ROPT 没有通用标定,不能套一个固定折扣
POTCAR 投影通道 PAW 非局域投影、一中心矩阵和角动量通道随势而变 ZVAL 相同也不保证投影数据相同,拟合应保留赝势身份,不能仅保留 NELECT
LSCALAPACK、LSCALU 与实际库路径 改变正交化及子空间矩阵处理;部分矩阵分布在 MPI 进程之间 对大 NBANDS 很重要,但 GPU 端和 CPU 端工作区不同;开关变化不等于固定显存降幅
LHFCALC、NBLOCK_FOCK 杂化泛函需要精确交换,NBLOCK_FOCK 控制同时处理的轨道数 与 NSIM 是不同批量;官方明确它会影响性能和内存,应另作杂化方法的标定
PRECFOCK 独立控制精确交换 FFT 网格,与普通 DFT 网格不必相同 已有 HSE32 原子的 Normal/Accurate 定点对照,不能由普通 PBE 的 PREC 系数替代
LFOCKACE 使用自适应压缩交换算符,改变交换算符表示及工作过程 本批 HSE32 对照中开关没有提高整次峰值;不证明 ACE 的额外数组在所有输入下都免费
NKRED、NKREDX/Y/Z 对交换或响应方法的 q 网格降采样 主要改变工作量;不能把轨道存储或总显存直接除以 NKRED 的三次方,且降采样需要科学精度验证
METAGGA、LASPH 具体泛函可能需要动能密度、密度导数及 PAW 非球形项 只有 R2SCAN 少量定点参考;不同 meta-GGA 不能共用一个容量倍数
LDAU、LDAUL、LMAXMIX DFT+U 涉及局域占据矩阵;LMAXMIX 改变一中心密度混合与保存的角动量范围 由局域矩阵规模推断会改变部分存储,但缺少本集群设备增量标定;U 的数值增大不等于数组尺寸按比例变大
IMIX、MAXMIX 混合器保存历史向量,MAXMIX 设置保存数量,正值可跨离子步保留历史 官方明确更长历史会增加混合器内存;设备占用多少要实测,当前 10 步标定不能代表全部长历史峰值

这些变化应分别作用于轨道、网格、投影、子空间或暂存特征,而非对整次显存统一乘一个方法系数。

5.4 常用输出与后处理#

参数或功能 可能改变的阶段与数据 显存估算怎样处理
LORBIT、RWIGS、EMIN/EMAX 局域轨道投影、相位及相关后处理;不同投影方法使用不同数据 已测 0/1/10/11/12/14;未测模式不能直接外推;PROCAR 文件大小不代表设备驻留量
NEDOS DOS 的能量网格;用于 LOPTICS 时也是频率网格 已测投影 DOS 的 301/3001/10001;不能据此判断光学后处理同样没有峰值增量
IDIPOL、LDIPOL、DIPOL 能量修正与势/力修正不同;方向、中心及结构影响实际路径 已有单/多卡薄层及分子对照;真空导致的网格增加应与修正开关本身分开
LOPTICS 自洽后计算跃迁及频率相关介电矩阵,通常需要更多空带 实际 NBANDS、k 点及 NEDOS 都需记录;此阶段没有独立标定,不能只估基态 SCF
LEPSILON、LCALCEPS、IBRION=7/8 电场或声子响应需要额外计算路径和工作区 与 LOPTICS 的空带求和机制不同;LEPSILON 本身不要求为该方法增加空带,不使用统一响应方法倍数
LAECHG 在细 FFT 网格上重建全电子电荷密度,初始和自洽后都有输出 网格增加及重建工作区需要观察;AECCAR 的文件尺寸不能直接换算成显存
LELF、LPARD 及势文件输出 ELF、部分电荷或局域势需要相应计算、数组和写出阶段 主机/设备分配及 GPU 功能支持须按具体版本核验;不凭开关名字给出固定 GiB
LWAVE、LCHARG 写出已有轨道/电荷,可能有暂存和传输 已测 96Si 开/关输出的整次峰值相同,关闭它们不等于释放运行所需的轨道和电荷数组
LWANNIER90、LWANNIER90_RUN、LWRITE_UNK 投影、邻接 k 点重叠矩阵、轨道写出或库内局域化;输入还来自 wannier90.win 单独记录接口阶段,NBANDS、k 点、num_wann 及邻接信息;库在 CPU 执行的部分主要占主机 RAM,不能把它全部算作显存
LSOL 及 GPU 溶剂补丁 启用溶剂后存在额外势、场和求解工作;GPU 移植会改变哪些数组驻留设备 普通版标定不能代表 sol 的全流程;编译进补丁和真正启用 LSOL 是不同条件
GW、RPA、BSE 空带、频率或响应矩阵带来不同规模和实现路径 必须使用对应方法、版本和 GPU 功能范围的验证;普通 DFT 拟合不适用

5.5 迭代过程、重启和软件运行环境#

因素 应怎样理解
NELM、NELMIN、EDIFF 主要控制迭代次数与收敛,不表示每多一步就永久多存一套波函数;但更长运行可能填满混合历史、触发其他阶段或改变内存池高水位
NSW、IBRION、ISIF 增加离子步数主要增加运行时间;原子移动、晶胞变化、预测和力/应力阶段可能改变暂存。单个静态结构不能代表整个优化/MD 的最高占用
ISTART、ICHARG、已有 WAVECAR/CHGCAR 冷启动、重启、固定电荷的路径不同;ISTART=2 还可能保留旧基组,因此仅由新 POSCAR 体积和 ENCUT 推算不够
ISMEAR、SIGMA、AMIX/BMIX 等 主要影响占据与收敛,通常不像 NBANDS、网格那样直接决定最大数组维度;通过空带需求、迭代历史和算法路径仍可产生间接影响
MPI 进程与 GPU 映射 本文按每 GPU 一个 MPI 进程;多个进程共用一张卡会叠加上下文、通信及重复数据,不能套用这个布局的估算
NCCL、P2P、设备缓存、CUDA 库与工具链 通信缓冲、cuFFT/cuSOLVER 等工作区及内存池会改变设备分配高水位,可能产生非单调差异;本集群对照独立保留在 7
GPU 上其他进程 影响本轮设备已用量和实际空闲量;需区分作业自身增量、GPU 背景占用及最满单卡

5.6 当前估算器的覆盖范围与后续改进重点#

因素 当前 yskit 的处理
体积、ENCUT、NBANDS、NKPTS、卡数/KPAR/NSIM 已纳入普通非磁性 std 拟合;NBANDS 含并行补齐,k 点使用实际参考或非磁性对称预估
PREC、ADDGRID、LREAL、Normal/Fast/VeryFast 已有部分对照并纳入模型;不等于任意参数组合都已验证
LORBIT/NEDOS、IDIPOL/LDIPOL/DIPOL 已有新增单/多卡对照;超出已测模式、范围或中心位置时按外推处理
自旋、SOC、gam、HSE、R2SCAN 只有少量相同输入的定点参考,不使用普通模型作通用预测
手动 FFT 网格、ROPT、响应方法 当前没有可靠通用估算;已识别的这些输入会返回证据不足
MAXMIX、KPOINTS_OPT、LOPTICS、LAECHG、LELF、Wannier90 等新增因素 尚无独立拟合项;目前程序也未完整识别所有这些额外阶段,基础 DFT 数值不能被当作全流程峰值
非默认 NCCL/设备缓存 诊断数据与普通标定分开,检测到相应运行时变更时不套用普通估算

6. 本集群的显存实测#

本节基础扫描使用VASP6.6.1;其他版本没有逐一完成同样的全参数扫描。

下表为Γ单点、单GPU、普通std程序,单位GiB;ENCUT=350 eV、NSIM=32、KPAR=1、ALGO=Normal、PREC=Normal、LREAL=Auto、ADDGRID开启;实际NBANDS列于表中。原子数增长同时改变体积和默认电子数,应结合表中带数理解。

原子数 默认NELECT 实际NBANDS P100单卡采样最大值/GiB V100单卡采样最大值/GiB
8 32 56 2.215 2.388
32 128 112 2.617 2.793
64 256 168 2.943 3.119
96 384 280 3.637 3.812
144 576 392 4.637 4.812
216 864 560 6.350 6.537

VASP GPU 加速专题六:显存容量规划:图4

固定八卡、NSIM32、实际NKPTS=8的最满单卡采样最大值:

平台 原子数 KPAR1/GiB KPAR2/GiB KPAR4/GiB KPAR8/GiB
P100 216 3.272 4.182 5.764 10.002
V100 216 4.095 4.545 6.000 10.392

图M4:固定NSIM=32的216原子Si,保留原2/4/8卡曲线;96原子的通信与缓存机制对照另列独立小节。

VASP GPU 加速专题六:显存容量规划:图5

图M4固定NSIM比较KPAR,图M5固定卡数/KPAR比较NSIM。图M5使用实际NKPTS=8;单卡曲线为KPAR1,八卡曲线为KPAR2,每条曲线内部只改变NSIM。容量选择应基于最满单卡,不把同一组中的最快NSIM与另一组任意NSIM混合比较。

同一八卡输入,在已测合法KPAR/NSIM候选中比较容量和时间:

平台 原子数 选择依据 KPAR NSIM 单卡采样最大值/GiB 本次短步LOOP+/s
P100 96 最低显存 2 8 1.639 23.110
P100 96 最短短步时间 2 16 1.805 22.214
P100 216 最低显存 1 8 2.459 79.207
P100 216 最短短步时间 2 32 4.182 61.761
V100 96 最低显存 2 8 2.127 16.151
V100 96 最短短步时间 2 16 2.291 15.684
V100 216 最低显存 1 4 3.322 55.511
V100 216 最短短步时间 2 32 4.545 41.556

VASP GPU 加速专题六:显存容量规划:图6

图M6的各面板分别改变一个主要规模因素:原子规模对照同步改变带数与晶胞;NBANDS对照则固定原子与基组,显示增加空带本身的代价。k点越密,需保存的轨道也增加。固定原子数只扩大周期盒子,同样会提高显存,说明“显存/原子”的单一比值不适合外推到表面或分子。

VASP GPU 加速专题六:显存容量规划:图7

图M7给出更直接的容量例子:同样64原子,P100从6 Å空白间隔、350 eV的3.393 GiB,变为48 Å、650 eV的13.256 GiB;V100相应为3.570和13.431 GiB。原子数没有增加,完整盒子与截断能却同时放大了基组。因此不能用某个紧凑体相的“可算原子数”保证真空体系也装得下。

VASP GPU 加速专题六:显存容量规划:图8

图M8将原子种类的影响拆开观察:采用自动带数时,不同赝势带来不同的默认电子数与NBANDS,显存差异较大;固定NBANDS=800后差异显著缩小,但投影与一中心数据仍有不同。它支持“电子数通过轨道数等途径影响容量”,并不表示不同元素仅由NELECT就能等价替换。没有显式修改NELECT。

VASP GPU 加速专题六:显存容量规划:图9

图M9包含方法与程序类型的定点对照。杂化泛函的交换工作区、磁性与旋量轨道,以及Γ点专用程序的表示方式,均须单独核对;某个小测试开关前后总峰值相同,不代表该功能不分配额外数组。

VASP GPU 加速专题六:显存容量规划:图10

图M10展示启动、电子迭代以及最后一步/后处理的占用变化。只在某个电子步结束后查询一次,可能错过初始化工作区;容量测试应从进程启动前一直记录到退出。

中性原子种类对照保持96原子几何与ENCUT600不变。不同赝势被放入同一控制几何,未分别优化到各材料的稳定晶相;电子数之外,投影通道等也同时变化。因此这是容量控制实验,不是这些材料生产性能的排名。所有电子数来自原子数和POTCAR。

平台 赝势 原子数 ZVAL 默认NELECT 带数设置 实际NBANDS 单卡采样最大值/GiB
P100 Al 96 3.0 288 自动 193 5.121
P100 Si 96 4.0 384 自动 241 5.246
P100 P 96 5.0 480 自动 289 5.414
P100 Fe 96 8.0 768 自动 460 5.943
P100 Fe_pv 96 14.0 1344 自动 806 6.983
P100 Al 96 3.0 288 800 800 6.922
P100 Si 96 4.0 384 800 800 6.922
P100 P 96 5.0 480 800 800 6.924
P100 Fe 96 8.0 768 800 800 6.969
P100 Fe_pv 96 14.0 1344 800 800 6.965
V100 Al 96 3.0 288 自动 193 5.297
V100 Si 96 4.0 384 自动 241 5.422
V100 P 96 5.0 480 自动 289 5.589
V100 Fe 96 8.0 768 自动 460 6.119
V100 Fe_pv 96 14.0 1344 自动 806 7.158
V100 Al 96 3.0 288 800 800 7.097
V100 Si 96 4.0 384 800 800 7.097
V100 P 96 5.0 480 800 800 7.099
V100 Fe 96 8.0 768 800 800 7.144
V100 Fe_pv 96 14.0 1344 800 800 7.140

单卡Γ算例的步数及采样间隔校验(96原子、KPAR1、NSIM32;不覆盖多卡KPAR比较):

平台 电子步数 目标采样间隔/s 单卡采样最大值/GiB 实际最大采样间隔/s
P100 10 0.05 3.637 0.1538
P100 30 0.05 3.637 0.1610
P100 10 0.01 3.637 0.1654
V100 10 0.05 3.812 0.2206
V100 30 0.05 3.812 0.2024
V100 10 0.01 3.812 0.2120

另外还逐项测量了投影、算法、支撑网格、对称性、零权重点和写出等。完整分项表见显存测试报告;自动FFT维度、轨道和投影分配不是连续函数,不能将每一个因素都假定为单调、线性增长。

同输入P100/V100共形成184组短步能量/力对照,其中0组超过诊断阈值(0.01meV/原子、最大力分量0.001eV/Å)。该诊断保留未收敛迭代路径的差异,不等同于生产计算精度验收;有限输出和正常退出只确认本次容量工作负载完成。

这些测量覆盖正常退出和力/写出阶段,但仍可能漏掉采样之间的暂态。显存测试中的时间不加入原30步性能主表。最小可用容量不能只按表格峰值卡在边界上,还需为自己的输入和运行阶段留下余量。

LORBIT与偶极修正补测。 另完成154项VASP6.6.1普通GPU测试,覆盖LORBIT0/1/10/11/12/14、NEDOS301/3001/10001、64/96/216原子、非对称Si slab三个真空方向的IDIPOL/LDIPOL/DIPOL、水分子IDIPOL4,以及投影与偶极组合。单卡及多卡均从启动采样到正常退出,含最终投影后处理;10电子步,只用于容量研究。没有手动修改NELECT。

下表固定96原子Si、NBANDS280、NSIM32、ENCUT350eV;单卡为Γ,4/8卡实际NKPTS8。LORBIT<10带RWIGS,14带EMIN/EMAX。

平台 GPU数 KPAR 未设置LORBIT/MiB LORBIT各设置的最满单卡范围/MiB
P100 1 1 3724.125 3724.125~3724.125
P100 4 1 2304.125 2304.125~2304.125
P100 8 2 2060.125 2060.125~2060.125
V100 1 1 3903.625 3903.625~3903.625
V100 4 1 2823.625 2823.625~2823.625
V100 8 2 2559.625 2559.625~2559.625

这些数字只比较整次运行最高采样值。峰值相同不说明投影或偶极步骤没有额外分配,也不说明其主机内存、耗时和I/O成本为零。偶极修正仍必须根据体系和收敛要求选择,不应以显存变化小为理由随意开启。

另一个直观例子是三原子水分子,默认NELECT=8,16Å立方真空盒、ENCUT500eV、ADDGRID开启、NBANDS8、NSIM32,使用std/Γ/KPAR1。这个小分子仍有较大的FFT网格与相关工作区,不能仅按原子少就预计极低显存。

平台 GPU数 不启用偶极修正/GiB IDIPOL4+LDIPOL+DIPOL=.5/GiB
P100 1 6.045 6.045
P100 8 2.826 2.826
V100 1 6.220 6.220
V100 8 3.779 3.779

这组与Si体系的晶胞、元素和截断均不同,不把两者差值解释成某一个因素的独立贡献。

7. 通信库与设备缓存对显存的影响#

显卡上的占用除了轨道、FFT网格和算法数组,还包含通信缓冲、CUDA库工作区及运行时保留的分配。卡数或KPAR改变后,这些部分也会变化。本节用96原子Si单独研究这种影响,不将其混入上一节的KPAR容量曲线。

对照固定实际NKPTS=8、NBANDS=280、NSIM=32、ENCUT=350eV,以及相同结构、POTCAR和公共VASP6.6.1程序。默认NELECT=384,没有手动修改电子数。每张GPU一个MPI进程、一个CPU核心,P100/V100分别使用250W/300W默认功耗。临时改变三类运行时设置:

对照因素 此次诊断设置 用途
NCCL通信库 INCAR中LUSENCCL=.FALSE. 比较使用与不使用NCCL的通信路径
设备缓存 NVCOMPILER_ACC_MEM_MANAGE=0 关闭NVHPC设备内存管理器,观察分配保留的影响
NCCL通道 NCCL_MAX_CTAS=2 保持NCCL开启,限制通信通道;日志确认本次实际为2
平台 配置 默认最满单卡/MiB 通信对照最满单卡/MiB 通信对照设置
V100 4卡、KPAR=1 2823.625 1863.625 NCCL最多2条通道
V100 8卡、KPAR=1 3057.625 1905.625 NCCL最多2条通道
V100 8卡、KPAR=2 2559.625 1971.625 NCCL最多2条通道
P100 8卡、KPAR=1 2078.125 1694.125 关闭NCCL
P100 8卡、KPAR=2 2060.125 2040.125 关闭NCCL

V100四卡、八卡KPAR1默认分别采用8和12条主要集合通信通道。限制通道后,两者差距由234缩小到42MiB,说明通信策略贡献显著;剩余42MiB尚未逐项分配归因。八卡KPAR1/2的顺序也由“2较低”变成“2较高”。P100原本只差18MiB(约0.87%),关闭NCCL后同样反转;但P100两组默认主要通道数都是2,不能仅按通道条数解释其差异,还涉及组大小、连接和通信暂存。

只关闭设备缓存没有消除原顺序;限制通道且关闭缓存时,V100八卡KPAR1/2又为1761.625/1693.625MiB。控制之间存在交互,不能将不同运行的差值拆成固定的“NCCL字节”或“缓存字节”。OUTCAR主要数组估算仍表现为八卡KPAR1比四卡小、KPAR2比1大,实际GPU总占用则由更多部分共同决定。

VASP GPU 加速专题六:显存容量规划:图11

图M11:各柱取最满单卡的采样最大值。每项独立运行10电子步,图中控制均正常退出且能量、力通过同配置默认10步参考的诊断比较。

8. 用户怎样判断自己的算例是否装得下#

在本集群,可以先在自己的算例目录运行yskit,选择(3) VASP 显存估算;或直接执行:

yskit vasp-memory --gpu v100 --gpus 4
yskit vasp-memory --gpu p100 --gpus 8 --kpar 2 --nsim 32

工具只读INCAR/POSCAR/POTCAR/KPOINTS,不启动VASP、不修改输入;输出最满单卡估算、工程范围和建议每卡空闲量。它以本集群6.6.1普通非磁性DFT及默认通信/缓存设置为主;不同版本、材料和32G节点需要更宽范围,复杂方法或远超标定时可能不给数值。--kpar/--nsim仅用于估算对照,提交前仍需自行同步INCAR/Slurm。

确定物理精度后,先用小范围试算比较卡数、KPAR和NSIM,选择能正常完成且最满单卡仍有余量的候选。改变结构、元素/赝势、真空、空带、网格、截断、自旋或泛函后重新检查。容量不足时优先调整已验证的并行与批量设置,或选择容量更大的设备;NBANDS、ENCUT、真空和k网格仍由物理收敛要求决定。

合集

《VASP GPU 加速专题一:发展历程、GPU选型》

《VASP GPU 加速专题二:VASP 多版本与扩展功能支持》

《VASP GPU 加速专题三:性能实测》

《VASP GPU 加速专题四:计算准确性》

《VASP GPU 加速专题五:加速参数选择》

《VASP GPU 加速专题六:显存容量规划》

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