Vampir 9.4

Information Filtering and Reduction

The available filter and their respective filter criteria are summarized in Table LINK.

Filtered ObjectFilter Criteria
ProcessesProcess Groups
Communicators
Process Hierarchy
Representative Processes
MessagesMessage Communicators
Message Tags
FunctionsName
Duration
Number of Invocations
Collective OperationsCommunicators
Collective Operations
I/O EventsI/O Groups
File Names
Operation Types

Object Filtering Options

Note: The available selection methods are the same across all filter dialogs (except the Function Filter). The check box Include/Exclude All either selects or deselects every item. Specific items can be selected/deselected by clicking into the check box next to it. Furthermore, it is possible to select/deselect multiple items at once. For this, mark the desired entries by clicking their names while holding either the Shift or the Ctrl key. By holding the Shift key every item between the two clicked items will be marked. Holding the Ctrl key, on the other hand, enables you to add or remove specific items from/to the marked ones. Clicking into the check box of one of the marked entries will cause selection/deselection for all of them.

Process Filter

Process Filter
Process Filter

Figure LINK shows a typical process representation in the Process Filter dialog. Processes can be filtered by their Process Hierarchy, Communicators, Process Group, and Representative Processes. Items to be filtered are arranged in a spreadsheet representation. In addition to selecting or deselecting an entire group of processes, it is also possible to filter single processes.

Message and Collective Operations Filter

Message Filter
Message Filter

Figure LINK shows a Message Filter dialog. This dialog allows to filter messages from the displayed trace data. Available options are to select/deselect messages based on their Message Tag or Message Communicator. The default is to show all messages. The Collectives Filter is designed accordingly. It allows to filter collective operations from the displayed trace data. The collectives can be filtered by their Communicator or their Collective Operation type.

I/O Filter

I/O Filter
I/O Filter

Figure LINK depicts the I/O Filter dialog. The dialog allows to selectively filter I/O events displayed in timelines and statistics. Available filter criteria are I/O Groups or the I/O Operation Type. It is also possible to filter I/O operations based on input and output files.

Function Filter

The filtering of functions in Vampir is controlled via the Function Filter Dialog, which can be accessed via the main menu under Filter -> Functions.... Initially, a list of available rule sets is depicted as can be seen in Figure LINK. By default, the list only shows a None entry. It can only be one filter active at a given time. To select the active filter use the radio buttons on the left hand side of the list. Clicking on the Add button creates a new set of rules and shows the input mask depicted in Figure LINK.

Function Filter Dialog with List of Rule Sets
Function Filter Dialog with List of Rule Sets

The Function Filter Dialog is build on the concept of filter rules. The user can define several individual rules. The rules are explained in more detail in Chapter LINK. The header of the dialog defines how multiple rules are evaluated. One possibility is to build up the filter in a way that combines the filter rules with an and relation. To choose this mode all must be selected in the combo box in the header of the dialog. This means that all rules must evaluate to true in order to produce the filter output. The other option is to combine the rules with an or relation. To choose this mode any must be selected in the combo box in the header of the dialog. In this case any rule must be evaluate to true in order to produce the filter output. The examples in Chapter LINK illustrate both modes.

Function Filter Dialog with Rule Set
Function Filter Dialog with Rule Set

Filter Options

This chapter explains the various options available to build up filter rules.

Filtering Functions by Name

One way of filtering functions is by their name. This filter mode provides two different options.

Name provides a text field for an input string. Depending on the options, all functions whose names match the input string are shown. The matching is not case sensitive.

Available options:

  • Contains: The given input string must occur in the function name.
  • Does not contain: The given input string must not occur in the function name.
  • Is equal to: The given input string must be the same as the function name.
  • Is not equal to: The given input string must not be the same as the function name.
  • Begins with: The function name must start with the given input string.
  • Ends with: The function name must end with the given input string.

List of Names provides a dialog that allows to directly select the desired set of functions and function groups.

Available options:

  • Contains: The selected functions are shown.
  • Does not contain: The selected functions are filtered.

Filtering Functions by Duration

Functions can also be filtered by their duration. Duration of a function refers to the time spent in this function from the entry to the exit of the function.

There are two options available:

  • Is greater than: All functions whose duration time is longer than the specified time are shown.
  • Is less than: All functions whose duration time is shorter than the specified time are shown.

Filtering Functions by Number of Invocations

The number of invocations of a function can also be used as filter rule. This criteria refers to how often a function is executed in an application. There are two possible filter rules in this mode.

Number of Invocations shows functions based on their total number of invocations in the whole application run.

There are two options available:

  • Is greater than: All functions whose number of invocations is greater than the specified number are shown.
  • Is less than: All functions whose number of invocations is less than the specified number are shown.

Number of Invocations per Process shows functions based on their individual number of invocations per process. Hence, if the number of invocations of a function varies over different processes, this function might be shown for some processes and filtered for others.

There are two options available:

  • Is greater than: All functions whose number of invocations is greater than the specified number are shown.
  • Is less than: All functions whose number of invocations is less than the specified number are shown.

Filtering Functions by Call Path

The Call Path filter provides a string input field for a pattern. Depending on the options, all functions with their related events are shown which satisfy a substring match against the given pattern.

This filter mode provides two opposing options:

  • Contains: The call path must contain a function where the given pattern must occur in the functions name. This specifically means that functions that lead to the matched function won't be shown anymore. The matched function itself along with its possibly called sub-functions is still shown. All other call paths that do not contain a matched function are filtered out as well and won't be shown.
  • Does not contain: The call path must not contain a function where the given pattern occurs in the function name. This specifically means that only functions that lead to the matched function will be shown, excluding the matched function itself as well as its possibly called sub-functions. Call paths that do not contain a matched function are still shown and remain unaffected by the filter.

Filtering Functions by Call Level

Functions can also be filtered by their Call Level. This filter mode provides a number input field to select the call level.

Available options:

  • Is greater than: All functions whose enter event is higher than the specified level are shown.
  • Is less than: All functions whose enter event is lower than the specified level are shown.

Examples

In this chapter a few examples explain the usage of the function filter. This enables the user to understand the basic principles of function filtering in Vampir at a glace. It also illustrates a part of the set of available filter options provided by Vampir.

Unfiltered Trace File

This section introduces the example trace file in an unfiltered state. The timelines show a part of the initialization of the WRF weather forecast code. The red color corresponds to communication (MPI), whereas the purple areas represent some input functions of the weather model.

Master Timeline and Process Timeline without filtering
Master Timeline and Process Timeline without filtering

Showing only MPI Functions

In this example only functions that contain the string mpi (not case sensitive) somewhere in their name are shown. Since only MPI functions start with MPI in their name this filter setting shows all MPI functions and filters the others.

Showing only MPI 1Showing only MPI 2
Showing only MPI

Showing only Functions with at least 250 ms Duration

This example demonstrates the filtering of functions by their duration. Here only long function occurrences with a minimum duration time of 250 ms are shown. All other functions are filtered.

Showing only functions with more than 250 ms duration 1Showing only functions with more than 250 ms duration 2
Showing only functions with more than 250 ms duration

Combining Function Name and Duration Rules

This example combines the two previous rules. First the any relation is used. Thus, the filter shows all functions that have at least 250 ms duration time and additionally also all MPI functions.

Combining rules using //any// 1Combining rules using //any// 2
Combining rules using any

The second example illustrates the usage of the all relation. Here all shown functions have to satisfy both rules. Therefore the filter shows only MPI functions that have a duration time of more than 250 ms.

Combining rules using //all// 1Combining rules using //all// 2
Combining rules using all

Building Ranges with Number of Invocation Rules

The combination of rules also allows for the filtering of functions in a specified criteria range. The following example filter setup shows all functions whose number of invocations lie inside the range between 2000 and 15000.

Show functions inside a specified range 1Show functions inside a specified range 2
Show functions inside a specified range

This example demonstrates the opposite behavior of the previous example. Here all functions whose number of invocations lie outside the range between 2000 and 15000 are shown, i.e., functions with less than 2000 invocations and functions with more than 15000 invocations.

Show functions outside a specified range 1Show functions outside a specified range 2
Show functions outside a specified range

Call Path contains WRF_INPUTIN

In this example only functions that are called, directly or indirectly, by WRF_INPUTIN are shown. As a consequence all call paths start with WRF_INPUTIN. All other functions are filtered.

Call path filter which contains ##WRF_INPUTIN## 1Call path filter which contains ##WRF_INPUTIN## 2
Call path filter which contains WRF_INPUTIN

Call Path does not contain WRF_INPUTIN

This example demonstrates the opposite behavior of the previous example. In call paths that contain the function WRF_INPUTIN, only functions that lead to WRF_INPUTIN are shown. The function WRF_INPUTIN itself and their, directly or indirectly, called sub-functions are filtered. Other call paths remain unaffected by the filter and are still shown.

Call path filter which does not contain ##WRF_INPUTIN## 1Call path filter which does not contain ##WRF_INPUTIN## 2
Call path filter which does not contain WRF_INPUTIN

Showing only Functions until a certain Call Level

This example demonstrates the filtering of functions by their call level. Here only functions with an enter event less then call level five are shown. All other functions are filtered.

Showing only functions with a call level less than five 1Showing only functions with a call level less than five 2
Showing only functions with a call level less than five