SWDEV-299940 - Query global memory available on device with HSA attribute HSA_AMD_AGENT_INFO_MEMORY_AVAIL

Change-Id: Ifcfb95f59d110b3b037a7131be21d5348601d2e2


[ROCm/clr commit: 73021582d3]
このコミットが含まれているのは:
Anusha Godavarthy Surya
2022-07-04 11:50:33 -07:00
committed by Maneesh Gupta
コミット 1b2f5fbce1
+16 -3
ファイルの表示
@@ -1665,10 +1665,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_agent_info_t>(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];