submit_job.py

2022-04-18

以下示例是关于Python中包含submit_job.py用法的示例代码,想了解submit_job.py的具体用法?submit_job.py怎么用?submit_job.py使用的例子?那么可以参考以下相关源代码片段来学习它的具体使用方法。

提交slurm工作由slurmer

文件名:submit_slurm.py[英]:submit_job.py源码类型:Python
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