Changes between Version 5 and Version 6 of UCERF3 Figure Reproducibility


Ignore:
Timestamp:
Oct 31, 2014, 2:22:50 PM (10 years ago)
Author:
Kevin Milner
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • UCERF3 Figure Reproducibility

    v5 v6  
    5454= UCERF3-TD Report Supplements: =
    5555Go through contents of http://opensha.usc.edu/ftp/TimeDependentPreliminary/ with Kevin and Peter to figure out where everything ultimately came from.
     56
     57= Running "Compound Plots" =
     58Many UCERF3 plots require calculations from the entire model, including all logic tree branch choices. The OpenSHA class scratch.UCERF3.analysis.CompoundFSSPlots can be used to generate plots across all of these branches. Practically speaking, high performance computing is needed to process the entire model in parallel. All "Compound" plots in the UCERF3 reports were computing using high performance computing resources and the class scratch.UCERF3.analysis.MPJDistributedCompoundFSSPlots which uses the FastMPJ MPI for Java library to handle intra-node communication. An example script for running MPJDistribtedCompoundFSSPlots is given below, which will recreate the Fault System Solution MFD plots. You will need a compound fault system solution file as input, for example: http://opensha.usc.edu/ftp/kmilner/ucerf3/2013_05_10-ucerf3p3-production-10runs/2013_05_10-ucerf3p3-production-10runs_COMPOUND_SOL.zip
     59
     60This script is used to run MPJDistribtedCompoundFSSPlots on the Stampede supercomputer at TACC:
     61
     62{{{
     63login3.stampede(6)$ cat plot_gen.pbs
     64#!/bin/bash
     65
     66# this is the wall clock time
     67#SBATCH -t 00:200:00
     68# this is the number of CPUs - number of nodes is this number divided by 16
     69#SBATCH -n 1280
     70# queue we are submitting to
     71#SBATCH -p normal
     72
     73# this is the directory where we are running
     74RUN_NAME="2013_05_10-ucerf3p3-production-10runs"
     75COMPOUND_DIR="/work/00950/kevinm/ucerf3/inversion/compound_plots/${RUN_NAME}"
     76# this is the path to the compound solution file
     77INV_DIR="/work/00950/kevinm/ucerf3/inversion/${RUN_NAME}"
     78COMPOUND_FILE="${INV_DIR}/${RUN_NAME}_COMPOUND_SOL.zip"
     79# this is the set of plots that we want to generate
     80PLOTS="--plot-mfds"
     81# the number of threads per compute node
     82THREADS="4"
     83# the minimum number of jobs sent to a given node at a given time, typically this can be equal to the number of threads
     84MIN_DISPATCH="4"
     85# the amount of memory allocated to the JVM, should be as much as possible
     86MEMORY="25G"
     87
     88# this gets the node list
     89PBS_NODEFILE="/tmp/${USER}-hostfile-${SLURM_JOBID}"
     90echo "creating PBS_NODEFILE: $PBS_NODEFILE"
     91scontrol show hostnames $SLURM_NODELIST > $PBS_NODEFILE
     92
     93# paths to FastMPJ
     94export FMPJ_HOME=/home1/00950/kevinm/FastMPJ
     95export PATH=$PATH:$FMPJ_HOME/bin
     96
     97# this converts the node list to a format which FastMPJ can read
     98if [[ -e $PBS_NODEFILE ]]; then
     99  #count the number of processors assigned by PBS
     100  NP=`wc -l < $PBS_NODEFILE`
     101  echo "Running on $NP processors: "`cat $PBS_NODEFILE`
     102else
     103  echo "This script must be submitted to PBS with 'qsub -l nodes=X'"
     104  exit 1
     105fi
     106
     107# make sure there's at least one node
     108if [[ $NP -le 0 ]]; then
     109  echo "invalid NP: $NP"
     110  exit 1
     111fi
     112
     113date
     114echo "RUNNING FMPJ"
     115# this runs MPJDistributedCompoundFSSPlots in parallel with the previously selected arguments
     116fmpjrun -machinefile $PBS_NODEFILE -np $NP -dev niodev -Djava.library.path=$FMPJ_HOME/lib -Djava.awt.headless=true -Xmx${MEMORY} -cp ${COMPOUND_DIR}/OpenSHA_complete.jar:${COMPOUND_DIR}/parallelcolt-0.9.4.jar:${COMPOUND_DIR}/commons-cli-1.2.jar:${COMPOUND_DIR}/csparsej.jar -class scratch.UCERF3.analysis.MPJDistributedCompoundFSSPlots --threads ${THREADS} --min-dispatch ${MIN_DISPATCH} $PLOTS ${COMPOUND_FILE} ${COMPOUND_DIR}
     117ret=$?
     118
     119date
     120echo "DONE with process 0. EXIT CODE: $ret"
     121
     122exit $ret
     123}}}