From 773abcec8bba725acee6a985f4eda24572c16daa Mon Sep 17 00:00:00 2001 From: Karthik Jayaprakash Date: Thu, 13 Feb 2020 16:51:41 -0500 Subject: [PATCH] SWDEV-210443 - For Numa nodes pick up the CPU that has Memory pool. Change-Id: If52852b6f12053e4dfe8a83b8aa5743137c3d6dc [ROCm/clr commit: 7fb53890b8385e7f1a7da349681686d0440bf976] --- projects/clr/rocclr/device/rocm/rocdevice.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) mode change 100644 => 100755 projects/clr/rocclr/device/rocm/rocdevice.cpp diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp old mode 100644 new mode 100755 index 3d0a50e0a0..ebc7f803ce --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -331,8 +331,20 @@ hsa_status_t Device::iterateAgentCallback(hsa_agent_t agent, void* data) { return stat; } - if (dev_type == HSA_DEVICE_TYPE_CPU) { - Device::cpu_agent_ = agent; + if ((dev_type == HSA_DEVICE_TYPE_CPU) && (Device::cpu_agent_.handle == 0)) { + hsa_amd_agent_iterate_memory_pools(agent, [](hsa_amd_memory_pool_t pool, void* agent) { + hsa_region_segment_t segment_type; + hsa_status_t stat = + hsa_amd_memory_pool_get_info(pool, HSA_AMD_MEMORY_POOL_INFO_SEGMENT, &segment_type); + if (stat != HSA_STATUS_SUCCESS) { + return stat; + } + if( segment_type == HSA_REGION_SEGMENT_GLOBAL) { + Device::cpu_agent_ = *(reinterpret_cast(agent)); + return HSA_STATUS_INFO_BREAK; + } + return HSA_STATUS_SUCCESS; + }, &agent); } else if (dev_type == HSA_DEVICE_TYPE_GPU) { gpu_agents_.push_back(agent); }