#!/bin/bash # Submit all fusion experiments as individual 1-GPU SLURM jobs # SLURM scheduler will automatically place them on any available GPU PYTHON=python SCRIPT=${PULSE_ROOT}/experiments/train_exp1.py OUTDIR=${PULSE_ROOT}/results/exp1 LOGDIR=${OUTDIR}/slurm_logs mkdir -p $LOGDIR COMMON_ARGS="--model transformer --epochs 100 --batch_size 16 --lr 1e-3 --weight_decay 1e-4 --hidden_dim 128 --downsample 5 --patience 15 --seed 42 --output_dir $OUTDIR" FUSIONS=(weighted_late gated_late stacking product moe late attention) MODALITIES=("mocap,emg,eyetrack" "mocap,emg,eyetrack,imu,pressure") for fusion in "${FUSIONS[@]}"; do for mods in "${MODALITIES[@]}"; do mod_tag=$(echo $mods | tr ',' '-') job_name="f_${fusion}_${mod_tag}" sbatch \ -J "$job_name" \ -p gpuA800 \ --gres=gpu:1 \ -N 1 -n 1 \ --cpus-per-task=8 \ --mem=32G \ -t 3:00:00 \ -o "${LOGDIR}/${job_name}_%j.out" \ -e "${LOGDIR}/${job_name}_%j.err" \ --export=ALL \ --wrap="export PYTHONUNBUFFERED=1; cd ${PULSE_ROOT}; $PYTHON $SCRIPT --fusion $fusion --modalities $mods $COMMON_ARGS" echo "Submitted: $job_name" done done echo "All 14 fusion experiments submitted!"