|
|
@ -144,63 +144,6 @@ Status GraphLoader::LoadDataFromFile(const std::string &path, const std::string
|
|
|
|
return SUCCESS;
|
|
|
|
return SUCCESS;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Status GraphLoader::LoadModelFromFile(const std::string &path, const std::string &key_path, int32_t priority,
|
|
|
|
|
|
|
|
const std::shared_ptr<ModelListener> &listener, uint32_t &model_id) {
|
|
|
|
|
|
|
|
Status ret;
|
|
|
|
|
|
|
|
ModelData model_data;
|
|
|
|
|
|
|
|
ret = LoadDataFromFile(path, key_path, priority, model_data);
|
|
|
|
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
|
|
|
|
GELOGE(ret, "LoadModelFromFile: Load failed. ret = %u", ret);
|
|
|
|
|
|
|
|
if (model_data.model_data != nullptr) {
|
|
|
|
|
|
|
|
delete[] static_cast<char *>(model_data.model_data);
|
|
|
|
|
|
|
|
model_data.model_data = nullptr;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ret = LoadModel(model_data, listener, model_id);
|
|
|
|
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
|
|
|
|
GELOGE(ret, "LoadModel: Load failed. ret = %u", ret);
|
|
|
|
|
|
|
|
if (model_data.model_data != nullptr) {
|
|
|
|
|
|
|
|
delete[] static_cast<char *>(model_data.model_data);
|
|
|
|
|
|
|
|
model_data.model_data = nullptr;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (model_data.model_data != nullptr) {
|
|
|
|
|
|
|
|
delete[] static_cast<char *>(model_data.model_data);
|
|
|
|
|
|
|
|
model_data.model_data = nullptr;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Status GraphLoader::LoadModel(const ModelData &model_data, const std::shared_ptr<ModelListener> &listener,
|
|
|
|
|
|
|
|
uint32_t &model_id) {
|
|
|
|
|
|
|
|
GELOGI("Load model begin, model_id:%u.", model_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// For GeOp, Open Device 0 here.
|
|
|
|
|
|
|
|
GE_CHK_RT_RET(rtSetDevice(0));
|
|
|
|
|
|
|
|
auto model_manager = ModelManager::GetInstance();
|
|
|
|
|
|
|
|
GE_CHECK_NOTNULL(model_manager);
|
|
|
|
|
|
|
|
Status ret = model_manager->LoadModelOffline(model_id, model_data, listener);
|
|
|
|
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
|
|
|
|
GE_CHK_RT(rtDeviceReset(0));
|
|
|
|
|
|
|
|
GELOGE(ACL_ERROR_GE_LOAD_MODEL, "LoadModel: Load failed.");
|
|
|
|
|
|
|
|
return ACL_ERROR_GE_LOAD_MODEL;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
ret = model_manager->Start(model_id);
|
|
|
|
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
|
|
|
|
if (model_manager->Unload(model_id) != SUCCESS) {
|
|
|
|
|
|
|
|
GELOGE(ACL_ERROR_GE_UNLOAD_MODEL, "LoadModel: Unload failed while trying to unload after a failed start.");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
GELOGE(ret, "LoadModel: Start failed.");
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
GELOGI("LoadModel: Start model success, model_id:%u.", model_id);
|
|
|
|
|
|
|
|
return SUCCESS;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Status GraphLoader::CommandHandle(const Command &command) {
|
|
|
|
Status GraphLoader::CommandHandle(const Command &command) {
|
|
|
|
try {
|
|
|
|
try {
|
|
|
|
auto model_manager = ModelManager::GetInstance();
|
|
|
|
auto model_manager = ModelManager::GetInstance();
|
|
|
@ -225,13 +168,13 @@ Status GraphLoader::CommandHandle(const Command &command) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Status GraphLoader::LoadModelFromData(uint32_t &model_id, const ModelData &model_data, void *dev_ptr,
|
|
|
|
Status GraphLoader::LoadModelFromData(uint32_t &model_id, const ModelData &model_data, void *dev_ptr,
|
|
|
|
size_t memsize, void *weight_ptr, size_t weightsize) {
|
|
|
|
size_t mem_size, void *weight_ptr, size_t weight_size) {
|
|
|
|
GELOGI("Load model begin, model_id:%u.", model_id);
|
|
|
|
GELOGI("Load model begin, model_id:%u.", model_id);
|
|
|
|
// For ACL, Open Device from App.
|
|
|
|
// For ACL, Open Device from App.
|
|
|
|
auto model_manager = ModelManager::GetInstance();
|
|
|
|
auto model_manager = ModelManager::GetInstance();
|
|
|
|
GE_CHECK_NOTNULL(model_manager);
|
|
|
|
GE_CHECK_NOTNULL(model_manager);
|
|
|
|
Status ret = model_manager->LoadModelOffline(
|
|
|
|
Status ret = model_manager->LoadModelOffline(
|
|
|
|
model_id, model_data, nullptr, dev_ptr, memsize, weight_ptr, weightsize);
|
|
|
|
model_id, model_data, nullptr, dev_ptr, mem_size, weight_ptr, weight_size);
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
if (ret != SUCCESS) {
|
|
|
|
GELOGE(ACL_ERROR_GE_LOAD_MODEL, "Load model failed, model_id:%u.", model_id);
|
|
|
|
GELOGE(ACL_ERROR_GE_LOAD_MODEL, "Load model failed, model_id:%u.", model_id);
|
|
|
|
return ACL_ERROR_GE_LOAD_MODEL;
|
|
|
|
return ACL_ERROR_GE_LOAD_MODEL;
|
|
|
|