forked from OSchip/llvm-project
[AMDGPU] DWARF Proposal For Heterogeneous Debugging
- Add introduction to DWARF Proposal For Heterogeneous Debugging. Differential Revision: https://reviews.llvm.org/D70523
This commit is contained in:
parent
38727bab6f
commit
b4668a268d
|
@ -1,4 +1,4 @@
|
||||||
.. _amdgpu-proposal-for-heterogeneous-debugging:
|
.. _amdgpu-dwarf-proposal-for-heterogeneous-debugging:
|
||||||
|
|
||||||
******************************************
|
******************************************
|
||||||
DWARF Proposal For Heterogeneous Debugging
|
DWARF Proposal For Heterogeneous Debugging
|
||||||
|
@ -13,9 +13,76 @@ DWARF Proposal For Heterogeneous Debugging
|
||||||
[:ref:`DWARF <amdgpu-dwarf-DWARF>`] to support heterogeneous debugging. It is
|
[:ref:`DWARF <amdgpu-dwarf-DWARF>`] to support heterogeneous debugging. It is
|
||||||
not currently fully implemented and is subject to change.
|
not currently fully implemented and is subject to change.
|
||||||
|
|
||||||
|
.. _amdgpu-dwarf-introduction:
|
||||||
|
|
||||||
Introduction
|
Introduction
|
||||||
============
|
============
|
||||||
|
|
||||||
|
AMD [:ref:`AMD <amdgpu-dwarf-AMD>`] has been working on supporting heterogeneous
|
||||||
|
computing through the AMD Radeon Open Compute Platform (ROCm) [:ref:`AMD-ROCm
|
||||||
|
<amdgpu-dwarf-AMD-ROCm>`]. A heterogeneous computing program can be written in a
|
||||||
|
high level language such as C++ or Fortran with OpenMP pragmas, OpenCL, or HIP
|
||||||
|
(a portable C++ programming environment for heterogeneous computing [:ref:`HIP
|
||||||
|
<amdgpu-dwarf-HIP>`]). A heterogeneous compiler and runtime allows a program to
|
||||||
|
execute on multiple devices within the same native process. Devices could
|
||||||
|
include CPUs, GPUs, DSPs, FPGAs, or other special purpose accelerators.
|
||||||
|
Currently HIP programs execute on systems with CPUs and GPUs.
|
||||||
|
|
||||||
|
ROCm is fully open sourced and includes contributions to open source projects
|
||||||
|
such as LLVM for compilation [:ref:`LLVM <amdgpu-dwarf-LLVM>`] and GDB for
|
||||||
|
debugging [:ref:`GDB <amdgpu-dwarf-GDB>`], as well as collaboration with other
|
||||||
|
third party projects such as the GCC compiler [:ref:`GCC <amdgpu-dwarf-GCC>`]
|
||||||
|
and the Perforce TotalView HPC debugger [:ref:`Perforce-TotalView
|
||||||
|
<amdgpu-dwarf-Perforce-TotalView>`].
|
||||||
|
|
||||||
|
To support debugging heterogeneous programs several features that are not
|
||||||
|
provided by current DWARF Version 5 [:ref:`DWARF <amdgpu-dwarf-DWARF>`] have
|
||||||
|
been identified. This document contains a collection of proposals to address
|
||||||
|
providing those features.
|
||||||
|
|
||||||
|
The :ref:`amdgpu-dwarf-motivation` section describes the issues that are being
|
||||||
|
addressed for heterogeneous computing. That is followed by the
|
||||||
|
:ref:`amdgpu-dwarf-proposed-changes-relative-to-dwarf-version-5` section
|
||||||
|
containing the proposed textual changes relative to the DWARF Version 5
|
||||||
|
standard. Then there is an :ref:`amdgpu-dwarf-examples` section that links to
|
||||||
|
the AMD GPU specific usage of the features in the proposal that includes an
|
||||||
|
example. Finally, there is a :ref:`amdgpu-dwarf-references` section. There are a
|
||||||
|
number of notes included that raise open questions, or provide alternative
|
||||||
|
approaches considered. The draft proposal seeks to be general in nature and
|
||||||
|
backwards compatible with DWARF Version 5. Its goal is to be applicable to
|
||||||
|
meeting the needs of any heterogeneous system and not be vendor or architecture
|
||||||
|
specific.
|
||||||
|
|
||||||
|
A fundamental aspect of the draft proposal is that it allows DWARF expression
|
||||||
|
location descriptions as stack elements. The draft proposal is based on DWARF
|
||||||
|
Version 5 and maintains compatibility with DWARF Version 5. After attempting
|
||||||
|
several alternatives, the current thinking is that such an addition to DWARF
|
||||||
|
Version 5 is the simplest and cleanest way to support debugging optimized GPU
|
||||||
|
code. It also appears to be generally useful and may be able to address other
|
||||||
|
reported DWARF issues, as well as being helpful in providing better optimization
|
||||||
|
support for non-GPU code.
|
||||||
|
|
||||||
|
General feedback on this draft proposal is sought, together with suggestions on
|
||||||
|
how to clarify, simplify, or organize it before submitting it as a formal DWARF
|
||||||
|
proposal. The current draft proposal is large and may need to be split into
|
||||||
|
separate proposals before formal submission. Any suggestions on how best to do
|
||||||
|
that are appreciated. However, at the initial review stage it is believed there
|
||||||
|
is value in presenting a unified proposal as there are mutual dependencies
|
||||||
|
between the various parts that would not be as apparent if it was broken up into
|
||||||
|
separate independent proposals.
|
||||||
|
|
||||||
|
We are in the process of modifying LLVM and GDB to support this draft proposal
|
||||||
|
which is providing experience and insights. We plan to upstream the changes to
|
||||||
|
those projects for any final form of the proposal.
|
||||||
|
|
||||||
|
The author very much appreciates the input provided so far by many others which
|
||||||
|
has been incorporated into this current version.
|
||||||
|
|
||||||
|
.. _amdgpu-dwarf-motivation:
|
||||||
|
|
||||||
|
Motivation
|
||||||
|
==========
|
||||||
|
|
||||||
This document proposes a set of backwards compatible extensions to DWARF Version
|
This document proposes a set of backwards compatible extensions to DWARF Version
|
||||||
5 [:ref:`DWARF <amdgpu-dwarf-DWARF>`] for consideration of inclusion into a
|
5 [:ref:`DWARF <amdgpu-dwarf-DWARF>`] for consideration of inclusion into a
|
||||||
future DWARF Version 6 standard to support heterogeneous debugging.
|
future DWARF Version 6 standard to support heterogeneous debugging.
|
||||||
|
@ -3753,12 +3820,16 @@ debugger information entries.
|
||||||
* ``DW_AT_LLVM_lanes``
|
* ``DW_AT_LLVM_lanes``
|
||||||
============================= =============================
|
============================= =============================
|
||||||
|
|
||||||
|
.. _amdgpu-dwarf-examples:
|
||||||
|
|
||||||
Examples
|
Examples
|
||||||
========
|
========
|
||||||
|
|
||||||
The AMD GPU specific usage of the features in the proposal, including examples,
|
The AMD GPU specific usage of the features in the proposal, including examples,
|
||||||
is available at :ref:`amdgpu-dwarf-debug-information`.
|
is available at :ref:`amdgpu-dwarf-debug-information`.
|
||||||
|
|
||||||
|
.. _amdgpu-dwarf-references:
|
||||||
|
|
||||||
References
|
References
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue