LSF コマンド bsub
のジョブ制限を、内部で LSF ジョブを起動する Perl スクリプトにプログラムしたいと考えています。2000 個のジョブがある場合、常に最大 20 個のジョブを実行したいと考えています。20 個のジョブを起動し、すべてのジョブが終了するのを待ってから別の 20 個のジョブを起動するスクリプトを見たことがあります。
質問する
1980 次
1 に答える
12
Parallel::ForkManager
およびForks::Super
(私はその作成者です) を含むいくつかの既存の Perl モジュールは、この機能を提供します。
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 に答える