Skip to content

Commit 0d38e7f

Browse files
author
Github Executorch
committed
remove abort
1 parent a8ff3d7 commit 0d38e7f

16 files changed

Lines changed: 162 additions & 48 deletions

File tree

examples/mediatek/executor_runner/llama_runner/ModelChunk.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -560,8 +560,12 @@ void ModelChunk::SetBackendInputs() {
560560
std::vector dim_order(dim_order_raw.begin(), dim_order_raw.end());
561561
auto buffer_data = mInputBufferInfos[i].data;
562562

563+
ssize_t numel = 1;
564+
for (size_t j = 0; j < dim; j++) {
565+
numel *= sizes[j];
566+
}
563567
TensorImpl impl = TensorImpl(
564-
scalar_type, dim, sizes.data(), buffer_data, dim_order.data());
568+
scalar_type, dim, sizes.data(), numel, buffer_data, dim_order.data());
565569
Tensor tensor(&impl);
566570
const auto error = method.set_input(tensor, i);
567571
ET_CHECK_MSG(

examples/mediatek/executor_runner/mtk_oss_executor_runner.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,8 +260,12 @@ int main(int argc, char** argv) {
260260
std::vector sizes(sizes_raw.begin(), sizes_raw.end());
261261
std::vector dim_order(dim_order_raw.begin(), dim_order_raw.end());
262262

263+
ssize_t numel = 1;
264+
for (size_t i = 0; i < dim; i++) {
265+
numel *= sizes[i];
266+
}
263267
TensorImpl impl = TensorImpl(
264-
scalar_type, dim, sizes.data(), data_ptr, dim_order.data());
268+
scalar_type, dim, sizes.data(), numel, data_ptr, dim_order.data());
265269

266270
Tensor tensor(&impl);
267271
Error ret = method->set_input(tensor, i);

examples/qualcomm/executor_runner/qnn_executor_runner.cpp

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,15 @@ int main(int argc, char** argv) {
341341
"Failed to allocate custom memory. tensor index: %d, bytes: %zu",
342342
input_index,
343343
tensor_meta->nbytes());
344+
ssize_t numel = 1;
345+
for (size_t i = 0; i < tensor_meta->sizes().size(); i++) {
346+
numel *= tensor_meta->sizes()[i];
347+
}
344348
TensorImpl impl = TensorImpl(
345349
tensor_meta->scalar_type(),
346350
/*dim=*/tensor_meta->sizes().size(),
347351
const_cast<TensorImpl::SizesType*>(tensor_meta->sizes().data()),
352+
numel,
348353
custom_mem_ptr->GetPtr(),
349354
const_cast<TensorImpl::DimOrderType*>(tensor_meta->dim_order().data()));
350355
Error ret = method->set_input(Tensor(&impl), input_index);
@@ -475,13 +480,19 @@ int main(int argc, char** argv) {
475480
// For pre-allocated use case, we need to call set_input
476481
// to copy data for the input tensors since they doesn't
477482
// share the data with in_custom_mem.
483+
const auto* sizes_ptr = expected_input_shapes.empty()
484+
? tensor_meta->sizes().data()
485+
: expected_input_shapes[input_index].data();
486+
ssize_t dim = tensor_meta->sizes().size();
487+
ssize_t numel = 1;
488+
for (ssize_t i = 0; i < dim; i++) {
489+
numel *= sizes_ptr[i];
490+
}
478491
TensorImpl impl = TensorImpl(
479492
tensor_meta->scalar_type(),
480-
/*dim=*/tensor_meta->sizes().size(),
481-
const_cast<TensorImpl::SizesType*>(
482-
expected_input_shapes.empty()
483-
? tensor_meta->sizes().data()
484-
: expected_input_shapes[input_index].data()),
493+
/*dim=*/dim,
494+
const_cast<TensorImpl::SizesType*>(sizes_ptr),
495+
numel,
485496
in_custom_mem[input_index]->GetPtr(),
486497
const_cast<TensorImpl::DimOrderType*>(
487498
tensor_meta->dim_order().data()));

examples/samsung/executor_runner/enn_executor_runner.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,15 @@ int main(int argc, char** argv) {
302302
ET_CHECK_MSG(
303303
input_data_reader.nbytes(input_index) == tensor_meta->nbytes(),
304304
"Given inputs size is invalid");
305+
ssize_t numel = 1;
306+
for (size_t i = 0; i < tensor_meta->sizes().size(); i++) {
307+
numel *= tensor_meta->sizes()[i];
308+
}
305309
TensorImpl impl = TensorImpl(
306310
tensor_meta->scalar_type(),
307311
tensor_meta->sizes().size(),
308312
const_cast<TensorImpl::SizesType*>(tensor_meta->sizes().data()),
313+
numel,
309314
input_data_reader.get(input_index),
310315
const_cast<TensorImpl::DimOrderType*>(tensor_meta->dim_order().data()));
311316
Error ret = method->set_input(Tensor(&impl), input_index);

extension/kernel_util/test/make_boxed_from_unboxed_functor_test.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ using executorch::runtime::get_op_function_from_registry;
2626
using executorch::runtime::KernelRuntimeContext;
2727
using executorch::runtime::registry_has_op_function;
2828
using executorch::runtime::Span;
29+
using executorch::runtime::TensorShapeDynamism;
2930
using std::optional;
3031

3132
Tensor& my_op_out(KernelRuntimeContext& ctx, const Tensor& a, Tensor& out) {
@@ -104,7 +105,7 @@ TEST_F(MakeBoxedFromUnboxedFunctorTest, UnboxLogicWorks) {
104105
TensorImpl::SizesType sizes[1] = {5};
105106
TensorImpl::DimOrderType dim_order[1] = {0};
106107
int32_t data[5] = {0, 0, 0, 0, 0};
107-
auto a_impl = TensorImpl(ScalarType::Int, 1, sizes, data, dim_order, nullptr);
108+
auto a_impl = TensorImpl(ScalarType::Int, 1, sizes, 5, data, dim_order);
108109
auto a = Tensor(&a_impl);
109110

110111
// get boxed callable

extension/runner_util/inputs_portable.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ Error fill_and_set_input(
5959
size_t input_index,
6060
void* data_ptr,
6161
bool fill_tensor) {
62+
ssize_t numel = 1;
63+
for (size_t i = 0; i < tensor_meta.sizes().size(); i++) {
64+
numel *= tensor_meta.sizes()[i];
65+
}
6266
TensorImpl impl = TensorImpl(
6367
tensor_meta.scalar_type(),
6468
/*dim=*/tensor_meta.sizes().size(),
@@ -67,6 +71,7 @@ Error fill_and_set_input(
6771
// that the shape is correct; the Method manages its own sizes and
6872
// dim_order arrays for the input.
6973
const_cast<TensorImpl::SizesType*>(tensor_meta.sizes().data()),
74+
numel,
7075
data_ptr,
7176
const_cast<TensorImpl::DimOrderType*>(tensor_meta.dim_order().data()));
7277
Tensor t(&impl);

kernels/portable/cpu/util/broadcast_util.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,15 @@ Tensor make_tensor(
5959
auto tensor_impl = static_cast<TensorImpl*>(malloc(sizeof(TensorImpl)));
6060
ET_CHECK_MSG(tensor_impl != nullptr, "Failed to malloc for data TensorImpl");
6161

62+
ssize_t numel = 1;
63+
for (int i = 0; i < dim; i++) {
64+
numel *= sizes[i];
65+
}
6266
new (tensor_impl) TensorImpl(
6367
dtype,
6468
dim,
6569
reinterpret_cast<Tensor::SizesType*>(size_data_ptr),
70+
numel,
6671
nullptr,
6772
reinterpret_cast<Tensor::DimOrderType*>(dim_order_data_ptr),
6873
reinterpret_cast<Tensor::StridesType*>(strides_data_ptr));

kernels/quantized/cpu/op_dequantize.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -610,14 +610,16 @@ Tensor& dequantize_per_token_out(
610610
dim_order_to_stride_nocheck(
611611
input_sizes.data(), input_dim_order.data(), 2, input_strides.data());
612612
void* input_data = input.mutable_data_ptr();
613+
ssize_t reshaped_numel =
614+
static_cast<ssize_t>(num_channels) * input.size(input.dim() - 1);
613615
TensorImpl reshaped_input_impl = TensorImpl(
614616
input.scalar_type(),
615617
2,
616618
input_sizes.data(),
619+
reshaped_numel,
617620
input_data,
618621
input_dim_order.data(),
619-
input_strides.data(),
620-
TensorShapeDynamism::STATIC);
622+
input_strides.data());
621623
Tensor reshaped_input(&reshaped_input_impl);
622624
torch::executor::Error err = resize_tensor(out, input.sizes());
623625
ET_CHECK_MSG(

kernels/quantized/cpu/op_quantize.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -662,14 +662,16 @@ Tensor& quantize_per_token_out(
662662
dim_order_to_stride_nocheck(
663663
input_sizes.data(), input_dim_order.data(), 2, input_strides.data());
664664
void* input_data = input.mutable_data_ptr();
665+
ssize_t reshaped_numel =
666+
static_cast<ssize_t>(num_tokens) * input.size(input.dim() - 1);
665667
TensorImpl reshaped_input_impl = TensorImpl(
666668
input.scalar_type(),
667669
2,
668670
input_sizes.data(),
671+
reshaped_numel,
669672
input_data,
670673
input_dim_order.data(),
671-
input_strides.data(),
672-
TensorShapeDynamism::STATIC);
674+
input_strides.data());
673675
Tensor reshaped_input(&reshaped_input_impl);
674676
torch::executor::Error err = resize_tensor(out, input.sizes());
675677
ET_CHECK_MSG(

runtime/core/exec_aten/exec_aten.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ namespace executorch {
6666
namespace aten {
6767

6868
using TensorShapeDynamism = executorch::runtime::TensorShapeDynamism;
69+
template <typename T>
70+
using Result = executorch::runtime::Result<T>;
6971

7072
using std::nullopt;
7173
using std::nullopt_t;
@@ -105,7 +107,7 @@ template <typename T>
105107
using OptionalArrayRef = c10::OptionalArrayRef<T>;
106108
using OptionalIntArrayRef = OptionalArrayRef<int64_t>;
107109

108-
inline ssize_t compute_numel(const SizesType* sizes, ssize_t dim) {
110+
inline Result<ssize_t> compute_numel(const SizesType* sizes, ssize_t dim) {
109111
return static_cast<ssize_t>(
110112
c10::multiply_integers(c10::ArrayRef<SizesType>(sizes, dim)));
111113
}

0 commit comments

Comments
 (0)