提交交互式任务

交互式任务是一种特殊的队列任务,在该模式下,用户可以直接登录到计算节点,此后 所有的操作都在这个节点上进行。这个功能主要是方便用户在服务器上调试程序, 以便能够实时看到程序的输出。

我们需要使用 salloc 命令来分配交互式任务所需的资源,它的语法为

$ salloc [申请资源]

其中,用户需要以选项的方式指定申请的资源,这些选项与 SLURM 脚本中的选项基本 相同。常用选项为:

-N <节点数量>
--cpus-per-task=<单进程 CPU 核心数>
--gres=gpu:<单节点 GPU 卡数>
-t <最长运行时间>
-p <使用的分区>
--qos=<使用的 QoS>

例如,可以使用如下方式申请资源:

$ salloc -N 1 --cpus-per-task=4 -t 5:00 -p cpu

执行成功后,SLURM 会给你一个新的 Shell,注意此时用户所在节点仍为主节点,需要 使用 ssh 命令手动切换到计算节点。

[liuhy@admin playground]$ salloc -N 1 --cpus-per-task=4 -t 5:00 -p cpu
salloc: Granted job allocation 39
salloc: Waiting for resource configuration
salloc: Nodes comput1 are ready for job
[liuhy@admin playground]$ ssh comput1     # 这就是 salloc 分配的新 shell
Last login: Fri Jan 19 10:20:32 2018 from admin
[liuhy@comput1 ~]$

如上所示,执行 salloc 后,SLURM 会自动分配作业号并通知哪个节点是可用的。成功 获取资源后,你会获得一个新的 Shell(Line 5),此时用户可以直接切换到目标节点 comput1 执行运算任务。

交互式计算使用完毕后,先使用 exit 退出节点,再执行 exit 退出 SLURM 分配 的 Shell,可结束这次交互式任务。SLURM 会提示你交互式任务的资源已经被释放。

[liuhy@comput1 ~]$ exit                 # 这一步是退出 comput1
logout
Connection to comput1 closed.
[liuhy@admin playground]$ exit          # 这一步是退出 salloc 分配的 shell
exit
salloc: Relinquishing job allocation 39 # 退出的同时也释放了资源

用户会重新回到 admin 下进行操作。

小提示

如果在执行交互式任务时超出了申请的最大运行时间,SLURM 会在超时 30 秒后强制 回收已经申请的资源。

[liuhy@comput1 ~]$ salloc: Job 40 has exceeded its time limit and its allocation has been revoked.

启用 X11

交互式模式下可以启动 X11 Forwarding,这为用户的调试提供了更大的方便。为此, 首先确保你在登录 admin 的时候开启了 X11 Forwarding。然后在切换到计算节点的时候 指定 -Y 选项即可。备注:SLURM 强制使用受信任的 X11 转发,因此 -X 选项不适用

$ ssh comput1 -Y

其中 comput1 需要替换成实际被分配的节点名。进入交互式计算模式后,可以试着 打开一些带有图形界面的程序进行测试,例如 firefox 或者 MATLAB 等。

以上方法适用于 Linux 系统。Mac 和 Windows 系统的使用方法还在编写中。

注意事项

  • 如果 salloc 命令无响应,可能是目前所剩计算资源小于申请的资源,需要检查 你的填写参数或等计算任务少的时候再试。

  • 原则上 admin 节点只能进行登录,修改文件,编译程序等任务。严禁在 admin 节点上 直接运行需要大量运算的程序。管理员有权在不经过用户同意的情况下强行中止长时间运 行在 admin 的大型程序(占用较多 CPU 或者内存的程序)。