for ループに対する並列ジョブの送信

for ループに対する並列ジョブの送信

ループを作成しforて並列化し、&タスクを一度に実行できるようにしきい値を制限しました。3以下は私のスクリプトです。私は命令で保存し32 cores256 GB覚えていますBSUBsample_pipeループ内で実行するにはコアとメモリが必要です。for32256 GB

一部の操作でメモリエラーエラーが発生します。32コアのみを保持し、タスクを一度だけ実行しよ256 GBうとしているようですが、これによって一部のタスクではメモリエラーエラーが発生する可能性があります。3

3私の質問は、すべてのタスクが同じ数のコアとメモリを使用するように並列化する方法です。

コマンドを使用して送信します。bsub < example.sh

#!/bin/bash
#BSUB -J cnt_job            # LSF job name
#BSUB -o cnt_job.%J.out     # Name of the job output file
#BSUB -e cnt_job.%J.error   # Name of the job error file
#BSUB -n 32                 # 32 cores
#BSUB -M 262144             # 256 GB
#BSUB -R "span[hosts=1] rusage [mem=262144]"

n=0
maxjobs=3
for sample in $main ; do
     for run in $nested ; do
             sample_pipe count --id="$run_name" \
             --localcores=32 \
             --localmem=256 &
     done
     cd ..
     # limit jobs
    if (( $(($((++n)) % $maxjobs)) == 0 )) ; then
        wait # wait until all have finished
        echo $n wait
    fi
done

ベストアンサー1

おすすめ記事