Gráfico de commits

357 Commits

Autor SHA1 Mensaje Fecha
Benjamin Welton 89167f03a3 Counter definitions for GFX12 (#1038)
Co-authored-by: Benjamin Welton <ben@amd.com>
2024-11-08 08:27:15 -08:00
Jonathan R. Madsen 5eb8c2658c rocprofv3: refactor and reorganize rocprofiler-sdk-tool library (#1138)
* Add rocprofv3-multi-node.md to source/lib/rocprofiler-sdk-tool

* Initial source re-organization

- create "output" static library

* Update include/rocprofiler-sdk/cxx/serialization.hpp

- add GPR count fields to kernel symbol serialization

* Add source/scripts/generate-rocpd.py

- reads one or more JSON output files from rocprofv3 and writes rocpd SQLite3 database
- Note: preliminary implementation

* More reorganization b/t lib/rocprofiler-sdk-tool and lib/output

* Updates to generate-rocpd.py

- add SQL views
- option: --absolute-timestamps -> --normalize-timestamps
- option: --generic-markers
- misc fixes with regards to getting the views working
- support marker names

* Update generate-rocpd.py

- Add --marker-mode option

* Update generate-rocpd.py

- Improve debugging of bad bulk SQLite statements

* Update rocprofv3-multi-node.md

- cleanup of proposed SQL schema

* lib/output/format_path.{hpp,cpp}

- rename format to format_path (in config.hpp and config.cpp)
- move format_path functionality to format_path.{hpp,cpp}

* Rework lib/output/tmp_file_buffer.{hpp,cpp}

* Update output_key.cpp

- support %cwd%, %launch_date%

* Rework lib/output/buffered_output.hpp

* Support csv_output_file constructed via domain_type

* Update lib/output/domain_type.{hpp,cpp}

- get_domain_trace_file_name
- get_domain_stats_file_name

* Update lib/rocprofiler-sdk-tool/tool.cpp

- tweak headers

* Update lib/output/generate*.cpp

- remove include of helpers.hpp
- CSV uses domain_type for filenames

* Update samples/counter_collection/per_dev_serialization.cpp

- make wait_on volatile

* Remove tool_table from lib/output and lib/rocprofiler-sdk-tool

- Also split various structs into their own files
  - lib/output/agent_info
  - lib/output/metadata
  - lib/output/kernel_symbol_info
  - lib/output/counter_info
- Implemented rocprofiler::tool::metadata

* Optimize rocprofiler_tool_counter_collection_record_t

- reduce the size of the struct from 24784 bytes to 8376 bytes

* Introduced output_config

- split subset of config (from tools library) into output_config to be able to configure the output generating functions separately from the tool library
- this is a significant step towards the output generating functions not relying on static global memory

* Stream chunks of data into output instead of loading all info memory

* Remove duplicate group_segment_size in rocprofiler_kernel_dispatch_info_t serialization

* Adding Q&A to rocprofv3-multi-node.md

* Remove all remaining include lib/rocprofiler-sdk-tool from lib/output

- migrated a fair amount of code from lib/rocprofiler-sdk-tool/helper.hpp to lib/output

* Update Q&A of rocprofv3-multi-node.md

* Fix minor compilation errors + minor cleanup

* Update hsa/async_copy.cpp

- when ROCPROFILER_CI_STRICT_TIMESTAMPS > 0, reduce the active_signal sync wait time

* Update profiling_time.hpp

- fix log messages for when start/end time is less/greater than enqueue/current CPU time

* Fix generate_stats for tool_counter_record_t

* Dictionary optimization for generate-rocpd.py

---------

Co-authored-by: SrirakshaNag <104580803+SrirakshaNag@users.noreply.github.com>
2024-11-07 01:15:19 -06:00
Jonathan R. Madsen 98858b60ec CI: Relax timestamp checking (#1189)
* Relax timestamp checking

- Prevent recurring CI failures that have no remedy until HSA/driver issues are resolved

* Replace "cc" abbreviation in tests with "counter-collection"

* Update CODEOWNERS to explicitly include jrmadsen for source/include

* Extra logging in rocprofiler tool library

* Tweak aborted-app test

- remove counter collection as part of the test
2024-11-06 23:32:47 -06:00
Benjamin Welton 6564419357 Update comparing-with-legacy-tools.rst (#1187) 2024-11-06 08:56:32 -08:00
Benjamin Welton c491a5bc34 Timing documentation Update (#1168)
* Timing documentation Update

Documentation update for timing differences. Needs additional review from Joe Greathouse before landing.

* Update comparing-with-legacy-tools.rst
2024-11-06 09:28:41 -06:00
Larry Meadows 62e0a9c1a3 SDK: OMPT Support part 1: include file and print formatters for OMPT support (#1175)
* include file and print formatters for OMPT support

* Apply suggestions from code review

* Remove rocprofiler_ompt_set_callbacks

* Reorder ROCPROFILER_EXTERNAL_CORRELATION_REQUEST_OPENMP

---------

Co-authored-by: Jonathan R. Madsen <jrmadsen@users.noreply.github.com>
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
2024-11-05 23:57:11 -06:00
Larry Meadows cc1498bb3b Ability to select alternative compiler per file (#1086) 2024-11-05 23:45:54 -06:00
Benjamin Welton dc6a568ec5 Kernel Serialization Documentation (#1167)
* Kernel Serialization Documentation

Added docs for kernel serialization.

* Update counter_collection_services.md

* correcting counter collection mode names

* correcting counter collection modes naming

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-11-05 09:00:11 -06:00
Jonathan R. Madsen ad48201912 SDK: create CMake option for strict checks on CPU vs. GPU timestamps (#1159)
* SDK: create CMake option for strict checks on CPU vs. GPU timestamps

- Configurating CMake with `ROCPROFILER_BUILD_CI_STRICT_TIMESTAMPS=ON` will enable fatal errors if dispatch/memcpy timestamps on GPU are outside of the start/end time from the CPU
- `ROCPROFIELR_BUILD_CI_STRICT_TIMESTAMPS` defaults to the value of `ROCPROFILER_BUILD_CI`

* Formatting

* Disable async_copy frequency scaling

* Disable profiling dispatch time frequency scaling

* Support runtime configuration via env variables

- ROCPROFILER_CI_FREQ_SCALE_TIMESTAMPS env variable will enable scaling the timestamps based on the hsa timestamp period
- ROCPROFILER_CI_STRICT_TIMESTAMPS env variable will enable strict timestamp checks
  - when cmake is configured with ROCPROFILER_BUILD_CI_STRICT_TIMESTAMPS=ON, this env variable defaults to true

* ROCPROFILER_BUILD_CI_STRICT_TIMESTAMPS defaults to OFF

* Update cmake-target

* Common tracing::adjust_profiling_time

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-11-01 23:12:51 -05:00
srawat 4204042ac6 Refactor API reference docs (#1125)
* Refactor API reference docs

* refactor API ref docs

* corrections

* consistent naming

* updates

* Update CHANGELOG.md

* improving SEO

* improving SEO

* Update using-rocprofv3.rst

* Update counter_collection_services.md

* Update using-rocprofv3.rst

* Fixing doc build errors

* changelogs and some formatting issues

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-30 19:39:08 +05:30
Jonathan R. Madsen 7f416a2f82 Remove serializing Reserved field of HSA_CAPABILITY (#1170)
- reserved fields have no meaning
2024-10-30 00:12:48 -05:00
Giovanni Lenzi Baraldi 4acca76edb Update fetch_size metric (#1165)
Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-29 21:44:27 -03:00
Manjunath P Jakaraddi f087debe84 SWDEV-493402: Changing the header format for counter collection (#1148)
* SWDEV-493402: Changing the header format for counter collection

* Adding column widths
2024-10-29 10:11:29 +05:30
Benjamin Welton 4a5b1d98c2 SDK: counter collection serialization per device (#1157)
Migrates profiler_serializer class in QueueController to have an instance per-agent instead of one globally. Other changes in this commit are to allow for maps of the queues associated with each agent to be passed to profiler_serializer when it is turned on/off. Existing test cases cover whether or not the kernels are serialized (multistream app). New test case added to show that this serialization only occurs on a per device level with a kernel launched on one device waiting for a value to be set on the other.
2024-10-25 13:13:36 -07:00
Jonathan R. Madsen 5e1643cf81 rocprofv3: stabilize rocprofv3 summary tests (#1161)
* Update tests/bin/transpose/transpose.cpp

- add hipMemGetInfo call to display the available vs. total memory on the GPU

* Update tests/rocprofv3/summary/validate.py

- Updated test_summary_display_data after addition of hipMemGetInfo to transpose test exe

* Tweak code coverage comment uploading

- create unique orphan branch per PR
- reduce quality of PNG files (85 -> 70)

* Revert some of code coverage comment uploading

- remove creation of unique orphan branch per PR

* Tweak code coverage comment uploading

- create unique orphan branch per PR
2024-10-25 14:14:59 -05:00
Jonathan R. Madsen 74facf87a6 CMake: Consistently name CMake Targets (#1082)
* Change all rocprofiler-X target names to rocprofiler-sdk-X

* Update rocprofiler-sdk-config.cmake

- fix install tree target names
- simplify logic for using find w/ components and find w/o components

* Update rocprofiler-sdk-roctx-config.cmake

- simplify logic for using find w/ components and find w/o components

* Update samples/intercept_table/CMakeLists.txt

- demonstrate/test use of `find_package(rocprofiler-sdk ... COMPONENTS ...)`
2024-10-25 11:17:34 -05:00
Jonathan R. Madsen d93d4d9463 rocprofv3: support specifying HW counters via command line (#1130)
* rocprofv3: support specifying PMC counters via command line

- E.g. `rocprofv3 --pmc SQ_WAVES -- <app>`

* Update CHANGELOG

* updated rocprofv3 help and documentation

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-25 02:49:30 -05:00
Giovanni Lenzi Baraldi b5f1d70105 Fix for clang tidy (#1155) 2024-10-24 20:37:05 -03:00
Giovanni Lenzi Baraldi aef18896dd SWDEV-489158: Optimizing counter collection performance (#1150)
* SWDEV-489158: Optimizing counter collection performance

* Static initializer fix

* adding sched_yield+sleep
2024-10-24 16:58:07 -03:00
Gopesh Bhardwaj 42765c35a2 Fixing logging (#1146)
* Fixing logging

* Removing logs
2024-10-24 12:03:16 +05:30
Sam Wu dd71131114 Documentation - Bump rocm-docs-core to 1.8.2 (#1116)
* Bump rocm-docs-core to 1.8.2

* changing certi back to previous version

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-23 17:24:12 +05:30
venkat1361 9d3d5cc07c Max reduction operation bug fix & support reduction for derived counters (#1085)
* Max reduction operation bug fix & support reduction for derived counters

* CHANGELOG

* Added missing new line

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-22 22:49:51 +05:30
venkat1361 3f91d90bbc Check to force tools to initialize the ctx id to zero. (#1135)
* Check to force tool to initialize the ctx id to zero.

* initialize rocprofiler_context_id_t with 0 in units tests

* changelog

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-22 18:09:25 +05:30
Jonathan R. Madsen a92fa8f071 Miscellaneous Testing Fixes + CMake find_package include guard (#1106)
* Improve ROCPROFILER_DEFAULT_FAIL_REGEX

* Support find_package called twice

* Skip iteration of ROCPROFILER_AGENT_TYPE_CPU

* Relax tests/rocprofv3/summary

* Tweak to rocprofiler-sdk-tool/tool.cpp

* Move rocprofv3-trigger-list-metrics to libexec

* Remove PC_SAMPLING_TESTS_REGEX from CI workflow

* Update packaging

- core component depends on roctx component

* Increase verbosity for failing tests

* Fix RPATH of rocprofv3-trigger-list-metrics

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-22 16:24:16 +05:30
Gopesh Bhardwaj bfe80a4428 Removing rocprofv3.sh and rocprofv3 install path to sbin (#1143) 2024-10-22 14:16:36 +05:30
venkat1361 22881148bd Parsing Select() expression dimension args to support range of values. (#1074)
* dim args for select token now supports range of values instead of single integer

* dim args for select token now supports range of values instead of single integer

* modified raw_ast fmt::format

* CHANGELOG.md

* varible rename for select dim from set to map in suffix

* use : for giving range of values

* Update source/lib/rocprofiler-sdk/counters/parser/scanner.cpp

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* format

* Update CHANGELOG.md

* using map instead of unordermap for select_dimension_map

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-22 11:44:08 +05:30
Benjamin Welton 210762c69d Added agent_id to rocprofiler_record_counter_t (#1078)
Co-authored-by: Benjamin Welton <ben@amd.com>
2024-10-21 16:29:53 -07:00
Benjamin Welton c6ae3961f8 Test for AQL packet decoding for SQ Waves (#765)
Checks the decoding of AQL packets for SQ Waves by
launching a kernel, injecting the AQL packets, and
decoding the result. This does not use write interceptor
but does this check on a raw HSA stream with direct
injection.
2024-10-21 10:41:29 -07:00
Benjamin Welton 788e687167 Agent Profiling Fixes for Broken/Improper API Usage (#1122)
Prevent's multiple setups of agent profiling on the same agent.

Fixes agent read context to only read agents that were setup.

Prevent copy of agent profiling internal data struct and reset
hsa_signal on move to prevent inadvertant delete.
2024-10-18 15:48:22 -07:00
Gopesh Bhardwaj b502f98ea3 Testing updated RPM dockers (#1136)
* Testing updated RPM dockers

* Trying to fix PSDB for test package dependency
2024-10-18 22:15:06 +05:30
Benjamin Welton bb69467765 Renamed agent profiling service to device counting service (#1132)
* Renamed agent profiling service to device counting service

Name more aptly represents what agent profiling did (device wide
counter collection). Conversion of existing user code can be
performed by the following find/sed command:

find . -type f -exec sed -i 's/rocprofiler_agent_profile_callback_t/rocprofiler_device_counting_service_callback_t/g; s/rocprofiler_configure_agent_profile_counting_service/rocprofiler_configure_device_counting_service/g; s/agent_profile.h/device_counting_service.h/g; s/rocprofiler_sample_agent_profile_counting_service/rocprofiler_sample_device_counting_service/g' {} +

* Converted dispatch profile to dispatch counting service

* Debug for functioal counters test

* Minor changes for CI

* Minor fix

* More fixes for CI

* Update evaluate_ast.cpp

---------

Co-authored-by: Benjamin Welton <ben@amd.com>
2024-10-18 14:14:11 +05:30
Gopesh Bhardwaj 320427b5f5 rocprofv3: docs and help menu updates (#1129)
* doc updates

* Correcting ROCtx information

* Making ROCTx string consistent

* missing occurence
2024-10-17 13:28:53 +05:30
Manjunath P Jakaraddi 673c21c6db Adding start and end timestamp columns in csv (#1128)
* Adding start and end timestamp columns in csv

* Adding assert check for the counter timestamps

---------

Co-authored-by: Gopesh Bhardwaj <gopesh.bhardwaj@amd.com>
2024-10-17 11:31:00 +05:30
Benjamin Welton 28a6918b33 Clang Warning Fixes (#1131)
Builds prevented on clang-18
2024-10-15 22:20:38 -07:00
Ammar ELWazir d762694acb Fixing kokkosp tool library packaging (#1121)
* Fixing kokkosp tool library packaging

* Update source/lib/rocprofiler-sdk-tool/kokkosp/CMakeLists.txt

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>

* Update CMakeLists.txt

* Update CMakeLists.txt

* Component Requirement in CPack

* Adding package dependency

* Update CMakeLists.txt

* Update rocprofiler_config_packaging.cmake

* Fix rocprofiler-sdk-tool-kokkosp BUILD/INSTALL RPATH

- CMAKE_INSTALL_LIBDIR doesn't help

* Add BUILD/INSTALL RPATH to rocprofv3-trigger-list-metrics

- fixes packaging issues

* Update packaging

- core depends on rocprofiler-sdk-roctx
- add CPACK_DEBIAN_PACKAGE_SHLIBDEPS_PRIVATE_DIRS to resolve inter-package dependencies

* Fix package depends version format

* Improve tests/rocprofv3/summary/validate logging

* Update CI workflow

- prioritize roctx package in Install Packages step

* Remove setting <package-name>_VERSION in config.cmake.in

- this is automatically handled by existence of <package-name>-config-version.cmake

* Update rocprofiler-sdk-config.cmake

- relax find_package versioning requirements to same major and minor version

* Update rocprofiler-sdk-config.cmake

- relax find_package versioning requirements (remove EXACT, specify range)

* Tweak CI workflow

* Update perfetto_reader.py

- better handle failure to load trace processor

* Misc cleanup for config packaging

* Update config packaging

* Update config packaging

* Revert perfetto for core-rpm packages

* Revert perfetto for core-rpm packages

- perfetto < 0.9.0

* Tweak tests/rocprofv3/summary/validate.py

- reorder some checks

---------

Co-authored-by: Ammar Elwazir <aelwazir@useocpm2m-387-013.amd.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Jonathan R. Madsen <jonathanrmadsen@gmail.com>
2024-10-15 20:28:06 -05:00
Gopesh Bhardwaj 8ab1ed78d8 Adding Node-id for debugging with log level trace (#1090) 2024-10-10 11:00:28 +05:30
Gopesh Bhardwaj 81e93a6ddb mem copy direction field update (#1124) 2024-10-08 15:15:48 +05:30
Benjamin Welton b46966e96b clang-18 build fix for RCCL (#1123)
Removes ambiguity on const usage, which clang-18 complains about
(preventing build with warn error).
2024-10-07 15:58:41 -07:00
Mythreya a3b41d04fc Fix PSDB change (#1120)
Reverts change to `source/include/rocprofiler-sdk/callback_tracing.h`
from commit 9b2ece76c3
2024-10-07 17:37:19 -05:00
Giovanni Lenzi Baraldi 9652a6e738 SWDEV-487621: Fixes for metric definitions (#1118)
* Fixes for metric definitions

* Removing gfx8

* Update changelog

* Fixing unit tests

* Small fixes

* Fix for write size
2024-10-08 02:44:31 +05:30
Giovanni Lenzi Baraldi a6be3f9660 SWDEV-488948: PC Sampling - Correlation class to provide some thread safety. Adding multithread tests. (#1112)
* SWDEV-488948: PC Sampling - Correlation class to provide some thread safety. Adding multithread tests.

* Update source/lib/rocprofiler-sdk/pc_sampling/parser/correlation.hpp

Co-authored-by: Vladimir Indic <139573562+vlaindic@users.noreply.github.com>

* Update source/lib/rocprofiler-sdk/pc_sampling/parser/correlation.hpp

Co-authored-by: Vladimir Indic <139573562+vlaindic@users.noreply.github.com>

* Adding backlog for codeobj changes

* Formatting

* Update source/lib/rocprofiler-sdk/pc_sampling/code_object.hpp

Co-authored-by: Vladimir Indic <139573562+vlaindic@users.noreply.github.com>

* Update source/lib/rocprofiler-sdk/pc_sampling/code_object.hpp

Co-authored-by: Vladimir Indic <139573562+vlaindic@users.noreply.github.com>

---------

Co-authored-by: Vladimir Indic <139573562+vlaindic@users.noreply.github.com>
2024-10-07 20:00:59 +00:00
Gopesh Bhardwaj 9b2ece76c3 Fixing installed pacakge tests in CI (#1119)
* Fixing installed pacakge tests in CI

* Formatted rocprofv3.py with black formatter
2024-10-07 20:55:35 +05:30
Gopesh Bhardwaj f2f267bcc0 updating rocprofv3 help options (#1113)
* updating rocprofv3 help options

* updating CHANGELOG
2024-10-05 12:40:27 +05:30
Giovanni Lenzi Baraldi fa7fc7ec5d Fixing some accumulate metrics (#1089)
* Fixing some accumulate metrics

* Fixing some more accumulate metrics

---------

Co-authored-by: Benjamin Welton <bewelton@amd.com>
2024-10-03 09:44:31 -07:00
Giovanni Lenzi Baraldi 1d6a0b5c80 SWDEV-467350: Skipping tool counter iteration for unsupported hardware (#1083) 2024-10-03 09:04:42 -07:00
Benjamin Welton a159fb47c7 Update limit for max counter records in rocprof-tool (#1073)
A fixed sized std::array is used to store counter records in rocprofiler SDK. This limit was breached in SWDEV-484742. Upping the limit to 512 to be less likely to reach this limit again.
2024-10-02 16:56:42 -07:00
Benjamin Welton 4f05850efd [SWDEV-484495] Fix int truncation in CSV output (#1098)
CSV output truncates doubles to ints when it shouldn't. Derived metrics
are (mostly) doubles and lose precision (or become worthless) if treated
as an int. Converted these to double to match the format we return from
rocprof-sdk.

Co-authored-by: Benjamin Welton <ben@amd.com>
2024-10-02 16:55:00 -07:00
Jeffrey Novotny 78fe20320f Correct link to rocprofiler-sdk GitHub (#1097) 2024-09-27 21:03:49 -06:00
Benjamin Welton 0c4a583e23 [rocprofv3] Do not fetch metrics for CPU agents (#1101)
Skip CPU agents when fetching metrics. Only fetch metrics for GPU
agents.

Co-authored-by: Benjamin Welton <ben@amd.com>
2024-09-27 21:03:18 -06:00
Jonathan R. Madsen 2f0ec02950 Fix rocprofiler-sdk-tool-kokkosp (#1094)
* Fix rocprofiler-sdk-tool-kokkosp

- missing symbol `rocprofiler::common::impl::get_env(std::basic_string_view<char, std::char_traits<char> >, bool)`

* cmake formatting
2024-09-24 17:04:58 -05:00