通过命令行提交作业

E-HPC支持PBS、SLURM、SGE等作业调度系统,本文介绍如何使用三种调度系统,通过命令行提交作业。

准备工作

  1. 创建集群用户。具体操作,请参见创建用户

    集群用户用于登录集群,进行编译软件、提交作业等操作,本文创建的用户示例如下:

    • 用户名:testuser

    • 用户组:sudo权限组

    重要

    不推荐使用root用户提交任何作业,避免作业脚本中的误操作导致E-HPC集群数据遭受破坏。

  2. 在相应的目录下准备好作业数据文件和执行程序文件。

    本文以以下路径作为示例:

    $HOME/test.py           # 作业执行程序
    $HOME/test.data         # 作业相关数据

    作业执行命令如下:

    test.py -i test.data

连接集群

选择以下一种方式连接集群。本文使用的用户名为testuser,连接集群后会默认登录到/home/testuser

  • 通过客户端

    该方式仅支持使用PBS调度器的集群。操作前,请确保您已下载安装E-HPC客户端,且已配置客户端所需环境。具体操作,请参见配置客户端所需环境

    1. 打开并登录E-HPC客户端。

    2. 在客户端左侧导航栏,单击会话管理

    3. 会话管理页面的右上角,单击terminal,打开Terminal窗口。

  • 通过控制台

    1. 登录弹性高性能计算控制台

    2. 在顶部菜单栏左上角处,选择地域。

    3. 在左侧导航栏,单击集群

    4. 集群页面,找到目标集群,单击远程连接

    5. 远程连接页面,输入集群用户名、登录密码和端口,单击ssh连接

提交作业

请根据集群的调度器类型,以及您准备好的作业文件,编写作业脚本,并提交作业。示例如下:

说明

自动伸缩场景下,E-HPC不支持基于内存来扩缩容,建议您在提交作业时指定作业所需的vCPU数。

PBS

  1. 编写作业脚本,脚本文件命名为jobscript.pbs。

    vim jobscript.pbs

    jobscript.pbs的内容示例如下。更多关于PBS命令行的信息,请参见PBS官网

    #!/bin/sh
    #PBS -l ncpus=4,mem=1gb       #指定作业运行所需的计算资源
    #PBS -l walltime=00:10:00     #预估作业运行时长
    #PBS -o test_pbs.log          #指定stdout输出文件
    #PBS -j oe                    #把stderr和stdout的输出合并到指定的输出文件
    cd $HOME
    test.py -i test.data
  2. 提交作业。

    qsub jobscript.pbs

SLURM

  1. 编写作业脚本,脚本文件命名为jobscript.slurm。

    vim jobscript.slurm

    jobscript.slurm的内容示例如下,更多关于SLURM命令行的信息,请参见SLURM官网

    #!/bin/sh
    #SBATCH --job-name=slurm-quickstart       #设置作业名称
    #SBATCH --output=test_slurm.log           #指定stdout输出文件
    #SBATCH --nodes=1                         #指定节点数量
    #SBATCH --ntasks=1                        #指定任务数量
    #SBATCH --cpus-per-task=1                 #指定每个任务需要的vCPU数
    #SBATCH --time=00:10:00                   #预估作业运行时长
    #SBATCH --mem-per-cpu=1024                #指定每个vCPU分配的内存数
    cd $HOME
    test.py test.data
  2. 提交作业。

    sbatch jobscript.slurm

SGE

  1. 编写作业脚本,脚本文件命名为jobscript.sh。

    vim jobscript.sh

    jobscript.sh的内容示例如下,更多关于SGE命令行的信息,请参见SGE官网

    #!/bin/bash
    #$ -cwd               #指定执行路径为当前路径
    #$ -N test1           #设置作业名称
    #$ -q all.q           #指定队列
    #$ -pe smp 2          #指定运行作业所需的vCPU数
    #$ -l vf=1g           #指定运行作业所需的内存数
    #$ -o /home/testuser  #指定输出日志路径
    #$ -e /home/testuser  #指定错误日志路径
    cd $HOME
    test.py test.data
    重要

    自动伸缩场景下,E-HPC会基于作业所需vCPU数来匹配扩容的ECS规格,编写SGE作业脚本时必须使用-pe smp的方式来指定作业所需vCPU数。

  2. 提交作业。

    qsub -V jobscript.sh