@@ -19,9 +19,15 @@ namespace dicp {
1919const int NUM1 = 1 ;
2020
2121AclNnSplitWithSizeOperation::AclNnSplitWithSizeOperation (const std::string& name, int64_t splitDim, std::vector<int64_t > splitSizes)
22- : AclNnOperation(name), splitDim_(splitDim), splitSizes_(std::move(splitSizes)) {}
22+ : AclNnOperation(name), splitDim_(splitDim), splitSizes_(std::move(splitSizes)) {
23+ sizes_ = aclCreateIntArray (splitSizes_.data (), splitSizes_.size ());
24+ }
2325
24- AclNnSplitWithSizeOperation::~AclNnSplitWithSizeOperation () {}
26+ AclNnSplitWithSizeOperation::~AclNnSplitWithSizeOperation () {
27+ if (sizes_ != nullptr ) {
28+ aclDestroyIntArray (sizes_);
29+ }
30+ }
2531
2632atb::Status AclNnSplitWithSizeOperation::InferShape (const atb::SVector<atb::TensorDesc>& inTensorDescs, atb::SVector<atb::TensorDesc>& outTensorDescs) const {
2733 DICP_LOG (INFO ) << opName_ << " infer shape start" ;
@@ -62,11 +68,9 @@ int AclNnSplitWithSizeOperation::SetAclNnWorkspaceExecutor(uint64_t& workspaceSi
6268 tmp[i] = aclOutTensors_.at (i).tensor ;
6369 }
6470 aclTensorList* tensorList = aclCreateTensorList (tmp.data (), tmp.size ());
65- aclIntArray* sizes = aclCreateIntArray (splitSizes_.data (), splitSizes_.size ());
66- int ret = aclnnSplitWithSizeGetWorkspaceSize (aclInTensors_.at (0 ).tensor , sizes, splitDim_, tensorList, &workspaceSize, &aclExecutor_);
71+ int ret = aclnnSplitWithSizeGetWorkspaceSize (aclInTensors_.at (0 ).tensor , sizes_, splitDim_, tensorList, &workspaceSize, &aclExecutor_);
6772 DICP_LOG (INFO ) << opName_ << " aclnnSplitWithSizeGetWorkspaceSize end, ret:" << ret << " , workspaceSize:" << workspaceSize
6873 << " , aclExecutor:" << aclExecutor_;
69-
7074 return ret;
7175}
7276
0 commit comments