提交作业

本文介绍如何通过控制台、命令行和E-HPC Portal提交作业。

前提条件

  • 集群和集群节点状态都为运行中

  • 已创建用户,具体操作,请参见用户管理

  • 通过控制台提交作业时,已在集群中准备好待执行的作业文件。

  • 通过命令行提交作业时,集群调度器类型须为PBS、SLURM和Grid Engine。

通过控制台提交作业

  1. 进入集群详情页面。

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

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

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

    4. 集群列表页面,单击目标集群名称

  2. 在左侧导航栏,单击作业管理

  3. 单击创建作业,并完成以下参数配置。

    • 基本设置

      参数项

      是否必选

      说明

      作业名称

      该作业的名称。

      调度器队列

      选择集群中执行作业任务的队列。

      启动Job Array

      是否启用调度器的Job Array功能。Job Array可自定义选择执行作业的规则。

      • 最小值:指定Job Array中任务的起始值。所有任务的索引将从最小值开始递增。

      • 最大值:指定Job Array中任务的最大值。所有任务的索引将不超过最大值。

      • 步长:指定任务索引之间的增量。例如,如果步长为2,则任务的索引将以2的增量递增。不指定时默认为1。

      作业优先级

      作业执行的优先级取值受调度器影响而不同,取值为不小于0的整数。取值越大,优先级越高。

      说明

      如果集群的调度策略设置为根据优先级调度,高优先级的作业会被优先调度运行。在提交了多个作业时,对于需要优先执行的作业,您可以通过设置高优先级来优先执行。

      执行命令

      向调度器提交的作业执行命令,可以是脚本文件(如/home/test目录下的job.pbs),也可以是一段命令文本。分为以下两种情况:

      • 脚本文件可执行,填写相对路径,如./job.pbs

      • 脚本文件没有可执行权限,则需要填写执行命令,且需要在命令前加--。如:--/opt/mpi/bin/mpirun /home/test/job.pbs

      节点数

      用来运行此作业的计算节点数。

      申请CPU

      表示集群执行该作业任务时每个节点需要使用的内存和CPU资源量。

      说明

      填写该参数时需要根据作业的实际需求来确定,如果内存不足可能会导致作业运行失败或性能下降。

      申请内存

    • 高级选项

      参数项

      是否必选

      说明

      标准输出路径

      定义Linux系统的stderr/stdout输出重定向路径,包含输出文件名。

      • stdout:标准文件输出路径。

      • stderr:错误文件输出路径。

      集群用户必须有该路径的可写权限,默认按照调度器设置生成输出文件。

      标准错误路径

      环境变量

      传递到作业的运行时变量,可以在作业执行文件中通过环境变量访问。

  4. 确认配置信息无误,单击页面底部确认创建

通过命令行提交作业

  1. 远程连接集群的登录节点。具体操作,请参见连接集群

  2. 根据集群的调度器类型,选择以下对应操作,编写作业脚本并提交作业。示例如下:

    说明

    自动伸缩场景下,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

    Grid Engine

    1. 执行以下命令,编写作业脚本,脚本文件命名为jobscript.sh。

      vim jobscript.sh

      jobscript.sh的内容示例如下,更多关于Grid Engine命令行的信息,请参见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规格,编写Grid Engine作业脚本时必须使用-pe smp的方式来指定作业所需vCPU数。

    2. 执行以下命令,提交作业。

      qsub -V jobscript.sh

通过E-HPC Portal提交作业

具体操作,请参见通过submitter提交作业

相关文档

您也可以通过调用API接口提交作业。具体操作,请参见CreateJob