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