この並列bashスクリプトをどのように効率的に作成できますか?

この並列bashスクリプトをどのように効率的に作成できますか?

bashで並列に実行するafniコマンドラインツールに関連する単純なスクリプトがありますが、ディスクI / O集約的でサーバーの速度が遅くなります(96コアのうち2つのみを使用3)。一度に走ります。速度を遅くしたり、iowaitを増やすことなく一度に実行できる最大タスクは2つのタスクです。あまりにも多くのファイルを書くことに関連しているようですが、まだ解決策が見つかりませんでした。

#!/bin/bash 

task() {
x=$1
SUB_stats="path/to/subject/data/"$x"_cond3.feat/stats/"

cd $SUB_stats

3dcalc -prefix precentral_top_N_voxels_b -a Precentral_b+orig -b T_top_N_voxels_precentral+orig -expr 'a*b'

3dcalc -prefix occipital_top_N_voxels_b -a Occipital_b+orig -b T_top_N_voxels_occipital+orig -expr 'a*b'

3dcalc -prefix temporal_top_N_voxels_b -a Temporal_b+orig -b T_top_N_voxels_temporal+orig -expr 'a*b'


3dmaskave -quiet -sigma precentral_top_N_voxels_b+orig[0..390] > avgroi_precentral_subbrik_topvoxels.txt

3dmaskave -quiet -sigma occipital_top_N_voxels_b+orig[0..390] > avgroi_occipital_subbrik_topvoxels.txt

3dmaskave -quiet -sigma temporal_top_N_voxels_b+orig[0..390] > avgroi_temporal_subbrik_topvoxels.txt

} 

export -f task
cat young_fsf.txt | parallel --nice 15 --progress --eta -j 2 task

ベストアンサー1

おすすめ記事