Optimizing memory usage in the polyhedral model
- 1 September 2000
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Programming Languages and Systems
- Vol. 22 (5) , 773-815
- https://doi.org/10.1145/365151.365152
Abstract
The polyhedral model provides a single unified foundation for systolic array synthesis and automatic parallelization of loop programs. We investigate the problem of memory reuse when compiling Alpha (a functional language based on this model). Direct compilation would require unacceptably large memory (for example O(n 3 ) for matrix multiplication). Researchers have previously addressed the problem of memory reuse, and the analysis that this entails for projective memory allocations. This paper addresses, for a given schedule, the choice of the projections so as to minimize the volume of the residual memory. We prove tight bounds on the number of linearly independent projection vectors. Our method is constructive, yielding an optimal memory allocation. We extend the method to modular functions, and deal with the subsequent problems of code generation. Our ideas are illustrated on a number of examples generated by the current version of the Alpha compiler.Keywords
This publication has 17 references indexed in Scilit:
- Loop Transformations for Restructuring Compilers: The FoundationsPublished by Springer Nature ,1993
- Some efficient solutions to the affine scheduling problem. I. One-dimensional timeInternational Journal of Parallel Programming, 1992
- Regular partitioning for synthesizing fixed-size systolic arraysIntegration, 1991
- The data alignment phase in compiling programs for distributed-memory machinesJournal of Parallel and Distributed Computing, 1991
- The ALPHA language and its use for the design of systolic arraysJournal of Signal Processing Systems, 1991
- Dataflow analysis of array and scalar referencesInternational Journal of Parallel Programming, 1991
- A report on the sisal language projectJournal of Parallel and Distributed Computing, 1990
- I-structures: data structures for parallel computingACM Transactions on Programming Languages and Systems, 1989
- Applicative cachingACM Transactions on Programming Languages and Systems, 1986
- The Organization of Computations for Uniform Recurrence EquationsJournal of the ACM, 1967