Shell script to run solver for determining the phase transition boundary on the cluster
This commit is contained in:
parent
838a752180
commit
25e8e944ac
59
Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh
Normal file
59
Dipolar-Gas-Simulator/submit_jobs_for_phase_boundary.sh
Normal file
@ -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
|
Loading…
Reference in New Issue
Block a user