The main window centralizes most of the information of files, windows and their properties. The main window also allows navigating the main functionalities by the means of menus and buttons.
Every window is identified and their properties can be modified. The main window also allows creating/selecting/combining timelines or histograms.
The following image represents the main window during an analysis session:
The general arrangement of the different sections is as follows: at the top there's a menu bar and a button bar; below them there's the “Workspaces” section and the “Window browser” section and the “Files & Window Properties” section.
The menus and their entries follow general rules. They're separated by areas; some of them have associated shortcuts; others, ending with “...”, tells you that a dialog will be opened; those showing an arrow pointing to the right open submenus.
There are 3 menus, “File”, “Hints” and “Help”. Menu “Hints” may appear disabled if there's no loaded trace.
If you click the menu “File” what you get is:
Basically, the menu entries let the analyst load/unload traces, load Paraver Configuration Files (analysis views constructed as combinations of timelines or histograms), or load/save Sessions (a global analysis state snapshot). Also the user will be able to change the main wxParaver settings with Preferences.
Under “Hints” you'll find a two-level structure of menus related to your your current enabled Workspaces. The second level contains the analysis hints for it. In the example below, you see that only the MPI workspace is enabled.
Finally, the “Help” menu unfolds to the documentation and credits windows:
The main buttons appear grouped in three areas: windows creation, windows destruction and utilities, as shown below.
The first three buttons create single, derived timelines and histograms, the button with a red cross icon destroys the current selected window. Finally, the last two buttons open dialogs in order to cut/filter your trace or execute other tools.
Workspaces are sets of the most useful analyses and views and can be enabled or disabled at user request. Their state modify the “Hints” menu next time it's opened.
In the image below there are two active workspaces. The selection can be changed manually by clicking on the right button.
It provides information about the available windows for the selected trace.
The current trace is shown in the trace combo box. Changing the selector will show the windows for the new selected trace into the below windows section. Initially it may be empty if no window has been created or no configuration file has been loaded yet for that trace.
The icons on the left of every window entry describe the type of window. In the figure above there are:
Icon |
Type of Window |
|
Single timelines (the first one, or also the leafs of the derived timeline “MPI call duration”) |
|
Derived timelines (“MPI call duration” itself). The icons represents the function that the child windows use to compose the derived timeline. |
|
Histograms (the last one) |
Clicking on a timeline or a histogram entry selects it. Then, it's surrounded with a grey square (in the example image, “MPI call” timeline appears this way), their properties are fed back into the properties section and if the window itself is currently open, it rises.
Double-click instead shows/hides that window. Notice that being hidden is different from being destroyed (with the button with a red cross icon in the main buttons bar). If you destroy a window then you'll have to create it again if needed, while a hidden window remains loaded.
The tool also allows drag and drop operation picking one timeline into another to create a derived timeline, as if the second button seen in the previous Main icons bar section was clicked. The derived timeline dialog will be open.
Also, right click in a timeline or a histogram entry will open their popup menus.
The last section of the main window is used for two different purposes. These purposes are as a file browser and as a property editor of the current selected window.
You can change from one to the other clicking one of the two buttons on the top left. Left button is for files browser and right button is for window properties.
When “Files” button is clicked a simple file browser is shown. It can be used to navigate and double click to load a file. They can be filtered with the bottom selector between CFG files (*.cfg), Trace files (*.prv or *.prv.gz) or both.
When “Window Properties” button is clicked a collection of properties for the current selected window is shown. These properties depends whether it's a timeline, a derived timeline or a histogram. Every time another window's selected its properties are shown.
The following image depicts the properties of a single timeline:
This one is for the properties of a histogram window:
The properties are grouped under subsections that you can fold/unfold.
Every subsection contains a list of properties, with their names to the left and their values to the right. If you compare the two images above, for the timeline and the histogram, you'll see how fields and sections are varying depending on the type of window.
The value of a property can be changed by clicking into the right side of the property. Some properties get the data with text boxes, others from lists of values and others open intermediate dialogs.
When the value of a property is modified, the changes are brought inmediately to the window, so it would be recomputed again if needed.
There's a reduced set of main buttons in wxparaver focused on the main actions: create windows and invoke utilities/external tools.
They're basically divided between the main window and the histogram window.
Icon |
Action |
|
Creates a new timeline using the current trace (changeable with the trace selector). By default, the applied semantic is “State As Is” |
|
Opens the “Create Derived Timeline Window” Dialog |
|
Opens the “Create Histogram” Dialog |
|
Deletes selected timeline or histogram |
|
Opens the “Cut & Filter” Dialog |
|
Opens the “Run Application” Dialog |
|
Selects the “Files/Directories” view in the “Files & Window Properties” section |
|
Selects the “Window Properties” view in the “Files & Window Properties” section |
Icon |
Action |
|
Open the control timeline |
|
Open data timeline |
|
Open extra control window (in the main window, under Window Properties → 3D → 3rd Window) |
|
Zoom. It swaps the representation of the histogram between the numerical view and a more compact graphical one |
|
Opens a timeline showing only a subset of values. After clicking it, the mouse pointer turns into a crosshears icon. By drag and drop, you can set this range of values. |
|
View gradient colors for values |
|
Horizontal / Vertical. Turns 90º to swap rows and values axis |
|
Hydes / Shows empty columns |
|
Changes the color of the header labels of the colums |
|
Inclusive/Exclusive overlap accumulation mode (only with stacked values). When exclusive mode is set, overlapped values are substracted from base values. |
|
Sort columns following sort criteria (Default, Total, Average, Maximum, Minimum, StDev, Avg/Max) |
|
Change between decreasing/increasing order for the current sort criteria |
Using shortcuts keys in wxparaver is a good way to improve your productivity. As you'll see, most of them are generic for many applications, so probably you won't need any special effort to get used with them.
Some of the shortcut keys may vary depending on your operative system. This reference is written for GNU/Linux, so variations will explicitly tell for which OS happens. It's also possible that your desktop/virtual machine had them assigned. Current version of wxparaver can't override them.
The navigation through menus is done with the arrow keys and the Home/End keys, both for the main menu in the main window and for the contextual menus of timelines and histograms (after right click inside them).
Shortcut Keys |
Effect |
Up / Down arrows |
Navigate to previous / next menu item |
Home / End |
Navigate to first / last item of the menu |
Left / Right arrows |
Exit from or Enter to a submenu |
Enter / Space |
Select menu item |
Esc |
Close menu |
The interaction with wxparaver dialogs follow the usual dialog standards: Tab to move to next field, Space or Enter to change checkboxes or radiobuttons, and common textbox edition.
Shortcut Keys |
Effect |
Enter |
Intro value |
Tab |
Navigate to next active widget |
Shift + Tab |
Navigate to previous active widget |
Esc |
Cancel dialog and exit |
Ctrl + A (in textboxes) |
Select all |
Ctrl + Del (in textboxes) |
Delete to next dot/comma or to the end |
Left/Right arrows (in textboxes) |
Move cursor in text boxes |
Enter / Space (in radiobuttons or checkboxes) |
Check/uncheck radio button or checkbox |
Up / Down arrows (in spin controls) |
+1/-1 unit |
They mainly manage the dialogs for handling sessions and opening traces.
Shortcut Keys |
Effect |
Ctrl + I |
Open “Load Session” dialog |
Ctrl + DEL |
Delete currently selected timeline or histogram |
Ctrl + L (Windows only) |
Open “Load Session” dialog |
Ctrl + S |
Open “Save Session” dialog |
Ctrl + O |
Open trace file |
Ctrl + Q |
Quit wxparaver |
Esc |
Close menu / Cancel dialog |
Shortcut Keys |
Effect |
Ctrl + C |
Copy all properties (*) |
Ctrl + V |
Paste time, objects and window size properties (*) |
Drag & Drop |
Select a time range and zoom in |
Ctrl + Drag & Drop |
Select a region and zoom in |
Mouse Wheel |
Zoom in/out only in time axis |
Ctrl + Mouse Wheel |
Zoom in/out only in both axis (rows and time) |
Shift + Drag & Drop |
Pan only in time axis |
Ctrl + Shift + Drag & Drop |
Pan in both axis (rows and time) |
Ctrl + U |
Undo zoom/pan |
Ctrl + R |
Redo zoom/pan |
Ctrl + T |
Set/Unset timing mode |
Esc (while Drag & Drop) |
Abort current Drag & Drop |
Shortcut Keys |
Effect |
HOME |
Go to the top of the histogram (only in text view) |
END |
Go to the totals at the bottom of the histogram (only in text view) |
PAGE UP |
Scroll up (only in text view) |
PAGE DOWN |
Scroll down (only in text view) |
Ctrl + C |
Copy all properties (*) |
Ctrl + V |
Paste time, objects and window size properties (*) |
Drag & Drop |
Select a columns range and zoom in |
Ctrl + Drag & Drop |
Select a region and zoom in |
Ctrl + U |
Undo zoom |
Ctrl + R |
Redo zoom |
Esc (while Drag & Drop) |
Abort current Drag & Drop |
(*) After "Ctrl+C", "Ctrl+V" can be applied to the same kind of window as well as from timelines to histograms, and vice versa.
The objects selection window can be shown clicking the mouse right button both from timeline or histogram windows. The following pop-up menu is then shown:
After clicking the "Select Objects" option, the symbolic information about objects is shown in a selection dialog.
wxparaver reads these symbolic information from the .row file. It usually contains the names for the levels contained in the trace.
This dialog allows objects selection at available levels, separated in different tabs. They can be all checked/unchecked at the same time with buttons "Select All" and "Unselect All", or use "Invert" to swap checked/unchecked states.
A quick way to perform complex selection is by using the "Add checks by objects matching" box. After clicking the "Apply" button, the objects matching the regular expression written in the textbox will be checked.
All the selections or changes are cumulative. It is specially useful when we want a complex selection that can only be done by combining more than one regular expression. Then, just apply them one by one: write the first expression, click on the "Apply" button, and carry on with next expression. Of course, in any step it's possible to swap between Posix and Quick form for less or more general selections, or select some objects by directly clicking on them.
The objects default naming convention in EBNF is as follows:
No id level starts with 0. Some valid labels are: "TASK 2.24", "NODE 4", etc. The multilevel numeric suffix references the upper levels index in the defined hierarchy, i.e: "TASK 2.8" is task 8 of application 2, "THREAD 1.2.16" is the 16th thread of task 2 from the application 1.
Most of the times, in the instrumentation phase, Extrae can gather object names and properly label every object for all these levels. If it isn't able, then it will just apply this default labelling. Also, in analysis phase, if the .row file is missing, wxparaver will apply it.
It uses by default the Quick Form, a subset of Posix basic regular expression adapted to our object name conventions, mainly around dot selection and repetitive metachars like '*','+' or '?'. It widely covers the most common selection expressions. For more specific and complex selections that this form can't express, the second option is to directly use Posix Form (Posix basic regular expressions). It can be selected checking "Match as Posix Regular Expression" option. To see how they work, you can find a table with some examples below.
Quick form:
Reg. expression |
Card. |
Meaning |
. |
1 |
'.' (dot character) |
# |
1 |
Only one number |
? |
1 |
Only one character |
+ |
1-n |
One or many alfanumeric |
* |
0-n |
Zero or many alfanumeric |
^ |
0 |
Begin of expression |
$ |
0 |
End of expression |
[135] |
1 |
Set that matches specific numbers once |
[1-3] |
1 |
Range that matches numbers 1 to 3 once. Ranges allowed inside 0-9 |
TASK |
1 |
Matches the string 'TASK' |
Posix basic regular expression form:
Reg. expression |
Card. |
Meaning |
. |
1 |
Any character (use [.] for dot character) |
? |
0-n |
Zero or one repetition of preceeding item |
+ |
1-n |
One or many repetitions of preceeding item |
* |
0-n |
zero or many repetitions of preceeding item |
^ |
0 |
Begin of expression |
$ |
0 |
End of expression |
[135] |
1 |
Set that matches specific numbers once |
[1-3] |
1 |
Range that matches numbers 1 to 3 once. Ranges allowed inside 0-9 |
TASK |
1 |
Matches the string 'TASK' |
One important issue is about the presence of spaces at the end of this regular expression when writing in the textbox. Given that in some cases we explicitly want them, they're never trimmed, so it's important to be aware of that because they may totally change the selection.
The following examples compare Quick and pure Posix forms to highlight their differences. The same expressions are written for both of them. It shows how the Quick form is more compact in most of the use cases.
Some results can be matched in many ways (denoted by 'or'). Others can only be done by combining more than one expression (denoted with 'then').
Also note that when writing a 3-level expression it only can refer to threads matching them in an unique way. Nevertheless a 2-level one can match some labels at two levels, like, i.e, Quick form('1.*') matches 'THREAD 1.2.3' at app-task level but also matches 'THREAD 2.1.4' at task-thread level. Using parts of the string like 'THREAD', adding levels separator '.'/'[.]' (depending on Quick/Posix Form) or end of line '$' can solve these ambiguities.
Finally, an example is given to illustrate the existence of Posix Form regex without a compact translation to Quick Form. That happens due to the redefinition of iterative metacharacters {'*','?','+'}, changing their meaning from repetition of preceeding expressions to repetition of any numeric or alphanumeric, more general and handy but less detailed.
Examples:
Quick |
Posix |
Meaning |
Matches |
* |
.* |
Everything |
All objects (all strings) |
THREAD 1 or THREAD 1* |
THREAD 1 or THREAD 1.* |
All threads and all tasks from applications starting with 1 |
THREAD 1.1.1, THREAD 1.1.2 ..., , THREAD 11.2.3, THREAD 12.1.8 |
THREAD 1. |
THREAD 1[.] |
Any thread from any task for application 1 |
THREAD 1.1.1, THREAD 1.1.2 ..., THREAD 1.8.8 |
THREAD 1.[24][1-3].* |
THREAD 1[.][24][1-3][.].* |
Any thread from tasks 21, 22, 23, 41, 42, 43 for the application 1 |
THREAD 1.21.4, ..., THREAD 1.23.7, ..., THREAD 1.43.36 |
1.* |
1[.].* |
All objects with at least 2 levels with app or task level ending with 1 |
TASK 1.1, TASK 1.2, ... TASK 11.32, THREAD 1.2.3, THREAD 2.1.4, THREAD 11.7.8 |
*.*.1$ |
.*[.].*[.]1$ |
Only thread 1 of all tasks from all applications |
1.1.1, 1.2.1, 2.1.1, ..., 48.24.1 |
2.*.4$ |
2[.].*[.]4$ |
Only thread 4 of all tasks from application ending with 2 |
2.1.4, 2.2.4, 2.3.4, 12.1.4, 22.6.4 |
1.##.4$ |
1[.][0-9][0-9][.]4$ |
Only thread 4 of two digits tasks from application 1 |
1.10.4, 1.11.4, 1.12.4, ..., 1.24.4 (levels starting with 0 may match, by default there's none) |
2.[1-8].1$ |
2[.][1-8][.]1$ |
Only thread 1 of tasks 1 to 8 for application 2 |
2.1.1, 2.2.1, ..., 2.8.1 |
1.[1-8].1 or 1.[1-8].1* |
1[.][1-8][.]1 or 1[.][1-8][.]1.* |
Threads starting with 1 of tasks 1 to 8 |
1.1.1, 1.1.10, ..., 1.2.1, 1.2.10, ..., 1.8.16, THREAD 1.6.16 |
1.[124].1+ |
1[.][124][.]1[0-9]+ |
Threads with at least two digits long starting with 1 of tasks 1, 2, or 4 for application 1 |
1.1.10, 1.1.11, ..., 1.1.100, ..., 1.2.1, ..., 1.4.128, THREAD 1.4.13 |
CPU [1-9]$ then CPU [1-2]#$ then CPU 3[0-2]$ |
CPU [1-9]$ then CPU [1-2][0-9]$ then CPU 3[0-2]$ |
CPUs 1-9, then CPUs 10-29 and then CPUs 30-32 |
CPU 1, CPU 2, ..., CPU 32 |
^##.node4$ |
^[0-9][0-9][.]node4$ |
Objects starting with two digits and ending with suffix '.node4' |
00.node4, 01.node4, 02.node4 |
- |
THREAD 1[.]1+[.]2+ |
Threads uniquely composed by 2's from tasks only composed by 1's for application 1 |
THREAD 1.1.2, THREAD 1.1.22, THREAD 1.11.2, THREAD 1.11.22, THREAD 1.111.2, THREAD 1.111.22 |