dfaa4dc9c5
* Add Sphinx and Read the Docs configs
* Add documentation workflow configurations
* Changed macros verbprintf and verbprintf_bare so they write to stdout… (#346)
Flush stdout when listing keys + bump verbose level for GPU count
* Removing static version asserts. (#347)
It is causing failures on our internal builds
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Check for an empty vector before popping (#350)
Protect from possible seg. fault
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Add release links to installation.md (#351)
* Initial infrastructure rework for Omnitrace refactoring and a rewrite of the What is file
* Add files in conceptual section, along with images and infrastructure changes.
* Formatting and style fixes for files in conceptual directory
* Add quick start install guide and fix spelling errors in other files
* Add install document and fix code tags. Infrastructure changes
* Add two how-to guides along with infra changes and spelling fixes
* Add two new how to files and fix errors in the last commit
* Fix spelling mistakes
* Add new how to file on causal profiling and infra changes.
* Add how to file on interpreting Omnitrace output, fixes, and images
* Add remaining how-to guides and reference materials along with fixes and infrastructure
* Add YouTube file and fix spelling and formatting
* Fix a few loose ends and add link to license page
* Add Sphinx and Doxygen infrastructure and some additional corrections
* Update rocm-docs-core
* Fix Doxyfile
* Fix path to API header files
* Run doxysphinx in conf.py
* Add back custom css for doxygen
* Remove doxygenlayout
* Add api to toc
* Update Doxyfile
Generate from source .in
* Proofreading edits and other changes
* Add .gitignore for Doxygen and remove deprecated words and typos
* Fix one additional typo
* Turn off dot
* Update doxyfile strip from path
* Workflow, submodules, and thread info Updates (#352)
* Update CI workflows
- use node20 workflow packages
* Update tests/source/CMakeLists.txt
- Use OMNITRACE_TRACE and OMNTRACE_PROFILE instead of perfetto/timemory
* Update timemory submodule
- argparse: requires -> required
- parse callbacks
* Update thread_info.cpp
- fix causal::delay::get_local usage
* Update timemory submodule
* Update kokkos submodule
- release 3.7.02
* Revert opensuse.yml and ubuntu-bionic.yml to use node16 workflows
* Update docs.yml
* ROCm 6.1 Installers (#349)
* Add ROCm 6.1 to packages
* Bump version to 1.11.3
* Add 6.1 support to the docker build support.
Simplified this by adding 6.* to case statements, now that repo links have been standardized.
* Update timemory submodule (#354)
- fix argparse::argument::required template deduction
* Build omnitrace-rt library (#355)
* Build omnitrace-rt library
- Explicitly build dyninstAPI_RT as omnitrace-rt so that the SONAME in the ELF is omnitrace-rt instead of dyninstAPI_RT
- Create symbolic link lib/omnitrace/libdyninstAPI_RT.so which points to lib/libomnitrace-rt.so
- Simplify build tree location of libomnitrace-rt.so since it is ../lib from the bin directory even in the build tree
- Update dyninst submodule with minor tweaks to dyninstAPI_RT/CMakeLists.txt
* Update source/lib/omnitrace-rt/cmake/platform.cmake
* Use ftpmirror.gnu.org instead of ftp.gnu.org
- in timemory and dyninst submodules
- minor .clang-tidy tweak
* Executables append omnitrace library directory to LD_LIBRARY_PATH (#356)
- omnitrace-run, omnitrace-sample, and omnitrace-causal now automatically append the LD_LIBRARY_PATH with the directory containing the omnitrace libraries
- this helps ensure that binary rewritten exes can resolve omnitrace-rt library location
* Fix a few typos and formatting issues
* Additional fixes and minor formatting changes.
* More fixes and minor formatting changes.
* Complete second proofreading with fixes and minor formatting changes.
* Make changes to table of contents and disable linting
* Update links in the README doc to reflect the new structure.
* Align intro on the Omnitrace index page with the first paragraph of the what-is page
* Changes and edits based on review comments
* Additional changes and edits based on external review
* Additional updates and changes from the external review of Omnitrace
* Additional changes based on the external review
* New round of edits based on the external review
* Additional edits based on the external review
* Changes to address comments from the internal review
* Correct to the RHEL SELinux note in the troubleshooting guide
* One additional change to the development guide code example
* Move troubleshooting to post-install of install.rst and other minor edits.
* Remove troubleshooting page and modify new post-install troubleshooting section on install.rst
* Refactor the how Omnitrace works page into seperate topics and redo infrastructure
* API ToC changes
* Additional API and ToC changes
* Back out API and ToC changes and update requirements.txt
* Additional API and ToC changes
* Add commit for signing purposes
* Add ElfUtils and BinUtils Download URL Overrides (#358)
* Add CMake CACHE Variable ElfUtils_DOWNLOAD_URL
Used to override the default URL to download ElfUtils from.
Useful for internal builds
Also, include a mirror to fallback to if the override URL fails.
* Update timemory submodule
Updating to include the BINUTIL_DOWNLOAD_URL override cmake
variable.
---------
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
* Remove Ubuntu 18.04 and SUSE 15.2
* Update checkout action to v4
* Add `docs/**` to `paths-ignore`
Document location is being refactored.
* Modified submodules dyninst and timemory. (#361)
---------
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
Co-authored-by: Peter Jun Park <peter.park@amd.com>
Co-authored-by: ajanicijamd <Aleksandar.Janicijevic@amd.com>
Co-authored-by: David Galiffi <David.Galiffi@amd.com>
Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com>
Co-authored-by: Sam Wu <22262939+samjwu@users.noreply.github.com>
[ROCm/rocprofiler-systems commit: 0689797736]
102 lines
4.8 KiB
ReStructuredText
102 lines
4.8 KiB
ReStructuredText
.. meta::
|
|
:description: Omnitrace documentation and reference
|
|
:keywords: Omnitrace, ROCm, profiler, tracking, visualization, tool, Instinct, accelerator, AMD
|
|
|
|
*******************
|
|
Omnitrace Glossary
|
|
*******************
|
|
|
|
This topic explains the terminology necessary to use Omnitrace.
|
|
The list below provides a basic glossary for those who
|
|
are new to binary instrumentation. It also clarifies ambiguities
|
|
when certain terms have different
|
|
contextual meanings, for example, the Omnitrace meaning of the term "module"
|
|
when instrumenting Python.
|
|
|
|
**Binary**
|
|
A file written in the Executable and Linkable Format (ELF). This is the standard file
|
|
format for executable files, shared libraries, etc.
|
|
|
|
**Binary instrumentation**
|
|
Inserting callbacks to instrumentation into an existing binary. This can be performed
|
|
statically or dynamically.
|
|
|
|
**Static binary instrumentation**
|
|
Loads an existing binary, determines instrumentation points, and generates a new binary
|
|
with instrumentation directly embedded. It is applicable to executables and libraries but
|
|
limited to only the functions defined in the binary. This is also known as **Binary rewrite**.
|
|
|
|
**Dynamic binary instrumentation**
|
|
Loads an existing binary into memory, inserts instrumentation, and runs the binary.
|
|
It is limited to executables but is capable of instrumenting linked libraries.
|
|
This is also known as **Runtime instrumentation**.
|
|
|
|
**Statistical sampling**
|
|
At periodic intervals, the application is paused and the current call-stack of the CPU
|
|
is recorded along with various other metrics. It uses timers that measure either
|
|
(A) real clock time or (B) the CPU time used by the current thread and the CPU time
|
|
expended on behalf of the thread by the system. This is also known as simply **sampling**.
|
|
|
|
**Sampling rate**
|
|
* The period at which (A) or (B) are triggered (in units of ``# interrupts / second``)
|
|
* Higher values increase the number of samples
|
|
|
|
**Sampling delay**
|
|
* How long to wait before (A) and (B) begin triggering at their designated rate
|
|
|
|
**Sampling duration**
|
|
* The amount of time (in real-time) after the start of the application to record samples.
|
|
* After this time limit has been reached, no more samples are recorded.
|
|
|
|
**Process sampling**
|
|
At periodic (real-time) intervals, a background thread records global metrics without
|
|
interrupting the current process. These metrics include, but are not limited to:
|
|
CPU frequency, CPU memory high-water mark (i.e. peak memory usage), GPU temperature,
|
|
and GPU power usage.
|
|
|
|
**Sampling rate**
|
|
* The real-time period for recording metrics (in units of ``# measurements / second``)
|
|
* Higher values increase the number of samples
|
|
|
|
**Sampling delay**
|
|
* How long to wait (in real-time) before recording samples
|
|
|
|
**Sampling duration**
|
|
* The amount of time (in real-time) after the start of the application to record samples.
|
|
* After this time limit has been reached, no more samples are recorded.
|
|
|
|
**Module**
|
|
With respect to binary instrumentation, a module is defined as either the filename
|
|
(such as ``foo.c``) or library name (``libfoo.so``) which contains the definition
|
|
of one or more functions.
|
|
|
|
With respect to Python instrumentation, a module is defined as the **file** which contains
|
|
the definition of one or more functions. The full path to this file typically contains the
|
|
name of the "Python module".
|
|
|
|
**Basic block**
|
|
A straight-line code sequence with no branches in (except for the entry) and
|
|
no branches out (except for the exit).
|
|
|
|
**Address range**
|
|
The instructions for a function in a binary start at certain address with the ELF file
|
|
and end at a certain address. The range is ``end - start``.
|
|
|
|
The address range is a decent approximation for the "cost" of a function.
|
|
For example, a larger address range approximately equates to more instructions.
|
|
|
|
**Instrumentation traps**
|
|
On the x86 architecture, because instructions are of variable size, an instruction
|
|
might be too small for Dyninst to replace it with the normal code sequence
|
|
used to call instrumentation. When instrumentation is placed at points other
|
|
than subroutine entry, exit, or call points, traps may be used to ensure
|
|
the instrumentation fits. (By default, ``omnitrace-instrument`` avoids instrumentation
|
|
which requires a trap.)
|
|
|
|
**Overlapping functions**
|
|
Due to language constructs or compiler optimizations, it might be possible for
|
|
multiple functions to overlap (that is, share part of the same function body)
|
|
or for a single function to have multiple entry points. In practice, it's
|
|
impossible to determine the difference between multiple overlapping functions
|
|
and a single function with multiple entry points. (By default, ``omnitrace-instrument``
|
|
avoids instrumenting overlapping functions.) |