From 5097c8b11b842ac125c0965edf4a90dde729c800 Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Fri, 17 Jan 2025 16:31:07 -0800 Subject: [PATCH 1/2] Update [ghstack-poisoned] --- kernels/optimized/cpu/op_neg.cpp | 2 +- kernels/portable/cpu/op_abs.cpp | 2 +- kernels/portable/cpu/op_neg.cpp | 2 +- kernels/test/op_abs_test.cpp | 25 ++++++++++++++++--------- kernels/test/op_neg_test.cpp | 25 ++++++++++++++++--------- 5 files changed, 35 insertions(+), 21 deletions(-) diff --git a/kernels/optimized/cpu/op_neg.cpp b/kernels/optimized/cpu/op_neg.cpp index c46a004e0b3..fa414799991 100644 --- a/kernels/optimized/cpu/op_neg.cpp +++ b/kernels/optimized/cpu/op_neg.cpp @@ -26,7 +26,7 @@ Tensor& opt_neg_out(KernelRuntimeContext& ctx, const Tensor& in, Tensor& out) { out, "Failed to resize output tensor."); - ET_SWITCH_REAL_TYPES(in.scalar_type(), ctx, "neg.out", CTYPE, [&] { + ET_SWITCH_REALHBF16_TYPES(in.scalar_type(), ctx, "neg.out", CTYPE, [&] { using Vec = executorch::vec::Vectorized; executorch::vec::map( [](Vec x) { return x.neg(); }, diff --git a/kernels/portable/cpu/op_abs.cpp b/kernels/portable/cpu/op_abs.cpp index 5d0fcbaaa45..df530bcd1fa 100644 --- a/kernels/portable/cpu/op_abs.cpp +++ b/kernels/portable/cpu/op_abs.cpp @@ -31,7 +31,7 @@ Tensor& abs_out(KernelRuntimeContext& ctx, const Tensor& in, Tensor& out) { ET_KERNEL_CHECK( ctx, tensors_have_same_dim_order(in, out), InvalidArgument, out); - ET_SWITCH_REAL_TYPES(in.scalar_type(), ctx, "abs.out", CTYPE, [&] { + ET_SWITCH_REALHBF16_TYPES(in.scalar_type(), ctx, "abs.out", CTYPE, [&] { apply_unary_map_fn( [](const CTYPE val_in) { if (val_in < 0) { diff --git a/kernels/portable/cpu/op_neg.cpp b/kernels/portable/cpu/op_neg.cpp index a4e6a8ad256..339bfd8a445 100644 --- a/kernels/portable/cpu/op_neg.cpp +++ b/kernels/portable/cpu/op_neg.cpp @@ -33,7 +33,7 @@ Tensor& neg_out(KernelRuntimeContext& ctx, const Tensor& in, Tensor& out) { ET_KERNEL_CHECK( ctx, tensors_have_same_dim_order(in, out), InvalidArgument, out); - ET_SWITCH_REAL_TYPES(in.scalar_type(), ctx, "neg.out", CTYPE, [&] { + ET_SWITCH_REALHBF16_TYPES(in.scalar_type(), ctx, "neg.out", CTYPE, [&] { apply_unary_map_fn( [](const CTYPE val_in) { return static_cast(-val_in); }, in.const_data_ptr(), diff --git a/kernels/test/op_abs_test.cpp b/kernels/test/op_abs_test.cpp index f596d586d90..7b94b943d9d 100644 --- a/kernels/test/op_abs_test.cpp +++ b/kernels/test/op_abs_test.cpp @@ -24,19 +24,26 @@ class OpAbsTest : public OperatorTest { Tensor& op_abs_out(const Tensor& self, Tensor& out) { return torch::executor::aten::abs_outf(context_, self, out); } -}; -TEST_F(OpAbsTest, SanityCheck) { - TensorFactory tf; + template + void run_smoke_test() { + TensorFactory tf; + + Tensor in = tf.make({1, 7}, {-3.0, -2.5, -1.01, 0.0, 1.01, 2.5, 3.0}); + Tensor out = tf.zeros({1, 7}); + Tensor expected = tf.make({1, 7}, {3.0, 2.5, 1.01, 0.0, 1.01, 2.5, 3.0}); - Tensor in = tf.make({1, 7}, {-3.0, -2.5, -1.01, 0.0, 1.01, 2.5, 3.0}); - Tensor out = tf.zeros({1, 7}); - Tensor expected = tf.make({1, 7}, {3.0, 2.5, 1.01, 0.0, 1.01, 2.5, 3.0}); + Tensor ret = op_abs_out(in, out); - Tensor ret = op_abs_out(in, out); + EXPECT_TENSOR_EQ(out, ret); + EXPECT_TENSOR_EQ(out, expected); + } +}; - EXPECT_TENSOR_EQ(out, ret); - EXPECT_TENSOR_EQ(out, expected); +TEST_F(OpAbsTest, SmokeTest) { +#define RUN_SMOKE_TEST(ctype, dtype) run_smoke_test(); + // TODO: cover all REALHBF16 types with generalized unary function test harness. + ET_FORALL_FLOATHBF16_TYPES(RUN_SMOKE_TEST); } TEST_F(OpAbsTest, MemoryFormatCheck) { diff --git a/kernels/test/op_neg_test.cpp b/kernels/test/op_neg_test.cpp index 09bbb8b6af1..defdb23176c 100644 --- a/kernels/test/op_neg_test.cpp +++ b/kernels/test/op_neg_test.cpp @@ -24,17 +24,24 @@ class OpNegTest : public OperatorTest { Tensor& op_neg_out(const Tensor& self, Tensor& out) { return torch::executor::aten::neg_outf(context_, self, out); } -}; -TEST_F(OpNegTest, SanityCheck) { - TensorFactory tf; + template + void run_smoke_test() { + TensorFactory tf; + + Tensor in = tf.make({1, 7}, {-3.0, -2.5, -1.01, 0.0, 1.01, 2.5, 3.0}); + Tensor out = tf.zeros({1, 7}); + Tensor expected = tf.make({1, 7}, {3.0, 2.5, 1.01, 0.0, -1.01, -2.5, -3.0}); - Tensor in = tf.make({1, 7}, {-3.0, -2.5, -1.01, 0.0, 1.01, 2.5, 3.0}); - Tensor out = tf.zeros({1, 7}); - Tensor expected = tf.make({1, 7}, {3.0, 2.5, 1.01, 0.0, -1.01, -2.5, -3.0}); + Tensor ret = op_neg_out(in, out); - Tensor ret = op_neg_out(in, out); + EXPECT_TENSOR_EQ(out, ret); + EXPECT_TENSOR_EQ(out, expected); + } +}; - EXPECT_TENSOR_EQ(out, ret); - EXPECT_TENSOR_EQ(out, expected); +TEST_F(OpNegTest, SmokeTest) { +#define RUN_SMOKE_TEST(ctype, dtype) run_smoke_test(); + // TODO: cover all REALHBF16 types with generalized unary function test harness. + ET_FORALL_FLOATHBF16_TYPES(RUN_SMOKE_TEST); } From 4412b002dbdafef2efd4ff4ab1fe34a09f08b11a Mon Sep 17 00:00:00 2001 From: Scott Wolchok Date: Fri, 17 Jan 2025 16:43:40 -0800 Subject: [PATCH 2/2] Update [ghstack-poisoned] --- kernels/test/op_abs_test.cpp | 3 ++- kernels/test/op_neg_test.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/kernels/test/op_abs_test.cpp b/kernels/test/op_abs_test.cpp index 7b94b943d9d..bdcf6be5cae 100644 --- a/kernels/test/op_abs_test.cpp +++ b/kernels/test/op_abs_test.cpp @@ -42,7 +42,8 @@ class OpAbsTest : public OperatorTest { TEST_F(OpAbsTest, SmokeTest) { #define RUN_SMOKE_TEST(ctype, dtype) run_smoke_test(); - // TODO: cover all REALHBF16 types with generalized unary function test harness. + // TODO: cover all REALHBF16 types with generalized unary function test + // harness. ET_FORALL_FLOATHBF16_TYPES(RUN_SMOKE_TEST); } diff --git a/kernels/test/op_neg_test.cpp b/kernels/test/op_neg_test.cpp index defdb23176c..a87b9feca15 100644 --- a/kernels/test/op_neg_test.cpp +++ b/kernels/test/op_neg_test.cpp @@ -42,6 +42,7 @@ class OpNegTest : public OperatorTest { TEST_F(OpNegTest, SmokeTest) { #define RUN_SMOKE_TEST(ctype, dtype) run_smoke_test(); - // TODO: cover all REALHBF16 types with generalized unary function test harness. + // TODO: cover all REALHBF16 types with generalized unary function test + // harness. ET_FORALL_FLOATHBF16_TYPES(RUN_SMOKE_TEST); }