跳到主要内容

CALYPSO

本文介绍如何在 Bohrium上 运行 CALYPSO 任务。

推荐

Bohrium 帮助文档|CALYPSO」是 Notebook 版帮助文档,可直接运行,请点击查看。

简介

寻找势能面上的极小值点结构是长期以来结构预测的重要目标。基于群体智能的 CALYPSO 材料结构预测方法和软件(详见 http://www.calypso.cn ),是我国自主创新发展的方法和软件,仅依据材料的化学组分即可开展材料微观原子结构的预测,已经广泛应用于晶体、表面(含二维单/多层材料)、界面、团簇和过渡态的创新性设计,并能开展功能导向(如能隙、硬度和电子密度等)的逆向材料设计。

本案例将以进行一次 B-N 的变组分结构预测为例,介绍 CALYPSO_SaaS 的基本用法。

引用论文

一、在 Bohrium 上运行 CALYPSO 任务

本案例任务完整运行约需 40min

通过 bohrium@dp.tech 联系 Bohrium 工作人员,获取 CALYPSO-SaaS 使用权限。

1、启动 calypso-bohrium 节点

Bohrium节点控制台创建新节点-创建容器节点,镜像选择 calypso-bohrium:7.2.4 ,节点配置任意。节点开机后连接该控制节点。

2、准备输入数据

下载样例文件

为了方便后续的可视化,需要将例子储存在 /data 目录下(该目录在项目之间共享):

cd /data
wget https://bohrium-example.oss-cn-zhangjiakou.aliyuncs.com/CALYPSO-Bohrium-example.zip
unzip CALYPSO-Bohrium-example.zip
cd /data/CALYPSO-Bohrium-example

您可以随时通过该链接下载样例文件。

本案例结束之后您可以自行选择是否保留该目录/data/CALYPSO-Bohrium-example

该目录中包含

  1. templates/input.dat.example/,进行晶体预测、层状结构预测、变组分结构预测( VSC )等的样例input.dat
  2. templates/abacus_example/,使用 ABACUS 作为第一性原理计算软件进行 CALYPSO 结构预测的所有需要的输入
  3. templates/qe_example/,使用 QE 作为第一性原理计算软件进行 CALYPSO 结构预测的所有需要的输入
  4. templates/vasp_example/,使用 VASP 作为第一性原理计算软件进行CALYPSO结构预测的所有需要的输入

下文将以vasp_example为例进行说明。

cd templates/vasp_example

该目录中包含

  1. CALYPSO 及 VASP 的输入文件:
    • input.dat,CALYPSO 的控制文件,(详细的参数说明请参考英文手册中文手册)
    • INCAR_*,各结构逐次进行 VASP 优化的控制文件
    • POTCAR,VASP 赝势
  2. 计算资源配置文件(详见下文:
    • machine.json,dpdispatcher 的参数文件,控制镜像的使用
    • resources.json,dpdispatcher 的参数文件,控制每个机器运行任务的个数
  3. 辅助控制文件:
    • run.sh,CALYPSO-SaaS 的任务提交脚本
    • del.sh,CALYPSO-Saas 的目录清理脚本,用于在同一目录重新计算时批量删除无用的文件

3、修改CALYPSO控制文件

根据您的结构预测需求修改CALYPSO的控制文件input.dat,本案例进行 B-N 变组分结构预测演示,可直接复制templates/input.dat.example/pso/input.dat.vsc替换本目录下的input.dat

cp /data/CALYPSO-Bohrium-example/templates/input.dat.example/pso/input.dat.vsc /data/CALYPSO-Bohrium-example/templates/vasp_example/input.dat

4、修改Bohrium配置文件

修改计算资源配置machine.json:

CALYPSO-SaaS的任务提交和回收全部由 dpdispatcher 完成,因此需要修改 dpdispatcher 的配置文件 machine.json 。

文件管理 页面,您可以双击左侧文件树中的 machine.json 文件,在线编辑和保存,也可以在命令行窗口中进行编辑:

vi machine.json

输入 i 进入编辑模式,完成修改后,按 esc 退出编辑模式后输入 : 进入末行命令符模式,然后输入 wq 保存并退出。配置文件内容如下:

{
"batch_type": "Lebesgue",
"context_type": "LebesgueContext",
"local_root": "./",
"remote_profile": {
"email": "******",
"password": "******",
"program_id": 000000,
"_keep_backup": true,
"input_data": {
"job_name": "calypso.Bohrium.test.1",
"image_name": "******",
"job_type": "indicate",
"log_file": "log",
"grouped": true,
"disk_size": 200,
"max_run_time": 40,
"machine_type": "c16_m64_cpu",
"platform": "paratera",
"on_demand": 0,
"out_files": ["OUTCAR", "CONTCAR", "OSZICAR", "fp.log", "log", "err"]
}
}
}

其中需要修改:

  1. email,您的登录邮箱,用于计算节点认证
  2. password,您的账户密码,用于计算节点认证
  3. program_id(数字),计算节点的计费项目 ID,前往 Bohrium 项目控制台查看
  4. job_name,任务名称,将被显示在 Bohrium 任务控制台,应避免重名导致无法区分任务
  5. image_name,第一性原理计算软件的镜像地址,(需您提供授权凭证到bohrium@dp.tech 邮箱获取地址)

部分其他参数:

  1. platform,执行计算任务的平台,可选 paratera (并行科技)、ali (阿里云)等
  2. machine_type,执行计算任务的机器规格
  3. max_run_time,每个计算任务的最大运行时间(单位:分钟)

5、提交任务

执行任务提交脚本run.sh,将 CALYPSO 任务提交到Bohrium云平台,日志重定向到out文件:

bash run.sh

或者手动通过run_calypso执行,重定向到outnohup run_calypso > out 2>&1 &

6、查看任务

提交成功后可通过showjob命令查询任务运行情况:

showjob
# >>> name PID work_path
# >>> run_calypso *** /data/***

同时您也可以在监控任务文档中了解如何在 Bohrium 平台查看任务状态。

二、任务的结果分析

我们在镜像中准备了更新的结构预测结果分析脚本 cak3.py ,目前该脚本除基础功能外,还支持对结构预测演化的进程可视化分析,以及对变组分结构预测的 convex hull 进行可视化分析。

预测结构提取

CALYPSO 运行的结果均存放于运行目录中的results文件夹中,进入该目录:

cd results

运行 cak3.py ,程序会自动分析您的预测结果,并将前五十个焓值最低的结构信息存于Analysis_Output.dat中:

cak3.py

--vasp选择输出 vasp 格式,-a输出所有结构,-m多组对称性容忍度:

cak3.py --vasp -a -m "0.1 0.3 0.5"

当体系为变组分结构预测时,将根据组分分文件夹输出。

结构预测演化进程可视化

cak3.py --plotevo

输出evo.png,在 WebShell 中可以直接查看。

变组分结构预测相图可视化

绘制convex hull

运行该命令需要在input.dat中提前给定每个单质元素每原子的能量

cak3.py --plotch

输出convexhull.csvconvexhull.png,在WebShell中可以直接查看。

三、计算目录清理

重新计算时快速清理目录中不需要的文件:

bash del.sh

执行该命令将删除所有匹配POSCAR_*、caly.log、contcar.py、cp2k.py、get*、gpid.py、gulpt.py、mpi*、pos*、pwscf.py、read*、remoteparallel.py、results/、rvasp.py、surface_run.py、v2lammps.py、writekp.py、step*、step、pwscf_*、data、log_dir、backup、*.sub、 lbg-*.sh、*_finish等的文件。 运行此命令前请仔细核对,以免删除您需要保留的文件!

四、续算

在 Bohrium 平台上通过 dpdispatcher 提交 CALYPSO 结构预测任务后,若任务意外中断,需要续算,分为两类:

1、CALYPSO某代结构演化完毕且任务已提交,与计算节点断联

CALYSPO 控制节点需要保持与计算节点的通讯才能向计算节点发送任务、获取计算节点结果。若在CALYPSO等待计算节点计算的过程中,发生控制节点关机或误杀后台 CALYPSO 任务脚本等情况,将导致控制节点与计算节点断联。

  1. 检查 CALYPSO 的日志判断当前运行代数 若通过bash run.sh运行任务,则日志在out文件中,若存在,可打开后通过查看已产生的结构的数目来判断当前代数或根据CALYPSO图标下的 step=n来判断当前代数,确定好当前代数后,继续进行以下步骤
  2. 修改input.dat中(若不存在这些行则添加)
    1. PickUp=T
    2. PickStep=n
  3. 重新提交任务
bash run.sh
# 或
nohup run_calypso >> out 2>&1 &

只有完全相同的*.json才可以进行续算!dpdispatcher 会根据当前的参数文件(machine.json & resources.json)哈希值,如果当前续算的哈希值与之前提交的哈希值相同,则触发续算。 若想要进行续算,一定不要更改 \*.json 文件;相反,若对 \*.json 文件进行任何修改(如增删一个空格等),则会不进行续算,而是进行从第一代开始的计算。

2、CALYPSO某代结构演化进程中断

计算节点计算完成,结果已经拉回 CALYPSO 控制节点,在产生下一代结构时出现异常,如CALYPSO报错中断、节点关机、或手动中止等。 ./data中保存了此前计算的所有代的输出文件,以VASP为例,假设我们想要从CALYPSO第 n 代 DFT 计算后开始续算:

  1. 确定续算代数,同上可以通过日志文件判断,假设续算代数为 n
  2. 修改input.dat
    1. PickUp=T
    2. PickStep=n
  3. ./data中将第 n 代结构的 OUTCAR、CONTCAR 和 POSCAR 拷贝到当前目录并重命名为 *_n 。该步骤可以通过修改 back.sh 中的代数为 n ,再执行 bash back.sh 完成。
  4. 在当前文件夹下创建一个名为restart的文件 touch restart
  5. 运行 bash run.sh

五、任务中止与删除

中止任务需要依次在运行 calypso 的控制节点和计算节点杀掉进程:

  1. 杀掉 calypso 控制节点的 calypso 进程: 为了区分在控制节点的不同任务,使用前述 showjob 命令即可方便快捷查看当前运行的 calypso 程序、PID以及运行的目录,根据 PID 杀掉即可。
  2. 杀掉计算节点进程: 杀掉控制节点的 calypso 不会中止当前正在计算节点计算的任务,因此需要手动杀掉计算节点的任务。 每一代结构的提交都会绑定在一个group_id下,Bohrium 主页任务面板可以看到各任务组 id。 在控制节点进程杀掉后,可以使用lbg任务管理命令在命令行删除,也可以登录到Bohrium界面进行删除
    • 如果是想杀掉某任务组的任务,可以根据任务名称(machine.json中的job_name)或group_id确定要杀掉的任务,右边选择中止任务或删除
    • 如果是想杀掉某个任务,需要确定该任务的job_id,进到任务组中找到对应的job_id进行中止或删除

注意:中止任务能够安全停止正在运行的任务并保存运行结果,删除会将所有的计算数据全部删除