input: input: (n, c), position: (n, nsample, c), weight : (n, nsample, c'), idx: (n, nsample) output: (n, c)
(ctx, input, position, weight, idx)
| 725 | class Aggregation(Function): |
| 726 | @staticmethod |
| 727 | def forward(ctx, input, position, weight, idx): |
| 728 | """ |
| 729 | input: input: (n, c), position: (n, nsample, c), weight : (n, nsample, c'), idx: (n, nsample) |
| 730 | output: (n, c) |
| 731 | """ |
| 732 | assert input.is_contiguous() and position.is_contiguous() and weight.is_contiguous() |
| 733 | n, nsample, c = position.shape; w_c = weight.shape[-1] |
| 734 | output = torch.cuda.FloatTensor(n, c).zero_() |
| 735 | pointops_cuda.aggregation_forward_cuda(n, nsample, c, w_c, input, position, weight, idx, output) |
| 736 | ctx.save_for_backward(input, position, weight, idx) |
| 737 | return output |
| 738 | |
| 739 | @staticmethod |
| 740 | def backward(ctx, grad_output): |
nothing calls this directly
no outgoing calls
no test coverage detected