#!/bin/bash #SBATCH --job-name=EHD_v2_loyo #SBATCH --nodes=5 #SBATCH --exclusive #SBATCH --time=06:00:00 #SBATCH --output=/home/tanpv/Progs/claude/QG_1/logs/loyo_v2_%j.out #SBATCH --error=/home/tanpv/Progs/claude/QG_1/logs/loyo_v2_%j.err set -euo pipefail ROOT=/home/tanpv/Progs/claude/QG_1 PY=/home/tanpv/.conda/envs/ehd/bin/python # torch/sklearn need the conda libstdc++ ahead of the system one (no CXXABI_1.3.9 in /lib64) export LD_LIBRARY_PATH=/home/tanpv/.conda/envs/ehd/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} cd "$ROOT" mkdir -p logs outputs/loyo_pred_v2 CUTOFFS=${CUTOFFS:-"1.0 0.90 0.99"} CAP=${CAP:-200000} YEARLIST=$(seq 2003 2022) # 20 LOYO folds NFOLD=$(echo $YEARLIST | wc -w) # Each fold is one srun task on 5 cores; 4 tasks per node x 5 nodes = 20 folds at once. # Bound each task's math libs to its 5 cores so tasks don't oversubscribe the node. export OMP_NUM_THREADS=5 MKL_NUM_THREADS=5 OPENBLAS_NUM_THREADS=5 echo "=== v2 LOYO: $NFOLD folds | cutoffs=[$CUTOFFS] cap=$CAP | 5 nodes x 4 tasks x 5 cpus ===" srun --nodes=5 --ntasks=$NFOLD --ntasks-per-node=4 --cpus-per-task=5 \ --kill-on-bad-exit=1 bash -c \ "YEARS=($YEARLIST); YR=\${YEARS[\$SLURM_PROCID]}; \ echo \"[proc \$SLURM_PROCID @ \$(hostname)] fold \$YR start \$(date +%T)\"; \ $PY scripts/12_run_loyo_v2.py --folds \$YR --cutoffs $CUTOFFS --train-cap $CAP; \ echo \"[proc \$SLURM_PROCID] fold \$YR done \$(date +%T)\"" echo "=== all folds returned; pred files: $(ls outputs/loyo_pred_v2/pred_v2_*.npz 2>/dev/null | wc -l)/$NFOLD ===" echo "=== running stage 13 verification on the pooled dataset ===" $PY scripts/13_verify_v2.py echo "=== done $(date +%T) ==="