A Generic and Configurable Source-Code Instrumentation Component

  • Markus Geimer
  • Sameer S. Shende
  • Allen D. Malony
  • Felix Wolf
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5545)


A common prerequisite for a number of debugging and performance-analysis techniques is the injection of auxiliary program code into the application under investigation, a process called instrumentation. To accomplish this task, source-code preprocessors are often used. Unfortunately, existing preprocessing tools either focus only on a very specific aspect or use hard-coded commands for instrumentation. In this paper, we examine which basic constructs are required to specify a user-defined routine entry/exit instrumentation. This analysis serves as a basis for a generic instrumentation component working on the source-code level where the instructions to be inserted can be flexibly configured. We evaluate the identified constructs with our prototypical implementation and show that these are sufficient to fulfill the needs of a number of todays’ performance-analysis tools.


Message Passing Interface Code Fragment Abstract Syntax Tree Code Snippet Intermediate Language 
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.


  1. 1.
    Shende, S.S., Malony, A.D.: The TAU parallel performance system. International Journal of High Performance Computing Applications 20(2), 287–331 (Summer 2006)CrossRefGoogle Scholar
  2. 2.
    MPI Forum: MPI – A Message-Passing Interface Standard, Version 2.1. ch.14 (June 2008)Google Scholar
  3. 3.
    MPI PERUSE: An MPI extension for revealing unexposed implementation information (May 2006),
  4. 4.
    Leko, A., Bonachea, D., Su, H.H., George, A.D.: GASP: A performance analysis tool interface for global address space programming models, specification version 1.5. Technical Report LBNL-61606, Lawrence Berkeley National Lab (September 2006)Google Scholar
  5. 5.
    Free Software Foundation: GCC 4.3.2 manual – options for code generation conventions (2008),
  6. 6.
    Buck, B., Hollingsworth, J.K.: An API for runtime code patching. Journal of High Performance Computing Applications 14(4), 317–329 (2000)CrossRefGoogle Scholar
  7. 7.
    De Rose, L., Hoover Jr., T., Hollingsworth, J.K.: The dynamic probe class library – an infrastructure for developing instrumentation for performance tools. In: Proc. 15th International Parallel & Distributed Processing Symposium (IPDPS 2001), Washington, DC. IEEE Computer Society, Los Alamitos (2001)Google Scholar
  8. 8.
    Mohr, B., Malony, A.D., Shende, S., Wolf, F.: Design and prototype of a performance tool interface for OpenMP. The Journal of Supercomputing 23, 105–128 (2002)CrossRefzbMATHGoogle Scholar
  9. 9.
    Schordan, M., Quinlan, D.: 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
  10. 10.
    Lindlan, K.A., Cuny, J., Malony, A.D., Shende, S., Mohr, B., Rivenburgh, R.: A tool framework for static and dynamic analysis of object-oriented software with templates. In: Proc. SC 2000: High Performance Networking and Computing Conference (November 2000)Google Scholar
  11. 11.
    Meyers, S.: More Effective C++. Addison-Wesley, Reading (1996) (Item 9)Google Scholar
  12. 12.
    Geimer, M., Wolf, F., Wylie, B.J.N., Mohr, B.: Scalable paralle trace-based performance analysis. In: Mohr, B., Träff, J.L., Worringen, J., Dongarra, J. (eds.) PVM/MPI 2006. LNCS, vol. 4192, pp. 303–312. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  13. 13.
    Knüpfer, A., Brunst, H., Doleschal, J., Jurenz, M., Lieber, M., Mickler, H., Müller, M.S., Nagel, W.E.: The Vampir performance analysis tool set. In: Resch, M., Keller, R., Himmler, V., Krammer, B., Schulz, A. (eds.) Tools for High Performance Computing, pp. 139–155. Springer, Heidelberg (2008)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Markus Geimer
    • 1
  • Sameer S. Shende
    • 2
  • Allen D. Malony
    • 2
  • Felix Wolf
    • 1
    • 3
  1. 1.Jülich Supercomputing CentreForschungszentrum JülichGermany
  2. 2.Department of Computer and Information ScienceUniversity of OregonEugeneUSA
  3. 3.Department of Computer ScienceRWTH Aachen UniversityGermany

Personalised recommendations