Identification and Characterization of Memory Allocation Anomalies in High-Performance Computing Applications

A memory allocation anomaly occurs when the allocation of a set of heap blocks imposes an unnecessary overhead on the execution of an application. In this paper, we propose a method for identifying, locating, characterizing and fixing allocation anomalies, and a tool for developers to apply the method. We experiment our method and tool with a numerical simulator aimed at approximating the solutions to partial differential equations using a finite element method. We show that taming allocation anomalies in this simulator reduces the memory footprint of its processes by 37.27% and the execution time by 16.52%. We conclude that the developer of high-performance computing applications can benefit from the method and tool during the software development cycle.

[1]  Artur Andrzejak,et al.  Detection of Memory Leaks in C/C++ Code via Machine Learning , 2017, 2017 IEEE International Symposium on Software Reliability Engineering Workshops (ISSREW).

[2]  Hans-J. Boehm,et al.  Dynamic memory allocation and garbage collection , 1995 .

[3]  Emery D. Berger,et al.  Efficiently and precisely locating memory leaks and bloat , 2009, PLDI '09.

[4]  Andrew T. T. McRae,et al.  Firedrake: automating the finite element method by composing abstractions , 2015, ACM Trans. Math. Softw..

[5]  Neil Mitchell Leaking Space , 2013, ACM Queue.

[6]  Alexey Kukanov,et al.  The Foundations for Scalable Multicore Software in Intel Threading Building Blocks , 2007 .

[7]  David Wells,et al.  The deal.II library, Version 9.1 , 2019, J. Num. Math..

[8]  Diego Paredes,et al.  Multiscale Hybrid-Mixed Method , 2013, SIAM J. Numer. Anal..

[9]  Jun Yan,et al.  Characterizing and detecting resource leaks in Android applications , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[10]  Anders Logg,et al.  DOLFIN: a C++/Python Finite Element Library , 2012 .

[11]  Bill Appelbe,et al.  Software Tools for High-Performance Computing: Survey and Recommendations , 1996, Sci. Program..

[12]  Benjamin S. Kirk,et al.  Library for Parallel Adaptive Mesh Refinement / Coarsening Simulations , 2006 .

[13]  Laszlo A. Belady,et al.  An anomaly in space-time characteristics of certain programs running in a paging machine , 1969, CACM.

[14]  Diego Paredes,et al.  On the Implementation of a Scalable Simulator for Multiscale Hybrid-Mixed Methods , 2017, ArXiv.

[15]  Philip Wadler,et al.  Fixing some space leaks with a garbage collector , 1987, Softw. Pract. Exp..

[16]  Robert O. Hastings,et al.  Fast detection of memory leaks and access errors , 1991 .

[17]  Andrew Lumsdaine,et al.  Parallel Tools and Environments: A Survey , 2006, Parallel Processing for Scientific Computing.

[18]  Jesús Labarta,et al.  Framework for a productive performance optimization , 2013, Parallel Comput..

[19]  Kathryn S. McKinley,et al.  Hoard: a scalable memory allocator for multithreaded applications , 2000, SIGP.

[20]  Alexander V. Supalov,et al.  Optimizing HPC Applications with Intel Cluster Tools: Hunting Petaflops , 2014 .