Taming the Memory Hogs: Explicit Compiler-based Memory Management for Out-of-core Applications

EECS Joint Colloquium Distinguished Lecture Series

Angela Demke Brown
Carnegie-Mellon University
Faculty Candidate

Wednesday, April 4, 2001
Hewlett Packard Auditorium, 306 Soda Hall
4:00-5:00 p.m.


Many common areas of scientific computing (for instance, weather modeling, computational fluid dynamics, earthquake simulations, and scientific visualization) are "out-of-core"---their data sets are too large for physical memory. Existing techniques for managing memory in these programs are unsatisfactory: explicit I/O has the potential for good performance, but is difficult to use, while paged virtual memory sacrifices performance for usability. Traditional virtual memory implementations also allow out-of-core programs to over-consume memory resources, thus severely degrading the performance of other applications.

This talk presents a new, fully-automatic approach that enables out-of-core applications to explicitly manage their memory requirements by I) prefetching pages that will be needed in the near future, and II) informing the operating system about pages that can be replaced. The application programmer is not required to modify source code. Our approach unites the ability of the compiler to analyze data access patterns statically and automatically transform code (by inserting the required memory management hints) with the ability of the operating system to monitor dynamic resource usage. A new run-time layer intercepts the hints inserted by the compiler and uses the dynamic information to decide when action needs to be taken. I will describe our implementation of this system, and present some of our performance results which demonstrate that our technique can dramatically improve the performance of array-based out-of-core programs (over implementations that rely on paged virtual memory). I will also show that the negative impact on an interactive application can be virtually eliminated using this approach.