TBPLaS
本文介绍如何在 Bohrium 上 运行 TBPLaS 任务。
「Bohrium 帮助文档|TBPLaS」是 Notebook 版帮助文档,可直接运行,请点击查看。
简介
TBPLaS 是一款基于紧束缚近似,用于研究大尺度凝聚态物理体系的计算物理软件,由武汉大学袁声军教授课题组开发。该软件主要基于课题组发展的线性标度 TBPM 方法,通过模拟波函数的含时演化,计算固体电子体系的电学、光学、输运和等离激元性质。TBPM 方法绕开传统物性计算中的对角化过程,资源消耗与体系的大小线性相关,模拟尺寸的跨度达到近 10 个数量级,至数十亿个原子或者更大的复杂量子体系,较传统方法提升至少 5-6 个数量级。更多信息请查看 TBPLaS 论文以及官方说明文档。
如何在 Bohrium 上运行 TBPLaS 任务
步骤一:准备计算脚本
首先需要开启管理节点,本案例中镜像选择 tbplas:1.4-py3.10-intel2022-ilp64
。通过 Web Shell 连接管理节点后即可进行计算脚本的准备。
注:使用该镜像作为管理节点,是因为该镜像中已经包含了 TBPLaS 的软件及相关案例脚本。实际如果计算脚本已经提前完成,可以使用任意镜像作为管理节点,进行任务提交。
管理节点构建完成后,通过 Web Shell 连接管理节点,进入 ~/src
目录,解压已经下载好的 TBPLaS 的源码:
cd ~/src; tar -xvf tbplas.tar.bz2
进入解压后的目录 examples/sample/tbpm
文件夹:
cd tbplas/examples/sample/tbpm
tree
.
|-- diffusion_coeff.py
|-- graphene.py
`-- graphene_mpi.py
该文件夹中包含三个脚本。我们以 graphene_mpi.py
为例,该脚本中包涵了如何构建结构、构建紧束缚哈密顿量、以及如何利用紧束缚模型基于 TBPM 方法计算 DOS, AC/DC conductivity and dynamic polarizability. 本案例中,我们将使用该脚本作为计算脚本。
步骤二:准备 job.json
配置文件
创建并编辑任务配置文件:
touch job.json
vim job.json
在编辑器中输入如下内容:
{
"job_name": "TBPLaS example",
"command": "OMP_NUM_THREADS=4 mpirun -np 4 python -u graphene_mpi.py > log",
"log_file": "log",
"backward_files": [],
"project_id": 0000,
"platform": "ali",
"job_type": "container",
"machine_type": "c16_m32_cpu",
"image_address": "registry.dp.tech/dptech/tbplas:1.4-py3.10-intel2022-ilp64"
}
注意: project_id
: 后的 0000 需要替换为您自己的项目ID,可在“项目管理”页查看。建议将 MPI 进程数设置为 CPU 核心数 / 2,如本例选用的机型为 16 核 32G 内存的 CPU 机器,则使用 mpirun -np 8 来提交作业。
注意 MPI 进程数是脚本中计算随机 sample 的个数的因子:如本脚本中,sample的个数为4。
config.generic['nr_random_samples'] = 4
因此 MPI 进程数应该为 4 的倍数,如 2、4等 等。
同时为了保证单个 sample 的效率还要提供 OMP 的并行。
步骤三:提交任务
使用 Bohrium CLI 提交任务:
因此首先需要安装Bohrium CLI
bohr job submit -i job.json -p ./
其中:
- -i 指定任务的配置文件,本案例中是 job.json
- -p 指定输入文件所在的目录,Bohrium 会将指定的目录打包上传,在计算节点上解压后,将工作目录切换为该目录。本案例中是 ./
在命令行看到如下输出即表示提交成功。同时可以看到任务的 JOB ID,后续可用此 ID 追踪任务进度。
Submit job succeed.
JobId: <JOB ID>
JobGroupId: <JOB GROUP ID>
查看任务
您可以在监控任务文档中了解如何在 Bohrium 平台查看任务状态。
下载结果
您可以在结果下载文档中了解如何在 Bohrium 平台下载任务结果。