* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* ------------------------------------------------------------------------- */
#include "acl.h"
#include "acl_rt_impl/AscendclImplOrigin.h"
#include "utils/InjectLogger.h"
#include "DevMemManager.h"
aclError DevMemManager::MallocMemory(void **memPtr, uint64_t size)
{
if (memPtr == nullptr) {
return ACL_ERROR_BAD_ALLOC;
}
int32_t deviceId {};
if (aclrtGetDeviceImplOrigin(&deviceId) != ACL_ERROR_NONE) {
return ACL_ERROR_BAD_ALLOC;
}
if (deviceId == this->deviceId_ && memSize_ >= size) {
*memPtr = memPtr_;
return ACL_ERROR_NONE;
}
Free();
aclError error = aclrtMallocImplOrigin(&memPtr_, size, ACL_MEM_MALLOC_HUGE_FIRST);
if (error != ACL_ERROR_NONE) {
return error;
}
*memPtr = memPtr_;
memSize_ = size;
isMemoryInit_ = false;
deviceId_ = deviceId;
return ACL_ERROR_NONE;
}
void DevMemManager::Free()
{
if (memPtr_ != nullptr) {
aclrtFreeImplOrigin(memPtr_);
memPtr_ = nullptr;
}
memSize_ = 0;
deviceId_ = -1;
}