diff --git a/runtime/hsa-runtime/core/util/flag.h b/runtime/hsa-runtime/core/util/flag.h index 86621b7f24..2b0ffcff09 100644 --- a/runtime/hsa-runtime/core/util/flag.h +++ b/runtime/hsa-runtime/core/util/flag.h @@ -160,6 +160,9 @@ class Flag { var = os::GetEnvVar("HSA_SVM_PROFILE"); svm_profile_ = var; + var = os::GetEnvVar("HSA_IMAGE_PRINT_SRD"); + image_print_srd_ = (var == "1") ? true : false; + // Temporary environment variable to disable CPU affinity override // Will either rename to HSA_OVERRIDE_CPU_AFFINITY later or remove completely. var = os::GetEnvVar("HSA_OVERRIDE_CPU_AFFINITY_DEBUG"); @@ -219,6 +222,8 @@ class Flag { bool override_cpu_affinity() const { return override_cpu_affinity_; } + bool image_print_srd() const { return image_print_srd_; } + XNACK_REQUEST xnack() const { return xnack_; } bool debug() const { return debug_; } @@ -260,6 +265,7 @@ class Flag { bool coop_cu_count_; bool discover_copy_agents_; bool override_cpu_affinity_; + bool image_print_srd_; SDMA_OVERRIDE enable_sdma_; diff --git a/runtime/hsa-runtime/image/image_runtime.cpp b/runtime/hsa-runtime/image/image_runtime.cpp old mode 100755 new mode 100644 index 770dd6e476..dc4109cd14 --- a/runtime/hsa-runtime/image/image_runtime.cpp +++ b/runtime/hsa-runtime/image/image_runtime.cpp @@ -47,6 +47,7 @@ #include #include +#include "core/inc/runtime.h" #include "core/inc/hsa_internal.h" #include "core/inc/hsa_ext_amd_impl.h" #include "resource.h" @@ -397,6 +398,8 @@ hsa_status_t ImageRuntime::CreateImageHandle( image_manager(component)->PopulateImageSrd(*image); + if (core::Runtime::runtime_singleton_->flag().image_print_srd()) image->printSRD(); + image_handle.handle = image->Convert(); return HSA_STATUS_SUCCESS; @@ -434,6 +437,8 @@ hsa_status_t ImageRuntime::CreateImageHandleWithLayout( return err; } + if (core::Runtime::runtime_singleton_->flag().image_print_srd()) image->printSRD(); + image_handle.handle = image->Convert(); return HSA_STATUS_SUCCESS; } diff --git a/runtime/hsa-runtime/image/resource.h b/runtime/hsa-runtime/image/resource.h index 4d566e1bd0..f6add6a37c 100644 --- a/runtime/hsa-runtime/image/resource.h +++ b/runtime/hsa-runtime/image/resource.h @@ -134,6 +134,15 @@ public: __ALIGNED__( HSA_IMAGE_OBJECT_ALIGNMENT) uint32_t srd[HSA_IMAGE_OBJECT_SIZE_DWORD]; + void const printSRD() const { + char hexStr[200]; + size_t hexStrLen = 0; + for (int i = 0; i < sizeof(srd) / sizeof(srd[0]); i++) + hexStrLen += sprintf(&hexStr[hexStrLen], "0x%08x ", srd[i]); + + printf("\nSRD:%s\n\n", hexStr); + } + // HSA component of the image object. hsa_agent_t component;