< Retour au sommaire
Scalable trace-based compile-time memory allocation
Hugo Thievenaz le
Lieu: Salle 1073
Suivre en visio
Abstract
This thesis, titled “Scalable trace-based compile-time memory allocation”,
studies the use of trace analysis to infer efficient memory allocations. The
broader goal is to use program information at runtime as a way to outpace
traditional static analysis techniques, which fail to scale for kernels of high
dimensions and many statements. The use-case is polyhedral High-Level Synthesis
where scalable methods are required.
We propose novel methods for array contraction based on lightweight, scalable,
trace analysis. Then, we provide a thorough theoretical study of our algorithms
as well as implementations to quantify performance in analysis time but also
memory reduction. The example programs used for performance measurement were
variations of the polyhedral benchmark suite “PolyBench”. The variations are
most often parallelism factor, tiling, and adjustment of padding. Key
contributions of this thesis are the design of two new methods of analysis for
the array contraction optimization. The first one focuses on yielding constant
sizes for temporary arrays, which is relevant in the context of communication
buffer sizing for High-Performance Computing applications. The second method is
a more general approach to memory allocation which reconstructs the array
liveness information and the conflict relation between array cells, as well as
an algorithm to compute linear allocations able to produce parametric siz
s for
the arrays. This research lead to the implementation of a tool named PoLa that
totals 5637 lines of C++ code.