Skip to content

Commit 0716bc3

Browse files
committed
Update base for Update on "[cortex-m] Add scalar c++ op for dequantize_per_tensor"
Only buck build for now, CMake is next. No MVE, scalar only. Strictly the dtypes we care about update arg_meta to reflect that. Differential Revision: [D73164576](https://our.internmc.facebook.com/intern/diff/D73164576/) [ghstack-poisoned]
1 parent e2050e7 commit 0716bc3

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

backends/cortex_m/ops/op_quantize_per_tensor.cpp

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ T quantize_val(
8282
K value,
8383
int64_t quant_min,
8484
int64_t quant_max) {
85-
int32_t qvalue = zero_point + static_cast<int32_t>(std::nearbyint(inv_scale * value));
85+
int32_t qvalue =
86+
zero_point + static_cast<int32_t>(std::nearbyint(inv_scale * value));
8687
qvalue = std::max<int32_t>(qvalue, static_cast<int32_t>(quant_min));
8788
qvalue = std::min<int32_t>(qvalue, static_cast<int32_t>(quant_max));
8889
return static_cast<T>(qvalue);
@@ -123,12 +124,13 @@ Tensor& quantize_per_tensor_out(
123124
const size_t numel = input.numel();
124125

125126
#if defined(HAS_HELIUM_SIMD)
126-
// Helium MVE implementation for float32 to int8 quantization
127-
#Error "Implement MVE version!"
127+
// Helium MVE implementation for float32 to int8 quantization
128+
#Error "Implement MVE version!"
128129
#else
129130
// Scalar implementation for float32 to int8 quantization
130131
for (size_t i = 0; i < numel; i++) {
131-
out_data[i] = quantize_val<int8_t, float>(inv_scale, zp, input_data[i], qmin, qmax);
132+
out_data[i] =
133+
quantize_val<int8_t, float>(inv_scale, zp, input_data[i], qmin, qmax);
132134
}
133135
#endif
134136

@@ -143,9 +145,10 @@ Tensor& quantize_per_tensor_out(
143145
int64_t quant_max,
144146
ScalarType dtype,
145147
Tensor& out) {
146-
KernelRuntimeContext context;
147-
return quantize_per_tensor_out(context, input, scale, zero_point, quant_min, quant_max, dtype, out);
148+
KernelRuntimeContext context;
149+
return quantize_per_tensor_out(
150+
context, input, scale, zero_point, quant_min, quant_max, dtype, out);
148151
}
149-
152+
150153
} // namespace native
151154
} // namespace cortex_m

backends/cortex_m/test/op_quantize_per_tensor_test.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77
*/
88

99
#include <executorch/backends/cortex_m/ops/NativeFunctions.h> // Declares the operator
10-
#include <executorch/runtime/kernel/kernel_includes.h>
1110
#include <executorch/runtime/core/exec_aten/exec_aten.h>
12-
#include <executorch/runtime/core/exec_aten/testing_util/tensor_util.h>
1311
#include <executorch/runtime/core/exec_aten/testing_util/tensor_factory.h>
12+
#include <executorch/runtime/core/exec_aten/testing_util/tensor_util.h>
13+
#include <executorch/runtime/kernel/kernel_includes.h>
1414
#include <gtest/gtest.h>
1515

1616
using executorch::aten::ScalarType;
@@ -38,11 +38,18 @@ void test_dtype() {
3838

3939
KernelRuntimeContext ctx;
4040
quantize_per_tensor_out(
41-
ctx, input, scale, zero_point, quant_min, quant_max, ScalarType::Char, out);
41+
ctx,
42+
input,
43+
scale,
44+
zero_point,
45+
quant_min,
46+
quant_max,
47+
ScalarType::Char,
48+
out);
4249

4350
EXPECT_TENSOR_EQ(out, expected);
4451
}
4552

4653
TEST(OpQuantizeOutTest, AllDtypesSupported) {
47-
test_dtype();
54+
test_dtype();
4855
}

0 commit comments

Comments
 (0)