code: def _coo_matmul_gradsp_gpu(A, B, C_row, C_col, dtype):
      # A.shape: ((nb,) _m, _k)
      # B.shape: ((nb,) _k, _n)
      # C_row/col.shape: ((nb,) ldnz)
      _m, _k = A.shape[-2:]
      _n = B.shape[-1]
      ldnz = C_row.shape[-1]
      if A.ndim == 2:
          nb = 1
          C_data = cuda.cupy.zeros((ldnz), dtype=dtype)
      else:
          nb = A.shape[0]
          C_data = cuda.cupy.zeros((nb, ldnz), dtype=dtype)
  
      nthreads = nb * ldnz
      _cupy_coo_matmul_gradsp()(
          nb,
          _m,
          _n,
          _k,
          ldnz,
          A,
          B,
          C_row,
          C_col,
          C_data,
          size=nthreads,
      )
  
      return C_data
  
imports: import numpy
  import chainer
  from chainer import backend
  from chainer.backends import cuda
  from chainer import function_node
  from chainer import utils
  from chainer.utils import type_check
label_desc: Use image node_id 7 for calling a global function with example usage: _coo_matmul_gradsp_gpu(A, B, C_row, C_col, dtype) and returns: C_data