#!/bin/bash #SBATCH --job-name=EHD_v2_cnn #SBATCH --nodes=5 #SBATCH --exclusive #SBATCH --time=06:00:00 #SBATCH --output=/home/tanpv/Progs/claude/QG_1/logs/cnn_ann_%j.out #SBATCH --error=/home/tanpv/Progs/claude/QG_1/logs/cnn_ann_%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_cnn YEARLIST=$(seq 2003 2022) # 20 LOYO folds NFOLD=$(echo $YEARLIST | wc -w) # Bound each task's math/torch libs to its 5 cores so 4 tasks/node don't oversubscribe. export OMP_NUM_THREADS=5 MKL_NUM_THREADS=5 OPENBLAS_NUM_THREADS=5 echo "=== v2 CNN+ANN LOYO: $NFOLD folds | 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]}; \ export OMP_NUM_THREADS=5; \ echo \"[proc \$SLURM_PROCID @ \$(hostname)] fold \$YR start \$(date +%T)\"; \ $PY scripts/12b_run_cnn_ann.py --folds \$YR; \ echo \"[proc \$SLURM_PROCID] fold \$YR done \$(date +%T)\"" echo "=== CNN+ANN folds returned; pred files: $(ls outputs/loyo_pred_v2_cnn/pred_v2cnn_*.npz 2>/dev/null | wc -l)/$NFOLD ===" echo "=== regenerating ensemble + maps + report (now including cnn, ann_torch) ===" $PY scripts/14_ensemble_v2.py $PY scripts/15_skill_maps_v2.py $PY scripts/16_report_v2_html.py echo "=== done $(date +%T) ==="