A Language for the Compact Representation of Multiple Program Versions

  • Sebastien Donadio
  • James Brodman
  • Thomas Roeder
  • Kamen Yotov
  • Denis Barthou
  • Albert Cohen
  • María Jesús Garzarán
  • David Padua
  • Keshav Pingali
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4339)


As processor complexity increases compilers tend to deliver suboptimal performance. Library generators such as ATLAS, FFTW and SPIRALz overcome this issue by empirically searching in the space of possible program versions for the one that performs the best. Empirical search can also be applied by programmers, but because they lack a tool to automate the process, programmers need to manually re-write the application in terms of several parameters whose best value will be determined by the empirical search in the target machine.

In this paper, we present the design of an annotation language, meant to be used either as an intermediate representation within library generators or directly by the programmer. This language that we call X represents parameterized programs in a compact and natural way. It provides an powerful optimization framework for high performance computing.


Compact Representation Library Generator Elementary Transformation Software Pipeline Tile Size 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Beckmann, O., Houghton, A., Kelly, P.H.J., Mellor, M.: Run-time code generation in c++ as a foundation for domain-specific optimisation. In: Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.) Domain-Specific Program Generation. LNCS, vol. 3016, pp. 291–306. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  2. 2.
    Calcagno, C., Taha, W., Huang, L., Leroy, X.: Implementing multi-stage languages using ASTs, Gensym, and reflection. In: ACM SIGPLAN/SIGSOFT Intl. Conf. Generative Programming and Component Engineering, GPCE 2003, pp. 57–76 (2003)Google Scholar
  3. 3.
    Chauhan, A., Kennedy, K.: Optimizing strategies for telescoping languages: procedure strength reduction and procedure vectorization. In: ACM Int. Conf. on Supercomputing (ICS 2004), June 2001, pp. 92–101 (2001)Google Scholar
  4. 4.
    Cohen, A., Donadio, S., Garzaran, M.-J., Padua, D., Herrmann, C.: In search for a program generator to implement generic transformations for high-performance computing. In: 1st MetaOCaml Workshop (associated with GPCE), Vancouver, British Columbia (October 2004)Google Scholar
  5. 5.
    Cohen, A., Girbal, S., Parello, D., Sigler, M., Temam, O., Vasilache, N.: Facilitating the search for compositions of program transformations. In: ACM Int. Conf. on Supercomputing (ICS 2005), Boston, Massachusetts (June 2005) (to appear)Google Scholar
  6. 6.
    Cooper, K.D., Subramanian, D., Torczon, L.: Adaptive Optimizing Compilers for the 21st Century. Journal of Supercomputing 23(1), 7–22 (2002)zbMATHCrossRefGoogle Scholar
  7. 7.
    Cooper, K.D., Waterman, T.: Investigating Adaptive Compilation using the MIPSPro Compiler. In: Proc. of the Symp. of the Los Alamos Computer Science Institute (October 2003)Google Scholar
  8. 8.
    De Rose, L., Padua, D.: Techniques for the translation of matlab programs into fortran 90. ACM Trans. on Programming Languages and Systems 21(2), 286–323 (1999)CrossRefGoogle Scholar
  9. 9.
    Djoudi, L., Barthou, D., Carribault, P., Lemuet, C., Acquaviva, J.-T., Jalby, W.: A new tool for assembler analysis and optimization on epic architecture. In: Proc. of the Epic Workshop (in conjunction with CGO 2005) (2005)Google Scholar
  10. 10.
    Frigo, M., Johnson, S.G.: FFTW: An adaptive software architecture for the FFT. In: Proc. of the ICASSP Conf., vol. 3, pp. 1381–1384 (1998)Google Scholar
  11. 11.
    Hall, M., et al.: Maximizing multiprocessor performance with the SUIF compiler. IEEE Computer 29(12), 84–89 (1996)Google Scholar
  12. 12.
    Kamin, S., Clausen, L., Jarvis, A.: Jumbo: run-time code generation for java and its applications. In: ACM Conf. on Code Generation and Optimization (CGO 2003), pp. 48–56 (2003)Google Scholar
  13. 13.
    Kennedy, K.: Telescoping languages: A compiler strategy for implementation of high-level domain-specific programming systems. In: Proc. Intl. Parallel and Distributed Processing Symposium (IPIPS 2000), pp. 297–304 (2000)Google Scholar
  14. 14.
    Kisubi, P., Knijnenburg, P.M.W., O’Boyle, M.F.P.: The Effect of CacheModels on Iterative Compilation for Combined Tiling and Unrolling. In: Proc. of the International Conference on Parallel Architectures and Compilation Techniques, pp. 237–246 (2000)Google Scholar
  15. 15.
    Kisuki, T., Knijnenburg, P., O’Boyle, M., Wijshoff, H.: Iterative compilation in program optimization. In: Proc. CPC’10 (Compilers for Parallel Computers), pp. 35–44 (2000)Google Scholar
  16. 16.
    Lengauer, C., Batory, D., Consel, C., Odersky, M. (eds.): Domain-Specific Program Generation. LNCS, vol. 3016. Springer, Heidelberg (2004)Google Scholar
  17. 17.
    Li, X., Garzaran, M.-J., Padua, D.: A dynamically tuned sorting library. In: ACM Conf. on Code Generation and Optimization (CGO 2004), San Jose, CA, March 2004, pp. 111–124 (2004)Google Scholar
  18. 18.
    Parello, D., Temam, O., Cohen, A., Verdun, J.-M.: Towards a systematic, pragmatic and architecture-aware program optimization process for complex processors. In: ACM Supercomputing 2004, Pittsburgh, Pennsylvania, November 2004, p. 15 (2004)Google Scholar
  19. 19.
    Poletto, M., Hsieh, W.C., Engler, D.R., Kaashoek, M.F.: C and tcc: A language and compiler for dynamic code generation. ACM Trans. on Programming Languages and Systems 21(2), 324–369 (1999)CrossRefGoogle Scholar
  20. 20.
    Puschel, M., Moura, J., Johnson, J., Padua, D., Veloso, M., Singer, B., Xiong, J., Franchetti, F., Gacic, A., Voronenko, Y., Chen, K., Johnson, R.W., Rizzolo, N.: SPIRAL: Code Generation for DSP Transforms. Proceedings of the IEEE (2005) (to appear); Special issue on Program Generation, Optimization, and Adaptation Google Scholar
  21. 21.
    Puschel, M., Singer, B., Xiong, J., Moura, J.M.F., Johnson, J., Padua, D., Veloso, M.M., Johnson, R.W.: SPIRAL: A Generator for Platform-Adapted Libraries of Signal Processing Algorithms. Journal of High Performance Computing and Applications, special issue on Automatic Performance Tuning 18(1), 21–45 (2004)CrossRefGoogle Scholar
  22. 22.
    Schordan, M., Quinlan, D.J.: A source-to-source architecture for user-defined optimizations. In: Böszörményi, L., Schojer, P. (eds.) JMLC 2003. LNCS, vol. 2789, pp. 214–223. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  23. 23.
    Smith, M.D.: Overcoming the challenges to feedback-directed optimization. In: ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization, pp. 1–11 (2000) (Keynote Talk)Google Scholar
  24. 24.
    Taha, W.: Multi-Stage Programming: Its Theory and Applications. PhD thesis, Oregon Graduate Institute of Science and Technology (November 1999)Google Scholar
  25. 25.
    Veldhuizen, T.: Using C++ template metaprograms. C++ Report 7(4), 36–43 (1995)Google Scholar
  26. 26.
    Veldhuizen, T., Gannon, D.: Active libraries: Rethinking the roles of compilers and libraries. In: SIAM Workshop on Object Oriented Methods for Inter-operable Scientific and Engineering Computing, October 1998, pp. 21–23 (1998)Google Scholar
  27. 27.
    Whaley, R.C., Petitet, A., Dongarra, J.J.: Automated Empirical Optimization of Software and the ATLAS Project. Parallel Computing 27(1-2), 3–35 (2001); also available as University of Tennessee LAPACK Working Note #147, UT-CS-00-448 (2000),
  28. 28.
  29. 29.
    Yotov, K., Li, X., Ren, G., Cibulskis, M., DeJong, G., Garzarán, M., Padua, D., Pingali, K., Stodghill, P., Wu, P.: A Comparison of Empirical and Model-driven Optimization. In: Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation, pp. 63–76. ACM Press, New York (2003)CrossRefGoogle Scholar
  30. 30.
    Yotov, K., Li, X., Ren, G., Garzarán, M., Padua, D., Pingali, K., Stodghill, P.: Is Search Really Necessary to Generate High-Performance BLASs? Proceedings of the IEEE 93(2), 358–386 (2005); Special issue on Program Generation, Optimization, and Adaptation CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Sebastien Donadio
    • 1
    • 2
  • James Brodman
    • 4
  • Thomas Roeder
    • 5
  • Kamen Yotov
    • 5
  • Denis Barthou
    • 2
  • Albert Cohen
    • 3
  • María Jesús Garzarán
    • 4
  • David Padua
    • 4
  • Keshav Pingali
    • 5
  1. 1.BULL SA 
  2. 2.University of Versailles St-Quentin-en-Yvelines 
  3. 3.INRIA Futurs 
  4. 4.University of Illinois at Urbana-Champaign 
  5. 5.Cornell University 

Personalised recommendations