tentative fix for adaptiveavgpool gradient computation (#60630)
Summary:
Fixes https://github.com/pytorch/pytorch/issues/60524
Pull Request resolved: https://github.com/pytorch/pytorch/pull/60630
Reviewed By: jbschlosser
Differential Revision: D29374257
Pulled By: ngimel
fbshipit-source-id: be05f0ceb53e6f0f0a59a83b710dafde469d4e8a
diff --git a/aten/src/ATen/native/cuda/AdaptiveAveragePooling3d.cu b/aten/src/ATen/native/cuda/AdaptiveAveragePooling3d.cu
index 21d8d2c..abc98d0 100644
--- a/aten/src/ATen/native/cuda/AdaptiveAveragePooling3d.cu
+++ b/aten/src/ATen/native/cuda/AdaptiveAveragePooling3d.cu
@@ -194,7 +194,7 @@
for (ow = ostartW; ow < oendW; ++ow) {
int kW = end_index(ow, osizeW, isizeW) - start_index(ow, osizeW, isizeW);
const accscalar_t divide_factor = kW * kH * kT;
- accscalar_t grad_delta = static_cast<accscalar_t>(ptr_gradOutput[oh*isizeW + ow] / divide_factor);
+ accscalar_t grad_delta = static_cast<accscalar_t>(ptr_gradOutput[oh*osizeW + ow] / divide_factor);
*ptr_gradInput += static_cast<scalar_t>(grad_delta);
}
}
diff --git a/torch/testing/_internal/common_nn.py b/torch/testing/_internal/common_nn.py
index 2acd6ae..0e8a7f0 100644
--- a/torch/testing/_internal/common_nn.py
+++ b/torch/testing/_internal/common_nn.py
@@ -3236,6 +3236,13 @@
desc='tuple_none',
),
dict(
+ module_name='AdaptiveAvgPool3d',
+ constructor_args=((3, 2, 2),),
+ cpp_constructor_args='torch::nn::AdaptiveAvgPool3dOptions({3, 2, 2})',
+ input_fn=lambda: torch.rand(1, 1, 3, 2, 6),
+ desc='last_dim',
+ ),
+ dict(
module_name='SELU',
input_size=(3, 2, 5),
check_inplace=True