Skip to content

Commit

Permalink
Update documentation for RMV 1.1 release.
Browse files Browse the repository at this point in the history
Change-Id: I3dd55c8ad6091cb37f086b14db8b1eec59a4b445
  • Loading branch information
ahosier committed Nov 24, 2020
1 parent 72d517e commit 1d09dec
Show file tree
Hide file tree
Showing 68 changed files with 990 additions and 845 deletions.
13 changes: 7 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Radeon™ Memory Visualizer

The Radeon Memory Visualizer (RMV) is a software tool that will allow users to analyze video memory usage on AMD Radeon GPUs. RMV will reveal detailed information regarding an application’s video memory consumption and access patterns. This will allow users to understand how memory is being leveraged and open the door to new optimization opportunities.
The Radeon Memory Visualizer (RMV) is a software tool that will allow users to analyze video memory usage on AMD Radeon GPUs. RMV will reveal detailed information regarding an application’s video memory consumption and access patterns. This will allow users to understand how memory is being leveraged and open the door to new optimization opportunities.

## Getting Started

1. Install the latest AMD Video/display driver with RMV support. Be sure to run DDU before installing the driver to ensure a clean install.
2. Unzip the download file. The directory contains the following:
1. Install the latest AMD Video/display driver. Be sure to run DDU before installing the driver to ensure a clean install.
2. Unzip/Untar the download file. The directory contains the following:
* Radeon Developer Service (RDS)
* Radeon Developer Service CLI (RDS headless)
* Radeon Developer Panel (RDP)
* Radeon Memory Visualizer (RMV)
3. To gather a memory trace from a game, run the Radeon Developer Panel.
* After making a connection, go to the 'SYSTEM' tab and add the name of the executable to be traced to the list in "My applications".
* After making a connection, go to the 'SYSTEM' tab (this should be performed automatically for local connections).
* Start your application. The Radeon Developer Panel will switch to the "APPLICATIONS" tab. The overlay window in the top left of the application being traced will show if RMV tracing is enabled. If not, make sure the app is running in Vulkan® or DirectX®12 mode.
* When tracing is complete, click "Dump trace" or close your application (in this case, the trace will be dumped automatically).
* When tracing is complete, click on the 'Memory Trace' tab and click "Dump Trace" or close your application (in this case, the trace will be dumped automatically).
4. For further detailed instructions, please see the documentation provided in the Help. Help can be found in the following locations:
* Help web pages exist in the "docs" sub directory
* Help web pages can be accessed from the **Help** button (?) in the Developer Panel
Expand All @@ -24,6 +24,7 @@ The Radeon Memory Visualizer (RMV) is a software tool that will allow users to a

## Supported ASICs

* AMD Radeon RX 6000 series
* AMD Radeon RX 5000 series
* AMD Radeon VII
* AMD RX Vega 64 and RX Vega 56
Expand All @@ -34,6 +35,6 @@ The Radeon Memory Visualizer (RMV) is a software tool that will allow users to a

## Supported OS's and API's

### Windows 10 only (Version 1903 or higher recommended)
### Windows® 10 only (version 1903 or higher recommended)
* DirectX12
* Vulkan
32 changes: 32 additions & 0 deletions Release_Notes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
Radeon Memory Visualizer V1.1 11-24-2020
----------------------------------------

V1.1 Changes
------------------------------------

1) Add support for showing aliased resources in the allocation overview and allocation explorer panes.
2) Rework the resource "Filter by size" slider throughout so that the resources are more evenly distributed.
3) Empty tables show a graphical indication and description as to why the table is empty.
4) Add "color by commit type" coloring mode.
5) Add search box and filter by allocation size to the allocation table in the allocation explorer pane.
6) Show unmapped resource memory in residency donut in the resource details pane.
7) Bug/stability fixes.

Known Issues
------------------------------------

(1a) More than a single active device at a time within a single application is not supported. In this case, only the first device will be traced.
(1b) More than a single Vulkan/DX12 process at a time is not supported. Only the first started application will be traced.
(2) In the Snapshots|Resource details pane, Physical memory mapped events may be shown before virtual allocate events.
(3) Some of the Pane navigation shortcuts may conflict with the keyboard shortcuts used by the Radeon Settings (such as ALT-R). It is recommended to remap the Radeon settings so they don't conflict.
(4) Some UI elements do not rescale properly when the OS's DPI scale settings are dynamically changed, or when dragging RMV between two monitors with different DPI scales. Close and re-open RMV to view at proper sizes.
(5) Running multiple instances of the Radeon Developer Panel is not supported.
(6) Sparse texture are not fully supported.
(7) When tracing an application that uses a launcher, or an application that creates multiple devices, it is possible that more than one trace file will be written to disk. In the case of the launcher, adding the launcher's executable name to the Blocked applications list in the Radeon Developer Panel should prevent multiple trace files. Restarting the Radeon Developer Panel may be required before attempting to trace again.

Release Notes History
------------------------------------

V1.0
------------------------------------
This is the first public release of the Radeon Memory Visualizer.
15 changes: 0 additions & 15 deletions docs/source/allocation_explorer.rst

This file was deleted.

32 changes: 0 additions & 32 deletions docs/source/allocation_overview.rst

This file was deleted.

8 changes: 0 additions & 8 deletions docs/source/capture.rst

This file was deleted.

Binary file removed docs/source/media/compare/memory_leak_finder_1.png
Binary file not shown.
Binary file removed docs/source/media/compare/snapshot_delta_1.png
Binary file not shown.
Binary file removed docs/source/media/device_config_1.png
Binary file not shown.
Binary file removed docs/source/media/recent_traces_1.png
Binary file not shown.
Binary file removed docs/source/media/settings/keyboard_shortcuts_1.png
Binary file not shown.
Binary file removed docs/source/media/settings/themes_and_colors_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/allocation_explorer_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/allocation_overview_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/allocation_overview_2.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/heap_overview_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/resource_details_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/resource_list_1.png
Binary file not shown.
Binary file removed docs/source/media/snapshot/resource_overview_1.png
Binary file not shown.
Binary file not shown.
Binary file removed docs/source/media/timeline_1.png
Binary file not shown.
Binary file removed docs/source/media/vk_resource_naming_1.png
Binary file not shown.
Binary file removed docs/source/media/welcome_1.png
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@


img {
max-width: 100%;
max-height: auto;
box-shadow: 6px 6px #eee;
-ms-interpolation-mode: bicubic;
border: 1px solid #ccc;
}

table {
font-size: 12px;


img {
max-width: 100%;
max-height: auto;
box-shadow: 6px 6px #eee;
-ms-interpolation-mode: bicubic;
border: 1px solid #ccc;
}

table {
font-size: 12px;
}
29 changes: 29 additions & 0 deletions documentation/source/allocation_explorer.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
Allocation explorer
-------------------

This will show the resources for each allocation. The pane consists of 2 tables.
The top table lists all of the allocations. These allocations can be filtered
using the search box text filter, located above the allocation table, and also
by size using the "**Filter by size**" slider to the right of the search box.

Clicking on an allocation will show it in the graphic below, along with a
representation of all of the resources in the selected allocation.

.. image:: media/snapshot/allocation_explorer_1.png

The coloring can be changed using the "**color by ..**" combo box above the
allocation graphic.

The "**show aliasing**" checkbox will display the resources in the allocation
in a stacked view to help visualize aliasing. If no resources in the allocation
are aliased, the checkbox will be grayed out. There are 2 splitters above and
below the graphical allocation display and these can be moved to increase or
decrease the height of the graphical allocation display. If there is a lot of
aliasing, it may be useful to temporarily increase the height, as shown below:

.. image:: media/snapshot/allocation_explorer_2.png

The table under the allocation display shows a list of all the resources in the
chosen allocation. These resources can be filtered using the search box text
filter and also by size using the "**Filter by size**" slider on the right.
Double-clicking on a resource will navigate to the **Resource details** pane.
50 changes: 50 additions & 0 deletions documentation/source/allocation_overview.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
Allocation overview
-------------------

This pane will show the allocations and all the resources in each allocation.
Again, the resources will have a stippled effect if they are aliased.

.. image:: media/snapshot/allocation_overview_1.png

Filtering by preferred heap is provided so that only resources in the specified
preferred heaps are shown.

The coloring mode can be changed using the 'color by .. ' combo box, which will
color the resources and allocations by various parameters, for example, resource
usage, and the preferred heap type.

The allocations can be sorted using the sort combo box at the top. Sorting is
currently based on allocation size, allocation Id, allocation age or resource
count (the number of resources in the allocation). Another combo box to the
left allows the sort to be in ascending or decending order.

Normally, allocations are sized relative to the largest allocations. Sometimes
this makes smaller allocations difficult to see. The 'Normalize allocations'
check box will draw all allocations the same length, as seen below:

.. image:: media/snapshot/allocation_overview_2.png

Also notice that the allocations are slightly taller than in the previous
screenshot. The allocation height is controlled via the slider at the top,
either allowing more allocations to be visible or showing more detail for
a particular allocation. This is necessary in the case of aliased resources,
where resources share the same underlying memory. The 'Show aliasing' check
box will toggle between showing resources as a stacked display. If aliasing
isn't present, the allocation display will be unchanged. This is demonstrated
below:

.. image:: media/snapshot/allocation_overview_3.png

Here, there is aliasing on a depth-stencil buffer, and some of the render
targets and textures. Normally these would be shown as single resources as
seen in the previous image, but switching on the aliasing display, it can be
seen that in the case of the depth-stencil buffer, the 3 resources share the
same underlying memory. Also the height of the allocations has been increased
to show the stacking more clearly.

The allocations can also be filtered using the search box. An allocation will
only be shown if any part of its displayed text matches the text in the search
box. This way, allocations can be filtered by size, heap type or number of
resources.

Double-clicking on a resource will jump to the **Allocation explorer**.
13 changes: 13 additions & 0 deletions documentation/source/capture.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
How to generate a memory trace
------------------------------

The first thing you will need to do is generate a memory trace. Currently,
this is done via the Radeon Developer Panel. Read the documentation provided
with this distribution for information on how to create a memory trace. This
can be obtained from within the Radeon Developer Panel or from the link on the
Radeon Memory Visualizer “Welcome” view. The documentation is also available
online at:
http://radeon-developer-panel.readthedocs.io/en/latest/

This documentation can also be found online at:
http://radeon-memory-visualizer.readthedocs.io/en/latest/
82 changes: 41 additions & 41 deletions docs/source/carousel.rst → documentation/source/carousel.rst
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
The Carousel
------------

The carousel is displayed on the **Resource list** panes and displays high level
information about the resources in the current snapshot. It can be seen as an
overview to answer high level questions such as 'How much memory in each heap
is my application using?' or 'How large are my allocations?'.

The **Allocation sizes** shows the sizes of allocations arranged in buckets.
It is easy to see at a glance how many allocations are being used and their
relative sizes.

.. image:: media/snapshot/carousel_allocation_sizes.png

The **Committed memory** shows the amount of memory that this application has
committed to physical memory for each of the heap types. Ideally, all memory
that the application has requested should be in physical memory.

.. image:: media/snapshot/carousel_committed_memory.png

The **Requested virtual memory** shows which memory was requested from which heap.
The same coloring scheme is used as in the **Heap overview** pane so it is easy to
see if certain heaps are over or undersubscribed.

.. image:: media/snapshot/carousel_requested_virtual_memory.png

The **Resource types** shows the makeup of the resources contained within the
allocations. The most popular ones are displayed with everything else bucketed
in the "Other" category.

.. image:: media/snapshot/carousel_resource_types.png

The **Virtual memory** shows how much memory has resources bound to it. Unbound
memory is effectively usused so should be minimized as much as possible. Sometimes
due to alignment issues this is not possible but if there is a lot of unbound
memory, this will be seen in the *Allocation overview* pane for each allocation.

.. image:: media/snapshot/carousel_virtual_memory.png

The carousel is also shown in the **Snapshot delta** pane but here it shows the
differences between the 2 selected snapshots.
The Carousel
------------

The carousel is displayed on the **Resource list** panes and displays high level
information about the resources in the current snapshot. It can be seen as an
overview to answer high level questions such as 'How much memory in each heap
is my application using?' or 'How large are my allocations?'.

The **Allocation sizes** shows the sizes of allocations arranged in buckets.
It is easy to see at a glance how many allocations are being used and their
relative sizes.

.. image:: media/snapshot/carousel_allocation_sizes.png

The **Committed memory** shows the amount of memory that this application has
committed to physical memory for each of the heap types. Ideally, all memory
that the application has requested should be in physical memory.

.. image:: media/snapshot/carousel_committed_memory.png

The **Requested virtual memory** shows which memory was requested from which heap.
The same coloring scheme is used as in the **Heap overview** pane so it is easy to
see if certain heaps are over or undersubscribed.

.. image:: media/snapshot/carousel_requested_virtual_memory.png

The **Resource types** shows the makeup of the resources contained within the
allocations. The most popular ones are displayed with everything else bucketed
in the "Other" category.

.. image:: media/snapshot/carousel_resource_types.png

The **Virtual memory** shows how much memory has resources bound to it. Unbound
memory is effectively usused so should be minimized as much as possible. Sometimes
due to alignment issues this is not possible but if there is a lot of unbound
memory, this will be seen in the *Allocation overview* pane for each allocation.

.. image:: media/snapshot/carousel_virtual_memory.png

The carousel is also shown in the **Snapshot delta** pane but here it shows the
differences between the 2 selected snapshots.
Loading

0 comments on commit 1d09dec

Please sign in to comment.