xref: /aosp_15_r20/external/pytorch/aten/src/ATen/native/mkldnn/UnaryOps.cpp (revision da0073e96a02ea20f0ac840b70461e3646d07c45)
1 #define TORCH_ASSERT_ONLY_METHOD_OPERATORS
2 #include <ATen/core/Tensor.h>
3 #include <ATen/Config.h>
4 
5 #ifndef AT_PER_OPERATOR_HEADERS
6 #include <ATen/NativeFunctions.h>
7 #else
8 #include <ATen/ops/sigmoid_native.h>          // for mkldnn_sigmoid, mkldnn_...
9 #include <ATen/ops/tanh_native.h>             // for mkldnn_tanh, mkldnn_tanh_
10 #endif
11 
12 #if !AT_MKLDNN_ENABLED()
13 
14 namespace at {
15 namespace native {
16 
mkldnn_sigmoid(const Tensor & self)17 Tensor mkldnn_sigmoid(const Tensor& self) {
18   TORCH_CHECK(false, "mkldnn_sigmoid: ATen not compiled with MKLDNN support");
19 }
20 
mkldnn_sigmoid_(Tensor & self)21 Tensor& mkldnn_sigmoid_(Tensor& self) {
22   TORCH_CHECK(false, "mkldnn_sigmoid_: ATen not compiled with MKLDNN support");
23 }
24 
mkldnn_tanh(const Tensor & self)25 Tensor mkldnn_tanh(const Tensor& self) {
26   TORCH_CHECK(false, "mkldnn_tanh: ATen not compiled with MKLDNN support");
27 }
28 
mkldnn_tanh_(Tensor & self)29 Tensor& mkldnn_tanh_(Tensor& self) {
30   TORCH_CHECK(false, "mkldnn_tanh_: ATen not compiled with MKLDNN support");
31 }
32 
33 } // namespace native
34 } // namespace at
35 
36 #else // AT_MKLDNN_ENABLED
37 
38 #include <ATen/native/mkldnn/MKLDNNCommon.h>
39 
40 namespace at {
41 namespace native {
42 
mkldnn_sigmoid(const Tensor & self)43 Tensor mkldnn_sigmoid(const Tensor& self) {
44   ideep::tensor& x = itensor_from_mkldnn(self);
45   ideep::tensor y;
46   ideep::eltwise_forward::compute(
47       x, y, ideep::algorithm::eltwise_logistic, ideep::prop_kind::forward);
48   return new_with_itensor_mkldnn(std::move(y), optTypeMetaToScalarType(self.options().dtype_opt()),
49                                  self.options().device_opt());
50 }
51 
mkldnn_sigmoid_(Tensor & self)52 Tensor& mkldnn_sigmoid_(Tensor& self) {
53   ideep::tensor& x = itensor_from_mkldnn(self);
54   ideep::eltwise_forward::compute(
55       x, x, ideep::algorithm::eltwise_logistic, ideep::prop_kind::forward);
56   return self;
57 }
58 
mkldnn_tanh(const Tensor & self)59 Tensor mkldnn_tanh(const Tensor& self) {
60   ideep::tensor& x = itensor_from_mkldnn(self);
61   ideep::tensor y;
62   ideep::eltwise_forward::compute(
63       x, y, ideep::algorithm::eltwise_tanh, ideep::prop_kind::forward);
64   return new_with_itensor_mkldnn(std::move(y), optTypeMetaToScalarType(self.options().dtype_opt()),
65                                  self.options().device_opt());
66 }
67 
mkldnn_tanh_(Tensor & self)68 Tensor& mkldnn_tanh_(Tensor& self) {
69   ideep::tensor& x = itensor_from_mkldnn(self);
70   ideep::eltwise_forward::compute(
71       x, x, ideep::algorithm::eltwise_tanh, ideep::prop_kind::forward);
72   return self;
73 }
74 
75 } // namespace native
76 } // namespace at
77 
78 #endif // AT_MKLDNN_ENABLED
79