Commit Graph

273 Commits

Author SHA1 Message Date
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
Ammar Elwazir d69070a133 Revert "SWDEV-295522: Fixing Performance Issue"
This reverts commit 35ea06abd0.

Reason for revert: Merged by mistake

Change-Id: I8c39c823d92cc20a238ca6120dde4b2fa9121e85


[ROCm/roctracer commit: 57add1a6fa]
2022-04-07 06:55:34 -04:00
Ammar ELWazir 35ea06abd0 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: Ida25d3bfc72047afaa27326d697be76d97564334


[ROCm/roctracer commit: e7327aaac7]
2022-04-07 00:07:24 +00:00
Ammar ELWazir f1de3ae0e5 SWDEV-307394: Fixing Download HSA-Class Issue
Exchanging the git clone of the hsa-class to a local downloaded version pushed to the roctracer repo

Change-Id: Id45a38b2d355102c2e0dee1e4bfde50398369047


[ROCm/roctracer commit: 7ee4f87b73]
2022-03-29 22:27:25 +00:00
Saurabh Verma e1f9f82198 SWDEV-295871: [MSRCHA-130] Unable to filter API using .txt or .xml -Part-2 of MSRCHA-128. Made xml input more robust to accept both spaces and commas in xml array.
Change-Id: I3900fdf91cd0b893fadd9dfc958030effc5663db


[ROCm/roctracer commit: 37ed31087a]
2022-03-17 17:16:17 -05:00
Saurabh Verma daa23130ad SWDEV-295871 : [MSRCHA-130] Unable to filter API using .txt or .xml - Part-2 of MSRCHA-128. Fixed constructor ordering issue of global variables hip_api_vec and hsa_api_vec by wrapping themin static getter functions
Change-Id: I2dae5e196118fcab696b2365b24281f05d9d0f88


[ROCm/roctracer commit: aee8102fa6]
2022-03-14 16:07:58 -04:00
Ranjith Ramakrishnan 472330b728 File reorganization with backward compatibility
Package installed /opt/rocm
Soft links and wrapper header files installed /opt/rocm/roctracer for backward compatibility
tracer_tool library renamed to roctracer_tool and installed in /opt/rocm/lib/roctracer

Change-Id: Ica7518c5ef2e591715121cbc942b69dff29233d3


[ROCm/roctracer commit: bc19ae71eb]
2022-03-04 04:03:51 -08:00
Ranjith Ramakrishnan a3c738ff30 SWDEV-291455: Prefer rocm include path to hip include path
Change-Id: I1fa96e72169fac689a3a2ed38e988d7f5d18bf04


[ROCm/roctracer commit: ebda880c4a]
2022-02-14 14:21:32 -08:00
Icarus Sparry 7e622b9075 Forcibly disable parallelism
The manually written Makefiles in the test directory are not safe to
use by more than one job. For example we see things like
	all: clean $(EXECUTABLE)
which says that the 'all' target depends on the 'clean' and
'$(EXECUTABLE)' targets. If make is invoked with -j2 then the clean
and '${EXECUTABLE}' can be built in parallel, so the clean can delete
things whilst they are being built!

Change-Id: I9c56db4c629081b8d812dad45dfd4afde10e481f
Signed-off-by: Icarus Sparry <icarus.sparry@amd.com>


[ROCm/roctracer commit: 8ea268b3f4]
2021-10-31 15:19:36 -07:00
Ammar ELWazir 023cb806f9 SWDEV-275232: Replaced the use of on_exit()
on_exit() registered exit_handler function, but in the case of OpenMP applications the registered exit func exit_handler was called after the dlclose of the library. So we removed exit_handler from roctracer as it is already handled in both rocprofiler and rocprof script.

Change-Id: I7c3d42e6ccc282e713b48b4a7faec4935e7a2600


[ROCm/roctracer commit: aa41554130]
2021-10-09 17:36:36 -04:00
Ammar ELWazir 606d3dd8e8 SWDEV-298155: Fixing HSA-CLASS REV
Adding the latest commit to pull from the hsa-class git repo that includes the fix for SWDEV-298155
"Fixing the typo in evt_stats.h" https://github.com/ROCmSoftwarePlatform/hsa-class/commit/e6456a6d93cc6d8bcc59bd6ea24f27146f86ff4c

Change-Id: I9984de8ec9204a6cf47a25ce4ac42852473c56c9


[ROCm/roctracer commit: 99e2f37c81]
2021-09-29 12:27:15 -04:00
Saurabh Verma 3b16547bf6 SWDEV-295878 Fix for seg fault when using --trace-start off
Change-Id: Ic76d814b3591f72db18319d78f34596dae1ddfee


[ROCm/roctracer commit: a7cd80b716]
2021-08-31 16:46:59 -05:00
Ammar ELWazir bf410d1747 SWDEV-294319 & SWDEV-294321 Added support for missing functions
Added Support for launch kernel functions to fill_api_db

Change-Id: Ie8749806214d6e283c3d408d8019f178f42018bf


[ROCm/roctracer commit: 8396836c25]
2021-08-11 11:42:21 -04:00
Christophe Paquot a9f6522a41 SWDEV-295205 - Remove KFD domain from roctracer
Change-Id: I2771cf43aa115bb466531bf887f7cc75e187f2ef


[ROCm/roctracer commit: e5e1258ef8]
2021-07-22 10:12:45 -07:00
Christophe Paquot ae9c760305 SWDEV-281658 - Preserve the callback IDs enum ordering
Use HIP_API_ID_NONE to detect unsupported API instead of
HIP_API_ID_NUMBER which can grow with a new version of the API.
This HIP_API_ID_NONE enum has a fixed value of 0 so the
HIP_API_IDs really start at FIRST.

Change-Id: I760aa50ddf6fa6d46bf20555ad7d429335a53f97


[ROCm/roctracer commit: b04dfd5fdf]
2021-06-30 09:52:20 -04:00
Freddy Paul 1c6c8def17 roctracer:All libraries need to be installed with LIBRARY TAG
Cmake will do the post processing required for RPATH or any other
needed for the libraries only if installed as libraries not as
regular files

FIX: SWDEV-287893
Change-Id: I9cf478fcd23b9f2e8b3bdd81aa566cad3ec2a5e3


[ROCm/roctracer commit: 1cc934204f]
2021-05-26 12:15:25 -04:00
Laurent Morichetti 61e044e67c Make HIP_VDI the default
As this snippet shows, HCC is no longer supported by roctracer:

#if HIP_VDI
...
#else
#error HCC support dropped
#endif

Removed HIP_VDI from the CMakeLists.txt, and the source code.

Change-Id: Ib273da2a5af6d67fa1b021a7eca3ff785c8b9c73


[ROCm/roctracer commit: 8fb3cdb30b]
2021-05-20 21:20:27 -04:00
Kent Russell e37c63ea09 roctracer: Support static thunk
Add numa lib as this will be required with a static thunk
Look for static thunk of shared thunk cannot be found

Signed-off-by: Kent Russell <kent.russell@amd.com>
Change-Id: I5de63e0a56a8946132ccbb7140a19a82a70b951d


[ROCm/roctracer commit: 5c9329aec8]
2021-04-27 12:56:56 -04:00
Rachida Kebichi d78eaf664f SWDEV-255637 support for hsa_amd_memory_async_copy_rect
Change-Id: I5db6484c30427712c56b59862e748118a3f079c2


[ROCm/roctracer commit: 06271806d4]
2021-03-31 10:02:06 -04:00
Rachida Kebichi 28faba40a7 SWDEV-271503 Fixed core dump
Change-Id: Ia582a27482581c3b81c42da0add9f6743898da6c


[ROCm/roctracer commit: ad5b463912]
2021-03-30 14:06:56 -04:00
Evgeny fc65a545a7 SWDEV-251491 : fixing tracing on exit
Change-Id: I1bf2a6093331e7a08179b9f64394c5c49206ef0e


[ROCm/roctracer commit: 912cfd4cf8]
2020-12-25 01:49:44 -05:00
Evgeny b81697c07e SWDEV-251491 : disabling tracing on exit
Change-Id: Ifd5f0fbad70afa1e79da8b4b9aa639d899cbea76


[ROCm/roctracer commit: 99eee45546]
2020-12-22 04:55:07 -05:00
Rachida Kebichi bbf605467b SWDEV-259683 HIP API records filtering
Change-Id: I43ca5e022d2c055b6a9bc2c09b4276b490a4b986


[ROCm/roctracer commit: 2d31848c44]
2020-12-16 16:29:36 -05:00
Evgeny Shcherbakov 608a087451 Merge "calling python3 explictely" into amd-staging
[ROCm/roctracer commit: 3e4539c95d]
2020-12-16 16:01:57 -05:00