This commit is contained in:
Karthik 2025-05-02 15:13:19 +02:00
commit 8531865111

View File

@ -1,30 +1,31 @@
# Define scan ranges (encoded as strings) # ----------- Define scan ranges -----------
SCATTERING_LENGTH_RANGE="85"
POLAR_ANGLE_RANGE="0" # Use space-separated or comma-separated floats/integers (can be bracketed)
AZIMUTHAL_ANGLE_RANGE="0" SCATTERING_LENGTH_RANGE="[85.0]"
POLAR_ANGLE_RANGE="[0]"
AZIMUTHAL_ANGLE_RANGE="[0.0]"
NUM_ATOMS_LIST="[90000]" NUM_ATOMS_LIST="[90000]"
CHUNK_SIZE=1 CHUNK_SIZE=1
# Convert parameter ranges into arrays # ----------- Count total combinations for SLURM array -----------
scatteringLengths=($(eval echo {$SCATTERING_LENGTH_RANGE}))
polarAngles=($(eval echo {$POLAR_ANGLE_RANGE})) # Strip brackets for Bash processing (for counting only)
azimuthalAngles=($(eval echo {$AZIMUTHAL_ANGLE_RANGE})) scatteringLengths=($(echo "$SCATTERING_LENGTH_RANGE" | tr -d '[],'))
numAtoms=($(eval echo {$NUM_ATOMS_LIST})) polarAngles=($(echo "$POLAR_ANGLE_RANGE" | tr -d '[],'))
azimuthalAngles=($(echo "$AZIMUTHAL_ANGLE_RANGE" | tr -d '[],'))
numAtoms=($(echo "$NUM_ATOMS_LIST" | tr -d '[],'))
# Calculate the total number of jobs (combinations of parameters)
totalJobs=$((${#scatteringLengths[@]} * ${#polarAngles[@]} * ${#azimuthalAngles[@]} * ${#numAtoms[@]})) totalJobs=$((${#scatteringLengths[@]} * ${#polarAngles[@]} * ${#azimuthalAngles[@]} * ${#numAtoms[@]}))
# Calculate the number of array jobs based on total jobs and chunk size
numArrayJobs=$(( (totalJobs + CHUNK_SIZE - 1) / CHUNK_SIZE )) numArrayJobs=$(( (totalJobs + CHUNK_SIZE - 1) / CHUNK_SIZE ))
# Print the total number of jobs and array jobs for debugging
echo "Total number of jobs: $totalJobs" echo "Total number of jobs: $totalJobs"
echo "Number of SLURM array jobs: $numArrayJobs" echo "Number of SLURM array jobs: $numArrayJobs"
echo "Running SLURM job array from 1 to ${numArrayJobs}"
# ----------- Submit SLURM array job -----------
# Create the SLURM job submission command
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 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 #!/bin/bash
########### Begin SLURM header ###########
#SBATCH --partition=gpu-single #SBATCH --partition=gpu-single
#SBATCH --nodes=1 #SBATCH --nodes=1
#SBATCH --ntasks-per-node=1 #SBATCH --ntasks-per-node=1
@ -36,7 +37,6 @@ sbatch --export=SCATTERING_LENGTH_RANGE="$SCATTERING_LENGTH_RANGE",POLAR_ANGLE_R
#SBATCH --error=simulation_%A_%a.err #SBATCH --error=simulation_%A_%a.err
#SBATCH --output=simulation_%A_%a.out #SBATCH --output=simulation_%A_%a.out
#SBATCH --array=1-${numArrayJobs} #SBATCH --array=1-${numArrayJobs}
########### End SLURM header ##########
echo "Working Directory: $PWD" echo "Working Directory: $PWD"
echo "Running on host $HOSTNAME" echo "Running on host $HOSTNAME"
@ -44,22 +44,18 @@ echo "Job id: $SLURM_JOB_ID"
echo "Job name: $SLURM_JOB_NAME" echo "Job name: $SLURM_JOB_NAME"
echo "Number of nodes allocated to job: $SLURM_JOB_NUM_NODES" echo "Number of nodes allocated to job: $SLURM_JOB_NUM_NODES"
echo "Number of GPUs allocated to job: $SLURM_GPUS" echo "Number of GPUs allocated to job: $SLURM_GPUS"
echo "SLURM task index: \$SLURM_ARRAY_TASK_ID"
# Load MATLAB
# Load module
module load math/matlab/R2023a module load math/matlab/R2023a
echo Directory is `pwd` echo Directory is pwd
echo "Initiating Job..." echo "Initiating Job..."
# Inside SLURM job array # Run MATLAB wrapper with this batch index
echo "Running SLURM job array from 1 to ${numArrayJobs}"
# Start MATLAB job with the batch index
matlab -nodisplay -nosplash -r "Scripts.run_hybrid_worker_wrapper(\$SLURM_ARRAY_TASK_ID)" matlab -nodisplay -nosplash -r "Scripts.run_hybrid_worker_wrapper(\$SLURM_ARRAY_TASK_ID)"
# notice for tests
echo "Job terminated successfully" echo "Job terminated successfully"
exit exit
EOF EOF