软件案例|TBPLaS
本文介绍如何在 Bohrium 上 运行 TBPLaS 任务。
简介
TBPLaS 是一款基于紧束缚近似,用于研究大尺度凝聚态物理体系的计算物理软件,由武汉大学袁声军教授课题组开发。该软件主要基于课题组发展的线性标度 TBPM 方法,通过模拟波函数的含时演化,计算固体电子体系的电学、光学、输运和等离激元性质。TBPM 方法绕开传统物性计算中的对角化过程,资源消耗与体系的大小线性相关,模拟尺寸的跨度达到近 10 个数量级,至数十亿个原子或者更大的复杂量子体系,较传统方法提升至少 5-6 个数量级。更多信息请查看 TBPLaS 论文以及官方说明文档。
如何在 Bohrium 上运行 TBPLaS 任务
步骤一:准备计算脚本
首先需要开启管理节点,本案例中镜像选择 tbplas:1.4-py3.10-intel2022-ilp64
。通过 Web Shell 连接管理节点后即可进行计算脚本的准备。
注:使用该镜像作为管理节点,是因为该镜像中已经包含了 TBPLaS 的软件及相关案例脚本。实际如果计算脚本已经提前完成,可以使用任意镜像作为管理节点,进行任务提交。
进入 /root/src
目录,解压已经下载好的 TBPLaS 的源码:
解压完成
进入解压后的目录 examples/sample/tbpm
文件夹:
/root/src/tbplas/examples/sample/tbpm
. ├── diffusion_coeff.py ├── graphene.py └── graphene_mpi.py 0 directories, 3 files
该文件夹中包含三个脚本。我们以 graphene_mpi.py
为例,该脚本中包涵了如何构建结构、构建紧束缚哈密顿量、以及如何利用紧束缚模型基于 TBPM 方法计算 DOS, AC/DC conductivity and dynamic polarizability. 本案例中,我们将使用该脚本作为计算脚本。
步骤二:准备 job.json
配置文件
通过以下 Python 代码创建或编辑 job.json
:
已生成 /root/src/tbplas/examples/sample/tbpm/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": 1234, "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
: 后的 1234 需要替换为您自己的项目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 的并行。
步骤三,提交任务
第一次使用 Lebesgue Utility 需要配置,若您还未配置,请参阅 Bohrium 帮助文档|Lebesgue Utility)
使用 Lebesgue Utility 提交任务(Lebesgue Utility 是 Bohrium 平台的作业管理系统):
其中:
- i 指定任务的配置文件,本案例中是 job.json
- p 指定输入文件所在的目录,Bohrium 会将指定的目录打包上传,在计算节点上解压后,将工作目录切换为该目录。本案例中是 ./
在命令行看到如下输出即表示提交成功。同时可以看到任务的 JOB ID,后续可用此 ID 追踪任务进度。
Submit job succeed. JOB GROUP ID: <JOB GROUP ID>, JOB ID: <JOB ID>