Publication details
- Generalized and Optimized Memory Management with LLVM (Niclas Schroeter), Master's Thesis, School: Universität Hamburg, 2023-12-05
Publication details
Abstract
Utilizing modern multiprocessors effectively is an important aspect of scientific applications. Thus, many such applications rely on OpenMP as a simple option for parallelization. One of the main downsides of OpenMP is its limitation to shared memory. Tools, such as CATO, aim to transform OpenMP applications to use MPI functions instead, thereby improving the scalability of applications that were formerly bound to a single compute node. The purpose of this thesis is to adapt and improve CATO in two major capacities: the first improvement is aimed at CATO’s general memory management, enabling the transformation of applications that make use of arrays of arbitrary dimension. This is achieved by means of a thorough analysis of array indexing in LLVM IR and subsequent changes to the compiler pass component and the runtime library of CATO. The second improvement aims to optimize the memory management at runtime. To this end, multiple cache models are proposed and implemented, including one that conforms to the OpenMP memory model. Evaluations on multiple OpenMP kernels suggest that the optimized memory management at runtime can reduce the time to solution by more than 50% in many cases, at the cost of an increase in memory consumption.
BibTeX
@mastersthesis{GAOMMWLS23,
author = {Niclas Schroeter},
title = {{Generalized and Optimized Memory Management with LLVM}},
advisors = {Jannek Squar and Michael Kuhn},
year = {2023},
month = {12},
school = {Universität Hamburg},
howpublished = {{Online \url{https://wr.informatik.uni-hamburg.de/_media/research:theses:niclas_schroeter_generalized_and_optimized_memory_management_with_llvm.pdf}}},
type = {Master's Thesis},
abstract = {Utilizing modern multiprocessors effectively is an important aspect of scientific
applications. Thus, many such applications rely on OpenMP as a simple option for
parallelization. One of the main downsides of OpenMP is its limitation to shared memory.
Tools, such as CATO, aim to transform OpenMP applications to use MPI functions instead,
thereby improving the scalability of applications that were formerly bound to a single compute
node. The purpose of this thesis is to adapt and improve CATO in two major capacities: the
first improvement is aimed at CATO’s general memory management, enabling the transformation of
applications that make use of arrays of arbitrary dimension. This is achieved by means of a
thorough analysis of array indexing in LLVM IR and subsequent changes to the compiler pass
component and the runtime library of CATO. The second improvement aims to optimize the memory
management at runtime. To this end, multiple cache models are proposed and implemented,
including one that conforms to the OpenMP memory model. Evaluations on multiple OpenMP kernels
suggest that the optimized memory management at runtime can reduce the time to solution by
more than 50\% in many cases, at the cost of an increase in memory consumption.},
}