7

LSF コマンド bsubのジョブ制限を、内部で LSF ジョブを起動する Perl スクリプトにプログラムしたいと考えています。2000 個のジョブがある場合、常に最大 20 個のジョブを実行したいと考えています。20 個のジョブを起動し、すべてのジョブが終了するのを待ってから別の 20 個のジョブを起動するスクリプトを見たことがあります。

4

1 に答える 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 に答える