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
98 lines
3.0 KiB
ReStructuredText
98 lines
3.0 KiB
ReStructuredText
.. meta::
|
|
:description: ROCm Compute Profiler performance model: Command processor (CP)
|
|
:keywords: Omniperf, ROCm Compute Profiler, ROCm, profiler, tool, Instinct, accelerator, command, processor, fetcher, packet processor, CPF, CPC
|
|
|
|
**********************
|
|
Command processor (CP)
|
|
**********************
|
|
|
|
The command processor (CP) is responsible for interacting with the AMD GPU kernel
|
|
driver and the Linux kernel on the CPU and for interacting with user-space
|
|
HSA clients when they submit commands to HSA queues. Basic tasks of the CP
|
|
include reading commands (such as, corresponding to a kernel launch) out of
|
|
:hsa-runtime-pdf:`HSA queues <68>`, scheduling work to subsequent parts of the
|
|
scheduler pipeline, and marking kernels complete for synchronization events on
|
|
the host.
|
|
|
|
The command processor consists of two sub-components:
|
|
|
|
* :ref:`Fetcher <cpf-metrics>` (CPF): Fetches commands out of memory to hand
|
|
them over to the CPC for processing.
|
|
|
|
* :ref:`Packet processor <cpc-metrics>` (CPC): Micro-controller running the
|
|
command processing firmware that decodes the fetched commands and (for
|
|
kernels) passes them to the :ref:`workgroup processors <desc-spi>` for
|
|
scheduling.
|
|
|
|
Before scheduling work to the GPU, the command processor can
|
|
first acquire a memory fence to ensure system consistency
|
|
(:hsa-runtime-pdf:`Section 2.6.4 <91>`). After the work is complete, the
|
|
command processor can apply a memory-release fence. Depending on the CDNA architecture-based AMD Instinct GPUs, either of these operations *might* initiate a cache
|
|
write-back or invalidation.
|
|
|
|
Analyzing command processor performance is most interesting for kernels
|
|
that you suspect to be limited by scheduling or launch rate. Therefore, the command
|
|
processor's metrics are focused on reporting, for example:
|
|
|
|
* Utilization of the fetcher.
|
|
|
|
* Utilization of the packet processor, and decoding processing packets.
|
|
|
|
* Stalls in fetching and processing.
|
|
|
|
.. _cpf-metrics:
|
|
|
|
Command processor fetcher (CPF)
|
|
===============================
|
|
|
|
.. tab-set::
|
|
|
|
.. tab-item:: CDNA
|
|
|
|
.. jinja:: cpf-metrics-gfx908
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 2
|
|
|
|
.. jinja:: cpf-metrics-gfx90a
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 3
|
|
|
|
.. jinja:: cpf-metrics-gfx942
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 4
|
|
:selected:
|
|
|
|
.. jinja:: cpf-metrics-gfx950
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. _cpc-metrics:
|
|
|
|
Command processor packet processor (CPC)
|
|
========================================
|
|
|
|
.. tab-set::
|
|
|
|
.. tab-item:: CDNA
|
|
|
|
.. jinja:: cpc-metrics-gfx908
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 2
|
|
|
|
.. jinja:: cpc-metrics-gfx90a
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 3
|
|
|
|
.. jinja:: cpc-metrics-gfx942
|
|
:file: _templates/metrics_table.j2
|
|
|
|
.. tab-item:: CDNA 4
|
|
:selected:
|
|
|
|
.. jinja:: cpc-metrics-gfx950
|
|
:file: _templates/metrics_table.j2
|