Spaces:
Running
on
Zero
Running
on
Zero
// Copyright (c) Facebook, Inc. and its affiliates. | |
namespace detectron2 { | |
int deform_conv_forward_cuda( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor offset, | |
at::Tensor output, | |
at::Tensor columns, | |
at::Tensor ones, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
int im2col_step); | |
int deform_conv_backward_input_cuda( | |
at::Tensor input, | |
at::Tensor offset, | |
at::Tensor gradOutput, | |
at::Tensor gradInput, | |
at::Tensor gradOffset, | |
at::Tensor weight, | |
at::Tensor columns, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
int im2col_step); | |
int deform_conv_backward_parameters_cuda( | |
at::Tensor input, | |
at::Tensor offset, | |
at::Tensor gradOutput, | |
at::Tensor gradWeight, // at::Tensor gradBias, | |
at::Tensor columns, | |
at::Tensor ones, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
float scale, | |
int im2col_step); | |
void modulated_deform_conv_cuda_forward( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor bias, | |
at::Tensor ones, | |
at::Tensor offset, | |
at::Tensor mask, | |
at::Tensor output, | |
at::Tensor columns, | |
int kernel_h, | |
int kernel_w, | |
const int stride_h, | |
const int stride_w, | |
const int pad_h, | |
const int pad_w, | |
const int dilation_h, | |
const int dilation_w, | |
const int group, | |
const int deformable_group, | |
const bool with_bias); | |
void modulated_deform_conv_cuda_backward( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor bias, | |
at::Tensor ones, | |
at::Tensor offset, | |
at::Tensor mask, | |
at::Tensor columns, | |
at::Tensor grad_input, | |
at::Tensor grad_weight, | |
at::Tensor grad_bias, | |
at::Tensor grad_offset, | |
at::Tensor grad_mask, | |
at::Tensor grad_output, | |
int kernel_h, | |
int kernel_w, | |
int stride_h, | |
int stride_w, | |
int pad_h, | |
int pad_w, | |
int dilation_h, | |
int dilation_w, | |
int group, | |
int deformable_group, | |
const bool with_bias); | |
inline int deform_conv_forward( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor offset, | |
at::Tensor output, | |
at::Tensor columns, | |
at::Tensor ones, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
int im2col_step) { | |
if (input.is_cuda()) { | |
TORCH_CHECK(weight.is_cuda(), "weight tensor is not on GPU!"); | |
TORCH_CHECK(offset.is_cuda(), "offset tensor is not on GPU!"); | |
return deform_conv_forward_cuda( | |
input, | |
weight, | |
offset, | |
output, | |
columns, | |
ones, | |
kW, | |
kH, | |
dW, | |
dH, | |
padW, | |
padH, | |
dilationW, | |
dilationH, | |
group, | |
deformable_group, | |
im2col_step); | |
AT_ERROR("Detectron2 is not compiled with GPU support!"); | |
} | |
AT_ERROR("This operator is not implemented on CPU"); | |
} | |
inline int deform_conv_backward_input( | |
at::Tensor input, | |
at::Tensor offset, | |
at::Tensor gradOutput, | |
at::Tensor gradInput, | |
at::Tensor gradOffset, | |
at::Tensor weight, | |
at::Tensor columns, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
int im2col_step) { | |
if (gradOutput.is_cuda()) { | |
TORCH_CHECK(input.is_cuda(), "input tensor is not on GPU!"); | |
TORCH_CHECK(weight.is_cuda(), "weight tensor is not on GPU!"); | |
TORCH_CHECK(offset.is_cuda(), "offset tensor is not on GPU!"); | |
return deform_conv_backward_input_cuda( | |
input, | |
offset, | |
gradOutput, | |
gradInput, | |
gradOffset, | |
weight, | |
columns, | |
kW, | |
kH, | |
dW, | |
dH, | |
padW, | |
padH, | |
dilationW, | |
dilationH, | |
group, | |
deformable_group, | |
im2col_step); | |
AT_ERROR("Detectron2 is not compiled with GPU support!"); | |
} | |
AT_ERROR("This operator is not implemented on CPU"); | |
} | |
inline int deform_conv_backward_filter( | |
at::Tensor input, | |
at::Tensor offset, | |
at::Tensor gradOutput, | |
at::Tensor gradWeight, // at::Tensor gradBias, | |
at::Tensor columns, | |
at::Tensor ones, | |
int kW, | |
int kH, | |
int dW, | |
int dH, | |
int padW, | |
int padH, | |
int dilationW, | |
int dilationH, | |
int group, | |
int deformable_group, | |
float scale, | |
int im2col_step) { | |
if (gradOutput.is_cuda()) { | |
TORCH_CHECK(input.is_cuda(), "input tensor is not on GPU!"); | |
TORCH_CHECK(offset.is_cuda(), "offset tensor is not on GPU!"); | |
return deform_conv_backward_parameters_cuda( | |
input, | |
offset, | |
gradOutput, | |
gradWeight, | |
columns, | |
ones, | |
kW, | |
kH, | |
dW, | |
dH, | |
padW, | |
padH, | |
dilationW, | |
dilationH, | |
group, | |
deformable_group, | |
scale, | |
im2col_step); | |
AT_ERROR("Detectron2 is not compiled with GPU support!"); | |
} | |
AT_ERROR("This operator is not implemented on CPU"); | |
} | |
inline void modulated_deform_conv_forward( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor bias, | |
at::Tensor ones, | |
at::Tensor offset, | |
at::Tensor mask, | |
at::Tensor output, | |
at::Tensor columns, | |
int kernel_h, | |
int kernel_w, | |
const int stride_h, | |
const int stride_w, | |
const int pad_h, | |
const int pad_w, | |
const int dilation_h, | |
const int dilation_w, | |
const int group, | |
const int deformable_group, | |
const bool with_bias) { | |
if (input.is_cuda()) { | |
TORCH_CHECK(weight.is_cuda(), "weight tensor is not on GPU!"); | |
TORCH_CHECK(bias.is_cuda(), "bias tensor is not on GPU!"); | |
TORCH_CHECK(offset.is_cuda(), "offset tensor is not on GPU!"); | |
return modulated_deform_conv_cuda_forward( | |
input, | |
weight, | |
bias, | |
ones, | |
offset, | |
mask, | |
output, | |
columns, | |
kernel_h, | |
kernel_w, | |
stride_h, | |
stride_w, | |
pad_h, | |
pad_w, | |
dilation_h, | |
dilation_w, | |
group, | |
deformable_group, | |
with_bias); | |
AT_ERROR("Detectron2 is not compiled with GPU support!"); | |
} | |
AT_ERROR("This operator is not implemented on CPU"); | |
} | |
inline void modulated_deform_conv_backward( | |
at::Tensor input, | |
at::Tensor weight, | |
at::Tensor bias, | |
at::Tensor ones, | |
at::Tensor offset, | |
at::Tensor mask, | |
at::Tensor columns, | |
at::Tensor grad_input, | |
at::Tensor grad_weight, | |
at::Tensor grad_bias, | |
at::Tensor grad_offset, | |
at::Tensor grad_mask, | |
at::Tensor grad_output, | |
int kernel_h, | |
int kernel_w, | |
int stride_h, | |
int stride_w, | |
int pad_h, | |
int pad_w, | |
int dilation_h, | |
int dilation_w, | |
int group, | |
int deformable_group, | |
const bool with_bias) { | |
if (grad_output.is_cuda()) { | |
TORCH_CHECK(input.is_cuda(), "input tensor is not on GPU!"); | |
TORCH_CHECK(weight.is_cuda(), "weight tensor is not on GPU!"); | |
TORCH_CHECK(bias.is_cuda(), "bias tensor is not on GPU!"); | |
TORCH_CHECK(offset.is_cuda(), "offset tensor is not on GPU!"); | |
return modulated_deform_conv_cuda_backward( | |
input, | |
weight, | |
bias, | |
ones, | |
offset, | |
mask, | |
columns, | |
grad_input, | |
grad_weight, | |
grad_bias, | |
grad_offset, | |
grad_mask, | |
grad_output, | |
kernel_h, | |
kernel_w, | |
stride_h, | |
stride_w, | |
pad_h, | |
pad_w, | |
dilation_h, | |
dilation_w, | |
group, | |
deformable_group, | |
with_bias); | |
AT_ERROR("Detectron2 is not compiled with GPU support!"); | |
} | |
AT_ERROR("This operator is not implemented on CPU"); | |
} | |
} // namespace detectron2 | |