multiple data type support
Created by: dzhwinter
The kernel register macro need to support multiple data types, not only in CPU operators but also in GPU operators. Our register need to duplicate the same macro many times, which should be improved soon. For example,
REGISTER_OP_CPU_KERNEL(
elementwise_sub_grad,
ops::ElementwiseSubGradKernel<paddle::platform::CPUPlace, float>,
ops::ElementwiseSubGradKernel<paddle::platform::CPUPlace, double>,
ops::ElementwiseSubGradKernel<paddle::platform::CPUPlace, int>,
ops::ElementwiseSubGradKernel<paddle::platform::CPUPlace, int64_t>);
can be simplifid into format of
using NumricTypes = TensorTypes<int, int64_t, float, double>;
REGISTER_OP_CPU_KERNEL(
elementwise_sub_grad,
ops::ElementwiseSubGradKernel<paddle::platform::CPUPlace>, NumricTypes)
(just pseudo code)