LSF

使用图形界面快速开始

使用命令 chn_bsub 不带任何参数,就可以看到一个图形界面1。 按照提示,鼠标点选对应按钮,即可提交任务。这可以满足绝大多数的需求。

以下用一些例子来进一步介绍如何使用 LSF。 更多细节请参考官方文档。 例子中一些选项是可选的、一些是必写的,会详细说明。

提交任务

使用 bsub 命令提交任务2。提交一个 VASP(CPU)任务的例子:

bsub -n 28 -J 'my-great-job' -q normal_1day -o 'output.txt' -R 'span[hosts=1]' chn_vasp.sh 640_std    
  • -n 28:指定使用多少 CPU 核3,必写。每个队列中,单个节点有多少核,可以参考服务器配置

  • -J 'my-great-job' 指定任务的名字,可以不写。

  • -q normal_1day 指定队列的名字,不写时使用默认队列。

  • -o 'output.txt' 指定输出的文件名,可以不写。

  • -R 'xxxx' 用于对执行任务的节点施加一些限制,可以不写。可以施加的限制包括:

    • span[hosts=1]:强制所有任务分配到一个节点上(即不跨节点运行),推荐在大多情况下使用。
    • select[hname!=nxt064 && hname!=nxt009]:在分配任务时排除一些节点。如果一些节点有问题,可以使用这个选项。
    • select[hname=nxt064]:只在某个节点上运行。
    • rusage[mem=32GB]:只在内存大于等于 32 GB 的节点上运行。
    • span[ptile=28]:在每个节点上分配 28 个核。 这个选项可以用来控制跨节点运行,例如要使用 8 个节点,每个节点 28 个核,写为 -n 226 -R 'span[ptile=28]'

    多种限制可以同时使用,例如 -R 'span[hosts=1] select[hname!=nxt064 && hname!=nxt009]'

  • chn_vasp.sh 640_std 要运行的程序。

要把其它程序提交到队列里,也是类似的写法。请自行举一反三。

查看节点状态

要查看各个节点目前被占用了多少 CPU 核、还有多少空闲的 CPU 核:

bhosts

MAX 列即为节点的 CPU 核数,NJOBSRUN 列即为被占用的 CPU 核数。 被标记为 ok 的节点是还有空闲核的节点,被标记为 closed 的节点是被占满了。

查看任务状态

列出任务:

# 列出正在等待和正在运行的任务:
bjobs -w
# 要列出正在等待和正在运行,以及最近一个小时内完成的任务:
bjobs -w -a
# 要列出所有用户的任务:
bjobs -u all 

要显示还没有完成的任务的详细信息,或刚刚完成的任务的详细信息:

bjobs -l 114514

要打印尚未完成的任务的输出:

# 按照任务 id
bpeek 114514
# 按任务名
bpeek -J 'my-great-job'
# 持续监视输出
bpeek -f 114514

调整和取消任务

取消一个任务:

bkill 114514

调整任务的优先级:

怕被滥用,我还是不写了,好奇的自己去看官方文档吧。


  1. 其实这个不能叫“图形用户界面(gui)”,应该叫“文本用户界面(tui)”。但后者会让不熟悉的人误解,所以这里还是叫“图形界面”。 ↩︎

  2. 平时使用的 bsub 其实是原本的 bsub 的一个包装,为的是追踪每个任务是由谁(按照 SSH Agent 区分)投递的, 说白了就是为了给多人共用一个账户还要区分不同用户这种奇怪设计擦屁股而不得不做的。 比起原本的 bsub,这个包装只支持较少的选项,但应该足够平时使用了。这里列出的选项它都支持。如果你的确需要用到它不支持的选项,可以联系我添加。 ↩︎

  3. 你可能注意到了,LSF 在这里的设置比 Slurm 简洁许多。实际上就像 Slurm 那样,这里指定的仅仅是 task 的数量,不一定等于 CPU 的数量。 因为在我接手维护服务器之前,所有的设置都是仅使用 MPI 并行(也就是设置 OMP_NUM_THREADS=1),我也就继续这样做了; 后来在别的服务器上才发现两个并行都使用时效率更高,但也还没有改超算上的处理方式。 ↩︎