Commit grafiek

10773 Commits

Auteur SHA1 Bericht Datum
Joseph Greathouse 75143555fa hsakmt: Only set exec flag when requested
Previous code would blindly set executable bit on all allocations.

Change-Id: Id1154f08f6ba21c633905fd46b06053994d6f3cc
2024-09-03 15:13:56 -04:00
Jeremy Newton 8fd1b14a42 Fix permissions on kfdtest
Using "PROGRAMS" and "FILES" without specifying permissions will
automatically select the right permissions.

PROGRAMS is used for executables, FILES is used for data files

Change-Id: I0fb6eff257a8f936848bd648cf877da6dc0b6906
2024-09-03 14:11:01 -04:00
David Yat Sin 4ba4867fa5 rocrtst: Fix segfault on p2p copies
Fix segfault on p2p copies when 2 agents cannot access each other's
memory (usually because the PCI BAR's are out of range). The
AcquireAsyncCopyAccess function should return NULL in that case, so that
the test can be skipped.

Change-Id: If018f3609dd21a01c56eaec94de3bca52c385c4d
2024-09-03 14:06:48 -04:00
Giovanni LB 3b0c6bd165 Fixing --help for counter collection
Change-Id: I76e02e0593966f2b9c1db4bffa8566b987efcf53
2024-09-03 13:40:21 -03:00
Giovanni LB caf9bc23a8 Fixing --help for counter collection
Change-Id: I76e02e0593966f2b9c1db4bffa8566b987efcf53


[ROCm/rocprofiler commit: 3b0c6bd165]
2024-09-03 13:40:21 -03:00
David Yat Sin f505444aaf Adding clang format files and strings
Adding files to auto-format code using:
bash format

Change-Id: I6a9edf3ff4d1e6102a44c4106e646ff9d63340cc
2024-08-29 15:43:41 -04:00
Zhang Ava ad511e9b0d Merge amd-staging into amd-master 20240828
Signed-off-by: Zhang Ava <niandong.zhang@amd.com>
Change-Id: I13187d5772ee1e5e74d9daf4268b90819b4198d0
2024-08-29 20:09:31 +08:00
Tony Gutierrez 68669f4e1a rocr: Generalize AMD::MemoryRegion Allocate and Free
Remove KFD-specific Allocate/Free calls from the AMD::MemoryRegion.
The KFD-driver-specific Allocate/Free calls are now implemented in
the KfdDriver. Future changes will migrate the remaining KFD-specific
calls out of AMD::MemoryRegion.

This allows the MemoryRegion to be used across AMD drivers like the
XDNA driver.

Change-Id: Ib6a2a9e5e1a15e61644d2592beb3a8e6578c3010
2024-08-28 14:35:07 -07:00
Tony Gutierrez c42ff44a6a rocr/kfd-driver: Add initial KFD driver interface
Adds the initial KFD driver interface and use it to open the
KFD from amd_topology.cpp.

This change is to show the direction of the Driver interface for
initially supporting the KFD and to get feedback on the approach.
For now we wrap relevant ROCt calls behind this generic driver
interface so that we can generalize core ROCr components like
MemoryRegion, Runtime, etc.

Now that ROCt is incorporated into ROCr, we can more fully integrate
ROCt into the Driver interface. Ideally, we get to a point where
the generic Driver interface can support KFD, XDNA, and potential
future drivers.

Change-Id: I4573fd6af1f8398233ee9d3814d9f3139dd0279c
2024-08-28 14:34:54 -07:00
Tony Gutierrez 86f40ae489 rocr/xdna-driver: Initial support for amdxdna driver
Change-Id: I319b55d89dc644e7151228cb6c19d1a633171295
2024-08-28 14:34:39 -07:00
David Yat Sin 2360253b3b rocrtst: Skip inaccessible agents when importing dmabuf
If some agents cannot access the memory buffer directly, this will cause
the hsa_amd_interop_map_buffer API call to fail

Change-Id: If2f0e1735c2926440d657831de50775d7f304c8e
2024-08-28 15:58:02 -04:00
Shweta Khatri da69ffff0f Set internal cache for rocprofiler-register dependency
Change-Id: I8a661818c11c4de0df9743dacb78b7c5163b6da9
2024-08-28 14:48:51 -04:00
Jonathan Kim ae99effb29 libhsakmt: Fix improper type range check in legacy queue creation
Enum type for compute AQL is defined as larger then targeted SDMAs
enum types.  We should only deny legacy calls for SDMA queues that
require targeted engines.

Change-Id: I6386a8700b3b18af825b6f0d2be27052cc8de0f5
2024-08-28 13:55:41 -04:00
Ammar ELWazir f014c03f30 Adding rocm-llvm-dev package as req.
Change-Id: I59ffaf952d53e1c27d6e9d0ab5b810a08ff3074f


[ROCm/roctracer commit: b42028fcc0]
2024-08-28 10:22:44 -05:00
Ammar ELWazir b42028fcc0 Adding rocm-llvm-dev package as req.
Change-Id: I59ffaf952d53e1c27d6e9d0ab5b810a08ff3074f
2024-08-28 10:22:44 -05:00
David Galiffi f9e036a40c Add installers for ROCm 5.6 and 5.7 for SUSE 15.5 (#374)
Signed-off-by: David Galiffi <David.Galiffi@amd.com>
2024-08-28 08:46:07 -04:00
Tony Gutierrez 8ea62f1cea rocr/aie: Add initial support for AIE agents
This change adds the initial classes for the AIE agent and AIE AQL
queue.

An AIE agent list is added to the core runtime object.

Change-Id: I84b02f52171b80726dfb2c8431582a3ea2986eb3
2024-08-27 14:47:05 -07:00
Charis Poag 6b8db74578 Fix rocm-smi --showfw displaying error fw prints
Updates:
  - [CLI] Previously --showfw displayed fw that
    does not exist on systems. This change removes
    that extra output.

Change-Id: If8b063001b80b03579ea1378dfd890c60f62ccd7
Signed-off-by: Charis Poag <Charis.Poag@amd.com>
2024-08-27 15:43:16 -04:00
jamesxu2 395c330dad Fix SWDEV-473314 by avoiding empty unique_ptr dereference (#371)
- Revert part of https://github.com/ROCm/omnitrace/pull/78/commits/b134a68110b2c96ce11293d93ad56f38e211fd06
	modifying source/lib/omnitrace/library/components/roctracer.cpp
2024-08-27 10:20:48 -04:00
Galantsev, Dmitrii bbe0b3573c Update python_interface and remove --enable_pci_id
Change-Id: Ie5d511f3da25221bf60bc669ab172323703a1c45
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
2024-08-26 19:55:53 -04:00
Giovanni LB 698b6eb641 Adding early checks for ELF file
Change-Id: I1dc833fc2b017edae5c5456b14c376e88ca2bef7
2024-08-26 17:41:20 -03:00
Giovanni LB 3b53fb2c47 Adding early checks for ELF file
Change-Id: I1dc833fc2b017edae5c5456b14c376e88ca2bef7


[ROCm/rocprofiler commit: 698b6eb641]
2024-08-26 17:41:20 -03:00
Maisam Arif 2acc7f2447 Merge amd-staging into amd-master 20240823
Signed-off-by: Maisam Arif <Maisam.Arif@amd.com>
Change-Id: Ifae5d76d62ab50794486b08ea06d009bd870f9ea
2024-08-23 19:19:47 -05:00
Ranjith Ramakrishnan 4ceffdca68 SWDEV-480347 - Don't terminate build for cpack bytecompile errors
In centos-7, python2 is used for cpack bytecompile. Using f strings in code will result in syntax error.
Setting _python_bytecompile_errors_terminate_build to 0 will ignore the errors

Change-Id: I43ecc99ae16627f4f5f91d0cca0398f6a003fa3c
2024-08-23 13:43:32 -07:00
David Yat Sin 9f6d7cdf6b Remove extra print for gfx000
Removing extra print that was added for backward compatibility.

Change-Id: I12a5346708886861a6e3cd6440830e6425e647d9
2024-08-23 18:19:41 +00:00
Giovanni LB 41fd850601 SWDEV-480930: Extending lifetime of proxy queues
Change-Id: Iba4ee254c27506266a359cc47e9777426df17da7
2024-08-23 01:33:15 -04:00
Giovanni LB 5a6c6a379c SWDEV-480930: Extending lifetime of proxy queues
Change-Id: Iba4ee254c27506266a359cc47e9777426df17da7


[ROCm/rocprofiler commit: 41fd850601]
2024-08-23 01:33:15 -04:00
David Yat Sin cb672ebcd1 Set ELF_GETSHDRSTRNDX when cxx compiler is not loaded
Change-Id: Ia26b8999909f688ce78d9bbe4cb2a7262df2ee02
2024-08-22 17:20:37 -04:00
Joseph Macaranas be31cca4df External CI: Add support for ROCR+Thunk combined repo.
Change-Id: Ib2305d6ed81f29d146c73a4063e08671c8a8273a
2024-08-22 12:40:28 -04:00
David Yat Sin c8dd4d2b3b rocr: Handle pthread_create returning errors
Rewriting logic to fix issue where pthread_create would return errors
other than EINVAL, and these errors would be ignored.

Change-Id: I573958724dcf886c20e8c14e6a9182303b3ffa06
2024-08-22 12:15:10 -04:00
Lancelot SIX d5acab2b39 libhsakmt: Check for KFD 1.13 for debug ioctl interface
Core dump support relies on debugger related KFD ioctl which have been
introduced in version 1.13 of the interface.  However, the code checks
for KFD_IOCTL_MINOR_VERSION (currently 17), making it impossible to
produce core dumps when using some drivers that should support it.

Update the CHECK_KFD_MINOR_VERSION calls in the debugger related ioctl
wrappers and look for KFD 1.13 or above.

Change-Id: I10a7fd03bf8f678b6318d7c25d6a7ded804dac67
2024-08-21 23:45:25 +01:00
Lancelot SIX 3475a45137 rocr/amd_core_dump: Fix "arithmetic on a pointer to void"
A recent patch introduced a build failure when building with Clang:

    [ 65%] Building CXX object runtime/hsa-runtime/CMakeFiles/hsa-runtime64.dir/libamdhsacode/amd_core_dump.cpp.o
    […]/runtime/hsa-runtime/libamdhsacode/amd_core_dump.cpp:271:29: error: arithmetic on a pointer to void
      271 |       read = pread(fd_, buf + done, buf_size - done,
          |                         ~~~ ^
    1 error generated.

This patch fixes this by making sure the "void *" pointer is converting
to "char *" before doing arithmetic on it.

Change-Id: Ib1663ed30abce76e05f06d042975eccd7d729823
2024-08-21 17:19:28 -04:00
Bill(Shuzhou) Liu 56b08ea7c3 Update the document to install the rdc service
Correct the file path of the rdc.service in the document

Change-Id: Ib161e97abdd5e2a117b2758ff5407b55337ab25b
2024-08-21 12:21:57 -05:00
Gopesh Bhardwaj fa91169479 Fixing missing counters for gfx900 (#1028) 2024-08-21 11:54:30 +05:30
Gopesh Bhardwaj 439025d421 Adding HW Block Information (#1021)
* Adding HW Block Information

* Addressed Review comments
2024-08-21 10:00:41 +05:30
Giovanni LB 2a3c24565a SWDEV-479522: trace-start off to also disable kernel tracing
Change-Id: I027be24f93a201b82752327830820a24540b24d9
2024-08-20 23:29:50 -04:00
Giovanni LB d3e5a88536 SWDEV-479522: trace-start off to also disable kernel tracing
Change-Id: I027be24f93a201b82752327830820a24540b24d9


[ROCm/rocprofiler commit: 2a3c24565a]
2024-08-20 23:29:50 -04:00
Jonathan Kim eb30a5bbc7 rocr: Memory copy based on recommended SDMA engines
Recommended SDMA engines for DMA copies are now exposed for better
GPU-GPU performance. ROCr can now select those DMA engines.

Also lock-in host-device copies to SDMA0 and device-host copies to
SDMA1 for better stability and performance.

Change-Id: Ideff2e13daf537104efecb8b837bd49ee5096cb5
2024-08-20 16:22:32 -04:00
Giovanni LB 36c9a8b4de SWDEV-477909: Adding fixes for signal management in queue.cpp
Change-Id: I24f2ab24c0a4824cf9feff6c1cd91a3eee2ef4be
2024-08-20 16:13:11 -03:00
Giovanni LB 2f28e73c29 SWDEV-477909: Adding fixes for signal management in queue.cpp
Change-Id: I24f2ab24c0a4824cf9feff6c1cd91a3eee2ef4be


[ROCm/rocprofiler commit: 36c9a8b4de]
2024-08-20 16:13:11 -03:00
Jonathan Kim 2f588a2406 libhsakmt: Extend thunk queue creation with recommended sdma engines
Extend the current Thunk implementation of queue creation to target
specific SDMA engine IDs.

Also expose the new recommend SDMA engines per IO link from the KFD
sysfs.

Change-Id: I51f9a0d83c0f1fc4d5dc837f879a7ae332e7d7e9
2024-08-20 11:13:57 -04:00
Yifan Zhang 3f1f68c8cb libhsakmt: add OverrideEngineId property
When HSA_OVERRIDE_GFX_VERSION is used, save the overrided GFX
version to OverrideEngineId instead of original EngineId. There
are places where real GFX properties still needed, e.g. CWSR size
calculation.

Change-Id: I9d9149bae465b7cfe55604fc19e7ca34e48b7b1c
Signed-off-by: Yifan Zhang <yifan1.zhang@amd.com>
2024-08-20 09:10:52 -04:00
Jonathan R. Madsen 7a639f3439 Update HSA ABI checks for tracing (#1027)
* Update HSA ABI checks for tracing

* Update lib/common/abi.hpp

- perform ABI versioning checks even when `ROCPROFILER_CI` is not defined (or ROCPROFILER_CI=0)

* Enforce versioning size for various HSA AmdExt step versions + hsa_amd_enable_logging support

* Minor HIP abi.cpp updates
2024-08-20 01:08:34 -05:00
Jonathan R. Madsen 5d54682468 Misc cleanup and stale code removal (#1026)
* Remove custom allocators

- remove unused lib/rocprofiler-sdk/allocator.*
- remove unused lib/rocprofiler-sdk/context/allocator.hpp

* Fix rocprofiler_strip_target (rocprofiler_utilities.cmake)

* Remove old HSA_TOOLS_LIB support

- remove OnLoad/OnUnload functions used by HSA_TOOLS_LIB env variable

* Fix linter warnings + specific NOLINT exceptions

- replace bare NOLINT with NOLINT(<warning-name>)
2024-08-20 01:07:32 -05:00
Jonathan R. Madsen b9b5f335d9 CMake find_package minumum versions for rocm_version, hip, hsa-runtime64 (#1024)
- rocm_version: minumum of 6.2
- hip: minimum of 6.2
- hsa-runtime64: minimum of 1.14
2024-08-20 01:06:59 -05:00
Jonathan R. Madsen bb25376480 Misc API cleanup and consistency fixes (#1023)
- ROCPROFILER_API after function
- use rocprofiler_tracing_operation_t in lieu of uint32_t where appropriate
- rocprofiler_tracing_operation_t is not int32_t typedef (formerly uint32_t)
- use const T* instead of T* where appropriate
2024-08-20 01:06:12 -05:00
Lancelot Six 123b2c080a rocr/trap_handler_gfx12: Properly ignore HOST_TRAP and debug_trap
The current trap handler has 2 limitations:
1) If it receives a HOST_TRAP, it clears the corresponding bit
   and notifies the host, when it should not.
2) When it is entered because of a debug trap (s_trap 3) and the
   debugger is not attached, it returns unconditionally.  However,
   if another exception is reported at the same time as the trap
   handler is entered for the debug trap (a memory violation for
   example), that other exception ends-up being ignored.

This patch addresses both of those issues.  It makes it so host traps
and debug traps are ignored when necessary.  If any other exception is
reported to the wave, we halt the wave and notify the host, and if no
other exception is reported (i.e. we entered the trap handler because of
host trap or debug trap), we return to shader code.

Other minor defects are also fixed during this refactor:
- Fixed SQ_WAVE_EXCP_FLAG_PRIV_XNACK_ERROR_SHIFT which had an incorrect
  value
- Host traps can be sent at any time, including after we have halted a
  wave.  In such case, the old approach would have:
  1) cleared the trap ID saved in ttmp6
  2) clobbered ttmp10 where part of the actual wave's PC is saved.

Change-Id: I9ecd341f4967e686233dec182b3e5b0388ef19bd
2024-08-19 21:22:13 -04:00
Jonathan R. Madsen b15e498945 Add kernel profiling time info to counter collection records (#1000)
* Add kernel profiling time info to counter collection records

- lib/rocprofiler-sdk/kernel_dispatch
  - added profiling_time.{hpp,cpp}
  - restructured tracing.cpp
- updated queue.cpp AsyncSignalHandler
  - gets kernel dispatch profiling time and passes to dispatch_complete and signal callbacks
- structured some header includes to reduce cyclic include probability
  - originally, including kernel_dispatch/tracing.hpp in hsa/queue.hpp created a lot of cyclic includes

* Fix kernel_dispatch.cpp includes

* Fix kernel_dispatch.cpp

- include <cstring>
- replace use of ROCPROFILER_HSA_AMD_EXT_API_ID_NONE with ROCPROFILER_KERNEL_DISPATCH_LAST
2024-08-19 20:05:04 -05:00
David Yat Sin 88eaa834d0 Separate AsyncEventsLoop into two separate threads
This fixes an issue for missing HW events when out of HW events.

We cannot determine whether a HW event has occurred unless we call the
underlying drivers with hsaKmtWaitOnMultipleEvents_Ext. Previous logic
in Signal::WaitAny would switch to ACTIVE_WAIT state if we run out of
hardware events (signal->EopEvent() == NULL) and this would cause the
hsaKmtWaitOnMultipleEvents_Ext call to be skipped. But also, when we
have some signals without hardware events, calling
hsaKmtWaitOnMultipleEvents_Ext with a timeout of 0 so that we can poll
for remaining signals adds overhead with an IOCTL call and may cause
extra delay. Separating AsyncEventLoop into two separate threads so
that:

1. We can have a new Signal::WaitAnyExceptions to wait for HW events
This function can be simpler as it does not have to perform all the
timer calculations because it is expected to be always waiting on
hsaKmtWaitOnMultipleEvents_Ext through the lifetime of a process.

2. Signal::WaitAny does not need to have extra code to check for HW
exceptions as it only needs to handle HSA_EVENTTYPE_SIGNAL events. It
can also skip the calls to hsaKmtWaitOnMultipleEvents_Ext if needed.

Change-Id: I52ba99fd6e483e0cb477b7931a0dcc03520aa523
Signed-off-by: David Yat Sin <David.YatSin@amd.com>
2024-08-19 17:54:11 -04:00
David Yat Sin 56ba584a22 rocr: Delete internal CP queues in GPU agent destructor
Delete queues used internally in agent destructor to make sure any
memory allocated by the queue objects are freed before the agent memory
regions are destroyed.

Change-Id: I4768c9cf66f77ac00a5a355f373f7f22dc266e47
2024-08-19 17:16:46 -04:00