以下示例是关于Python中包含submit_job.py用法的示例代码,想了解submit_job.py的具体用法?submit_job.py怎么用?submit_job.py使用的例子?那么可以参考以下相关源代码片段来学习它的具体使用方法。
提交slurm工作由slurmer
import os
from typing import Literal, Optional
import click
from slurmer.job import SlurmJob
Partition = Literal["g1", "g2", "g3", "g4", "g5"]
partition_table = {"g1": 16, "g2": 20, "g3": 24, "g4": 96, "g5": 32}
def check_job_prepared(workdir):
files_to_check = ("POSCAR", "INCAR", "KPOINTS", "POTCAR")
for f in files_to_check:
if not os.path.isfile(os.path.join(workdir, f)):
return False
return True
@click.command()
@click.option("-d", "--workdir", help="Working directory")
@click.option("-j", "--jobname", default=None, help="Job name")
@click.option("-p", "--partition", default="g1", help="Partition of nodes")
@click.option("-n", "--nodes", default=4, help="Number of nodes")
@click.option("--gamma", is_flag=True, default=False, help="Use gamma-only version")
def main(
workdir: str,
jobname: Optional[str],
partition: Partition,
nodes: int,
gamma: bool,
):
prepared = check_job_prepared(workdir)
if not prepared:
raise RuntimeError("Job is not prepared!")
job = SlurmJob(
workdir=workdir,
template_file="vasp-6-gam.sh" if gamma else "vasp-6-std.sh",
job_name=workdir if jobname is None else jobname,
node_partition=partition,
num_nodes=nodes,
num_tasks=nodes * partition_table[partition],
)
job.submit(write_job_script=True)
if __name__ == "__main__":
main()
本文地址:https://www.itbaoku.cn/snippets/785087.html