Skip to main content

A Quantitative Algorithm for Data Locality Optimization

  • Conference paper
Code Generation — Concepts, Tools, Techniques

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

Abstract

In this paper, we consider the problem of optimizing register allocation and cache behavior for loop array references. We exploit techniques developed initially for data locality estimation and improvement. First we review the concept of “reference window” that serves as our basic tool for both data locality evaluation and management. Then we study how some loop restructuring techniques (interchanging, tiling, ...) can help to improve data locality. We describe a register allocation algorithm and a cache usage optimization algorithm based on the window concept which can be effectively implemented in a compiler system. Experimental speedup measurements on a RISC processor, the IBM RS/6000, give evidence of the efficiency of our technique.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Aho AV., Sethi R, Ullman JD. Compiler Principles, Techniques and Tools, Addison-Wesley, 1986.

    Google Scholar 

  2. Banerjee U. Unimodular Transformations of Double Loops, Advances in Languages and Compilers for Parallel Processing. Research Monograph in Parallel and Distributed Computing, The MIT Press, 1991.

    Google Scholar 

  3. Burke M, Cytron R. Interprocedural analysis and parallelization, Proceedings of the Symposium on Compiler Construction, July 1986, pp. 162–175.

    Google Scholar 

  4. Chi CH, Dietz H. Unified Management of Registers and Cache Using Liveness and Cache Bypass, Proceedings of the Conference on Programming Language Design and Implementation, 1989.

    Google Scholar 

  5. Callahan D, Carr S, Kennedy K. Improving Register Allocation for Sub-scripted Variables, Proceedings of the Conference on Programming Language Design and Implementation, 1990.

    Google Scholar 

  6. Eisenbeis C, Jalby W, Windheiser D, Bodin F. A Strategy for Array Management in Local Memory, Advances in Languages and Compilers for Parallel Processing, MIT Press, 1991.

    Google Scholar 

  7. Gannon D, Jalby W, Gallivan K. Strategies for Cache and Local Memory Management by Global Program Transformation, Proceedings of the International Conference on Supercomputing, Springer Verlag, New York, 1987 and Journal of Parallel and Distributed Computing, October 1988.

    Google Scholar 

  8. Gallivan K, Gannon D, Jalby W. On the Problem of Optimizing Data Transfers for Complex Memory Systems, Proceedings of International Conference on Supercomputing, 1988, pp. 238–253.

    Google Scholar 

  9. Gallivan K, Jalby W, Meier U. The use of BLAS3 in linear Algebra on a Parallel Processor with Hierarchical Memory, SIAM Journal on Scientific and Statistical Computing, Vol 8, N. 6, November 1986.

    Google Scholar 

  10. Kennedy K. Automatic translation of Fortran programs to vector form, Technical Report, Rice University, Houston, Texas, 1980.

    Google Scholar 

  11. Kuck D, Kuhn R, Leasure B, Wolfe, MJ. Dependence graphs and compiler optimizations, Proceedings of the Eighth Symposium on the Principles of Programming Languages, January 1981.

    Google Scholar 

  12. Lam M, Rothberg E, Wolf M. The Cache Performance and Optimizations of Blocked Algorithms, Proceedings of the Fourth ACM ASPLOS conference, April 91, pp 63–75.

    Google Scholar 

  13. Minoux M. Programmation mathématique: théorie et algorithmes, Dunod, Paris, Collection technique et scientifique des télécommunications 1983.

    Google Scholar 

  14. Padua D, Kuck D. High-speed multiprocessors and compilation techniques, IEEE Transaction on Computer, C-29, 9, pp. 763–776.

    Google Scholar 

  15. Padua D, Wolfe MJ. Advanced compiler optimizations for supercomputers, CACM, 29, 12, pp. 1184–1201.

    Google Scholar 

  16. Porterfield A. Compiler management of program locality, Technical Report, Rice University, Houston, Texas, January 1988.

    Google Scholar 

  17. Wolf M, Lam M. An algorithm to generate sequential and parallel code with improved data locality, Technical Report, Stanford University 1990.

    Google Scholar 

  18. Wolf M, Lam M. A Data Locality Optimizing Algorithm ACM Conference on Programming Language Design and Implementation, June 26–28, 1991.

    Google Scholar 

  19. Wolfe MJ. Optimizing Supercompilers for Supercomputers, PhD thesis, University of Illinois, October 1982.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1992 Springer-Verlag London

About this paper

Cite this paper

Bodin, F., Jalby, W., Windheiser, D., Eisenbeis, C. (1992). A Quantitative Algorithm for Data Locality Optimization. In: Giegerich, R., Graham, S.L. (eds) Code Generation — Concepts, Tools, Techniques. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3501-2_8

Download citation

  • DOI: https://doi.org/10.1007/978-1-4471-3501-2_8

  • Publisher Name: Springer, London

  • Print ISBN: 978-3-540-19757-7

  • Online ISBN: 978-1-4471-3501-2

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics