StarCCM+
Specifying nodes and processes per node on Slurm systems
This is in a job which had “nodes=3” and “ntasks-per-node=2”:
[brownm12@ca028 ~]$ STARNL=$(srun hostname | sort -u | awk -v NT=$SLURM_NTASKS_PER_NODE '{printf $1":"NT","}' | sed s/.$//)
[brownm12@ca028 ~]$ echo $STARNL
ca028:2,ca099:2,ca100:2
Breakdown:
STARNL=$( ... )set bash variable STARNL to the output of the command enclosed in parentheses:cmd1 | cmd2 | cmd3send output ofcmd1as input tocmd2and the resulting output of that tocmd3(pipes)srun hostnamerunSLURM_NTASKSinstances ofhostnamecommand, one on each task (process) allocated to the jobsort -usort the input and remove duplicate linesawk -v NT=$SLURM_NTASKS_PER_NODE '{ ... }'run an awk script on the input, additionaly set theawkvariableNTto a valueprintf $1":"NT","awk script to print the first column of each line of input, followed by a colon, the value stored inNT, and then a commased s/.$//remove the last character of the input line usingsed’s “swap” capability
Example usage in a script
So in your job script, prior to the starccm+ command, you would have:
STARNL=$(srun hostname | sort -u | awk -v NT=$SLURM_NTASKS_PER_NODE '{printf $1":"NT","}' | sed s/.$//)
echo "Using nodelist: `echo $STARNL`"
So an example job script would have:
#!/bin/bash
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=6
module load STAR-CCM+
# Get hostlist and number of processes for each host and save in a variable:
STARNL=$(srun hostname | sort -u | awk -v NT=$SLURM_NTASKS_PER_NODE '{printf $1":"NT","}' | sed s/.$//)
# Print value of the variable for diagnostics
echo "Using nodelist: `echo $STARNL`"
starccm+ <your options and settings> -np $SLURM_NTASKS -on $STARNL <simfile>
Do not user parallel i/o on ARC clusters
We have found that using the StarCCM+ option -pio which enables parallel input/output for reading simulation files and writing output causes extreme performance degredation for some jobs. This option is intended to be used in conjunction with certain parallel files systems which are not available on ARC systems and it seems that it can create severe contention. For this reason, we suggest that -pio should not be used on ARC systems.