Files
TheRock/rocm-systems/projects/rocprofiler-compute/docs/conceptual/cdna/command-processor.rst
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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