Bohrium
robot
新建

空间站广场

论文
Notebooks
比赛
课程
Apps
我的主页
我的Notebooks
我的论文库
我的足迹

我的工作空间

任务
节点
文件
数据集
镜像
项目
数据库
公开
Bohrium 帮助文档|TBPLaS
Bohrium 帮助文档
Bohrium 帮助文档
Bohrium
MileAway
发布于 2023-10-15
推荐镜像 :TBPLaS:1.4-py3.10-intel2022-ilp64
推荐机型 :c2_m4_cpu
软件案例|TBPLaS
简介
如何在 Bohrium 上运行 TBPLaS 任务
步骤一:准备计算脚本
步骤二:准备 job.json 配置文件
步骤三,提交任务
查看任务
下载结果

软件案例|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 的源码:

代码
文本
[1]
import os
import tarfile

os.chdir("/root/src")

with tarfile.open("tbplas.tar.bz2", "r:bz2") as tar:
tar.extractall()

print("解压完成")
解压完成
代码
文本

进入解压后的目录 examples/sample/tbpm 文件夹:

代码
文本
[2]
try:
os.chdir("tbplas/examples/sample/tbpm")
print(os.getcwd())
except:
print(f"当前路径{os.getcwd()},请检查工作路径是否正确")
/root/src/tbplas/examples/sample/tbpm
代码
文本
[3]
# 查看当前文件夹下的文件
! tree
.
├── 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

代码
文本
[4]
import json

# 设置 job.json 的参数
job_params = {
"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"
}

with open("job.json", "w") as f:
json.dump(job_params, f, indent=4, ensure_ascii=False)

print(f"已生成 {os.path.join(os.getcwd(), 'job.json')}, \n参数为:\n{json.dumps(job_params, indent=4, ensure_ascii=False)}")
已生成 /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 平台的作业管理系统):

代码
文本
[ ]
os.system("lbg job submit -i job.json -p ./")
代码
文本

其中:

  • i 指定任务的配置文件,本案例中是 job.json
  • p 指定输入文件所在的目录,Bohrium 会将指定的目录打包上传,在计算节点上解压后,将工作目录切换为该目录。本案例中是 ./

在命令行看到如下输出即表示提交成功。同时可以看到任务的 JOB ID,后续可用此 ID 追踪任务进度。

Submit job succeed. JOB GROUP ID: <JOB GROUP ID>, JOB ID: <JOB ID>
代码
文本

查看任务

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

下载结果

您可以在结果下载文档中了解如何在 Bohrium 平台下载任务结果。

代码
文本
Bohrium 帮助文档
Bohrium 帮助文档
点个赞吧
本文被以下合集收录
Bohrium 帮助文档|软件案例
MileAway
更新于 2024-05-12
14 篇7 人关注
TBPLaS
yuxiangc22
更新于 2024-04-12
4 篇0 人关注
推荐阅读
公开
基于Torchmd实现伞型采样计算自由能
notebookMDPyTorchfree energyTutorial
notebookMDPyTorchfree energyTutorial
许晓虎
发布于 2023-11-10
9 赞7 转存文件
公开
Pytorch基础教程(二):自动求导
PyTorchDeep Learning
PyTorchDeep Learning
爱学习的王一博
发布于 2024-03-11
2 赞7 转存文件