Browse Source

add float64 support to absgrad and sqrtgrad

tags/v1.2.0-rc1
Peilin Wang 4 years ago
parent
commit
a0645c41fe
4 changed files with 27 additions and 1 deletions
  1. +17
    -0
      mindspore/ccsrc/backend/kernel_compiler/gpu/cuda_impl/unary_op_grad_impl.cu
  2. +4
    -0
      mindspore/ccsrc/backend/kernel_compiler/gpu/math/broadcast_gpu_kernel.cc
  3. +4
    -0
      mindspore/ccsrc/backend/kernel_compiler/gpu/math/unary_op_grad_gpu_kernel.cc
  4. +2
    -1
      mindspore/ops/operations/_grad_ops.py

+ 17
- 0
mindspore/ccsrc/backend/kernel_compiler/gpu/cuda_impl/unary_op_grad_impl.cu View File

@@ -170,6 +170,23 @@ void ReciprocalGrad(const T *input, const T *dout, T *output, const size_t count
return;
}

template void SqrtGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void RsqrtGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void AsinGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void ACosGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void AtanGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void AsinhGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void AcoshGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);
template void ReciprocalGrad<double>(const double *input, const double *dout, double *output, const size_t count,
cudaStream_t cuda_stream);

template void SqrtGrad<float>(const float *input, const float *dout, float *output, const size_t count,
cudaStream_t cuda_stream);
template void RsqrtGrad<float>(const float *input, const float *dout, float *output, const size_t count,


+ 4
- 0
mindspore/ccsrc/backend/kernel_compiler/gpu/math/broadcast_gpu_kernel.cc View File

@@ -31,6 +31,10 @@ MS_REG_GPU_KERNEL_ONE(
MS_REG_GPU_KERNEL_ONE(
Div, KernelAttr().AddInputAttr(kNumberTypeFloat64).AddInputAttr(kNumberTypeFloat64).AddOutputAttr(kNumberTypeFloat64),
BroadcastOpGpuKernel, double)
MS_REG_GPU_KERNEL_ONE(
AbsGrad,
KernelAttr().AddInputAttr(kNumberTypeFloat64).AddInputAttr(kNumberTypeFloat64).AddOutputAttr(kNumberTypeFloat64),
BroadcastOpGpuKernel, double)

// fp32
MS_REG_GPU_KERNEL_ONE(


+ 4
- 0
mindspore/ccsrc/backend/kernel_compiler/gpu/math/unary_op_grad_gpu_kernel.cc View File

@@ -18,6 +18,10 @@

namespace mindspore {
namespace kernel {
MS_REG_GPU_KERNEL_ONE(
SqrtGrad,
KernelAttr().AddInputAttr(kNumberTypeFloat64).AddInputAttr(kNumberTypeFloat64).AddOutputAttr(kNumberTypeFloat64),
UnaryGradOpGpuKernel, double)
MS_REG_GPU_KERNEL_ONE(
SqrtGrad,
KernelAttr().AddInputAttr(kNumberTypeFloat32).AddInputAttr(kNumberTypeFloat32).AddOutputAttr(kNumberTypeFloat32),


+ 2
- 1
mindspore/ops/operations/_grad_ops.py View File

@@ -183,7 +183,8 @@ class SqrtGrad(PrimitiveWithInfer):

def infer_dtype(self, x_dtype, dout_dtype):
args = {"x": x_dtype, "dout": dout_dtype}
validator.check_tensors_dtypes_same_and_valid(args, [mstype.float16, mstype.float32], self.name)
valid_types = [mstype.float16, mstype.float32, mstype.float64]
validator.check_tensors_dtypes_same_and_valid(args, valid_types, self.name)
return x_dtype




Loading…
Cancel
Save