Repository navigation
feat(rocprofiler-compute) Data fix and UX improvement for roofline #12190
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
Merged
cfallows-amd
merged 46 commits into
rocprofiler-compute-develop
from
user/svolkov/roofline-analysis-for-meta
Oct 17, 2026
Merged
Changes from 42 commits
Commits
Show all changes
46 commits
Select commit
Hold shift + click to select a range
33e7883
[rocprofiler-compute] Open Q3 Sprint 4 (Sep 14 - Sep 28)
vedithal-amd 6230b45
[rocprofiler-compute] Open Q3 Sprint 3 (Aug 17 - Sep 11)
vedithal-amd 2e57a89
script for analysis run
svolkov-amd 0d8390c
benchmark fixes
svolkov-amd 596fe87
Adding bandwidth to roofline hover
svolkov-amd 8ed7550
roofline exported as csv
svolkov-amd ddee085
bandwidth updated to show a value for a kernel
svolkov-amd ed8a63f
Revert "roofline exported as csv"
svolkov-amd 32c8648
kernel name truncation
svolkov-amd 26b387b
kernel name hover for kernel list
svolkov-amd d909ac7
Hover data refactoring
svolkov-amd 2ab6904
Hover updates
svolkov-amd ab0a761
Show cache levels even if zero
svolkov-amd 4c64116
Proper performance limiting detection
svolkov-amd fdc6a66
Roofline performance value is calculated properly
svolkov-amd 230976c
Fix for bandwidth parameters
svolkov-amd d407a28
hover formatting
svolkov-amd 3b2b0c3
Option to visualize kernels by limiting peak
svolkov-amd 273738e
Changed defaults
svolkov-amd a6b5d34
removed spec file
svolkov-amd 2f6b274
removed dev script
svolkov-amd 83a96b6
roofline peak instead of average
svolkov-amd 3a55d0b
Fixes and minor improvements
svolkov-amd 953790d
duplicated function is removed
svolkov-amd 275e8f0
tooltip implementation moved to a separate file
svolkov-amd b75b014
minor renames
svolkov-amd 535cf84
tooltip is a class
svolkov-amd eefcbc2
functions refactoring
svolkov-amd a9a5788
renames
svolkov-amd 149dd80
refactor
svolkov-amd be3a503
rename
svolkov-amd 0ff7323
refactor
svolkov-amd 716ad48
renames
svolkov-amd 740ae88
refactor
svolkov-amd b216744
refactor
svolkov-amd 904b9bc
test refactoring
svolkov-amd 1819e13
test refactor
svolkov-amd 723a869
test refactor
svolkov-amd 5ad6ec9
Fix formatting- break up long lines, relabel test cases due to functi…
cfallows-amd 8066669
Merge branch 'rocprofiler-compute-develop' into user/svolkov/roofline…
cfallows-amd 98d10dc
roofline_plot.js: Kernel sidebar buttons now get aria-label set to th…
cfallows-amd dc91776
Change BF16 MFMA builtin to match FP16 change.
cfallows-amd fceff80
[rocprofiler-compute] Remove unused roofline benchmark constants
vedithal-amd 7171587
[rocprofiler-compute] Note higher gfx950 FP16/BF16 roofline peaks in …
vedithal-amd 6481efe
[rocprofiler-compute] Tidy roofline review follow-ups
vedithal-amd 5630f67
[rocprofiler-compute] Use every drawn datatype as a roofline limiter …
vedithal-amd File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
projects/rocprofiler-compute/src/roofline/assets/roofline_kernel_list_tooltip.css
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| /* Copyright (c) Advanced Micro Devices, Inc. */ | ||
| /* SPDX-License-Identifier: MIT */ | ||
|
|
||
| .roofline-name-tooltip { | ||
| position: fixed; | ||
| top: 0; | ||
| left: 0; | ||
| z-index: 500; | ||
| max-width: min(480px, calc(100vw - 24px)); | ||
| padding: 6px 10px; | ||
| background: var(--roofline-surface); | ||
| color: var(--roofline-text); | ||
| border: 1px solid var(--roofline-border); | ||
| border-radius: 6px; | ||
| box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | ||
| font-family: var(--roofline-kernel-font, monospace); | ||
| font-size: 12px; | ||
| line-height: 1.35; | ||
| word-break: break-word; | ||
| overflow-wrap: anywhere; | ||
| pointer-events: none; | ||
| opacity: 0; | ||
| visibility: hidden; | ||
| transition: opacity 0.1s ease; | ||
| } | ||
|
|
||
| .roofline-name-tooltip.visible { | ||
| opacity: 1; | ||
| visibility: visible; | ||
| } |
99 changes: 99 additions & 0 deletions
99
projects/rocprofiler-compute/src/roofline/assets/roofline_kernel_list_tooltip.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,99 @@ | ||
| // Copyright (c) Advanced Micro Devices, Inc. | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| // Kernel's list "click-to-filter" action prevents a default tooltip being shown. | ||
| // Therefore custom tooltip is added to overcome this. | ||
| (function () { | ||
| "use strict"; | ||
|
|
||
| function clamp(value, minimum, maximum) { | ||
| return Math.min(Math.max(value, minimum), maximum); | ||
| } | ||
|
|
||
| class RooflineKernelNameTooltip { | ||
| #offset = 14; | ||
| #delayMs = 2000; | ||
| #element = null; | ||
| #timer = null; | ||
|
|
||
| attachTooltipToKernelRow(kernelRow, kernelLabel, kernelFullName) { | ||
| var self = this; | ||
| var lastMousePosition = { x: 0, y: 0 }; | ||
| kernelLabel.addEventListener("mouseenter", function (event) { | ||
| lastMousePosition = { x: event.clientX, y: event.clientY }; | ||
| self.#showWithDelay(kernelFullName, function () { | ||
| return lastMousePosition; | ||
| }); | ||
| }); | ||
| kernelLabel.addEventListener("mousemove", function (event) { | ||
| lastMousePosition = { x: event.clientX, y: event.clientY }; | ||
| if (self.#element && self.#element.classList.contains("visible")) { | ||
| self.#position(event.clientX, event.clientY); | ||
| } | ||
| }); | ||
| kernelLabel.addEventListener("mouseleave", function () { | ||
| self.hide(); | ||
| }); | ||
| kernelRow.addEventListener("focus", function () { | ||
| var rect = kernelLabel.getBoundingClientRect(); | ||
| self.#showWithDelay(kernelFullName, function () { | ||
| return { x: rect.left, y: rect.bottom }; | ||
| }); | ||
| }); | ||
| kernelRow.addEventListener("blur", function () { | ||
| self.hide(); | ||
| }); | ||
| } | ||
|
|
||
| hide() { | ||
| clearTimeout(this.#timer); | ||
| if (this.#element) { | ||
| this.#element.classList.remove("visible"); | ||
| } | ||
| } | ||
|
|
||
| #showWithDelay(text, getPosition) { | ||
| var self = this; | ||
| clearTimeout(this.#timer); | ||
| this.#timer = setTimeout(function () { | ||
| var position = getPosition(); | ||
| self.#show(text, position.x, position.y); | ||
| }, this.#delayMs); | ||
| } | ||
|
|
||
| #show(text, x, y) { | ||
| var tooltip = this.#createElement(); | ||
| tooltip.textContent = text; | ||
| tooltip.classList.add("visible"); | ||
| this.#position(x, y); | ||
| } | ||
|
|
||
| #createElement() { | ||
| if (!this.#element) { | ||
| this.#element = document.createElement("div"); | ||
| this.#element.className = "roofline-name-tooltip"; | ||
| this.#element.setAttribute("role", "tooltip"); | ||
| document.body.appendChild(this.#element); | ||
| } | ||
| return this.#element; | ||
| } | ||
|
|
||
| #position(x, y) { | ||
| var tooltip = this.#element; | ||
| if (!tooltip) { | ||
| return; | ||
| } | ||
| var maxLeft = Math.max(4, window.innerWidth - tooltip.offsetWidth - 4); | ||
| var maxTop = Math.max(4, window.innerHeight - tooltip.offsetHeight - 4); | ||
| tooltip.style.left = clamp(x + this.#offset, 4, maxLeft) + "px"; | ||
| tooltip.style.top = clamp(y + this.#offset, 4, maxTop) + "px"; | ||
| } | ||
| } | ||
|
|
||
| var tooltip = new RooflineKernelNameTooltip(); | ||
|
|
||
| window.RooflineKernelListTooltip = { | ||
| attachTooltipToKernelRow: tooltip.attachTooltipToKernelRow.bind(tooltip), | ||
| hide: tooltip.hide.bind(tooltip), | ||
| }; | ||
| })(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.