Skip to content

Commit

Permalink
Add actual bozzle and support scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
MTCam committed Nov 16, 2021
1 parent 422308c commit 410e78c
Show file tree
Hide file tree
Showing 14 changed files with 1,157 additions and 0 deletions.
843 changes: 843 additions & 0 deletions bozzle.py

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions scripts/create_db_summary.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#!/bin/bash

RUN_LOG_FILE=${1}
SUMMARY_FILE_NAME=${2}

rm -f ${SUMMARY_FILE_NAME}
runalyzer-gather ${SUMMARY_FILE_NAME} ${RUN_LOG_FILE}
11 changes: 11 additions & 0 deletions scripts/eager_weak_bsub.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash --login

#BSUB -nnodes 32
#BSUB -G uiuc
#BSUB -W 120
#BSUB -J bozzle_eager_weak
#BSUB -q pbatch
#BSUB -o bozzle-eager-weak.out

source /p/gpfs1/mtcampbe/CEESD/AutomatedTesting/MIRGE-Timing/hand-timing/emirge/config/activate_env.sh
./run_eager_weak.sh
15 changes: 15 additions & 0 deletions scripts/extract_run_data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash

RAWFILE_ROOT="${1}"
RAWFILE_NAME="${RAWFILE_ROOT}.sqlite"
SUMMARY_FILE_NAME="${RAWFILE_ROOT}.summary.sqlite"
runalyzer-gather ${SUMMARY_FILE_NAME} ${RAWFILE_NAME}
STARTUP_TIME=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(q("select $t_init.max").fetchall()[0][0])' | grep -v INFO)
FIRST_STEP=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[0:1]))' | grep -v INFO)
FIRST_10_STEPS=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[0:10]))' | grep -v INFO)
SECOND_10_STEPS=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[10:19]))' | grep -v INFO)
printf "==== ${rawfile_name} -> ${SUMMARY_FILE_NAME} ====\n"
printf "STARTUP: ${STARTUP_TIME}\n"
printf "FIRST_STEP: ${FIRST_STEP}\n"
printf "2nd 9 STEPS: ${SECOND_10_STEPS}\n"

11 changes: 11 additions & 0 deletions scripts/extract_timing_data.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash

SUMMARY_FILE_NAME="${1}"
STARTUP_TIME=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(q("select $t_init.max").fetchall()[0][0])' | grep -v INFO)
FIRST_STEP=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[0:1]))' | grep -v INFO)
MIDDLE_8_STEPS=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[2:9]))' | grep -v INFO)
printf "==== ${rawfile_name} -> ${SUMMARY_FILE_NAME} ====\n"
printf "STARTUP: ${STARTUP_TIME}\n"
printf "FIRST_STEP: ${FIRST_STEP}\n"
printf "MIDDLE 8 STEPS: ${MIDDLE_8_STEPS}\n"

17 changes: 17 additions & 0 deletions scripts/generate_input_yaml.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

order=${1}
scale=${2}
filename=${3}
cat << EOF > ${filename}
nviz: 100
nrestart: 100
current_dt: 1e-10
t_final: 1.1e-9
alpha_sc: 0.5
s0_sc: -5.0
kappa_sc: 0.5
logDependent: 0
order: ${order}
wscale: ${scale}
EOF
21 changes: 21 additions & 0 deletions scripts/generate_yaml_run_file.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#!/bin/bash

SUMMARY_FILE_NAME=${1}
YAML_RUN_FILE=${2}
ORDER=${3}
SCALE=${4}
rm -f ${YAML_RUN_FILE}
TIMING_DATE=$(date "+%Y-%m-%d %H:%M")
TIME_SINCE_EPOCH=$(date +%s)

# --- Pull the timings out of the sqlite files generated by logging
STARTUP_TIME=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(q("select $t_init.max").fetchall()[0][0])' | grep -v INFO)
FIRST_STEP=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[0:1]))' | grep -v INFO)
MIDDLE_8_STEPS=$(runalyzer -m ${SUMMARY_FILE_NAME} -c 'print(sum(p[0] for p in q("select $t_step.max").fetchall()[2:10]))' | grep -v INFO)

# --- Create a YAML-compatible text snippet with the timing info
printf "run_date: ${TIMING_DATE}\nrun_host: ${TIMING_HOST}\n" > ${YAML_RUN_FILE}
printf "run_epoch: ${TIME_SINCE_EPOCH}\nrun_platform: ${TIMING_PLATFORM}\n" >> ${YAML_RUN_FILE}
printf "order: ${ORDER}\nscale: ${SCALE}\n" >> ${YAML_RUN_FILE}
printf "time_startup: ${STARTUP_TIME}\ntime_first_step: ${FIRST_STEP}\n" >> ${YAML_RUN_FILE}
printf "time_middle_8: ${MIDDLE_8_STEPS}\n---\n" >> ${YAML_RUN_FILE}
11 changes: 11 additions & 0 deletions scripts/grid_scale_eager_bsub.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash --login

#BSUB -nnodes 1
#BSUB -G uiuc
#BSUB -W 720
#BSUB -J bozzle_eager_gridscale
#BSUB -q pbatch
#BSUB -o bozzle-eager-gridscale.out

source /p/gpfs1/mtcampbe/CEESD/AutomatedTesting/MIRGE-Timing/hand-timing/emirge/config/activate_env.sh
./run_order_scale_eager.sh
11 changes: 11 additions & 0 deletions scripts/grid_scale_lazy_bsub.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/bash --login

#BSUB -nnodes 1
#BSUB -G uiuc
#BSUB -W 720
#BSUB -J bozzle_lazy_gridscale
#BSUB -q pbatch
#BSUB -o bozzle-lazy-gridscale.out

source /p/gpfs1/mtcampbe/CEESD/AutomatedTesting/MIRGE-Timing/hand-timing/emirge/config/activate_env.sh
./run_order_scale_lazy.sh
60 changes: 60 additions & 0 deletions scripts/run_eager_weak.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

timestamp=$(date "+%Y.%m.%d-%H.%M.%S")
TIMING_HOME=$(pwd)
TIMING_HOST=$(hostname)
TIMING_PLATFORM=$(uname)
TIMING_ARCH=$(uname -m)
TIMING_HOST="Lassen"
GPU_ARCH="GV100GL"
EXENAME="bozzle.py"
CASENAME="bozzle-eager-weak"
RUN_OPTIONS="-c ${CASENAME} --log"
RUN_LOG_FILE="${CASENAME}-rank0.sqlite"

# Do for orders 1, 2, 3
for order in {1..3}
do
YAML_FILE_NAME="${CASENAME}_p${order}.yaml"
rm -f ${YAML_FILE_NAME}

# The grid scales like this:
# NumElements = 6*[INT(4*(scale)**(1/3)]**3
for scale in 1 2 4 8 16 32
do
SUMMARY_FILE_ROOT="${CASENAME}_p${order}w${scale}"
SUMMARY_FILE_NAME="${SUMMARY_FILE_ROOT}_${timestamp}.sqlite"

date

rm -f gridscale_params.yaml
printf "Generating input file...\n"
./generate_input_yaml.sh ${order} ${scale} gridscale_params.yaml
cat gridscale_params.yaml
MY_OPTIONS="-i gridscale_params.yaml ${RUN_OPTIONS}"
printf "Running ${EXENAME} with order=${order}, scale=${scale}\n"
./run_mirgecom_dist.sh "${EXENAME}" "${MY_OPTIONS}" "${scale}"
date

if [[ -f "${RUN_LOG_FILE}" ]]; then

printf "Done running ${EXENAME} with order=${order}, scale=${scale}\n"
printf "Creating DB summary...\n"

# -- Process the results of the timing run
./create_db_summary.sh ${RUN_LOG_FILE} ${SUMMARY_FILE_NAME}

YAML_RUN_FILE="${SUMMARY_FILE_ROOT}_${timestamp}.yaml"
./generate_yaml_run_file.sh ${SUMMARY_FILE_NAME} ${YAML_RUN_FILE} ${order} ${scale}

if [[ -f ${YAML_FILE_NAME} ]]; then
cat ${YAML_RUN_FILE} >> ${YAML_FILE_NAME}
else
cp ${YAML_RUN_FILE} ${YAML_FILE_NAME}
fi

else
printf "The expected file: ${RUN_LOG_FILE} was not created.\n"
fi
done
done
13 changes: 13 additions & 0 deletions scripts/run_mirgecom.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

exename="${1}"
options="${2}"

printf "Resetting cache directories.\n"
export PYOPENCL_CTX="0:1"
export XDG_CACHE_HOME="/tmp/$USER/xdg-scratch"
export POCL_CACHE_DIR="/tmp/$USER/pocl-cache"
rm -rf $XDG_CACHE_HOME $POCL_CACHE_DIR

printf "Running: jsrun -g 1 -a 1 -n 1 python -O -u -m mpi4py ./${exename} ${options}\n"
jsrun -g 1 -a 1 -n 1 python -O -u -m mpi4py ./${exename} ${options}
17 changes: 17 additions & 0 deletions scripts/run_mirgecom_dist.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

exename="${1}"
options="${2}"
numparts="${3}"

printf "Resetting cache directories.\n"
export PYOPENCL_CTX="0:1"
export XDG_CACHE_HOME="/tmp/$USER/xdg-scratch"
export POCL_CACHE_DIR="/tmp/$USER/pocl-cache"
rm -rf $XDG_CACHE_HOME $POCL_CACHE_DIR

printf "Checking task info:\n"
jsrun -r 1 -g 1 -a 1 -n ${numparts} js_task_info

printf "Running: jsrun -g 1 -a 1 -n ${numparts} python -O -u -m mpi4py ./${exename} ${options}\n"
jsrun -g 1 -a 1 -r 1 -n ${numparts} python -O -u -m mpi4py ./${exename} ${options}
60 changes: 60 additions & 0 deletions scripts/run_order_scale_eager.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

timestamp=$(date "+%Y.%m.%d-%H.%M.%S")
TIMING_HOME=$(pwd)
TIMING_HOST=$(hostname)
TIMING_PLATFORM=$(uname)
TIMING_ARCH=$(uname -m)
TIMING_HOST="Lassen"
GPU_ARCH="GV100GL"
EXENAME="bozzle.py"
CASENAME="bozzle-eager"
RUN_OPTIONS="-c ${CASENAME} --log"
RUN_LOG_FILE="${CASENAME}-rank0.sqlite"

# Do for orders 1, 2, 3
for order in {1..3}
do
YAML_FILE_NAME="${CASENAME}_p${order}.yaml"
rm -f ${YAML_FILE_NAME}

# The grid scales like this:
# NumElements = 6*[INT(4*(scale)**(1/3)]**3
for scale in 1 2 8 32 128 256 512 1024 2048 3192
do
SUMMARY_FILE_ROOT="${CASENAME}_p${order}w${scale}"
SUMMARY_FILE_NAME="${SUMMARY_FILE_ROOT}_${timestamp}.sqlite"

date

rm -f gridscale_params.yaml
printf "Generating input file...\n"
./generate_input_yaml.sh ${order} ${scale} gridscale_params.yaml
cat gridscale_params.yaml
MY_OPTIONS="-i gridscale_params.yaml ${RUN_OPTIONS}"
printf "Running ${EXENAME} with order=${order}, scale=${scale}\n"
./run_mirgecom.sh "${EXENAME}" "${MY_OPTIONS}"
date

if [[ -f "${RUN_LOG_FILE}" ]]; then

printf "Done running ${EXENAME} with order=${order}, scale=${scale}\n"
printf "Creating DB summary...\n"

# -- Process the results of the timing run
./create_db_summary.sh ${RUN_LOG_FILE} ${SUMMARY_FILE_NAME}

YAML_RUN_FILE="${SUMMARY_FILE_ROOT}_${timestamp}.yaml"
./generate_yaml_run_file.sh ${SUMMARY_FILE_NAME} ${YAML_RUN_FILE} ${order} ${scale}

if [[ -f ${YAML_FILE_NAME} ]]; then
cat ${YAML_RUN_FILE} >> ${YAML_FILE_NAME}
else
cp ${YAML_RUN_FILE} ${YAML_FILE_NAME}
fi

else
printf "The expected file: ${RUN_LOG_FILE} was not created.\n"
fi
done
done
60 changes: 60 additions & 0 deletions scripts/run_order_scale_lazy.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash

timestamp=$(date "+%Y.%m.%d-%H.%M.%S")
TIMING_HOME=$(pwd)
TIMING_HOST=$(hostname)
TIMING_PLATFORM=$(uname)
TIMING_ARCH=$(uname -m)
TIMING_HOST="Lassen"
GPU_ARCH="GV100GL"
EXENAME="bozzle.py"
CASENAME="bozzle-lazy"
RUN_OPTIONS="-c ${CASENAME} --lazy --log"
RUN_LOG_FILE="${CASENAME}-rank0.sqlite"

# Do for orders 1, 2, 3
for order in {1..3}
do
YAML_FILE_NAME="${CASENAME}_p${order}.yaml"
rm -f ${YAML_FILE_NAME}

# The grid scales like this:
# NumElements = 6*[INT(4*(scale)**(1/3)]**3
for scale in 1 2 8 32 128 256 512 1024 2048 3192
do
SUMMARY_FILE_ROOT="${CASENAME}_p${order}w${scale}"
SUMMARY_FILE_NAME="${SUMMARY_FILE_ROOT}_${timestamp}.sqlite"

date

rm -f gridscale_params.yaml
printf "Generating input file...\n"
./generate_input_yaml.sh ${order} ${scale} gridscale_params.yaml
cat gridscale_params.yaml
MY_OPTIONS="-i gridscale_params.yaml ${RUN_OPTIONS}"
printf "Running ${EXENAME} with order=${order}, scale=${scale}\n"
./run_mirgecom.sh "${EXENAME}" "${MY_OPTIONS}"
date

if [[ -f "${RUN_LOG_FILE}" ]]; then

printf "Done running ${EXENAME} with order=${order}, scale=${scale}\n"
printf "Creating DB summary...\n"

# -- Process the results of the timing run
./create_db_summary.sh ${RUN_LOG_FILE} ${SUMMARY_FILE_NAME}

YAML_RUN_FILE="${SUMMARY_FILE_ROOT}_${timestamp}.yaml"
./generate_yaml_run_file.sh ${SUMMARY_FILE_NAME} ${YAML_RUN_FILE} ${order} ${scale}

if [[ -f ${YAML_FILE_NAME} ]]; then
cat ${YAML_RUN_FILE} >> ${YAML_FILE_NAME}
else
cp ${YAML_RUN_FILE} ${YAML_FILE_NAME}
fi

else
printf "The expected file: ${RUN_LOG_FILE} was not created.\n"
fi
done
done

0 comments on commit 410e78c

Please sign in to comment.