Program execution graph

The program execution graph is the core data structure of the DiscoPoP explorer and combines statically as well as dynamically obtained information, described in detail in profiling and instrumentation output, into a single graph structure.

Structure

Nodes in the graph represent functions, loops, or computational units. Computational units are connected via successor edges to represent the executed after relation. Computational units are connected to functions and loops via child edges, representing a contained in relation. Data dependences among computational units are depicted via dependency edges. Functions can be connected to computational units via calling edges to represent functions calls.

Use case

Due to the amount of information encoded in this graph structure, it is possible to obtain a accurate depiction of the programs behavior on an abstract level. This abstraction allows the generation of general parallelization suggestions on the basis of small input data, as long as the input represents the behavior of a typical production run of the software. In order to identify parallel patterns from the program execution graph, analysis methods described in detail in the published papers are applied. Please refer to these publications for further detail, or contact us directly.


Copyright © 2022, Technical University of Darmstadt.