CALYPSO
本文介绍如何在 Bohrium上 运行 CALYPSO 任务。
「Bohrium 帮助文档|CALYPSO」是 Notebook 版帮助文档,可直接运行,请点击查看。
简介
寻找势能面上的极小值点结构是长期以来结构预测的重要目标。基于群体智能的 CALYPSO 材料结构预测方法和软件(详见 http://www.calypso.cn ),是我国自主创新发展的方法和软件,仅依据材料的化学组分即可开展材料微观原子结构的预测,已经广泛应用于晶体、表面(含二维单/多层材料)、界面、团簇和过渡态的创新性设计,并能开展功能导向(如能隙、硬度和电子密度等)的逆向材料设计。
本案例将以进行一次 B-N 的变组分结构预测为例,介绍 CALYPSO_SaaS 的基本用法。
一、在 Bohrium 上运行 CALYPSO 任务
本案例任务完整运行约需 40min
通过企业微信 17710231129 联系 Bohrium 工作人员,获取 CALYPSO-SaaS 使用权限。
1、启动 calypso-bohrium 节点
在 Bohrium节点控制台中创建新节点
-创建容器节点
,镜像选择 calypso-bohrium:7.2.4
,节点配置任意。节点开机后连接该控制节点。
2、准备输入数据
下载样例文件
为了方便后续的可视化,需要将例子储存在 /personal
或者 /share
目录下(share目录可以在项目之间共享,以personal目录为例):
cd /personal
wget https://bohrium-example.oss-cn-zhangjiakou.aliyuncs.com/CALYPSO-Bohrium-example.zip
unzip CALYPSO-Bohrium-example.zip
cd /personal/CALYPSO-Bohrium-example
您可以随时通过该链接下载样例文件。
本案例结束之后您可以自行选择是否保留该目录
/personal/CALYPSO-Bohrium-example
。
该目录中包含
templates/input.dat.example/
,进行晶体预测、层状结构预测、变组分结构预测( VSC )等的样例input.dattemplates/abacus_example/
,使用 ABACUS 作为第一性原理计算软件进行 CALYPSO 结构预测的所有需要的输入templates/qe_example/
,使用 QE 作为第一性原理计算软件进行 CALYPSO 结构预测的所有需要的输入templates/vasp_example/
,使用 VASP 作为第一性原理计算软件进行CALYPSO结构预测的所有需要的输入
下文将以vasp_example
为例进行说明。
cd templates/vasp_example
该目录中包含
- CALYPSO 及 VASP 的输入文件:
- 计算资源配置文件(详见下文:
machine.json
,dpdispatcher 的参数文件,控制镜像的使用resources.json
,dpdispatcher 的参数文件,控制每个机器运行任务的个数
- 辅助控制文件:
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 /personal/CALYPSO-Bohrium-example/templates/input.dat.example/pso/input.dat.vsc /personal/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_address": "******",
"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"]
}
}
}
其中需要修改:
email
,您的登录邮箱,用于计算节点认证password
,您的账户密码,用于计算节点认证program_id
(数字),计算节点的计费项目 ID,前往 Bohrium 项目控制台查看job_name
,任务名称,将被显示在 Bohrium 任务控制台,应避免重名导致无法区分任务image_address
,第一性原理计算软件的镜像地址,(需您提供授权凭证到企业微信 17710231129 获取地址)
部分其他参数:
platform
,执行计算任务的平台,可选paratera
(并行科技)、ali
(阿里云)等machine_type
,执行计算任务的机器规格
5、提交任务
执行任务提交脚本run.sh
,将 CALYPSO 任务提交到Bohrium云平台,日志重定向到out文件:
bash run.sh
或者手动通过
run_calypso
执行,重定向到out
:nohup run_calypso > out 2>&1 &
6、查看任务
提交成功后可通过showjob
命令查询任务运行情况:
showjob
# >>> name PID work_path
# >>> run_calypso *** /personal/***
同时您也可以在监控任务文档中了解如何在 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.csv
、convexhull.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
任务脚本等情况,将导致控制节点与计算节点断联。
- 检查
CALYPSO
的日志判断当前运行代数 若通过bash run.sh
运行任务,则日志在out
文件中,若存在,可打开后通过查看已产生的结构的数目来判断当前代数或根据CALYPSO
图标下的step=n
来判断当前代数,确定好当前代数后,继续进行以下步骤 - 修改
input.dat
中(若不存在这些行则添加)PickUp=T
PickStep=n
- 重新提交任务
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 计算后开始续算:
- 确定续算代数,同上可以通过日志文件判断,假设续算代数为 n
- 修改
input.dat
中PickUp=T
PickStep=n
- 从
./data
中将第 n 代结构的 OUTCAR、CONTCAR 和 POSCAR 拷贝到当前目录并重命名为 *_n 。该步骤可以通过修改back.sh
中的代数为 n ,再执行bash back.sh
完成。 - 在当前文件夹下创建一个名为restart的文件
touch restart
- 运行
bash run.sh
五、任务中止与删除
中止任务需要依次在运行 calypso 的控制节点和计算节点杀掉进程:
- 杀掉 calypso 控制节点的 calypso 进程: 为了区分在控制节点的不同任务,使用前述 showjob 命令即可方便快捷查看当前运行的 calypso 程序、PID以及运行的目录,根据 PID 杀掉即可。
- 杀掉计算节点进程:
杀掉控制节点的 calypso 不会中止当前正在计算节点计算的任务,因此需要手动杀掉计算节点的任务。
每一代结构的提交都会绑定在一个group_id下,Bohrium 主页任务面板可以看到各任务组 id。
在控制节点进程杀掉后,可以使用bohr任务管理命令在命令行删除,也可以登录到Bohrium界面进行删除
- 如果是想杀掉某任务组的任务,可以根据任务名称(machine.json中的job_name)或group_id确定要杀掉的任务,右边选择中止任务或删除
- 如果是想杀掉某个任务,需要确定该任务的job_id,进到任务组中找到对应的job_id进行中止或删除
注意:提前终止任务能够安全停止正在运行的任务并保存运行结果,停止任务会停止正在运行的任务但是不保存结果,删除会将所有的计算数据全部删除