Spaces:
Build error
Build error
| // Copyright (c) OpenMMLab. All rights reserved | |
| using namespace parrots; | |
| /* | |
| * void carafe_forward_cuda(Tensor features, Tensor masks, Tensor rfeatures, | |
| * Tensor routput, Tensor rmasks, Tensor output, | |
| * int kernel_size, int group_size, int scale_factor); | |
| */ | |
| void carafe_forward_cuda_parrots(CudaContext& ctx, const SSElement& attr, | |
| const OperatorBase::in_list_t& ins, | |
| OperatorBase::out_list_t& outs) { | |
| int kernel_size, group_size, scale_factor; | |
| SSAttrs(attr) | |
| .get<int>("kernel_size", kernel_size) | |
| .get<int>("group_size", group_size) | |
| .get<int>("scale_factor", scale_factor) | |
| .done(); | |
| const auto& features = buildATensor(ctx, ins[0]); | |
| const auto& masks = buildATensor(ctx, ins[1]); | |
| auto rfeatures = buildATensor(ctx, outs[0]); | |
| auto routput = buildATensor(ctx, outs[1]); | |
| auto rmasks = buildATensor(ctx, outs[2]); | |
| auto output = buildATensor(ctx, outs[3]); | |
| carafe_forward_cuda(features, masks, rfeatures, routput, rmasks, output, | |
| kernel_size, group_size, scale_factor); | |
| } | |
| /* | |
| * void carafe_backward_cuda(Tensor top_grad, Tensor rfeatures, Tensor masks, | |
| * Tensor rtop_grad, Tensor rbottom_grad_hs, | |
| * Tensor rbottom_grad, Tensor rmask_grad, | |
| * Tensor bottom_grad, Tensor mask_grad, int | |
| * kernel_size, int group_size, int scale_factor); | |
| */ | |
| void carafe_backward_cuda_parrots(CudaContext& ctx, const SSElement& attr, | |
| const OperatorBase::in_list_t& ins, | |
| OperatorBase::out_list_t& outs) { | |
| int kernel_size, group_size, scale_factor; | |
| SSAttrs(attr) | |
| .get<int>("kernel_size", kernel_size) | |
| .get<int>("group_size", group_size) | |
| .get<int>("scale_factor", scale_factor) | |
| .done(); | |
| const auto& top_grad = buildATensor(ctx, ins[0]); | |
| const auto& rfeatures = buildATensor(ctx, ins[1]); | |
| const auto& masks = buildATensor(ctx, ins[2]); | |
| auto rtop_grad = buildATensor(ctx, outs[0]); | |
| auto rbottom_grad_hs = buildATensor(ctx, outs[1]); | |
| auto rbottom_grad = buildATensor(ctx, outs[2]); | |
| auto rmask_grad = buildATensor(ctx, outs[3]); | |
| auto bottom_grad = buildATensor(ctx, outs[4]); | |
| auto mask_grad = buildATensor(ctx, outs[5]); | |
| carafe_backward_cuda(top_grad, rfeatures, masks, rtop_grad, rbottom_grad_hs, | |
| rbottom_grad, rmask_grad, bottom_grad, mask_grad, | |
| kernel_size, group_size, scale_factor); | |
| } | |
| PARROTS_EXTENSION_REGISTER(carafe_forward) | |
| .attr("kernel_size") | |
| .attr("group_size") | |
| .attr("scale_factor") | |
| .input(2) | |
| .output(4) | |
| .apply(carafe_forward_cuda_parrots) | |
| .done(); | |
| PARROTS_EXTENSION_REGISTER(carafe_backward) | |
| .attr("kernel_size") | |
| .attr("group_size") | |
| .attr("scale_factor") | |
| .input(3) | |
| .output(6) | |
| .apply(carafe_backward_cuda_parrots) | |
| .done(); | |