乐于分享
好东西不私藏

预估VASP软件AIMD的计算时间

预估VASP软件AIMD的计算时间

核心计算逻辑

在体系原子数、k点、截断能参数固定的前提下,AIMD每一个离子步时长基本趋于稳定,因此采用单步平均耗时 × 总模拟步数的精准预估方案,公式如下

AIMD总耗时(s) = 单离子步平均耗时(s/step) ×  总模拟步数(step)AIMD总耗时(h) = 总耗时(s) ÷ 3600

其中总模拟步数由INCAR中的NSW参数直接定义,是耗时预估的核心基数

前期准备:完整输入文件与脚本配置

耗时预估前,需提前配置好全套AIMD计算输入文件,保证参数与正式计算完全一致(参数不一致会导致单步耗时偏差,预估失效)

所需文件包含:INCAR、KPOINTS、POSCAR、POTCAR、超算提交脚本sub_vasp.sh

核心输入文件参数示例

1. INCAR文件

固定AIMD模拟参数,此处为常规常温NVT系综分子动力学参数,可直接复用:

本次示例核心参数:总步数NSW=10000步,后续预估以此为基准

2. 其余基础文件

POSCAR:待模拟体系的初始结构文件(原子数量、晶格参数固定)

POTCAR:对应体系元素的赝势文件,与POSCAR元素匹配

KPOINTS:k点网格文件,常规分子动力学采用(1×1×1)即可,参数统一固定

3. 超算提交脚本 sub_vasp.sh 示例

脚本资源申请参数(CPU、核数、内存)必须与正式计算保持一致,资源差异会直接改变单步耗时

#!/bin/bash#SBATCH -p normal#SBATCH -J AIMD-time-test#SBATCH --nodes=1#SBATCH --ntasks=1#SBATCH --gres=gpu:1module load vasp/6.2.0mpirun vasp_std

分步耗时预估实操完整流程

步骤1:提交测试任务

将全套输入文件与提交脚本上传至超算工作目录,在终端执行提交命令,提交测试任务

sbatch sub_vasp.sh

此处重点:测试任务无需跑完所有步数,仅需要程序正常迭代跑出30~50个离子步即可,步数过少会导致平均误差大,步数过多浪费算力

等待超算运行5~20分钟,确保OUTCAR文件中生成完整的离子步迭代记录

步骤2:抓取离子步运行耗时数据

任务运行稳定、跑出足够离子步后,取消任务,使用命令抓取OUTCAR中每一步LOOP+迭代的计算耗时

grep LOOP+ OUTCAR

命令输出结果示例

输出中 real time 后的数值为该离子步的实际运行耗时(单位:秒),是我们的统计依据

步骤3:计算单步平均耗时

直接统计全部 15 组耗时数据求取平均值

耗时数据:7.0156、6.9872、7.0344、6.9598、7.0321、6.9765、7.0483、6.9641、7.0123、6.9932、7.0218、6.9504、7.0430、6.9709、7.0256

总耗时合计 = 105.0352s

单步平均耗时 = 105.0352 ÷ 15 ≈ 7.00 s/step

步骤4:计算AIMD模拟总耗时

结合本次INCAR参数:总步数NSW=10000步,代入核心公式计算

总耗时(秒)7.00 s/step × 10000 step 70000 s换算为小时:70000 ÷ 3600 ≈ 19.4 小时

实操关键注意事项(避坑重点)

  • 参数一致性原则:测试任务与正式任务的INCAR参数、k点、截断能、原子体系、超算核数/内存必须完全一致,任意参数改动都会改变单步耗时,导致预估失效

  • 剔除异常步数:OUTCAR中前1~2步为程序初始化迭代,耗时不稳定,必须剔除后再计算平均值,提升预估精度

  • 取样步数要求:建议取样30步以上有效数据取平均,体系越大、原子数越多,需要的取样步数越多,避免偶然误差

五、批量统计快捷命令(进阶实操)

若步数较多,手动统计繁琐,可直接使用以下命令快速计算平均单步耗时,无需手动计算

grep LOOP+ OUTCAR tail -n +3 awk'{gsub(/:/,"",$7); sum+=$7; count++} END {print "平均单步耗时:", sum/count, "s"}'

命令功能:自动剔除前2步数据,统计剩余所有LOOP+步数的平均耗时,直接输出结果

温馨提示:如需取用代码,建议访问官网 www.yuansuan.top,查阅配套帮助文档就能轻松复制代码。

有需要算力租用、服务器定制和集群搭建的老师们,欢迎通过以下方式联系我们!

扫描二维码添加好友

联系邮箱:info@wfyskj.com.cn

电话:17616746026