mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 18:37:46 +08:00
[Sysman] Update memory module for zesInit
Related-To: LOCI-4118 Signed-off-by: Joshua Santosh Ranjan <joshua.santosh.ranjan@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
593b3cf4fd
commit
790ef57c3f
63
level_zero/sysman/source/memory/memory.cpp
Normal file
63
level_zero/sysman/source/memory/memory.cpp
Normal file
@@ -0,0 +1,63 @@
|
||||
/*
|
||||
* Copyright (C) 2020-2023 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include "shared/source/helpers/basic_math.h"
|
||||
#include "shared/source/memory_manager/memory_manager.h"
|
||||
|
||||
#include "level_zero/sysman/source/memory/memory_imp.h"
|
||||
#include "level_zero/sysman/source/os_sysman.h"
|
||||
|
||||
namespace L0 {
|
||||
namespace Sysman {
|
||||
|
||||
MemoryHandleContext::~MemoryHandleContext() {
|
||||
for (Memory *pMemory : handleList) {
|
||||
delete pMemory;
|
||||
}
|
||||
}
|
||||
|
||||
void MemoryHandleContext::createHandle(bool onSubdevice, uint32_t subDeviceId) {
|
||||
Memory *pMemory = new MemoryImp(pOsSysman, onSubdevice, subDeviceId);
|
||||
if (pMemory->initSuccess == true) {
|
||||
handleList.push_back(pMemory);
|
||||
} else {
|
||||
delete pMemory;
|
||||
}
|
||||
}
|
||||
|
||||
ze_result_t MemoryHandleContext::init(uint32_t subDeviceCount) {
|
||||
|
||||
if (subDeviceCount > 0) {
|
||||
for (uint32_t subDeviceId = 0; subDeviceId < subDeviceCount; subDeviceId++) {
|
||||
createHandle(true, subDeviceId);
|
||||
}
|
||||
} else {
|
||||
createHandle(false, 0);
|
||||
}
|
||||
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
ze_result_t MemoryHandleContext::memoryGet(uint32_t *pCount, zes_mem_handle_t *phMemory) {
|
||||
std::call_once(initMemoryOnce, [this]() {
|
||||
this->init(pOsSysman->getSubDeviceCount());
|
||||
});
|
||||
uint32_t handleListSize = static_cast<uint32_t>(handleList.size());
|
||||
uint32_t numToCopy = std::min(*pCount, handleListSize);
|
||||
if (0 == *pCount || *pCount > handleListSize) {
|
||||
*pCount = handleListSize;
|
||||
}
|
||||
if (nullptr != phMemory) {
|
||||
for (uint32_t i = 0; i < numToCopy; i++) {
|
||||
phMemory[i] = handleList[i]->toHandle();
|
||||
}
|
||||
}
|
||||
return ZE_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
} // namespace Sysman
|
||||
} // namespace L0
|
||||
Reference in New Issue
Block a user