Abstract
One major point in loop restructuring for data locality optimization is the choice and the evaluation of data locality criteria. In this paper we show how to compute approximations of window sets defined by Gannon, Jalby, and Gallivan. The window associated with an iterationi describes the “active” portion of an array: elements that have already been referenced before iterationi and that will be referenced after iterationi. Such a notion is extremely useful for data localization because it identifies the portions of arrays that are worth keeping in local memory because they are going to be referenced later. The computation of these window approximations can be performed symbolically at compile time and generates a simple geometrical shape that simplifies the management of the data transfers. This strategy allows derivation of a global strategy of data management for local memories which may be combined efficiently with various parallelization and/or vectorization optimizations. Indeed, the effects of loop transformations fit naturally into the geometrical framework we use for the calculations.
The determination of window approximations is studied both from a theoretical and a computational point of view, and examples of applications are given.
Similar content being viewed by others
References
M. Burke and R. Cytron, “Interprocedural analysis and parallelization,” in:Proceedings of SIGPLAN 86, Symposium on Compiler Construction (1986) pp. 162–175.
C.H. Chi and H. Dietz, “Unified management of registers and cache using liveness and cache bypass,”Proceedings of 1989 SIGPLAN Conference on Programming Language. Design and Implementation (1989).
K. Gallivan, D. Gannon and W. Jalby, “On the problem of optimizing data transfers for complex memory systems,” in:Proceedings of ACM International Conference on Supercomputing (ACM, New York, (1988) pp. 238–253.
K. Gallivan, D. Gannon, W. Jalby, A. Malony and H. Wijshoff, “Experimentally characterizing the behavior of multiprocessor memory systems: A case study,”IEEE Transaction on Software Engineering 16(2) (1990).
K. Gallivan, W. Jalby, A. Malony and H. Wijshoff, “Performance prediction of loop constructs on multiprocessor hierarchical memory systems,” in:Proceedings of ACM International Conference on Supercomputing (ACM, New York, 1989) pp. 433–442.
D. Gannon, W. Jalby and K. Gallivan, “Strategies for cache and local memory management by global program transformation,” in:Proceedings of the International Conference on Supercomputing (Springer Verlag, New York, 1987) andJournal of Parallel and Distributed Computing 5 (1988) 587–616.
K. Kennedy, “Automatic translation of Fortran programs to vector form,” Technical Report, Rice University (Houston, TX, 1980).
D. Kuck, R. Kuhn, B. Leasure and M. Wolfe, “Dependence graphs and compiler optimization,”Proceedings of the Symposium on POPL (1981).
D. Padua and D. Kuck, “High-speed multiprocessors and compilation techniques,”IEEE Transactions on Computers C-29(9) (1980) 763–776.
D. Padua and M. Wolfe, “Advanced compiler optimizations for supercomputers,”Communications of the ACM 29(12) (1986) 1184–1201.
G. Pfister and A. Norton, “Hot spot contention and combining in multistage interconnection networks,” in:Proceedings of the 1985 International Conference on Parallel Processing (1985) pp. 790–797.
A. Porterfield, “Compiler management of program locality,” Technical Report, Rice University (Houston, TX, 1988).
S. Sahni, “Approximate algorithms for the [0, 1] knapsack problem,”Journal of the ACM 22 (1975) 115–124.
A. Veidenbaum and H. Cheong, “Cache Coherence Scheme with Fast Selective Invalidation,” in:Proceedings of the International Symposium on Computer Architecture (1988).
M. Wolf and M. Lam, “An algorithm to generate sequential and parallel code with improved data locality,” Technical Report, Stanford University (Stanford, CA, 1990).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Eisenbeis, C., Jalby, W., Windheiser, D. et al. A strategy for array management in local memory. Mathematical Programming 63, 331–370 (1994). https://doi.org/10.1007/BF01582075
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF01582075