code: def _sddmm_func(a, b, row_indices, row_offsets, column_indices):
      sparsity = 1 - column_indices.shape[0] / (a.shape[1] * b.shape[1])
      if _should_use_coo(a, sparsity):
          m = a.shape[-2]
          n = b.shape[-2]
          # converting from csr to coo has a constant overhead of ~150us
          # so only dispatch to it for reasonably large problem sizes
          ro, ci = _csr_to_coo(m, n, row_offsets, column_indices)
          return torch.ops.xformers.coo_sddmm(a, b, row_indices, ro, ci)
      elif _should_use_csr_ge(a, sparsity):
          return torch.ops.xformers.csr_sddmm(
              a, b, row_indices, row_offsets, column_indices
          )
      return torch.ops.xformers.sddmm_sputnik(
          a, b, row_indices, row_offsets, column_indices
      )
  
file_path: xformers/xformers/sparse/_csr_ops.py
imports: import torch
  from .utils import _csr_to_coo, _transpose_with_info
label_desc: Use image node_id 3 for calling a global function with example usage: _sddmm_func(a, b, row_indices, row_offsets, column_indices) and returns: torch, torch, torch