diff --git a/inference/acllite/cplusplus/include/AclLiteModel.h b/inference/acllite/cplusplus/include/AclLiteModel.h index 8b7dcb36ecf022ae4a79b9d0de69b5ac709baae7..8dfec35a0f7084d8eb26bb8e5ba71cd85b61ef6b 100755 --- a/inference/acllite/cplusplus/include/AclLiteModel.h +++ b/inference/acllite/cplusplus/include/AclLiteModel.h @@ -129,5 +129,6 @@ private: aclmdlDataset *input_; // input dataset aclmdlDataset *output_; // output dataset std::string modelPath_; // model path + void* batchShapeData; }; #endif \ No newline at end of file diff --git a/inference/acllite/cplusplus/src/AclLiteModel.cpp b/inference/acllite/cplusplus/src/AclLiteModel.cpp index 7be8426ef2e5677db08f26eae3fd6e70fa429d7f..bbc35c7e5c76295fe77f17e6c8aaa6a5962be8b5 100755 --- a/inference/acllite/cplusplus/src/AclLiteModel.cpp +++ b/inference/acllite/cplusplus/src/AclLiteModel.cpp @@ -25,7 +25,7 @@ AclLiteModel::AclLiteModel():loadFlag_(false), isReleased_(false), modelId_(0), outputsNum_(0), modelMemSize_(0), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(nullptr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_("") + input_(nullptr), output_(nullptr), modelPath_(""),batchShapeData(nullptr) { } @@ -33,7 +33,7 @@ AclLiteModel::AclLiteModel(const string& modelPath):loadFlag_(false), isReleased modelId_(0), outputsNum_(0), modelMemSize_(0), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(nullptr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_(modelPath) + input_(nullptr), output_(nullptr), modelPath_(modelPath),batchShapeData(nullptr) { } @@ -41,7 +41,7 @@ AclLiteModel::AclLiteModel(void *modelAddr, size_t modelSize): loadFlag_(false), modelId_(0), outputsNum_(0), modelMemSize_(modelSize), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(modelAddr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_("") + input_(nullptr), output_(nullptr), modelPath_(""),batchShapeData(nullptr) { } @@ -222,19 +222,20 @@ AclLiteError AclLiteModel::CreateInput(vector& inputData) } size_t dynamicIdx = 0; - auto ret = aclmdlGetInputIndexByName(modelDesc_, ACL_DYNAMIC_TENSOR_NAME, &dynamicIdx); - if ((ret == ACL_SUCCESS) && (dynamicIdx == (dataNum - 1))) { - size_t dataLen = aclmdlGetInputSizeByIndex(modelDesc_, dynamicIdx); - void *data = nullptr; - ret = aclrtMalloc(&data, dataLen, ACL_MEM_MALLOC_HUGE_FIRST); - if (ret != ACL_SUCCESS) { - ACLLITE_LOG_ERROR("malloc device memory failed, errorCode = %d.", static_cast(ret)); - return ACLLITE_ERROR_INVALID_ARGS; + if(dataNum != inputData.size()) { + auto ret = aclmdlGetInputIndexByName(modelDesc_, ACL_DYNAMIC_TENSOR_NAME, &dynamicIdx); + if ((ret == ACL_SUCCESS) && (dynamicIdx == (dataNum - 1))) { + size_t dataLen = aclmdlGetInputSizeByIndex(modelDesc_, dynamicIdx); + ret = aclrtMalloc(&batchShapeData, dataLen, ACL_MEM_MALLOC_HUGE_FIRST); + if (ret != ACL_SUCCESS) { + ACLLITE_LOG_ERROR("malloc device memory failed, errorCode = %d.", static_cast(ret)); + return ACLLITE_ERROR_INVALID_ARGS; + } + DataInfo batchInput; + batchInput.data = batchShapeData; + batchInput.size = dataLen; + inputData.push_back(batchInput); } - DataInfo batchInput; - batchInput.data = data; - batchInput.size = dataLen; - inputData.push_back(batchInput); } if (dataNum != inputData.size()) { @@ -484,6 +485,10 @@ void AclLiteModel::DestroyInput() } aclmdlDestroyDataset(input_); input_ = nullptr; + if(batchShapeData!=nullptr) { + aclrtFree(batchShapeData); + batchShapeData=nullptr; + } } size_t AclLiteModel::GetModelInputSize(int index) diff --git a/inference/modelInference/sampleYOLOV7MultiInput/common/include/AclLiteModel.h b/inference/modelInference/sampleYOLOV7MultiInput/common/include/AclLiteModel.h index 8b7dcb36ecf022ae4a79b9d0de69b5ac709baae7..8dfec35a0f7084d8eb26bb8e5ba71cd85b61ef6b 100755 --- a/inference/modelInference/sampleYOLOV7MultiInput/common/include/AclLiteModel.h +++ b/inference/modelInference/sampleYOLOV7MultiInput/common/include/AclLiteModel.h @@ -129,5 +129,6 @@ private: aclmdlDataset *input_; // input dataset aclmdlDataset *output_; // output dataset std::string modelPath_; // model path + void* batchShapeData; }; #endif \ No newline at end of file diff --git a/inference/modelInference/sampleYOLOV7MultiInput/common/src/AclLiteModel.cpp b/inference/modelInference/sampleYOLOV7MultiInput/common/src/AclLiteModel.cpp index 7be8426ef2e5677db08f26eae3fd6e70fa429d7f..bbc35c7e5c76295fe77f17e6c8aaa6a5962be8b5 100755 --- a/inference/modelInference/sampleYOLOV7MultiInput/common/src/AclLiteModel.cpp +++ b/inference/modelInference/sampleYOLOV7MultiInput/common/src/AclLiteModel.cpp @@ -25,7 +25,7 @@ AclLiteModel::AclLiteModel():loadFlag_(false), isReleased_(false), modelId_(0), outputsNum_(0), modelMemSize_(0), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(nullptr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_("") + input_(nullptr), output_(nullptr), modelPath_(""),batchShapeData(nullptr) { } @@ -33,7 +33,7 @@ AclLiteModel::AclLiteModel(const string& modelPath):loadFlag_(false), isReleased modelId_(0), outputsNum_(0), modelMemSize_(0), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(nullptr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_(modelPath) + input_(nullptr), output_(nullptr), modelPath_(modelPath),batchShapeData(nullptr) { } @@ -41,7 +41,7 @@ AclLiteModel::AclLiteModel(void *modelAddr, size_t modelSize): loadFlag_(false), modelId_(0), outputsNum_(0), modelMemSize_(modelSize), modelWorkSize_(0), modelWeightSize_(0), modelMemPtr_(modelAddr), modelWorkPtr_(nullptr), modelWeightPtr_(nullptr), modelDesc_(nullptr), - input_(nullptr), output_(nullptr), modelPath_("") + input_(nullptr), output_(nullptr), modelPath_(""),batchShapeData(nullptr) { } @@ -222,19 +222,20 @@ AclLiteError AclLiteModel::CreateInput(vector& inputData) } size_t dynamicIdx = 0; - auto ret = aclmdlGetInputIndexByName(modelDesc_, ACL_DYNAMIC_TENSOR_NAME, &dynamicIdx); - if ((ret == ACL_SUCCESS) && (dynamicIdx == (dataNum - 1))) { - size_t dataLen = aclmdlGetInputSizeByIndex(modelDesc_, dynamicIdx); - void *data = nullptr; - ret = aclrtMalloc(&data, dataLen, ACL_MEM_MALLOC_HUGE_FIRST); - if (ret != ACL_SUCCESS) { - ACLLITE_LOG_ERROR("malloc device memory failed, errorCode = %d.", static_cast(ret)); - return ACLLITE_ERROR_INVALID_ARGS; + if(dataNum != inputData.size()) { + auto ret = aclmdlGetInputIndexByName(modelDesc_, ACL_DYNAMIC_TENSOR_NAME, &dynamicIdx); + if ((ret == ACL_SUCCESS) && (dynamicIdx == (dataNum - 1))) { + size_t dataLen = aclmdlGetInputSizeByIndex(modelDesc_, dynamicIdx); + ret = aclrtMalloc(&batchShapeData, dataLen, ACL_MEM_MALLOC_HUGE_FIRST); + if (ret != ACL_SUCCESS) { + ACLLITE_LOG_ERROR("malloc device memory failed, errorCode = %d.", static_cast(ret)); + return ACLLITE_ERROR_INVALID_ARGS; + } + DataInfo batchInput; + batchInput.data = batchShapeData; + batchInput.size = dataLen; + inputData.push_back(batchInput); } - DataInfo batchInput; - batchInput.data = data; - batchInput.size = dataLen; - inputData.push_back(batchInput); } if (dataNum != inputData.size()) { @@ -484,6 +485,10 @@ void AclLiteModel::DestroyInput() } aclmdlDestroyDataset(input_); input_ = nullptr; + if(batchShapeData!=nullptr) { + aclrtFree(batchShapeData); + batchShapeData=nullptr; + } } size_t AclLiteModel::GetModelInputSize(int index)