1 #include <ATen/core/dispatch/KernelRegistration.h> 2 #include "caffe2/operators/experimental/c10/schemas/flatten.h" 3 #include "caffe2/utils/math.h" 4 #include "caffe2/core/tensor.h" 11 template <
class DataType,
class Context>
12 void flatten_op_cpu_impl(
16 Tensor input{C10Tensor(input_)};
17 Tensor output{C10Tensor(output_)};
20 input.sizes().size(), axis,
"The rank of the tensor must be >= axis.");
21 output.Resize(input.size_to_dim(axis), input.size_from_dim(axis));
22 context.CopyItemsSameDevice(
26 output.raw_mutable_data(input.dtype()));
32 C10_REGISTER_KERNEL(caffe2::ops::Flatten)
33 .kernel<decltype(caffe2::flatten_op_cpu_impl<float, caffe2::CPUContext>), &caffe2::flatten_op_cpu_impl<float, caffe2::CPUContext>>()
34 .dispatchKey(CPUTensorId());
Tensor class holds a shared pointer to the implementation TensorImpl, redirects API calls to TensorIm...
Virtual interface for the Context class in Caffe2.
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...