SWDEV-257787 - Add engine tracking per signal

- The logic will trace compute, sdma read/write operations and
apply signals when necessary
- ROC_CPU_WAIT_FOR_SIGNAL, ROC_SYSTEM_SCOPE_SIGNAL
and ROC_SKIP_COPY_SYNC were added to control the tracking

Change-Id: I9e8e6174c63bf7784f7ab00964e2918c8667d364


[ROCm/clr commit: dbc7abaecf]
This commit is contained in:
German Andryeyev
2021-01-22 16:42:35 -05:00
committed by Saleel Kudchadker
parent 768a4383cd
commit f96e973378
8 changed files with 312 additions and 159 deletions
@@ -28,6 +28,7 @@
namespace roc {
// ================================================================================================
Settings::Settings() {
// Initialize the HSA device default settings
@@ -91,8 +92,15 @@ Settings::Settings() {
rocr_backend_ = true;
barrier_sync_ = (!flagIsDefault(ROC_BARRIER_SYNC)) ? ROC_BARRIER_SYNC : true;
cpu_wait_for_signal_ = !AMD_DIRECT_DISPATCH;
cpu_wait_for_signal_ = (!flagIsDefault(ROC_CPU_WAIT_FOR_SIGNAL)) ?
ROC_CPU_WAIT_FOR_SIGNAL : cpu_wait_for_signal_;
system_scope_signal_ = ROC_SYSTEM_SCOPE_SIGNAL;
skip_copy_sync_ = ROC_SKIP_COPY_SYNC;
}
// ================================================================================================
bool Settings::create(bool fullProfile, uint32_t gfxipMajor, uint32_t gfxipMinor, bool enableXNACK,
bool coop_groups) {
customHostAllocator_ = false;
@@ -169,6 +177,7 @@ bool Settings::create(bool fullProfile, uint32_t gfxipMajor, uint32_t gfxipMinor
return true;
}
// ================================================================================================
void Settings::override() {
// Limit reported workgroup size
if (GPU_MAX_WORKGROUP_SIZE != 0) {