Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alternate mode #5

Open
wants to merge 96 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
96 commits
Select commit Hold shift + click to select a range
852c0bf
Add new custom colors
Azera5 Jun 5, 2023
f1b7167
Update README.md
Azera5 Jun 6, 2023
493b0a4
Added feature to save custom colors in config file
Azera5 Jun 28, 2023
ce835a0
stats 1.0
Jun 30, 2023
6f3e95a
stats 1.0 #fix: stats file was in /build
Jun 30, 2023
f04e5ee
Merge pull request #1 from Azera5/Tests
Azera5 Jun 30, 2023
2b73220
fix clearRecentMenuAction
Azera5 Jun 30, 2023
6edddb6
Merge pull request #2 from Azera5/custom-colors_temp
Azera5 Jun 30, 2023
8541d29
stats 2.0 (better logging & tool calibration)
Jul 11, 2023
b927459
stats 2.0 #fix: color inconsistencies
Jul 11, 2023
c72d61e
stats 2.0 #fix: git features
Jul 11, 2023
8a09bac
Add globalColors config
Azera5 Jul 11, 2023
9d9b258
Merge pull request #3 from Azera5/Tests
Azera5 Jul 11, 2023
566fba6
stats 2.0 #fix: paths/config & clean-up
Jul 12, 2023
3b78989
Merge pull request #4 from Azera5/Tests
Azera5 Jul 12, 2023
eeb485b
Update Collective Communications
Azera5 Jul 20, 2023
d2c994d
Prototype
Jul 20, 2023
1ed7540
Prototype
Azera5 Jul 20, 2023
c00defc
Merge branch 'VerticalZoom+Threads' into Threads
Azera5 Jul 20, 2023
8ab41c0
Threads 1.0
Jul 29, 2023
449105e
Threads 1.0 #fix: more robust label handling
Jul 29, 2023
cfb3980
Threads 1.0 #fix: tooltips
Jul 29, 2023
a01febe
Threads 2.0 #support for MPI_THREAD_SER./MULT.
Aug 5, 2023
a5a1666
Threads #try-catch variation
Aug 6, 2023
2333794
Threads 2.0 #restoration
Aug 6, 2023
d2160ee
Threads 2.0 #fix: scroll behavior
Aug 10, 2023
785712d
Temporary debug version: Disappearing slots
Azera5 Aug 10, 2023
7afce2a
Threads 2.0 #fix: rank label autofit
Aug 13, 2023
645e6d7
UI Update
Azera5 Aug 13, 2023
2f79c5c
Merge branch 'Threads' into search
Azera5 Aug 13, 2023
440a28f
Flamegraph #basic structures
Aug 17, 2023
21025a3
Flamegraph #prototype
Aug 26, 2023
50de087
Add search functionality
Azera5 Aug 26, 2023
2d1ed1a
Merge remote-tracking branch 'origin/Flamegraph' into Prototype
Azera5 Aug 26, 2023
37721cc
Prototype# ireceive bug workaround
Azera5 Aug 26, 2023
de545b1
Prototype #slider & fixes for context menu
Aug 27, 2023
f91f2cf
Prototype #variant for screenshots
Aug 28, 2023
17c8d1f
small details
Aug 31, 2023
30b5f37
Prototype #version
Sep 3, 2023
37bed49
Prototype #preparation for branching
Sep 10, 2023
80baf80
Prototype #refactoring
Sep 13, 2023
d537f61
update Search
Azera5 Sep 14, 2023
37ee4c7
Prototype #refactoring & partial fix for Issue#8
Sep 22, 2023
7cf0d87
Prototype #fix for issue #7 (flamegraph rendering)
Sep 24, 2023
decc09b
Prototype #debugging log
Sep 25, 2023
021d462
Non-blocking communication fix
Azera5 Oct 18, 2023
b5b3263
ColorGenerator fix
Azera5 Oct 19, 2023
4e135ab
GrayFilter removed
Azera5 Oct 19, 2023
d3092de
Prototype #debugging log & refactoring
Oct 21, 2023
8bd55c1
Prototype #new performance settings & refactoring
Oct 25, 2023
bce4d03
Merge remote-tracking branch 'origin/Debug_MPI_Irecv' into Prototype
Oct 25, 2023
f6612a4
Prototype #performance integrated into settings
Oct 25, 2023
597911c
Add MPI communication filters
Azera5 Nov 1, 2023
a1d0737
Minor fixes and author update
Azera5 Nov 1, 2023
9bf3119
Prototype #sliders & visual P2P-toggle indication
Nov 3, 2023
a398d61
Merge remote-tracking branch 'origin/CommunicationFilter' into Prototype
Nov 3, 2023
32f1640
Prototype #minor fixes
Nov 4, 2023
459622a
Prototype #minor fixes
Nov 4, 2023
a1a2b70
Prototype #license update
Nov 5, 2023
0ecbbed
Prototype #tests
Nov 7, 2023
04f45ec
Prototype #final adjustments
Nov 8, 2023
59a8253
Prototype #test_selection
Nov 8, 2023
a4f005f
Prototype #slider descr & tooltips
Nov 10, 2023
5e5d99e
Prototype #minor fixes (header,scrolling,offsets)
Nov 16, 2023
77f0514
Prototype #tooltip corrections (typos, duration)
Nov 16, 2023
62c5b7a
Merge branch 'Prototype' into main+Prototype
Nov 16, 2023
5170239
minor fix
Nov 16, 2023
94d43ec
help update
Nov 16, 2023
03afe24
small update changes
Nov 16, 2023
3b1adab
update version
Nov 17, 2023
d2452d1
minor fixes
Nov 17, 2023
8de2c80
test icon-bugfix
Feb 3, 2024
a4bdaa6
test-2
Feb 4, 2024
44b0736
test-3
Feb 4, 2024
269ec00
test-3
Feb 4, 2024
9d7133f
test-4
Feb 4, 2024
f89fa5e
test-5
Feb 4, 2024
67b2c73
test-5b
Feb 4, 2024
c5b7c42
test-5c
Feb 4, 2024
c58dbf9
test-5d
Feb 4, 2024
6dd0f0b
test-5e
Feb 4, 2024
c9cdc93
test-5f
Feb 4, 2024
9c04f92
test-5g
Feb 4, 2024
5c1ab88
test 5g-fix
Feb 4, 2024
d051908
build_test_a
Feb 4, 2024
c4c572e
stats fix, dynamic binary location
Feb 4, 2024
585b172
minor fix
Feb 4, 2024
1934cfd
minor fix + typo correction
Feb 4, 2024
1b1743b
2.2.0 - Added alternate visualization mode
Azera5 Feb 5, 2024
535da8e
2.2.0 - Minor fix for non-blocking P2P communication
Azera5 Feb 5, 2024
da2240b
version update
Feb 7, 2024
beaec2b
2.2.0 - Minor fix for collective communication
Azera5 Mar 15, 2024
7ed363e
2.2.0 - Update LogicalClock, Node and MpiAnalysisWindow
Azera5 Mar 30, 2024
f4df9be
2.2.0 - minor fixes
Azera5 May 28, 2024
afcb788
2.2.0 - Added license notices
Azera5 May 28, 2024
cfe6480
Merge remote-tracking branch 'origin/main+Prototype' into AlternateMode
Azera5 Jul 31, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
.cache
build
cmake-build-debug
stats/*
!stats/stats
!stats/stats.cfg


.vscode
.idea
Expand Down
19 changes: 18 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required(VERSION 3.19)

project(motiv VERSION 1.0.0 LANGUAGES CXX)
project(motiv VERSION 2.2.0 LANGUAGES CXX)

set(PROJECT_SOURCE_URL https://github.com/parcio/motiv)
set(PROJECT_ISSUES_URL ${PROJECT_SOURCE_URL}/issues)
Expand All @@ -27,8 +27,10 @@ set(PROJECT_SOURCES
src/ReaderCallbacks.cpp
src/main.cpp
src/models/AppSettings.cpp
src/models/ColorMap.cpp
src/models/Filetrace.cpp
src/models/Filter.cpp
src/models/Search.cpp
src/models/Slot.cpp
src/models/SubTrace.cpp
src/models/UITrace.cpp
Expand All @@ -43,6 +45,7 @@ set(PROJECT_SOURCES
src/models/communication/NonBlockingReceiveEvent.cpp
src/models/communication/NonBlockingSendEvent.cpp
src/models/communication/RequestCancelledEvent.cpp
src/models/mpianalysis/Node.cpp
src/ui/ColorGenerator.cpp
src/ui/ColorSynchronizer.cpp
src/ui/widgets/InformationDock.cpp
Expand All @@ -51,7 +54,9 @@ set(PROJECT_SOURCES
src/ui/TraceDataProxy.cpp
src/ui/views/CollectiveCommunicationIndicator.cpp
src/ui/views/CommunicationIndicator.cpp
src/ui/views/FlamegraphView.cpp
src/ui/views/GenericIndicator.cpp
src/ui/views/NodeIndicator.cpp
src/ui/views/SlotIndicator.cpp
src/ui/views/TimelineView.cpp
src/ui/views/TraceOverviewTimelineView.cpp
Expand All @@ -68,10 +73,15 @@ set(PROJECT_SOURCES
src/ui/widgets/infostrategies/InformationDockElementBaseStrategy.cpp
src/ui/widgets/infostrategies/InformationDockSlotStrategy.cpp
src/ui/widgets/infostrategies/InformationDockTraceStrategy.cpp
src/ui/widgets/mpianalysis/LogicalClock.cpp
src/ui/windows/FilterPopup.cpp
src/ui/windows/FlamegraphPopup.cpp
src/ui/windows/MainWindow.cpp
src/ui/windows/MpiAnalysisWindow.cpp
src/ui/windows/Otf2FileDialog.cpp
src/ui/windows/RecentFilesDialog.cpp
src/ui/windows/SearchPopup.cpp
src/ui/windows/SettingsPopup.cpp
src/utils.cpp
)

Expand Down Expand Up @@ -109,3 +119,10 @@ install(TARGETS ${PROJECT_NAME}
BUNDLE DESTINATION .)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/motiv.desktop DESTINATION share/applications)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/motiv.png DESTINATION share/icons)
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/res/buttons/book.png DESTINATION share/icons/buttons)

file(GLOB BUTTON_PNG_FILES "${CMAKE_CURRENT_SOURCE_DIR}/res/buttons/*.png")
foreach(PNG_FILE ${BUTTON_PNG_FILES})
install(FILES ${PNG_FILE} DESTINATION share/icons/buttons)
endforeach()

2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ The code documentation is generated and available at [parcio.github.io/motiv](ht
MOTIV is licensed under GPL v3 or later. The license is available [here](COPYING).

[Jellyfish icon](https://www.flaticon.com/free-icons/jellyfish) created by [Freepik](https://www.flaticon.com/authors/freepik) from [Flaticon](https://www.flaticon.com/).

[Buttons](https://commons.wikimedia.org/wiki/Tango_icons).
Binary file added res/buttons/book.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/minus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/plus.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/plus_grey.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/refresh.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/zoom_fit.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/zoom_in.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added res/buttons/zoom_out.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
97 changes: 57 additions & 40 deletions res/help.md
Original file line number Diff line number Diff line change
@@ -1,41 +1,58 @@
# Views

## Central view
In the center a visualisation of the otf2 trace is shown.

**Each line** represents the function calls in an MPI rank.

**Each block** represents a function call. Nested calls are shown on top. To see an entire call hover over it. The color of the block indicates its type. By default, these are:
- MPI calls: green
- OpenMP calls: red
- Any other calls: grey

**Arrows** depict MPI communications between ranks.

**Rectangles** stretching over all ranks show collective operations.

## Overview
On the top an overview of the whole trace is shown. The current selected time window is highlighted.


# Usage

## Navigating the view

Use `CTRL` and scroll to **zoom in and out**. Use `SHIFT` and scroll to **move the view horizontally**. Reset the view with *View -> Reset* zoom or press `CTRL+R`. Alternatively, input the start and / or end time in the fields at the bottom of the view and press `ENTER` to zoom to a precise time window.

In addition, click and drag a selection in the overview to select a time window.

## Interactions

Click on any element to see more information on it in the right pane. Click the *Zoom into view* button to zoom to the current selected item.

## Filter

Use *View -> Filter* or press `CTRL+S` to open a filter window.

### Filter function call types

Check or uncheck the kinds of functions that should be shown.

### Basic controls
#### Notable shortcuts
- View related options: F1 (filter), F2 (settings), F3 (active thresholds)
- Zoom out: Space
- Zoom in:
- double click (onto indicators)
- CTRL+scroll
- Move left/right: Shift+scroll
- Search: CTRL+S
#### Notable interactions
- Making a selection:
- Click, hold the button and drag (overview) to the left or right to select the required section
- Input the start and / or end time in the fields at the bottom of the view and press ENTER
- Multi-threading view: +/- icons near ranknames
- Flamegraph view: right click (context menu) onto ranknames
- Toggle P2P (in and out): right click (context menu) onto ranknames
- Set custom colors: details pane (per default to the right)

---

### Views
#### Central view (Selection)
Each **row** represents an **MPI rank**; when the thread view is expanded, multiple rows can represent a single MPI rank, with one thread per row. The mode of view is indicated by +/- icons:
- A + means the row can be expanded into the thread view.
- A - means the row has been expanded into the thread view.
- A grayed-out + indicates that no multi-threading was detected.

Within and between the rows, there are **various indicators**: (1) rectangular, colored blocks, (2) arrows, and (3) blue frames.

The rectangular blocks within the rows represent **function calls** or recordings of entered regions (often abbreviated as REG). Different functions are assigned different colors:
- MPI functions are usually yellowish-green.
- OpenMPI functions are usually red-orange.
- Other functions are assigned arbitrary colors.

The arrows describe **point-to-point communications** (often abbreviated as P2P) between the ranks or threads, generally between rows.

The blue, rectangular frames that span the rows describe **collective communications** (often abbreviated as CCM); ranks involved are highlighted by hatched function calls within these frames.

#### Overview
Directly below the upper menu bar is the overview. Here, one can always see the entire trace and also the current selection for the main view.

Differences from the main view include that only functions/regions are displayed here, and docking behavior: This element can be detached from and reattached to the main window.

#### Flamegraph
Through a context menu regarding the rank names, one has the option to open the flamegraph view, for a particular rank. In this view, similar to the overview, only functions/regions are displayed; however, they are not overlapping but rather stacked according to their runtime into call hierarchies.

This view is always synchronized with the central view or the current selection.

---

### Colors
#### At start
Colors are assigned in static steps via RGB-coordinates, there are 159 valid positions between (0|0|0) and (255|255|255) which are assigned in the same order as the functions are encountered (first come, first serve). Encountered functions past these 159 positions will all be assigned white.
#### During Search
During a search, functions are assigned gray, except the one being searched for, which is displayed in purple.

---

49 changes: 48 additions & 1 deletion res/style.qss
Original file line number Diff line number Diff line change
@@ -1,5 +1,52 @@
QToolTip {
background-color: black;
color: white;
border: black solid 1px
border: 1px outset #8A8A8A;
padding: 1px;
font-size: 11pt;
}

QScrollBar:vertical {
border: 1px solid #8A8A8A;
background: #6B6B6B;
width: 10px;
margin: 0px 0 0px 0;
border-radius: 5px;
}

QScrollBar::handle:vertical {
background: qradialgradient(cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 #B0C4DE, stop:1 #FFFFFF);
border: 1px solid #8A8A8A;
/*for some reason this border-radius is ignored, this causes the quadratic shape of the handle*/
border-radius: 5px;
margin: 0px 0 0px 0;
}

QScrollBar::handle:vertical:hover {
/* central point & focal point are inverted*/
background: qradialgradient(cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 #FFFFFF, stop:1 #B0C4DE);
}

QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
height: 0px;
}


QSlider::groove:vertical {
border: 1px solid #F5F5F5;
background: qradialgradient(cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 #C0C0C0, stop:1 #FFFFFF);
width: 1px;
margin: 2px 0 2px 0;
}

QSlider::handle:vertical {
background: qradialgradient(cx:0.5, cy:0.5, radius:1, fx:0.5, fy:0.5, stop:0 #B0C4DE, stop:1 #D3D3D3);
border: 1px solid gray;
height: 9px;
width: 9px;
margin: -2px -6px;
border-radius: 2px;
}



8 changes: 8 additions & 0 deletions resources.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,13 @@
<file>res/help.md</file>
<file>res/style.qss</file>
<file>res/motiv.png</file>
<file>res/buttons/book.png</file>
<file>res/buttons/minus.png</file>
<file>res/buttons/plus.png</file>
<file>res/buttons/plus_grey.png</file>
<file>res/buttons/refresh.png</file>
<file>res/buttons/zoom_fit.png</file>
<file>res/buttons/zoom_in.png</file>
<file>res/buttons/zoom_out.png</file>
</qresource>
</RCC>
Loading
Loading