TUNE: System Support for Memory-Friendly Programming
Siddhartha Chatterjee
University of North Carolina,
Chapel Hill
The pervasive use of multi-level memory hierarchies in microprocessor-based
machines makes the performance of an application primarily determined by, and
extremely sensitive to, its memory hierarchy mapping. Good performance
therefore requires "memory-friendly programming": careful layout of data
structures, and restructuring of code and/or data use patterns to improve
locality. The lack of automatic tools for enhancing locality currently forces
many application programmers to manually restructure their codes.
Unfortunately, the sophisticated algorithms seen in modern scientific
computing require equally sophisticated restructuring techniques, beyond the
loop tiling transformations that some research compilers can perform
automatically for dense iterative affine loop codes. Such restructuring
techniques require expertise in computer architecture, burden the application
programmer with tedious machine-specific details unrelated to program
correctness, and reduce the readability, maintainability, and portability of
the restructured code. The goal of the TUNE project is to improve our
understanding of locality for a wide class of "hierarchical" problems and to
develop a toolkit to aid the programmer in developing memory-friendly programs
for such problems. Our ultimate goal is to demonstrate that the TUNE toolkit
can be used to improve the performance of a naive implementation of an
application to a level comparable to that of an implementation with extensive
manual restructuring, but at a small fraction of effort on the part of the
programmer.
A comprehensive solution to the problem of improving locality in hierarchical
codes requires interactions among several sub-disciplines of computer science:
scientific computing, numerical analysis, programming languages, compilers,
performance modeling, and computer architecture. This project therefore
targets all aspects of the locality problem: developing the relevant
mathematical techniques for representing and manipulating locality;
characterizations of the relationship between program transformations and
numerical accuracy; implementing interactive and automatic locality management
tools; and proposing and evaluating innovative memory architectures for
future-generation systems.
The talk discussed these various aspects of the TUNE project.
Further info and related paper(s):