Commit Graph

296 Commits

Author SHA1 Message Date
Laurent Morichetti f76ed5eb8e Add the roctracer-tests package
The roctracer-tests package contains all the roctracer test binaries
and scripts needed to run the testsuite outside of the build directory.

Change-Id: Id11f862fb4bdb2425d68f455074172c38814ec92


[ROCm/roctracer commit: 3adc56bd9b]
2022-07-05 17:03:21 -04:00
Laurent Morichetti 46061428fa Use the new ROCR support to automatically load tool libraries
The ROCR now detects already loaded tool libraries and calls OnLoad/
OnUnload in the order specified with HSA_AMD_TOOL_ORDER.

It is no longer necessary to set the HSA_TOOLS_LIB environment variable
to load the roctracer API. The roctracer tool library should be
pre-loaded with LD_PRELOAD.

Change-Id: I6de1b1bd4f93caa08d3554aad2376d242c74fb7e


[ROCm/roctracer commit: d32cf96cd4]
2022-06-24 16:45:03 -07:00
Ammar ELWazir 7cce3923ac Enabling ROCP_STATS_OPT
Enabling the new methodology of ROCP_STATS_OPT of getting HIP activities while the application is running

Change-Id: I94b3311b0740db804643dba0e4f77c1f9de0319b


[ROCm/roctracer commit: 7cbee920b7]
2022-06-21 14:58:28 -05:00
Laurent Morichetti 67fb1f56b3 Enable tests validation in the CI environment
Change-Id: Ied3d203db35083f0045fae052d82ec5e1a867581


[ROCm/roctracer commit: fd1469a573]
2022-06-18 13:50:35 -07:00
Laurent Morichetti 9ce94f467e Fix warnings due to deprecated include path
In file included from roctracer/src/roctracer/tracker.h:24,
                 from roctracer/src/roctracer/roctracer.cpp:44:
/opt/rocm/hsa/include/hsa/amd_hsa_signal.h:26:246: note: ‘#pragma message: amd_hsa_signal.h has moved to ...’
   26 | ssage("amd_hsa_signal.h has moved to ...")
      |                                          ^

Change-Id: I38d151d836688083a4fdb0e86a04fc40923a369f


[ROCm/roctracer commit: 44dbb56fce]
2022-06-18 13:50:33 -07:00
Ranjith Ramakrishnan 7aca8b3f1a SWDEV-295886 - Replaced hard coded path /opt/rocm with ROCM_PATH
HIP cmake module path set to actual cmake file location

Change-Id: I7a3e6eec2b51d0e550e68496eecf268a01a2d015


[ROCm/roctracer commit: 0fa2808779]
2022-06-16 00:11:35 -07:00
Laurent Morichetti c3e991dfb1 Remove EvtStats from the tracer_tool
The same information can be generated from the hcc_ops_trace.txt file,
so in a later commit, will add a stage to the tblextr.py script to
generate the .csv files when ROCP_STATS_OPT=1.

Change-Id: I3d1575e096bedf98c66068d9a4ca141421e5bb9d


[ROCm/roctracer commit: 836bab37d3]
2022-06-09 15:20:14 -07:00
Laurent Morichetti 4af9cdc409 Add a data region to the memory pool
Some records may need to point to data with the same lifetime as the
records themselves. One solution is to store the data at the end of
the memory pool buffer. Records in the buffer grow up, and the data
grows down. When the buffer is flushed both records and data are
recycled.

Change-Id: I278fa84478236bf895f7c2d152d47d4256987392


[ROCm/roctracer commit: ef3b2a8aa8]
2022-06-08 18:34:23 -04:00
Laurent Morichetti af5722a2ce Fix test errors
Check the HIP API calls status, and abort if != success.

Change-Id: Ifc38d8f28092ffdce1674a05a7886f7c0c97a885


[ROCm/roctracer commit: 4c6f249cc1]
2022-06-03 01:39:58 -04:00
Laurent Morichetti d9d54df2e6 Fix HIP cmake shared library linker flags
Change-Id: I026cc7a6bcf607e3f49c5ff76bc399cf2d8c8f0c


[ROCm/roctracer commit: bdfa9fb9f7]
2022-06-01 18:36:59 -04:00
Laurent Morichetti 9bd36c0f9e Fix building the tests with Clang
Change-Id: I85c5617221e6b27553a773e76a05be9409ed10ef


[ROCm/roctracer commit: 426c9def66]
2022-06-01 16:05:43 -04:00
Tony Tye c1cf479c38 Disable CMAKE_HIP_ARCHITECTURES
Prevents cmake errors for the HIP targets such as:

  HIP_ARCHITECTURES is empty for target "MatrixTranspose".

Change-Id: I352916f6dccd22576e8b1482a41e2099b6d8a8d9


[ROCm/roctracer commit: b63427d694]
2022-06-01 11:17:58 -04:00
Laurent Morichetti b67c618f49 Remove the tracer tool's constructor and destructor functions
Change-Id: I12d88af726074fb15f8159580c85c12888f72172


[ROCm/roctracer commit: e9b3b7c9a0]
2022-05-24 21:50:47 -07:00
Laurent Morichetti ef717b9a2a Add ROCtracer version information
Change-Id: I10b268790d2dc4f3a3ad8624b2f553da6f3ccc8e


[ROCm/roctracer commit: 1c450082af]
2022-05-24 23:52:29 -04:00
Laurent Morichetti 2603a49ce3 Remove internal functions from the ROCtracer API
The roctracer_load, roctracer_unload, and roctrace_flush_buf functions
are not part of the ROCtracer API, and should not be exposed in the API
header file, but keep the functions in the library for backward
compatibility.

Add src/roctracer/backward_compat.cpp to implement retired functions.

Add test/app/backward_compat_test.cpp to test that the retired functions
are still accessible in the latest roctracer library.

Change-Id: I4c94310a7bfccfeae9384dac5db18fc79b4c5b17


[ROCm/roctracer commit: 8ee9d859ed]
2022-05-24 15:52:29 -07:00
Laurent Morichetti 2db9dc7f66 Add a ROCTX test
Change-Id: I90dab2f349ade6cbfc86f0399c8b9ca905de23b3


[ROCm/roctracer commit: 1e7783af58]
2022-05-23 23:10:26 -04:00
Laurent Morichetti fdda233292 Document the ROCTX API
Change-Id: I63a04139d1640ea5d52f6143cf2e9bfc0614a894


[ROCm/roctracer commit: 7ebae10571]
2022-05-23 23:10:02 -04:00
Laurent Morichetti e2d5956703 Don't override the LD_LIBRARY_PATH if IS_CI=1
The tests should be using the newly built libraries in the cwd.

Change-Id: I993e74a6cdbfdc78cf226f3fa5e4b55555f27825


[ROCm/roctracer commit: c74bb1fced]
2022-05-20 14:49:58 -07:00
Laurent Morichetti 0bb77aa022 Fix CMakeLists.txt conventions
Fix indentation, quoting, and white spaces.

Change-Id: I5e5e95b961e83e5957bdd137ef9893615396bb53


[ROCm/roctracer commit: 13fe79ab09]
2022-05-20 12:31:25 -07:00
Laurent Morichetti e9a6364519 Replace the HSA standalone test
Change-Id: I89e6826eef412890185ec600cd806c7b516e62a9


[ROCm/roctracer commit: c66fc25741]
2022-05-20 10:36:38 -07:00
Laurent Morichetti 7e11a61f6f File reorganization
Move the tracer_tool from the 'test' directory to the 'src' directory.

Change-Id: I13768b9610cd359f78a66147f0255ab1e4c657e9


[ROCm/roctracer commit: b34e9c2ee4]
2022-05-20 10:36:38 -07:00
Laurent Morichetti 4cecd8b69d Add symbol versioning
Add symbol versioning to the roctracer64 and roctx64 library, and only
expose the OnLoad and OnUnload tracer_tool symbols.

Change-Id: I7f160fc3e568567fd1146ff5b9c0aef3bdcccf53


[ROCm/roctracer commit: 0377c5a191]
2022-05-20 10:36:38 -07:00
Laurent Morichetti 8b439bd2fa Enable the trace buffer directed test
Change-Id: Icddecf488f99c99434c7c690a9cb47d2d0ccbee6


[ROCm/roctracer commit: d42d7e7543]
2022-05-20 10:36:38 -07:00
Laurent Morichetti edfb1cbc44 CMakeLists.txt cleanup
Add custom_commands to generate the HSA code objects
Remove the configure time file generation and add custom commands to
generate them at build time.

Change-Id: I167dd9befc6c73f32224935eaab74510922b26f4


[ROCm/roctracer commit: 3773384af8]
2022-05-20 10:36:38 -07:00
Ammar ELWazir 0b9de5c48a fixing trace period test for gfx1031
The test was too fast and couldn't trace all the functions

Change-Id: I3e278f6af084a27490a354e7e409eb19e69a63e7


[ROCm/roctracer commit: edbd011bae]
2022-05-20 05:03:35 -04:00
Laurent Morichetti 7a1369a099 Remove CMAKE_VERBOSE_MAKEFILE
This should be enabled at the command line during the cmake configure
step (-DCMAKE_VERBOSE_MAKEFILE=True).

Verbose output can also be enabled during the build by setting the
VERBOSE=1 GNU make variable, or using the -v Ninja option.

Change-Id: Ie842c900c83c8f9f1c3ab4119e3bbc7931d371f5


[ROCm/roctracer commit: 2b3dc8f20b]
2022-05-18 16:13:14 -07:00
Ammar ELWazir 6b7415dc89 Fixing the issue with HSA Traces having core dumps
Global destructor issue, using atexit to run tool_unload once at the exit of the tracer tool.

Change-Id: I276f6d240cd312ba1eacaf52c38ef8fd1f607268


[ROCm/roctracer commit: ae1091d816]
2022-05-17 17:44:11 -05:00
Ammar ELWazir fd9d6fb95d Trace Period Optimization
Optimizing trace period to use std::threads as well as std::chrono sleep instead of sleep and usleep and catching up corner cases for ending before the trace period duration and some cosmetic clean up

Change-Id: Ia99f346bf71a3faad5dfdfc8d7a08f6c2b2cc0b9


[ROCm/roctracer commit: 1f9efecd4a]
2022-05-13 00:11:02 -05:00
Laurent Morichetti fc397530cf run.sh: In case of error, also print the stderr log
Change-Id: I9a20bf2d755749b036788d7e2fce044a7f36eb2e


[ROCm/roctracer commit: e1fa2cb5d5]
2022-05-12 20:16:09 -04:00
Laurent Morichetti 1eef82000d Fix an intermittent failure in "tool flushing test"
The test (MatrixTranspose) and the tracer tool both write to stdout
which sometime causes a trace corruption.

Change the test to emit info messages to stderr instead of stdout,
leaving stdout for the tracer tool's exclusive use.

Change-Id: I18047dbcd9039b70dd24ef6e7e8e9d89b40bedd2


[ROCm/roctracer commit: bbe1db3810]
2022-05-12 20:15:37 -04:00
Ammar ELWazir 5a7a35bcc1 Fixing cmake_modules
Removing unused definitions and compile options
Using cmake variables to set the options needed
Changing the visibility to make it specific for the targets

Change-Id: I80cf0997cd28897d5a06a58c7225ba40dfc51e2d


[ROCm/roctracer commit: 2f5313a0c7]
2022-05-11 19:25:43 -04:00
Ammar Elwazir a2a83101da Merge "Flush function fix" into amd-staging
[ROCm/roctracer commit: 3882091c71]
2022-05-11 19:13:43 -04:00
Ammar ELWazir 407a31a78e Flush function fix
Using std::thread instead of pthreads and also atomic_bool to identify the end of the flush function so that the unload_tool can wait for it

Change-Id: Iea00d7e16c65d51db2d222e8b42f03f9caeb2067


[ROCm/roctracer commit: 80464525c7]
2022-05-11 17:20:39 -04:00
Ammar ELWazir 3df8bc7c77 Removing Backward compatability
removing the backward compatability file and making sure to use the right paths

Change-Id: I518d52c82e0c5878bd334713e7b1758bba79762d


[ROCm/roctracer commit: 6b16d37d65]
2022-05-11 14:43:35 -04:00
Laurent Morichetti 12623a5f24 Fix the roctracer tests
14/15 tests pass, 1/15 intermittent failure (tool flushing test).

Change-Id: I36ed2900a1c51e584718993badeaefd48ad450a2


[ROCm/roctracer commit: a98476fe11]
2022-05-10 14:58:08 -07:00
Laurent Morichetti 196af97ad6 Disallow copying or moving trace buffers
Change-Id: I104b8240a76c6d96ae176b0b26bdc2e4e5e3c180


[ROCm/roctracer commit: 3f402eb6e9]
2022-05-10 12:08:06 -07:00
Laurent Morichetti 9b78c65ce1 Remove the roctx range message stack
The range message stack is mirrored in case ranges are pushed or popped
while tracing is stopped (by the tracer tool?). When a stop event is
reported, the tracer tool emits RangePop events by unwinding the stack,
then when the start event is reported, it emits RangePush events again
by unwinding the stack. The issue is that the RangePush events should
be emitted in reverse order.

For example:

RangePush(M1); RangePush(M2); \
  TracerStop; RangePop; RangePop; \
...; \
  TracerStart; RangePush(M2); RangePush(M1); \ <- In the wrong order
RangePop; RangePop;

It could be fixed by reversing the stack in RangeStackIterate but is it
worth it? The roctx range markers are supposed to be unintrusive so that
they can be left in the application even when it isn't being traced.

Simplifying the roctx API and reducing its added latency by removing
the range message stack mirroring seems like the better choise.

TODO: A future change should make roctx events immune to tracer start
and tracer stop requests. Or simply remove roctracer_start/stop.

Change-Id: Ie4d76afb5ce8d263848dcf1b599af394db56ddab


[ROCm/roctracer commit: 3d0198c395]
2022-05-10 12:08:06 -07:00
Laurent Morichetti 19fbb76f1b Consolidate all sources of timestamps
System clock timestamps should only come from a single source:
util::timestamp_ns(). Externally, this function is exposed as
roctracer_get_timestamp() (used by the tracer tool).

Removed the now unused HSA Runtime Utilities which were never part
of the ROCtracer API.

Change-Id: I044b7f4da60fd8fdb771b0c877622a3143f0e815


[ROCm/roctracer commit: f8462b8637]
2022-05-10 08:13:09 -07:00
Laurent Morichetti efe7000e7b Remove unused ROCTX_CLOCK_TIME
Change-Id: I9696bb2892fe6fe21089462d624643b7a782fb71


[ROCm/roctracer commit: f46d1717cc]
2022-05-04 19:30:37 -04:00
Laurent Morichetti 2c4f347c0a Remove the tracer tool's dependency on hsa_rsrc_factory
hsa_rsrc_factory was only used to enumerate the agents types and pools.
The pools don't seem to be used by bin/mem_manager.py, so I only
ported the agent enumeration using hsa_iterate_agents.

Change-Id: Idd586aa13db303cf92962a6392771b7bf38b758f


[ROCm/roctracer commit: 6d6017249a]
2022-05-04 19:28:53 -04:00
Ammar ELWazir e0aaaf4636 Removing HIP_API_PROF_STRING from the tracer_tool
The else part was not used as it was only using the hipApiString to format the data to string

Change-Id: I376721c478cffba0890436ca8895dfe2a7641570


[ROCm/roctracer commit: 5e012541c5]
2022-05-04 09:46:56 -04:00
Laurent Morichetti f1bce685df Fix race conditions in TraceBuffer
1) The Entry's state was published after making the record avaiable,
   so a thread flushing the records could see an unitialized record.
2) data_ and write_pointer_ could become out of sync. write_pointer_
   could be indexing into another buffer than what data_ was pointing
   to.
3) GetEntry could get a nullptr free_buffer_ because multiple threads
   could acquire the work_mutex_ before the work_thread_ could wake up,
   or between allocate_worker's loop iterations.

Change-Id: I6f0a015557888eeeaa75a8bce7fde8de276d11dd


[ROCm/roctracer commit: 046df32729]
2022-05-03 21:56:46 -04:00
Laurent Morichetti 8502571ab7 Move trace_buffer.h to the tool directory
A trace buffer is used to efficiently store synchronous event records
so that they can be processed later, possibly in a different thread,
when the buffer is flushed. This helps reduce the latency added by
tracing API calls.

The API does not need to use trace buffers as synchronous events are
directly reported to the client with callbacks, and asynchronous events
(activities) are saved in memory pools.

The implentation of HSA asynchronous memory copy activities was using
a trace buffer shared with the tracer tool to write the records to a
file (async_copy_trace.txt), instead of using a memory pool and
reporting the activity to the client.

Removed the asynchronous memory copies trace buffer, and updated
hsa_async_copy_handler to use the pool specified when the activity
was enabled.

Updated the tracer tool to read HSA_OP_ID_COPY records out of the
default memory pool and write them to async_copy_trace.txt.

Move trace_buffer.h to test/tool as tracer_tool.cpp is now the only
file using it.

Change-Id: Ida95aba2eaf3c3f2a979ed6c2b060374017b7424


[ROCm/roctracer commit: 61f35b0204]
2022-05-03 21:56:28 -04:00
Laurent Morichetti 7746758ed7 Add a trace_buffer directed test
This test stresses the concurrent writing of trace buffer records while
frequently allocating new storage to hold the records.

Due to race conditions, this test fails with the current trace buffer
implementation.

Change-Id: I0b77c64005e776319bf21f1ee1e6d7c99ddccfff


[ROCm/roctracer commit: 200e27f12d]
2022-04-29 08:52:13 -07:00
Ammar ELWazir 9dd5a58e3e SWDEV-295522: Fixing Performance Issue
Removing DEBUG_TRACES and the unnecessary use of roctracer_op_string, made the MS app reporting 78 to 81 stable samples per second, depending on the type of the trace, while the main app without rocprof reports 100 to 106. More detailed numbers will be posted in the ticket.

Change-Id: Ifbc529278cea54dd23e6086aa9b9ea2df952d5dd


[ROCm/roctracer commit: e4569c41fe]
2022-04-22 18:51:49 -04:00
Laurent Morichetti 33d8437801 Use ACTIVITY_DOMAIN_HIP_OPS instead of ACTIVITY_DOMAIN_HCC_OPS
Change-Id: I43fbac3d02011f74bf7b597519148ed0bd68ff98


[ROCm/roctracer commit: abf1b90017]
2022-04-20 22:00:59 -07:00
Laurent Morichetti 83cf22a698 Remove roctracer_hcc.h
roctracer_hip.h now contains the definitions for the HCC_OPS domain.

Change-Id: I132c993110254050aaa68828f3ca80f368ad24bc


[ROCm/roctracer commit: d3b166cf01]
2022-04-20 22:00:59 -07:00
Laurent Morichetti f8cc0d58a8 Close the default pool on exit
Change-Id: I388ea4d4f06c1818312a72185ef55b615c730509


[ROCm/roctracer commit: a0fd1e7c4b]
2022-04-20 19:48:24 -07:00
Laurent Morichetti 23528f51e0 Run clang-format on all source files
Change-Id: Ifb52ca306286b6b2d473821bed9db28e9f616d50


[ROCm/roctracer commit: 15ab5d9cda]
2022-04-20 22:45:54 -04:00
Laurent Morichetti 80c01a27c0 Fix copyright headers
Change-Id: I380d867fa5fb04e68b5b332e9abf33fbeb1e9418


[ROCm/roctracer commit: 06a3da7c63]
2022-04-19 09:30:45 -07:00