CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
148 lines
5.1 KiB
ReStructuredText
148 lines
5.1 KiB
ReStructuredText
.. meta::
|
|
:description: ROCm Compute Profiler terminology and definitions
|
|
:keywords: Omniperf, ROCm Compute Profiler, ROCm, glossary, definitions, terms, profiler, tool,
|
|
Instinct, accelerator, AMD
|
|
|
|
***********
|
|
Definitions
|
|
***********
|
|
|
|
The following table briefly defines some terminology used in ROCm Compute Profiler interfaces
|
|
and in this documentation.
|
|
|
|
.. include:: ./includes/terms.rst
|
|
|
|
.. include:: ./includes/normalization-units.rst
|
|
|
|
.. _memory-spaces:
|
|
|
|
Memory spaces
|
|
=============
|
|
|
|
AMD Instinct™ MI-Series GPUs can access memory through multiple address spaces
|
|
which may map to different physical memory locations on the system. The
|
|
following table provides a view into how various types of memory used
|
|
in HIP map onto these constructs:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - LLVM Address Space
|
|
- Hardware Memory Space
|
|
- HIP Terminology
|
|
|
|
* - Generic
|
|
- Flat
|
|
- N/A
|
|
|
|
* - Global
|
|
- Global
|
|
- Global
|
|
|
|
* - Local
|
|
- LDS
|
|
- LDS/Shared
|
|
|
|
* - Private
|
|
- Scratch
|
|
- Private
|
|
|
|
* - Constant
|
|
- Same as global
|
|
- Constant
|
|
|
|
The following is a high-level description of the address spaces in the AMDGPU
|
|
backend of LLVM:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Address space
|
|
- Description
|
|
|
|
* - Global
|
|
- Memory that can be seen by all threads in a process, and may be backed by
|
|
the local GPU's HBM, a remote GPU's HBM, or the CPU's
|
|
DRAM.
|
|
|
|
* - Local
|
|
- Memory that is only visible to a particular workgroup. On AMD Instinct
|
|
GPU hardware, this is stored in :doc:`LDS <cdna/local-data-share>`
|
|
memory.
|
|
|
|
* - Private
|
|
- Memory that is only visible to a particular [work-item](workitem)
|
|
(thread), stored in the scratch space on AMD Instinct GPUs.
|
|
|
|
* - Constant
|
|
- Read-only memory that is in the global address space and stored on the
|
|
local GPU's HBM.
|
|
|
|
* - Generic
|
|
- Used when the compiler cannot statically prove that a pointer is
|
|
addressing memory in a single (non-generic) address space. Mapped to Flat
|
|
on AMD Instinct GPUs, the pointer could dynamically address
|
|
global, local, private or constant memory.
|
|
|
|
`LLVM's documentation for AMDGPU Backend <https://llvm.org/docs/AMDGPUUsage.html#address-spaces>`_
|
|
has the most up-to-date information. Refer to this source for a more complete
|
|
explanation.
|
|
|
|
.. _memory-type:
|
|
|
|
Memory type
|
|
===========
|
|
|
|
AMD Instinct GPUs contain a number of different memory allocation types to enable the HIP language :doc:`memory coherency model <hip:how-to/hip_runtime_api/memory_management/coherence_control>`.
|
|
These memory types are broadly similar between AMD Instinct GPU
|
|
generations, but may differ in exact implementation.
|
|
|
|
In addition, these memory types might differ between GPUs on the same
|
|
system, even when accessing the same memory allocation.
|
|
|
|
For example, AMD Instinct :ref:`MI2XX <mixxx-note>` Series GPU accessing fine-grained
|
|
memory allocated local to that device may see the allocation as coherently
|
|
cacheable, while a remote GPU might see the same allocation as
|
|
uncached.
|
|
|
|
These memory types include:
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Memory type
|
|
- Description
|
|
|
|
* - Uncached Memory (UC)
|
|
- Memory that will not be cached in this GPU. On
|
|
AMD Instinct :ref:`MI2XX <mixxx-note>` Series GPU, this corresponds to fine-grained
|
|
(or coherent) memory allocated on a remote GPU or the host,
|
|
for example, using ``hipHostMalloc`` or ``hipMallocManaged`` with default
|
|
allocation flags.
|
|
|
|
* - Non-hardware-Coherent Memory (NC)
|
|
- Memory that will be cached by the GPU, and is only guaranteed to
|
|
be consistent at kernel boundaries / after software-driven
|
|
synchronization events. On AMD Instinct :ref:`MI2XX <mixxx-note>` Series GPUs, this
|
|
type of memory maps to, coarse-grained ``hipHostMalloc`` memory that is, allocated with the ``hipHostMallocNonCoherent``
|
|
flag or ``hipMalloc`` memory allocated on a remote GPU.
|
|
|
|
* - Coherently Cachable (CC)
|
|
- Memory for which only reads from the GPU where the memory was
|
|
allocated will be cached. Writes to CC memory are uncached, and trigger
|
|
invalidations of any line within the GPU. On AMD Instinct :ref:`MI2XX <mixxx-note>` Series GPUs, this type of memory maps to
|
|
fine-grained memory allocated on the local GPU using, for
|
|
example, the ``hipExtMallocWithFlags`` API using the
|
|
``hipDeviceMallocFinegrained`` flag.
|
|
|
|
* - Read/Write Coherent Memory (RW)
|
|
- Memory that will be cached by the GPU, but may be invalidated by
|
|
writes from remote devices at kernel boundaries / after software-driven
|
|
synchronization events. On AMD Instinct :ref:`MI2XX <mixxx-note>` Series GPUs, this
|
|
corresponds to coarse-grained memory allocated locally to the
|
|
GPU, using for example, the default ``hipMalloc`` allocator.
|
|
|
|
For more details on coarse and fine-grained memory allocations and what
|
|
type of memory is returned by various combinations of memory allocators, flags
|
|
and arguments, see `Crusher quick-start guide <https://docs.olcf.ornl.gov/systems/crusher_quick_start_guide.html#floating-point-fp-atomic-operations-and-coarse-fine-grained-memory-allocations>`_.
|