我想将LSF command bsub
的作业限制编入我的Perl脚本中,该脚本会启动LSF作业。如果我有2000个工作岗位,我想在任何时候最多运行20个工作岗位。我已经看过脚本可以启动20个作业,然后等待它们全部完成再启动另外20个作业。
答案 0 :(得分:11)
现有的几个Perl模块,包括Parallel::ForkManager
和Forks::Super
(我是作者)都提供此功能。
还有一个LSF::JobManager
模块我不知道其他任何事情。
<小时/>
Parallel :: ForkManager骨架
use Parallel::ForkManager;
$pm = new Parallel::ForkManager(20);
foreach $job (@jobsToRun) {
$pm->start and next;
system("bsub -K $job"); # bsub -K job to wait until job finishes, right?
$pm->finish;
}
<小时/>
在福克斯::超级
use Forks::Super MAX_PROC => 20;
foreach $job (@jobsToRun) {
fork { cmd => "bsub -K $job" };
}
<小时/>