E-HPC支持PBS、SLURM、SGE等作业调度系统,本文介绍如何使用三种调度系统,通过命令行提交作业。
准备工作
创建集群用户。具体操作,请参见创建用户。
集群用户用于登录集群,进行编译软件、提交作业等操作,本文创建的用户示例如下:
用户名:testuser
用户组:sudo权限组
重要不推荐使用root用户提交任何作业,避免作业脚本中的误操作导致E-HPC集群数据遭受破坏。
在相应的目录下准备好作业数据文件和执行程序文件。
本文以以下路径作为示例:
$HOME/test.py # 作业执行程序 $HOME/test.data # 作业相关数据
作业执行命令如下:
test.py -i test.data
连接集群
选择以下一种方式连接集群。本文使用的用户名为testuser,连接集群后会默认登录到/home/testuser
。
通过客户端
该方式仅支持使用PBS调度器的集群。操作前,请确保您已下载安装E-HPC客户端,且已配置客户端所需环境。具体操作,请参见配置客户端所需环境。
打开并登录E-HPC客户端。
在客户端左侧导航栏,单击会话管理。
在会话管理页面的右上角,单击terminal,打开Terminal窗口。
通过控制台
登录弹性高性能计算控制台。
在顶部菜单栏左上角处,选择地域。
在左侧导航栏,单击集群。
在集群页面,找到目标集群,单击远程连接。
在远程连接页面,输入集群用户名、登录密码和端口,单击ssh连接。
提交作业
请根据集群的调度器类型,以及您准备好的作业文件,编写作业脚本,并提交作业。示例如下:
自动伸缩场景下,E-HPC不支持基于内存来扩缩容,建议您在提交作业时指定作业所需的vCPU数。
PBS
编写作业脚本,脚本文件命名为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
提交作业。
qsub jobscript.pbs
SLURM
编写作业脚本,脚本文件命名为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
提交作业。
sbatch jobscript.slurm
SGE
编写作业脚本,脚本文件命名为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数。
提交作业。
qsub -V jobscript.sh