Capturing and Analyzing the Execution Control Flow of OpenMP Applications

  • Karl Fürlinger
  • Shirley Moore
Open Access


An important aspect of understanding the behavior of applications with respect to their performance, overhead, and scalability characteristics is knowledge of their execution control flow. High level knowledge of which functions or constructs were executed after which other constructs allows reasoning about temporal application characteristics such as cache reuse. This paper describes an approach to capture and visualize the execution control flow of OpenMP applications in a compact way. Our approach does not require a full trace of program execution events but is instead based on a straightforward extension to the summary data already collected by an existing profiling tool. In multithreaded applications each thread may define its own independent flow of control, complicating both the recording as well as the visualization of the execution dynamics. Our approach allows for the full flexibility with respect to independent threads. However, the most common usage models of OpenMP have threads operate in a largely uniform way, synchronizing frequently at sequence points and diverging only to operate on different data items in worksharing constructs. Our approach accounts for this by offering a simplified representation of the execution control flow for threads with similar behavior.


Performance analysis Control flow recording Control flow visualization Program phase detection 



This work was partially supported by US DOE SCIDAC grant #DE-FC02-06ER25761 (PERI) and NSF grant #07075433 (SDCI-POINT).

Open Access

This article is distributed under the terms of the Creative Commons Attribution Noncommercial License which permits any noncommercial use, distribution, and reproduction in any medium, provided the original author(s) and source are credited.


  1. 1.
    Nagel W.E., Arnold A., Weber M., Hoppe H.-C., Solchenbach K.: VAMPIR: visualization and analysis of MPI resources. Supercomputer 12(1), 69–90 (1996)Google Scholar
  2. 2.
  3. 3.
    Pillet, V., Labarta, J., Cortes, T., Girona, S.: PARAVER: a tool to visualise and analyze parallel code. In: Proceedings of WoTUG-18: Transputer and Occam Developments, vol. 44, pp. 17–31. IOS Press, Amsterdam (1995)Google Scholar
  4. 4.
    Levon, J.: OProfile, A system-wide profiler for Linux systems. Homepage:
  5. 5.
    Itzkowitz, M., Mazurov, O., Copty, N., Lin, Y.: An OpenMP runtime API for profiling. Accepted by the OpenMP ARB as an official ARB White Paper available online at
  6. 6.
    Browne S., Dongarra J., Garner N., Ho G., Mucci P.J.: A portable programming interface for performance evaluation on modern processors. Int. J. High Perform. Comput. Appl. 14(3), 189–204 (2000)CrossRefGoogle Scholar
  7. 7.
    Mohr, B., Malony, A.D., Shende, S.S., Wolf, F.: Towards a performance tool interface for OpenMP: an approach based on directive rewriting. In: Proceedings of the Third Workshop on OpenMP (EWOMP’01), September 2001Google Scholar
  8. 8.
    Weidendorfer, J., Kowarschik, M., Trinitis, C.: A tool suite for simulation based analysis of memory access behavior. In: ICCS 2004: 4th International Conference on Computational Science, vol. 3038 of LNCS, pp. 440–447. Springer (2004)Google Scholar
  9. 9.
    The graph::easy web page:
  10. 10.
    Jin, H., Frumkin, M., Yan, J.: The OpenMP implementation of NAS parallel benchmarks and its performance. Technical Report NAS-99-011 (1999)Google Scholar
  11. 11.
    Hernandez, O., Liao, C., Chapman, B.: Dragon: a static and dynamic tool for OpenMP. In: Proceedings of the Workshop on OpenMP Applications and Tools (WOMPAT 2004), pp. 53–66 (2004)Google Scholar

Copyright information

© The Author(s) 2009

Authors and Affiliations

  1. 1.Computer Science Division, EECS DepartmentUniversity of California at BerkeleyBerkeleyUSA
  2. 2.Innovative Computing Laboratory, EECS DepartmentUniversity of Tennessee, KnoxvilleKnoxvilleUSA

Personalised recommendations