1. amal
  2. alghamdi_thesis_experiment


About this Repository
This repository contains the reproducibility details of the experiments performed as part of my Master's thesis and also contains information for producing the corresponding figures from profiling data. All the experiments were performed on Shaheen supercomputer at KAUST.

The Shaheen supercomputer, a 16-rack Blue Gene/P with 4GB of RAM per each of its 16,384 quadcore PowerPC 450 nodes.


-Python 2.6
-numpy 1.6.1
-PETSc 3.1.8
-petsc4py 1.1.2 (dev-june2011)
-IBM XLF 11.1 compiler
-IBM BlueGene/P System Driver V1R4M2_200_2010-100508P
The specific PyClaw and Riemann revisions is determined in each experiment.

export CLAW=<path_to>/clawpack
export RIEMANN=$CLAW/riemann
export PYCLAW=$CLAW/pyclaw
source <path_to>/prod.sh # a copy of prod.sh is in this directory.

# -O3 flag can be used for compilation by adding -O3 to the FFLAGS in $PYCLAW/Makefile.common. If turning off optimization flags is required, -O3 should be removed from FFLAGS in $PYCLAW/Makefile.common and from FC in ./prod.sh
# Check https://github.com/clawpack/pyclaw/wiki/Running-on-shaheen/2328cbd968ede04f28e07bcecf5827b13fbf99a3 for details
$ pyclaw_build
# cd to <experiment_directory>
$ make_f2py

# Check https://github.com/clawpack/pyclaw/wiki/Running-on-shaheen/2328cbd968ede04f28e07bcecf5827b13fbf99a3 for details 
# In another command window issue the following commands:
$ pyclaw_run
# cd to <experiment_directory>
$ kslrun -a <account_number> -n <number_of_processes> -t <wall_time> -p <partition_size> -m VN -r  "/bgsys/drivers/ppcfloor/gnu-linux/bin/python shockbubble.py"

All the figures in Chapter 3 of the thesis can be generated from the profiling data by running the Python scripts included in the first level of each of the four experiments directories. The following is a list of those Python scripts and the corresponding figures they generate:

- The script ./weak_scaling_experments/figures/makefig_acoustics.py produces the following figure:
  Figure III.1  (acoustics_weak_scaling.eps)

- The script ./weak_scaling_experments/figures/makefig_euler.py produces the following figure:
  Figure III.2  (euler_weak_scaling.eps)

- The script ./weak_scaling_experments/figures/plot_times_2D_weak.py produces the following figures:
  Figure III.3  (2D_solvers_weak_efficiency.pdf)
  Figure III.13 (2D_write_weak_efficiency.pdf and 2D_write_weak_time.pdf)
  Figure III.15 (python_load_time.pdf)

- The script ./strong_scaling_experment/figures/makefig.py produces the following figure:
  Figure III.4 (acoustics_strong_scaling.eps)

- The script ./strong_scaling_experment/figures/plot_times_2D_strong.py produces the following figures:
  Figure III.5  (solver_strong_scaling_eff.pdf)
  Figure III.6  (strong_scaling_efficincy_no_max.pdf)
  Figure III.14 (write_strong_scaling_efficincy.pdf and write_strong_scaling_time.pdf)

- The script ./strong_scaling_experment/figures/make_strong_eff_verification_fig.py produces the following figures:
  Figure III.7  (strong_efficiency_globalToLocal_verification.pdf and strong_scaling_globalToLocal_verification.pdf)
  Figure III.8  (strong_efficiency_localToGlobal_verification.pdf and strong_scaling_localToGlobal_verification.pdf)
  Figure III.9  (strong_efficiency_serial_computation_verification.pdf and strong_scaling_serial_computation_verification.pdf)
  Figure III.10 (strong_efficiency_max_verification.pdf and strong_scaling_max_verification.pdf)
  Figure III.11 (strong_efficiency_init_q_da_verification.pdf and strong_scaling_init_q_da_verification.pdf)
  Figure III.12 (strong_efficiency_evolve_to_time_verification.pdf and strong_scaling_evolve_to_time_verification.pdf)