Using Abaqus

An MPI (multi-node) Abaqus implementation example is shown below:

#!/bin/bash #SBATCH -N 3 #SBATCH --exclusive #SBATCH --ntasks-per-node=1 #SBATCH -p debug -q wildfire -t 15 #SBATCH -o slurm.%j.out # STDOUT (%j = JobId) #SBATCH -e slurm.%j.err # STDERR (%j = JobId) #SBATCH --export=NONE ##SBATCH --mail-type=ALL # Send a notification when the job starts, stops, or fails ##SBATCH --mail-user=%u@asu.edu # send-to address module load abaqus/2018 intel-mpi/2017x abaqus_opts=( job=test_50x50x20_f7 input=../50x50x20_f7.inp user=../coupled_uel9.f mp_mode=mpi ) ############################################################## # DO NOT MODIFY BEYOND THIS UNLESS YOU KNOW WHAT YOU ARE DOING ############################################################## unset SLURM_GTIDS # dump the hosts to a text file HOSTS_FILE=slurm-hosts-${SLURM_JOBID}.out NPROC_PER_NODE=$(nproc) # # generate the mp_host_list environment variable # echo '[' > ${HOSTS_FILE} srun -c $NPROC_PER_NODE bash -c 'echo [\"$(hostname)\",$(nproc)],' >> ${HOSTS_FILE} echo ']' >> ${HOSTS_FILE} mapfile -t mp_host_list < ${HOSTS_FILE} mp_host_list=$(echo ${mp_host_list[@]}) TOTAL_CPUS=$( sed -e 's/\],//g' "${HOSTS_FILE}" \ | awk -F ',' '{s+=$NF} END{print s}' ) # # write the abaqus environment file # ABAQUS_ENV_FILE="abaqus_v6.env" cat > ${ABAQUS_ENV_FILE} << EOF import os os.environ['ABA_BATCH_OVERRIDE'] = '1' verbose=3 mp_host_list=${mp_host_list} mp_mpi_implementation=IMPI mp_mpirun_path={IMPI:'$(which mpirun)'} if 'SLURM_PROCID' in os.environ: del os.environ['SLURM_PROCID'] EOF cat $ABAQUS_ENV_FILE export TMPDIR="/scratch/$USER/abaqus-tmp" mkdir $TMPDIR export I_MPI_HYDRA_BOOTSTRAP=ssh abaqus "${abaqus_opts[@]}" cpus=$TOTAL_CPUS interactive