scispace - formally typeset
Proceedings ArticleDOI

Strategies for cache and local memory management by global program transformation

TLDR
A method for using data dependence analysis to estimate cache and local memory demand in highly iterative scientific codes in the form of a family of “reference” windows for each variable that reflects the current set of elements that should be kept in cache.
Abstract
In this paper we describe a method for using data dependence analysis to estimate cache and local memory demand in highly iterative scientific codes. The estimates take the form of a family of “reference” windows for each variable that reflects the current set of elements that should be kept in cache. It is shown that, in important special cases, we can estimate the size of the window and predict a lower bound on the number of cache hits. If the machine has local memory or cache that can be managed by the compiler, these estimates can be used to guide the management of this resource. It is also shown that these estimates can be used to guide program transformations in an attempt to optimize cache performance.

read more

Citations
More filters
Journal ArticleDOI

Compiler transformations for high-performance computing

TL;DR: This survey is a comprehensive overview of the important high-level program restructuring techniques for imperative languages, such as C and Fortran, and describes the purpose of each transformation, how to determine if it is legal, and an example of its application.
Journal ArticleDOI

Improving data locality with loop transformations

TL;DR: This article presents compiler optimizations to improve data locality based on a simple yet accurate cost model and finds performance improvements were difficult to achieve, but improved several programs.
Proceedings ArticleDOI

Cache-conscious structure layout

TL;DR: It is demonstrated that careful data organization and layout provides an essential mechanism to improve the cache locality of pointer-manipulating programs and consequently, their performance.
Proceedings ArticleDOI

Compiler optimizations for improving data locality

TL;DR: This paper presents compiler optimizations to improve data locality based on a simple yet accurate cost model and demonstrates that these program transformations are useful for optimizing many programs.
Journal ArticleDOI

Improving register allocation for subscripted variables

TL;DR: This paper presents a source-to-source transformation, called scalar replacement, that finds opportunities for reuse of subscripted variables and replaces the references involved by references to temporary scalar variables to increase the likelihood that these elements will be assigned to registers by the coloring-based register allocators found in most compilers.
References
More filters
Journal ArticleDOI

The program dependence graph and its use in optimization

TL;DR: An intermediate program representation, called the program dependence graph (PDG), that makes explicit both the data and control dependences for each operation in a program, allowing transformations to be triggered by one another and applied only to affected dependences.
Journal ArticleDOI

Automatic translation of FORTRAN programs to vector form

TL;DR: The theoretical background is developed here for employing data dependence to convert FORTRAN programs to parallel form and transformations that use dependence to uncover additional parallelism are discussed.
Journal ArticleDOI

Advanced compiler optimizations for supercomputers

TL;DR: Compilers for vector or multiprocessor computers must have certain optimization features to successfully generate parallel code to be able to operate on parallel systems.
Proceedings ArticleDOI

Optimizing supercompilers for supercomputers

TL;DR: This work will focus a great deal on the importance of compilers in supercomputing, and compare and contrast the advantages and impacts of compiler solutions to the "Performance + Portability + Productivity" problem with language and runtime solutions.
Proceedings ArticleDOI

Dependence graphs and compiler optimizations

TL;DR: This paper defines such graphs and discusses two kinds of transformations, simple rewriting transformations that remove dependence arcs and abstraction transformations that deal more globally with a dependence graph.