class_docstr: Torch autograd Function wrapper for Ball Query C++/CUDA implementations.
class_docstr_tok: ["Torch","autograd","Function","wrapper","for","Ball","Query","C++\/CUDA","implementations","."]
docstr: Arguments defintions the same as in the ball_query function
docstr_tok: ["Arguments","defintions","the","same","as","in","the","ball_query","function"]
code: def forward(ctx, p1, p2, lengths1, lengths2, K, radius):
      """
      Arguments defintions the same as in the ball_query function
      """
      idx, dists = _C.ball_query(p1, p2, lengths1, lengths2, K, radius)
      ctx.save_for_backward(p1, p2, lengths1, lengths2, idx)
      ctx.mark_non_differentiable(idx)
      return dists, idx
  
file_path: pytorch3d/pytorch3d/ops/ball_query.py
imports: from typing import Union
  import torch
  from pytorch3d import _C
  from torch.autograd import Function
  from torch.autograd.function import once_differentiable
  from .knn import _KNN
  from .utils import masked_gather
label_desc: Use image node_id 1 for calling the _ball_query obj's underlying member method code with example usage: obj.forward(ctx, p1, p2, lengths1, lengths2, K, radius) and returns: dists,  idx