From f04740b919b92aeb1b8bda664996ea709184b941 Mon Sep 17 00:00:00 2001 From: Maneesh Gupta Date: Mon, 7 Nov 2022 01:22:05 -0500 Subject: [PATCH] SWDEV-299940 - Query global memory available on device with HSA attribute HSA_AMD_AGENT_INFO_MEMORY_AVAIL This reverts commit 06593a072ffc1b1504ddf430b53ba93ac2375138. Reason for revert: ROCr query should now be usable in upcoming release. Change-Id: I2207761ca6af5d585d090bae1af09eb9a8e9bad6 [ROCm/clr commit: a52f5bda8f383de0a60d83036a2d74dfb8bf7e48] --- projects/clr/rocclr/device/rocm/rocdevice.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/projects/clr/rocclr/device/rocm/rocdevice.cpp b/projects/clr/rocclr/device/rocm/rocdevice.cpp index 7830e6ce2d..d680721baf 100644 --- a/projects/clr/rocclr/device/rocm/rocdevice.cpp +++ b/projects/clr/rocclr/device/rocm/rocdevice.cpp @@ -1669,10 +1669,23 @@ device::VirtualDevice* Device::createVirtualDevice(amd::CommandQueue* queue) { bool Device::globalFreeMemory(size_t* freeMemory) const { const uint TotalFreeMemory = 0; const uint LargestFreeBlock = 1; + uint64_t globalAvailMemory; + // Queries memory available in bytes across all global pools owned by the agent + if (HSA_STATUS_SUCCESS != + hsa_agent_get_info(bkendDevice_, + static_cast(HSA_AMD_AGENT_INFO_MEMORY_AVAIL), + &globalAvailMemory)) { + LogError("HSA_AMD_AGENT_INFO_MEMORY_AVAIL query failed."); + } - freeMemory[TotalFreeMemory] = freeMem_ / Ki; - freeMemory[TotalFreeMemory] -= (freeMemory[TotalFreeMemory] > HIP_HIDDEN_FREE_MEM * Ki) ? - HIP_HIDDEN_FREE_MEM * Ki : 0; + globalAvailMemory = globalAvailMemory / Ki; + if (globalAvailMemory > HIP_HIDDEN_FREE_MEM * Ki) { + globalAvailMemory -= HIP_HIDDEN_FREE_MEM * Ki; + } else { + globalAvailMemory = 0; + } + + freeMemory[TotalFreeMemory] = globalAvailMemory; // since there is no memory heap on ROCm, the biggest free block is // equal to total free local memory freeMemory[LargestFreeBlock] = freeMemory[TotalFreeMemory];