More Legal Transformations for Locality

  • Cédric Bastoul
  • Paul Feautrier
Part of the Lecture Notes in Computer Science book series (LNCS, volume 3149)

Abstract

Program transformations are one of the most valuable compiler techniques to improve data locality. However, restructuring compilers have a hard time coping with data dependences. A typical solution is to focus on program parts where the dependences are simple enough to enable any transformation. For more complex problems is only addressed the question of checking whether a transformation is legal or not. In this paper we propose to go further. Starting from a transformation with no guarantee on legality, we show how we can correct it for dependence satisfaction with no consequence on its locality properties. Generating code having the best locality is a direct application of this result.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Ahmed, N., Mateev, N., Pingali, K.: Tiling imperfectly-nested loop nests. In: SC 2000 High Performance Networking and Computing, Dallas (November 2000)Google Scholar
  2. 2.
    Banerjee, U.: Unimodular transformations of double loops. In: Advances in Languages and Compilers for Parallel Processing, Irvine, August 1990, pp. 192–219 (1990)Google Scholar
  3. 3.
    Bastoul, C.: Efficient code generation for automatic parallelization and optimization. In: ISPDC 2003 IEEE International Symposium on Parallel and Distributed Computing, Ljubljana, October 2003, pp. 23–30 (2003)Google Scholar
  4. 4.
    Bastoul, C., Cohen, A., Girbal, S., Sharma, S., Temam, O.: Putting polyhedral transformations to work. In: Rauchwerger, L. (ed.) LCPC 2003. LNCS, vol. 2958, pp. 209–225. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  5. 5.
    Bastoul, C., Feautrier, P.: Improving data locality by chunking. In: Hedin, G. (ed.) CC 2003. LNCS, vol. 2622, pp. 320–335. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  6. 6.
    Feautrier, P.: Parametric integer programming. RAIRO Recherche Opérationnelle 22(3), 243–268 (1988)MATHMathSciNetGoogle Scholar
  7. 7.
    Feautrier, P.: Some efficient solutions to the affine scheduling problem: one dimensional time. International Journal of Parallel Programming 21(5), 313–348 (1992)MATHCrossRefMathSciNetGoogle Scholar
  8. 8.
    Griebl, M., Faber, P., Lengauer, C.: Space-time mapping and tiling – a helpful combination. Concurrency and Computation: Practice and Experience 16(3), 221–246 (2004)CrossRefGoogle Scholar
  9. 9.
    Griebl, M., Lengauer, C., Wetzel, S.: Code generation in the polytope model. In: PACT 1998 International Conference on Parallel Architectures and Compilation Techniques, pp. 106–111 (1998)Google Scholar
  10. 10.
    Kodukula, I., Ahmed, N., Pingali, K.: Data-centric multi-level blocking. In: ACM SIGPLAN 1997 Conference on Programming Language Design and Implementation, Las Vegas, June 1997, pp. 346–357 (1997)Google Scholar
  11. 11.
    Kuck, D.: The Structure of Computers and Computations. John Wiley & Sons, Inc., Chichester (1978)Google Scholar
  12. 12.
    Lengauer, C.: Loop parallelization in the polytope model. In: Best, E. (ed.) CONCUR 1993. LNCS, vol. 715, pp. 398–416. Springer, Heidelberg (1993)Google Scholar
  13. 13.
    Li, W., Pingali, K.: A singular loop transformation framework based on nonsingular matrices. International Journal of Parallel Programming 22(2), 183–205 (1994)MATHCrossRefMathSciNetGoogle Scholar
  14. 14.
    McKinley, K., Carr, S., Tseng, C.: Improving data locality with loop transformations. ACM Transactions on Programming Languages and Systems 18(4), 424–453 (1996)CrossRefGoogle Scholar
  15. 15.
    Schrijver, A.: Theory of linear and integer programming. John Wiley & Sons, Chichester (1986)MATHGoogle Scholar
  16. 16.
    Wolf, M., Lam, M.: A data locality optimizing algorithm. In: ACM SIGPLAN 1991 Conference on Programming Language Design and Implementation, New York, June 1991, pp. 30–44 (1991)Google Scholar
  17. 17.
    Wolfe, M.: Iteration space tiling for memory hierarchies. In: 3rd SIAM Conference on Parallel Processing for Scientific Computing, December 1987, pp. 357–361 (1987)Google Scholar
  18. 18.
    Wolfe, M.: High performance compilers for parallel computing. Addison-Wesley Publishing Company, Reading (1995)Google Scholar
  19. 19.
    Xue, J.: On tiling as a loop transformation. Parallel Processing Letters 7(4), 409–424 (1997)CrossRefMathSciNetGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2004

Authors and Affiliations

  • Cédric Bastoul
    • 1
  • Paul Feautrier
    • 2
  1. 1.Laboratoire PRiSMUniversité de Versailles Saint QuentinVersailles CedexFrance
  2. 2.École Normale Supérieure de LyonLyonFrance

Personalised recommendations