Skip to main content

Towards a Source Level Compiler: Source Level Modulo Scheduling

  • Chapter

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 4444))

Abstract

Modulo scheduling is a major optimization of high performance compilers wherein The body of a loop is replaced by an overlapping of instructions from different iterations. Hence the compiler can schedule more instructions in parallel than in the original option. Modulo scheduling, being a scheduling optimization, is a typical backend optimization relying on detailed description of the underlying CPU and its instructions to produce a good schedule. This work considers the problem of applying modulo scheduling at source level as a loop transformation, using only general information of the underlying CPU architecture. By doing so it is possible: a) Create a more retargeble compiler as modulo scheduling is now applied at source level, b) Study possible interactions between modulo scheduling and common loop transformations. c) Obtain a source level optimizer whose output is readable to the programmer, yet its final output can be efficiently compiled by a relatively “simple” compiler.

Experimental results show that source level modulo scheduling can improve performance also when low level modulo scheduling is applied by the final compiler, indicating that high level modulo scheduling and low level modulo scheduling can co-exist to improve performance. An algorithm for source level modulo scheduling modifying the abstract syntax tree of a program is presented. This algorithm has been implemented in an automatic parallelizer (Tiny). Preliminary experiments yield runtime and power improvements also for the ARM CPU for embedded systems.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Sim-panalyzer: http://www.eecs.umich.edu/panalyzer/

  2. Ullman, J., Aho, A., Sethi, R.: Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading (1986)

    Google Scholar 

  3. Allan, V.H., et al.: Software pipelining. ACM Computing Surveys 27(3), 367–432 (1995)

    Article  Google Scholar 

  4. Bacon, D.F., Graham, S.L., Sharp, O.J.: Compiler transformations for high-performance computing. ACM Computing Surveys 26(4), 345–420 (1994)

    Article  Google Scholar 

  5. Bailey, D.: Nas kernel benchmark program: http://www.netlib.org/benchmark/nas

  6. Dongarra, J., Luszczek, P., Petitet, A.: The linpack benchmark: Past, present, and future: http://www.netlib.org/utk/jackdongarra

  7. Faigin, K.A., et al.: The Polaris internal representation. International Journal of Parallel Programming 22(5), 553–586 (1994)

    Article  Google Scholar 

  8. Huang, J., Leng, T.: Generalized loop-unrolling: a method for program speed-up (1997)

    Google Scholar 

  9. Jarp, S.: Optimizing IA-64 performance. Journal of Software tools 26(7), 21–22, 24, 26 (2001)

    Google Scholar 

  10. Lam, M.: Software pipelining: an effective scheduling technique for vliw machines. In: PLDI, pp. 318–328 (1988)

    Google Scholar 

  11. McMahon, F.H.: Lawrence livermore national laboratory fortrn kernel:mflops

    Google Scholar 

  12. North, V.R.: Ia-64 code generation: http://citeseer.ist.psu.edu/385244.html

  13. Polychronopoulos, C.D., et al.: The structure of parafrase-2: an advanced parallelizing compiler for c and fortran. In: Selected papers of the second workshop on Languages and compilers for parallel computing, pp. 423–453 (1990)

    Google Scholar 

  14. Pugh, W.: The omega test: a fast and practical integer programming algorithm for dependence analysis. In: Supercomputing, pp. 4–13 (1991)

    Google Scholar 

  15. Qasem, A., Jin, G., Mellor-Crummey, J.: Improving performance with integrated program transformations. Technical Report TR03-419, Rice University (2003)

    Google Scholar 

  16. Rau, B.R., Glaese, C.D.: Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing. In: Proceeding of the 14th Annual Workshop on Microprogramming, October 1981, pp. 183–198 (1981)

    Google Scholar 

  17. Ramakrishna Rau, B.: Iterative modulo scheduling: An algorithm for software pipelining loops. In: MICRO, pp. 63–74 (1994)

    Google Scholar 

  18. Ramakrishna Rau, B.: Iterative-modulo-scheduling. In: HPL-94-115, November 22 (1995)

    Google Scholar 

  19. Warter, N.J., Lavery, D.M., Hwu, W.W.: The benefit of predicated execution for software pipelining. In: HICSS-26 Conference Proceedings, vol. 1 (January 1993)

    Google Scholar 

  20. Warter, N.J., et al.: Enhanced modulo scheduling for loops with conditional branches. In: The 25th Annual International Symposium on Microarchitecture, Portland, Oregon, ACM Press, New York (1992)

    Google Scholar 

  21. Warter, N.J., et al.: Reverse if-conversion. SIGPLAN Not. 28(6), 290–299 (1993)

    Article  Google Scholar 

  22. Wolfe, M.: The tiny loop restructuring research tool. In: Proceedings of the International Conference on Parallel Processing (1991)

    Google Scholar 

  23. Zaky, A.M.: Efficient Static Scheduling of Loops on Synchronous Multiprocessors. PhD thesis, Ohio State University, OH (1989)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Thomas Reps Mooly Sagiv Jörg Bauer

Rights and permissions

Reprints and permissions

Copyright information

© 2007 Springer Berlin Heidelberg

About this chapter

Cite this chapter

Ben-Asher, Y., Meisler, D. (2007). Towards a Source Level Compiler: Source Level Modulo Scheduling. In: Reps, T., Sagiv, M., Bauer, J. (eds) Program Analysis and Compilation, Theory and Practice. Lecture Notes in Computer Science, vol 4444. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-540-71322-7_16

Download citation

  • DOI: https://doi.org/10.1007/978-3-540-71322-7_16

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-71315-9

  • Online ISBN: 978-3-540-71322-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics