跳到主要内容

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 平台下载任务结果。