From 4df031b52ae668edf9077f07ed397c578e5ca787 Mon Sep 17 00:00:00 2001 From: Edgar Gabriel <edgar.gabriel@amd.com> Date: Fri, 29 Apr 2022 12:08:33 -0500 Subject: [PATCH] UCT/ROCM: fix memory type detection fix the approach used to identify ROCm memory type. ROCm memory type is as of right now of type HSA_EXT_POINTER_TYPE_HSA with the owner agent being a GPU. --- src/uct/rocm/base/rocm_base.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/uct/rocm/base/rocm_base.c b/src/uct/rocm/base/rocm_base.c index 578375eccc00..f2946562b12e 100644 --- a/src/uct/rocm/base/rocm_base.c +++ b/src/uct/rocm/base/rocm_base.c @@ -185,8 +185,15 @@ ucs_status_t uct_rocm_base_detect_memory_type(uct_md_h md, const void *addr, info.size = sizeof(hsa_amd_pointer_info_t); status = hsa_amd_pointer_info((void*)addr, &info, NULL, NULL, NULL); if ((status == HSA_STATUS_SUCCESS) && - (info.type != HSA_EXT_POINTER_TYPE_UNKNOWN)) { - *mem_type_p = UCS_MEMORY_TYPE_ROCM; + (info.type == HSA_EXT_POINTER_TYPE_HSA)) { + hsa_device_type_t dev_type; + + status = hsa_agent_get_info(info.agentOwner, HSA_AGENT_INFO_DEVICE, &dev_type); + if ((status == HSA_STATUS_SUCCESS) && + (dev_type == HSA_DEVICE_TYPE_GPU)) { + *mem_type_p = UCS_MEMORY_TYPE_ROCM; + return UCS_OK; + } } return UCS_OK;