提交大量的作业,将使得作业的管理将变得困难,虽然可以用作业组作业序列进行批量管理,但是海量作业仍然对调度系统会造成一定压力,特别是分钟级或秒级的短作业在调度时会浪费大量的时间,因此可以根据作业情况将多个作业合并为一个作业提交。对于不同的作业可以用两种方法来进行合并:

多作业串行执行

  申请1个CPU Core,顺序执行每个串行作业,前一个运行完成后再运行下一个,可以将非常多的串行作业合并成一个。对于每个串行作业运行时间都很短且运行时间不一定相同的适用这种方式提交。

  4个串行作业串行执行合并为一个作业,提交到x5650队列,脚本方式为:

[yaoge123]$ cat job.lsf
#BSUB -q x5650
./a.out >& 1.out
./a.out >& 2.out
./a.out >& 3.out
./a.out >& 4.out

[yaoge123]$ bsub < job.lsf
Job <3366369> is submitted to queue <x5650>.

多作业并行执行

  申请N个CPU Cores,同时执行N个串行作业,N不可大于单节点CPU Cores的数量,每个串行作业运行时间需要相同,最后需要wait命令等待所有作业运行完毕返回。对于每个串行作业运行时间较长且运行时间都完全相同的适用这种方式提交。

  12个串行作业并行执行合并为一个作业,提交到x5650队列,脚本方式为:

[yaoge123]$ cat job.lsf
#BSUB -q x5650
#BSUB -n 12
( ./a.out >& 1.out )&
( ./a.out >& 2.out )&
( ./a.out >& 3.out )&
( ./a.out >& 4.out )&
( ./a.out >& 5.out )&
( ./a.out >& 6.out )&
( ./a.out >& 7.out )&
( ./a.out >& 8.out )&
( ./a.out >& 9.out )&
( ./a.out >& 10.out )&
( ./a.out >& 11.out )&
( ./a.out >& 12.out )
wait

[yaoge123]$ bsub < job.lsf
Job <3366370> is submitted to queue <x5650>.