Compare performance of various parallel techniques on HPC clusters to simulate an Abelian Sandpile.
| graphs | ||
| pbs | ||
| results | ||
| src | ||
| .gitignore | ||
| automate_benchmarking.sh | ||
| Makefile | ||
| Makefile.hpc | ||
| README.md | ||
| Report.pdf | ||
| set_modules.sh | ||
CSC4028Z Assignment
Description
Simulate an Abelian Sandpile. Serial and parallel (OpenMP, MPI, MPI+OpenMP) implementations are provided.
Specification
- serial.c: serial implementation
- omp.c: parallel implementation using OpenMP threads
- mpi.c: parallel implementation using MPI processes
- hybrid.c: hybrid parallel implementation using MPI processes and OpenMP threads
Installation
- Ensure
gcc,openmpi-binandlibopenmpi-devare installed when using Ubuntu. - Run
maketo compile all implementations.
Usage
Run make test to easily test all 4 implementations. This will produce .ppm output files and print the execution time per implementation.
Run make benchmark to perform multiple runs of the program under different arguments. This uses the automate_benchmarking.sh script.
You can also invoke each individual implementation as follows (example using 128x128 grid size and 8 threads where applicable):
- Serial: ./serial -s 128 128
- OpenMP: ./omp -s 128 128 -t 8
- MPI: mpirun --bind-to none ./mpi -s 128 128
- Hybrid: mpirun --bind-to none ./hybrid -s 128 128 -t 8
Run make clean when complete if you want to clean up binaries and output files.
Authors and acknowledgment
- Unays Bhad (BHDUNA001)
- Channing Bellamy (BLLCHA013)