1

私は Slurm を初めて使用し、複数の実行可能ファイルを起動して並行して実行しようとしています (以下の例では、date コマンドのみです)。短い時間の遅延で区切られた、異なる時間に開始することを望みます。

「srun sleep 5s &」などの行を srun の間に追加するか、以下に示す「--begin」オプションを使用して、いくつかの試行を行いました。特に、「--begin」オプションは、「ノードが既に割り当てられているため、--begin は無視されます」と言って失敗します。

並列モジュールは、クラスターでは使用できないようです。

#!/bin/bash
#SBATCH --output=parallel_test_%j.out   # Standard output and error log
#SBATCH --time=06:00:00
#SBATCH --nodes=1   # number of nodes
#SBATCH --ntasks=6   
#SBATCH --mem-per-cpu=1024M   # memory per CPU core

srun="srun -n1 -N1 --exclusive"
# --exclusive     ensures srun uses distinct CPUs for each job step
# -N1 -n1         allocates a single core to each task


$srun date &
$srun --begin=now+3 date &
$srun --begin=now+6 date &
$srun --begin=now+9 date &
$srun --begin=now+12 date &
$srun --begin=now+15 date &
wait

私が得る出力は次のとおりです。

srun: error: --begin is ignored because nodes are already allocated.
srun: error: --begin is ignored because nodes are already allocated.
srun: error: --begin is ignored because nodes are already allocated.
srun: error: --begin is ignored because nodes are already allocated.
srun: error: --begin is ignored because nodes are already allocated.
Sun Jun 23 14:07:05 PDT 2019
Sun Jun 23 14:07:05 PDT 2019
Sun Jun 23 14:07:05 PDT 2019
Sun Jun 23 14:07:05 PDT 2019
Sun Jun 23 14:07:05 PDT 2019
Sun Jun 23 14:07:06 PDT 2019

私が取得したいのは、次の出力です。

Sun Jun 23 13:22:54 PDT 2019
Sun Jun 23 13:22:57 PDT 2019
Sun Jun 23 13:23:00 PDT 2019
Sun Jun 23 13:23:03 PDT 2019
Sun Jun 23 13:23:06 PDT 2019
Sun Jun 23 13:23:09 PDT 2019

ご協力ありがとうございました

4

1 に答える 1

0

この場合、はジョブの開始を延期するために使用され、サブミット スクリプトで実行されると--beginジョブがすでに開始されているため、役に立ちません。srun

次のように、要求された動作を取得できます。

$srun date &
sleep 3; $srun date &
sleep 3; $srun date &
sleep 3; $srun date &
sleep 3; $srun date &
sleep 3; $srun date &
wait

またはこのように

$srun date &
$srun bash -c "sleep 3 ; date" &
$srun bash -c "sleep 6 ; date" &
$srun bash -c "sleep 9 ; date" &
$srun bash -c "sleep 12 ; date" &
$srun bash -c "sleep 15 ; date" &
wait

それにかんする

並列モジュールがクラスターで利用できないようです

これは、自分でインストールできないという意味ではありません (この質問を参照してください)。Easybuildがクラスターにインストールされている場合は、さらに簡単になります。(そうでない場合は、自分でインストールすることもできます)その後、--delayオプションを使用できます。

parallel --delay 3 $srun date
于 2019-06-26T09:21:58.150 に答える