@@ -2708,6 +2708,17 @@ at::Tensor AtenIpexCPUDev::dil_upsample_linear1d_backward(const at::Tensor & gra
2708
2708
return dbl::upsample::dil_upsample_backward (grad_output, input_size, dil::algorithm::resampling_linear, scales);
2709
2709
}
2710
2710
2711
+ at::Tensor AtenIpexCPUDev::dil_upsample_bilinear2d (const at::Tensor & self, c10::optional<at::IntArrayRef> output_size, bool align_corners, c10::optional<c10::ArrayRef<double >> scale_factors) {
2712
+ DEBUG (" AtenIpexCPUDev::dil_upsample_bilinear2d_vec\n " );
2713
+ auto scale_h = c10::optional<double >(1.0 );
2714
+ auto scale_w = c10::optional<double >(1.0 );
2715
+ if (scale_factors.has_value ()) {
2716
+ scale_h = c10::optional<double >(scale_factors->at (0 ));
2717
+ scale_w = c10::optional<double >(scale_factors->at (1 ));
2718
+ }
2719
+ return dbl::upsample::dil_upsample (self, output_size.value (), dil::algorithm::resampling_linear, scale_h, scale_w);
2720
+ }
2721
+
2711
2722
at::Tensor AtenIpexCPUDev::dil_upsample_bilinear2d (const at::Tensor & self, at::IntArrayRef output_size, bool align_corners, c10::optional<double > scales_h, c10::optional<double > scales_w) {
2712
2723
DEBUG (" AtenIpexCPUDev::dil_upsample_bilinear2d\n " );
2713
2724
IPEX_CHECK (align_corners == false , " dil_upsample_bilinear2d not support align_corners mode yet" );
@@ -2722,6 +2733,19 @@ at::Tensor AtenIpexCPUDev::dil_upsample_bilinear2d_backward(const at::Tensor & g
2722
2733
return dbl::upsample::dil_upsample_backward (grad_output, input_size, dil::algorithm::resampling_linear, scales_h, scales_w);
2723
2734
}
2724
2735
2736
+ at::Tensor AtenIpexCPUDev::dil_upsample_bilinear2d_backward (const at::Tensor & grad_output, c10::optional<at::IntArrayRef> output_size, at::IntArrayRef input_size, bool align_corners, c10::optional<c10::ArrayRef<double >> scale_factors) {
2737
+ DEBUG (" AtenIpexCPUDev::dil_upsample_bilinear2d_backward_vec\n " );
2738
+ IPEX_CHECK (align_corners == false , " dil_upsample_bilinear2d_backward_vec not support align_corners mode yet" );
2739
+ CHECK_DNNL_OP_PRE_COND (grad_output);
2740
+ auto scales_h = c10::optional<double >(1.0 );
2741
+ auto scales_w = c10::optional<double >(1.0 );
2742
+ if (scale_factors.has_value ()) {
2743
+ scales_h = c10::optional<double >(scale_factors->at (0 ));
2744
+ scales_w = c10::optional<double >(scale_factors->at (1 ));
2745
+ }
2746
+ return dbl::upsample::dil_upsample_backward (grad_output, input_size, dil::algorithm::resampling_linear, scales_h, scales_w);
2747
+ }
2748
+
2725
2749
at::Tensor AtenIpexCPUDev::dil_upsample_trilinear3d (const at::Tensor & self, at::IntArrayRef output_size, bool align_corners, c10::optional<double > scales_d, c10::optional<double > scales_h, c10::optional<double > scales_w) {
2726
2750
DEBUG (" AtenIpexCPUDev::dil_upsample_trilinear3d\n " );
2727
2751
IPEX_CHECK (align_corners == false , " dil_upsample_trilinear3d not support align_corners mode yet" );
0 commit comments