我想将LSF 命令 bsub
的作业限制编程到我的 Perl 脚本中,该脚本在后台启动 LSF 作业。如果我有 2000 个工作,我希望在任何给定时间最多运行 20 个工作。我见过启动 20 个作业的脚本,然后等待它们全部完成,然后再启动另外 20 个。
问问题
1980 次
1 回答
12
几个现有的 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;
}
在 Forks::Super 中
use Forks::Super MAX_PROC => 20;
foreach $job (@jobsToRun) {
fork { cmd => "bsub -K $job" };
}
于 2010-09-23T18:09:31.883 回答