Skip to main content

Optimizing the Use of High Performance Software Libraries

  • Conference paper
  • First Online:
Languages and Compilers for Parallel Computing (LCPC 2000)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2017))

Abstract

This paper describes how the use of software libraries, which is prevalent in high performance computing, can benefit from compiler optimizations in much the same way that conventional programming languages do. We explain how the compilation of these informal languages differs from the compilation of more conventional languages. In particular, such compilation requires precise pointer analysis, domain-specific information about the library’s semantics, and a configurable compilation scheme. We describe a solution that combines dataflow analysis and pattern matching to perform configurable optimizations.

This work was supported in part by NSF CAREERS Grant ACI-9984660, DARPA Contract #F30602-97-1-0150 from the US Air Force Research Labs, and an Intel Fellowship.

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. P.V. Artigas, M. G upta, S.P. Midkiff, and J.E. Moreira. High performance numerical computing in Java: language and compiler issues. In Workshop on Languages and Compilers for Parallel Computing, 1999.

    Google Scholar 

  2. G. Baker, J. Gunnels, G. Morrow, B. Riviere, and R. van de Geijn. PLAPACK: high performance through high level abstractions. In Proceedings of the International Conference on Parallel Processing, 1998.

    Google Scholar 

  3. A. Berlin and D. Weise. Compiling scientific programs using partial evaluation. IEEE Computer, 23(12):23–37, December 1990.

    Google Scholar 

  4. David R. Chase, MarkWegman, and F. Kenneth Zadeck. Analysis of pointers and structures. ACM SIGPLAN Notices, 25(6):296–310, June 1990.

    Article  Google Scholar 

  5. S. C hiba. A metaobject protocol for C++. In Proceedings of the Conference on Object Oriented Programming Systems, Languages and Applications, pages 285–299, October 1995.

    Google Scholar 

  6. Jong-Deok Choi, Michael Burke, and Paul Carini. Efficient flow-sensitive inter-procedural computation of pointer-induced aliases and side effects. In ACM Symposium on Principles of Programming Languages, pages 232–245, 1993.

    Google Scholar 

  7. Charles Consel and Olivier Danvy. Tutorial notes on partial evaluation. In ACM Symposium on Principles of Programming Languages, pages 493–501, 1993.

    Google Scholar 

  8. Patrick Cousot and Radhia Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511–547, August 1992.

    Article  MATH  MathSciNet  Google Scholar 

  9. Maryam Emami, Rakesh Ghiya, and Laurie J. Hendren. Context-sensitive interprocedural points-to analysis in the presence of function pointers. In ACMConference on Programming Language Design and Implementation, pages 242–256, June 20-24, 1994.

    Google Scholar 

  10. Dawson R. Engler. Incorporating application semantics and control into compilation. In Proceedings of the Conference on Domain-Specific Languages (DSL-97), pages 103–118, Berkeley, October15-17 1997. USENIX Association.

    Google Scholar 

  11. Message Passing Interface Forum. MPI: A message passing interface standard. International Journal of Supercomputing Applications, 8(3/4), 1994.

    Google Scholar 

  12. Rakesh Ghiya and Laurie J. Hendren. Connection analysis: A practical interprocedural heap analysis for C. International Journal of Parallel Programming, 24(6):547–578, December 1996.

    Google Scholar 

  13. Samuel Z. Guyer and Calvin Lin. An annotation language for optimizing software libraries. In Second Conference on Domain Specific Languages, pages 39–52, October 1999.

    Google Scholar 

  14. Samuel Z. Guyer and Calvin Lin. Broadway: A software architecture for scientific computing. In IFIPS Working Group 2.5: Software Architectures for Scientific Computing Applications, (to appear) October 2000.

    Google Scholar 

  15. Neil D. Jones and Flemming Nielson. Abstract interpretation: a semantics-based tool for program analysis. In Handbook of Logic in Computer Science. Oxford University Press, 1994. 527–629.

    Google Scholar 

  16. Florian Martin. PAG-an efficient program analyzer generator. International Journal on Software Tools for Technology Transfer, 2(1):46–67, 1998.

    Article  MATH  Google Scholar 

  17. Steven S. Muchnick. Advanced Compiler Design and Implementation. Morgan Kauffman, San Francico, CA, 1997.

    Google Scholar 

  18. M. Shapiro and S. Horwitz. The effects of the precision of pointer analysis. In 4th International Static Analysis Symposium, Lecture Notes in Computer Science, Vol. 1302, 1997.

    Google Scholar 

  19. Robert van de Geijn. Using PLAPACK-Parallel Linear Algebra Package. The MIT Press, 1997.

    Google Scholar 

  20. Daniel Weise and Roger Crew. Programmable syntax macros. In Proceedings of the Conference on Programming Language Design and Implementation, pages 156–165, June 1993.

    Google Scholar 

  21. Deborah Whitfield and Mary Lou Soffa. Automatic generation of global optimizers. ACM SIGPLAN Notices, 26(6):120–129, June 1991.

    Article  Google Scholar 

  22. Robert P. Wilson. Efficient, Context-sensitive Pointer Analysis for C Programs. PhD thesis, Stanford University, Department of Electrical Engineering, 1997.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2001 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Guyer, S.Z., Lin, C. (2001). Optimizing the Use of High Performance Software Libraries. In: Midkiff, S.P., et al. Languages and Compilers for Parallel Computing. LCPC 2000. Lecture Notes in Computer Science, vol 2017. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45574-4_15

Download citation

  • DOI: https://doi.org/10.1007/3-540-45574-4_15

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-42862-6

  • Online ISBN: 978-3-540-45574-5

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics