Promoting HPC Best Practices with the POP Methodology
Fouzhan Hosseini and Craig LucasVolume 12, Issue 2 (February 2021), pp. 66–69
https://doi.org/10.22369/issn.2153-4136/12/2/13BibTeX
@article{jocse-12-2-13, author={Fouzhan Hosseini and Craig Lucas}, title={Promoting HPC Best Practices with the POP Methodology}, journal={The Journal of Computational Science Education}, year=2021, month=feb, volume=12, issue=2, pages={66--69}, doi={https://doi.org/10.22369/issn.2153-4136/12/2/13} }
The performance of HPC applications depends on a wide range of factors, including algorithms, programming models, library and language implementations, and hardware. To make the problem even more complicated, many applications inherit different layers of legacy code, written and optimized for a different era of computing technologies. Due to this complexity, the task of understanding performance bottlenecks of HPC applications and making improvements often ends up being a daunting trial-and-error process. Problematically, this process often starts without having a quantitative understanding of the actual behavior of the HPC code. The Performance Optimisation and Productivity (POP) Centre of Excellence, funded by the EU under the Horizon 2020 Research and Innovation Programme, attempts to establish a quantitative methodology for the assessment of parallel codes. This methodology is based on a set of hierarchical metrics, where the metrics at the bottom of the hierarchy represent common causes of poor performance. These metrics provide a standard, objective way to characterize different aspects of the performance of parallel codes and therefore provide the necessary foundation for establishing a more systematic approach for performance optimization of HPC applications. In consequence, the POP methodology facilitates training new HPC performance analysts. In this paper, we will illustrate these advantages by describing two real-world examples where we used the POP methodology to help HPC users understand performance bottlenecks of their code.