From 25e8e944acea8068c1b61b9d26f336d56094a20b Mon Sep 17 00:00:00 2001 From: Karthik Chandrashekara Date: Tue, 6 May 2025 19:42:41 +0200 Subject: [PATCH] Shell script to run solver for determining the phase transition boundary on the cluster --- .../submit_jobs_for_phase_boundary.sh | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh diff --git a/Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh b/Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh new file mode 100644 index 0000000..df60bde --- /dev/null +++ b/Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh @@ -0,0 +1,59 @@ +# ----------- Define scan ranges ----------- + +# Use space-separated floating-point/integer values +SCATTERING_LENGTH_RANGE="[79.0 80.0 81.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0]" +POLAR_ANGLE_RANGE="[20.0]" +AZIMUTHAL_ANGLE_RANGE="[0.0]" +NUM_ATOMS_LIST="[50000 140000 220000 310000 400000 480000 570000 660000 740000 830000 920000 1000000]" +CHUNK_SIZE=4 + +# ----------- Count total combinations for SLURM array ----------- + +# Strip brackets for Bash processing (for counting only) +scatteringLengths=($(echo "$SCATTERING_LENGTH_RANGE" | tr -d '[],')) +polarAngles=($(echo "$POLAR_ANGLE_RANGE" | tr -d '[],')) +azimuthalAngles=($(echo "$AZIMUTHAL_ANGLE_RANGE" | tr -d '[],')) +numAtoms=($(echo "$NUM_ATOMS_LIST" | tr -d '[],')) + +# Ensure SCATTERING_LENGTH_RANGE and NUM_ATOMS_LIST have the same number of elements +if [ ${#scatteringLengths[@]} -ne ${#numAtoms[@]} ]; then + echo "Error: SCATTERING_LENGTH_RANGE and NUM_ATOMS_LIST must have the same number of elements." + exit 1 +fi + +# Calculate the total number of jobs +totalJobs=$((${#scatteringLengths[@]} * ${#polarAngles[@]} * ${#azimuthalAngles[@]})) +numArrayJobs=$(( (totalJobs + CHUNK_SIZE - 1) / CHUNK_SIZE )) + +echo "Total number of jobs: $totalJobs" +echo "Number of SLURM array jobs: $numArrayJobs" +echo "Running SLURM job array from 1 to ${numArrayJobs}" + +# ----------- Submit SLURM array job ----------- + +sbatch --export=SCATTERING_LENGTH_RANGE="$SCATTERING_LENGTH_RANGE",POLAR_ANGLE_RANGE="$POLAR_ANGLE_RANGE",AZIMUTHAL_ANGLE_RANGE="$AZIMUTHAL_ANGLE_RANGE",NUM_ATOMS_LIST="$NUM_ATOMS_LIST",CHUNK_SIZE=$CHUNK_SIZE << EOF +#!/bin/bash +#SBATCH --partition=gpu-single +#SBATCH --nodes=1 +#SBATCH --ntasks-per-node=1 +#SBATCH --cpus-per-task=8 +#SBATCH --gres=gpu:1 +#SBATCH --mem=16G +#SBATCH --time=04:00:00 +#SBATCH --job-name=simulation +#SBATCH --error=simulation_%A_%a.err +#SBATCH --output=simulation_%A_%a.out +#SBATCH --array=1-${numArrayJobs} + +# Load MATLAB +module load math/matlab/R2023a + +echo "Initiating Job..." + +# Run MATLAB wrapper with this batch index +matlab -nodisplay -nosplash -r "Scripts.run_hybrid_worker_wrapper(\$SLURM_ARRAY_TASK_ID)" + +echo "Job terminated successfully" + +exit +EOF \ No newline at end of file