#!/bin/bash # Parallel HD95/ASSD re-score for the heavy nnU-Net datasets (IDs 6-10), all folds, # seggen env. Datasets 1-5 are already scored correctly and are left untouched. # Each (dataset,fold) runs as its own process; 384 cores easily absorb 15 at once. set -u cd /home/wzhang/LSC/Code/NPJ source /opt/anaconda3/etc/profile.d/conda.sh conda activate seggen # Cap intra-op threads: MONAI/torch otherwise grab all 384 cores per process, so # 15 procs oversubscribe (load ~880) and thrash. 8 threads x 15 procs = ~120 << 384. export OMP_NUM_THREADS=8 MKL_NUM_THREADS=8 OPENBLAS_NUM_THREADS=8 NUMEXPR_NUM_THREADS=8 DATA_ROOT=/home/wzhang/LSC/Dataset/Segmentation/processed_unified RAW=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/raw PRED=/home/wzhang/LSC/Code/NPJ/nnunet_workspace/predTs LOGD=nnunet_workspace/eval_par_logs mkdir -p "$LOGD" for id in 6 7 8 9 10; do case $id in 6) ds=idridd_segmentation; proto=fold01;; 7) ds=acdc_png; proto=official;; 8) ds=pannuke_semantic; proto=fold01;; 9) ds=medsegdb_isic2018; proto=holdout;; 10) ds=medsegdb_kits19; proto=fold01;; esac for f in 0 1 2; do ( python framework/nnunet_eval.py --data_root "$DATA_ROOT" \ --dataset "$ds" --protocol "$proto" --raw "$RAW" \ --dataset_id "$id" --fold "$f" --pred_dir "$PRED/d${id}_f${f}" \ --arch nnunet --exp_name baselines > "$LOGD/d${id}_f${f}.log" 2>&1 echo "done d${id}_f${f}: $(tail -1 "$LOGD/d${id}_f${f}.log")" ) & done done wait echo PAR_EVAL_DONE