1 #include <ATen/core/dispatch/KernelRegistration.h> 2 #include "caffe2/operators/experimental/c10/schemas/relu.h" 3 #include "caffe2/utils/eigen_utils.h" 4 #include "caffe2/utils/math.h" 5 #include "caffe2/core/tensor.h" 11 template <
class DataType>
12 void relu_op_cpu_impl(
15 Tensor input{C10Tensor(input_)};
16 Tensor output{C10Tensor(output_)};
18 output.ResizeLike(input);
20 #ifdef CAFFE2_USE_ACCELERATE 21 const float zero = 0.0f;
26 output.mutable_data<
float>(),
30 caffe2::EigenVectorMap<float>(output.mutable_data<
float>(), input.numel()) =
31 caffe2::ConstEigenVectorMap<float>(input.data<
float>(), input.numel())
46 C10_REGISTER_KERNEL(caffe2::ops::Relu)
47 .kernel<decltype(caffe2::relu_op_cpu_impl<float>), &caffe2::relu_op_cpu_impl<float>>()
48 .dispatchKey(CPUTensorId());
Tensor class holds a shared pointer to the implementation TensorImpl, redirects API calls to TensorIm...
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...
To register your own kernel for an operator, do in one (!) cpp file: C10_REGISTER_KERNEL(OperatorHand...