|
|
|
@@ -34,21 +34,25 @@ OpParameter *PopulateSplitParameter(const mindspore::lite::PrimitiveC *primitive |
|
|
|
split_param->num_split_ = param->num_split(); |
|
|
|
if (split_param->num_split_ > std::numeric_limits<int>::max() / static_cast<int>(sizeof(int))) { |
|
|
|
MS_LOG(ERROR) << "The value of split_param->num_split_ is too big"; |
|
|
|
free(split_param); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
int *split_sizes = reinterpret_cast<int *>(malloc(split_param->num_split_ * sizeof(int))); |
|
|
|
if (split_sizes == nullptr) { |
|
|
|
MS_LOG(ERROR) << "malloc split size of SplitParameter failed."; |
|
|
|
|
|
|
|
/* free split_sizes_ in split op base */ |
|
|
|
split_param->split_sizes_ = reinterpret_cast<int *>(malloc(split_param->num_split_ * sizeof(int))); |
|
|
|
if (split_param->split_sizes_ == nullptr) { |
|
|
|
MS_LOG(ERROR) << "malloc split_param split_sizes_ error"; |
|
|
|
free(split_param); |
|
|
|
return nullptr; |
|
|
|
} |
|
|
|
memset(split_sizes, 0, split_param->num_split_ * sizeof(int)); |
|
|
|
split_param->split_sizes_ = split_sizes; |
|
|
|
memset(split_param->split_sizes_, 0, split_param->num_split_ * sizeof(int)); |
|
|
|
|
|
|
|
auto split_sizes_vector_ = param->size_splits(); |
|
|
|
int i = 0; |
|
|
|
for (int &iter : split_sizes_vector_) { |
|
|
|
split_param->split_sizes_[i++] = iter; |
|
|
|
MS_ASSERT(split_sizes_vector_.size() == split_param->num_split_); |
|
|
|
for (size_t i = 0; i < split_sizes_vector_.size(); i++) { |
|
|
|
split_param->split_sizes_[i] = split_sizes_vector_[i]; |
|
|
|
} |
|
|
|
|
|
|
|
split_param->split_dim_ = param->GetSplitDim(); |
|
|
|
return reinterpret_cast<OpParameter *>(split_param); |
|
|
|
} |
|
|
|
|