The purpose of this programming assignment is to gain experience in using performance analysis tools for parallel programs. For this assignment, you will run an existing parallel code, LULESH and analyze its performance using HPCToolkit and Hatchet.
You can get LULESH by cloning its git repository as follows:
git clone https://github.com/LLNL/LULESH.git
You can use CMake to build LULESH on deepthought2 by following these steps:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_CXX_FLAGS="-g -O3" -DMPI_CXX_COMPILER=`which mpicxx` -DWITH_OPENMP=Off -DWITH_SILO=Off ..
make
This should produce an executable lulesh2.0
in the build directory.
Lets say you want to run LULESH on 8 processes for 10 iterations/timesteps. This would be the mpirun line:
mpirun -np 8 ./lulesh2.0 -i 10 -p
HPCToolkit is available on deepthought2 via the hpctoolkit/gcc
module. You can use HPCtoolkit to collect profiling data for a parallel program in three steps.
hpcstruct exe
mpirun -np <num_ranks> hpcrun -e WALLCLOCK@5000 ./exe <args>
mpirun -np 1 hpcprof-mpi --metric-db=yes -S exe.hpcstruct -I <path_to_src> <measurements-directory>
hpcprof-mpi
using its from_hpctoolkit
reader.
You can install Hatchet using pip install hatchet
. I suggest using the development version of hatchet by cloning the git repository:
git clone https://github.com/LLNL/hatchet.git
You can install hatchet on deepthought2 or your local computer by adding the hatchet directory to your PYTHONPATH
and running install.sh
.
-s 45
and compare the performance of these executions with those in the default mode. Identify the functions/code regions where the code spends disproportionately more time compared to the default mode in task 1.
-s 45
, -s 22
, and -s 15
respectively), and compare the performance of various executions. Identify the functions/code regions that scale poorly as you run on more processes in this strong scaling mpde. Compare the results with the functions you identified in task 1.
You must submit the following files and no other files:
LastName-assign2
), compress it to .tar.gz (LastName-assign2.tar.gz
) and upload that to ELMS.
The project will be graded as follows:
Component | Percentage |
---|---|
Analysis 1 | 30 |
Analysis 2 | 30 |
Analysis 3 | 30 |
Writeup | 10 |