Unified configuration for metrics (#726)

* Show description of metrics during analysis
    * Use --include-cols Description show the Description column in analyze mode (this is hidden by default)
    * Remove tips field from analysis config

* Align metric names in analysis config and documentation

* Add unified config utils/unified_config.yaml

* Add python script utils/split_config.py to auto generate analysis configuration and documentation metrics description
   * Add test case to ensure unified config is older than auto-generated config
   * Auto generate analysis config and documentation metrics description

* Update CONTRIBUTING.md to add instructions to build documentation assets
    * Add docker image and compose file to build documentation

* Update CHANGELOG and Documentation

* Use jinja template instead of hardcoding metric tables in documentation
Cette révision appartient à :
vedithal-amd
2025-07-25 14:01:34 -04:00
révisé par GitHub
Parent 99a6e67bcc
révision bb44e90b2d
232 fichiers modifiés avec 44409 ajouts et 22480 suppressions
+4 -137
Voir le fichier
@@ -21,53 +21,8 @@ LDS Speed-of-Light
The :ref:`LDS <desc-lds>` speed-of-light chart shows a number of key metrics for
the LDS as a comparison with the peak achievable values of those metrics.
.. list-table::
:header-rows: 1
* - Metric
- Description
- Unit
* - Utilization
- Indicates what percent of the kernel's duration the :ref:`LDS <desc-lds>`
was actively executing instructions (including, but not limited to, load,
store, atomic and HIP's ``__shfl`` operations). Calculated as the ratio
of the total number of cycles LDS was active over the
:ref:`total CU cycles <total-cu-cycles>`.
- Percent
* - Access Rate
- Indicates the percentage of SIMDs in the :ref:`VALU <desc-valu>` [#lds-workload]_
actively issuing LDS instructions, averaged over the lifetime of the
kernel. Calculated as the ratio of the total number of cycles spent by
the :ref:`scheduler <desc-scheduler>` issuing :ref:`LDS <desc-lds>`
instructions over the
:ref:`total CU cycles <total-cu-cycles>`.
- Percent
* - Theoretical Bandwidth (% of Peak)
- Indicates the maximum amount of bytes that *could* have been loaded from,
stored to, or atomically updated in the LDS in this kernel, as a percent
of the peak LDS bandwidth achievable. See the
:ref:`LDS bandwidth example <lds-bandwidth>` for more detail.
- Percent
* - Bank Conflict Rate
- Indicates the percentage of active LDS cycles that were spent servicing
bank conflicts. Calculated as the ratio of LDS cycles spent servicing
bank conflicts over the number of LDS cycles that would have been
required to move the same amount of data in an uncontended access. [#lds-bank-conflict]_
- Percent
.. jinja:: lds-sol
:file: _templates/metrics_table.j2
.. rubric:: Footnotes
@@ -90,93 +45,5 @@ Statistics
The LDS statistics panel gives a more detailed view of the hardware:
.. list-table::
:header-rows: 1
* - Metric
- Description
- Unit
* - LDS Instructions
- The total number of LDS instructions (including, but not limited to,
read/write/atomics and HIP's ``__shfl`` instructions) executed per
:ref:`normalization unit <normalization-units>`.
- Instructions per :ref:`normalization unit <normalization-units>`
* - Theoretical Bandwidth
- Indicates the maximum amount of bytes that could have been loaded from,
stored to, or atomically updated in the LDS per
:ref:`normalization unit <normalization-units>`. Does *not* take into
account the execution mask of the wavefront when the instruction was
executed. See the
:ref:`LDS bandwidth example <lds-bandwidth>` for more detail.
- Bytes per :ref:`normalization unit <normalization-units>`
* - LDS Latency
- The average number of round-trip cycles (i.e., from issue to data-return
/ acknowledgment) required for an LDS instruction to complete.
- Cycles
* - Bank Conflicts/Access
- The ratio of the number of cycles spent in the
:ref:`LDS scheduler <desc-lds>` due to bank conflicts (as determined by
the conflict resolution hardware) to the base number of cycles that would
be spent in the LDS scheduler in a completely uncontended case. This is
the unnormalized form of the Bank Conflict Rate.
- Conflicts/Access
* - Index Accesses
- The total number of cycles spent in the :ref:`LDS scheduler <desc-lds>`
over all operations per :ref:`normalization unit <normalization-units>`.
- Cycles per :ref:`normalization unit <normalization-units>`
* - Atomic Return Cycles
- The total number of cycles spent on LDS atomics with return per
:ref:`normalization unit <normalization-units>`.
- Cycles per :ref:`normalization unit <normalization-units>`
* - Bank Conflicts
- The total number of cycles spent in the :ref:`LDS scheduler <desc-lds>`
due to bank conflicts (as determined by the conflict resolution hardware)
per :ref:`normalization unit <normalization-units>`.
- Cycles per :ref:`normalization unit <normalization-units>`
* - Address Conflicts
- The total number of cycles spent in the :ref:`LDS scheduler <desc-lds>`
due to address conflicts (as determined by the conflict resolution
hardware) per :ref:`normalization unit <normalization-units>`.
- Cycles per :ref:`normalization unit <normalization-units>`
* - Unaligned Stall
- The total number of cycles spent in the :ref:`LDS scheduler <desc-lds>`
due to stalls from non-dword aligned addresses per
:ref:`normalization unit <normalization-units>`.
- Cycles per :ref:`normalization unit <normalization-units>`
* - Memory Violations
- The total number of out-of-bounds accesses made to the LDS, per
:ref:`normalization unit <normalization-units>`. This is unused and
expected to be zero in most configurations for modern CDNA™ accelerators.
- Accesses per :ref:`normalization unit <normalization-units>`
.. jinja:: lds-stats
:file: _templates/metrics_table.j2