Ziyang Xu will present his Pre FPO "PROMPT: A Fast and Extensible Memory Profiling Framework" on December 11, 2023 at 10am in CS 302.  

Committee:
Prof. David I. August (Advisor)
Prof. Amit Levy (Examiner)
Prof. Aarti Gupta (Examiner)
Prof. Zachary Kincaid (Reader)
Prof. Simone Campanoni (Reader, Associate Professor at Northwestern University)

All are welcome to attend.

PROMPT: A Fast and Extensible Memory Profiling Framework

Abstract:
Memory profiling captures programs' dynamic memory behavior, assisting programmers in debugging, tuning, and enabling advanced compiler optimizations like speculation-based automatic parallelization. As each use case demands its unique program trace summary, various memory profiler types have been developed. Yet, designing practical memory profilers often requires extensive compiler expertise, adeptness in program optimization, and significant implementation efforts. This often results in a void where aspirations for fast and robust profilers remain unfulfilled.

To bridge this gap, this dissertation presents PROMPT, a pioneering framework for streamlined development of fast memory profilers.  With it, developers only need to specify profiling events and define the core profiling logic, bypassing the complexities of custom instrumentation and intricate memory profiling components and optimizations. Two state-of-the-art memory profilers were ported with PROMPT while all features preserved. By focusing on the core profiling logic, the code was reduced by more than 65% and the profiling speed was improved by 5.3x and 7.1x respectively. To further underscore PROMPT's impact, a tailored memory profiling workflow was constructed for a sophisticated compiler optimization client. In just 570 lines of code, this redesigned workflow satisfies the client's memory profiling needs while achieving more than 90% reduction in profiling time and improved robustness compared to the original profilers.

PROMPT overcomes the limitations of traditional compile-time instrumentation memory profilers by integrating dynamic binary instrumentation capabilities. It automatically infers the characteristics of external function calls, significantly reducing dependence on binary instrumentation and enhancing performance. Memory profiling events generated by both methods are formatted consistently, ensuring that modules developed with PROMPT are adaptable and retain their functionality irrespective of the instrumentation technique employed.

In acknowledgment of the complexity inherent in memory behaviors and profiler implementations, PROMPT utilizes a novel testing technique. This method involves inverting memory analysis algorithms to generate synthetic programs with known memory behaviors. Such a strategy is instrumental in detecting and rectifying errors in memory profiler implementations created with PROMPT, thus bolstering confidence in the accuracy of the profilers.