The trend indicates ever increasing numbers of processors in supercomputers. To utilize them it is necessary to build scalable parallel software to distribute the workload. Such software requires communication and synchronization between the processes running on their respective processors. An approach to debug and analyze such software is to use event graphs. These directed graphs show the processes and the events occurring on them as well as their relations. Although event graphs are useful, they get hard to read for programs with complex communication behavior, long runtimes or large numbers of processes. An approach to ease this is to simplify the event graph by marking occurrences of well known communication structures. This allows to quickly identify different regions of activity and helps to identify parts, where certain communication patterns are expected but do not occur.
This work proposes a language for the description of such communication patterns, which allows to describe the patterns including variations. Furthermore it introduces an algorithm for detecting patterns in prerecorded event traces. Detecting the occurrences of a pattern is achieved by interpreting the description for creating a reference trace. Hashes for optimizing the search are used to find potential matches of the reference in the trace. These are then merged to instances of the described pattern. Based on this a variety of improvements for the processing and presentation of event graphs are imaginable. The pattern information could be used to optimize the analyzed program or to reduce the contents to areas of interest.