code: def _call_nms_kernel(bbox, thresh):
      n_bbox = bbox.shape[0]
      threads_per_block = 64
      col_blocks = np.ceil(n_bbox / threads_per_block).astype(np.int32)
      blocks = (col_blocks, col_blocks, 1)
      threads = (threads_per_block, 1, 1)
  
      mask_dev = cp.zeros((n_bbox * col_blocks,), dtype=np.uint64)
      bbox = cp.ascontiguousarray(bbox, dtype=np.float32)
      kern = cp.RawKernel(_nms_gpu_code, "nms_kernel")
      kern(
          blocks,
          threads,
          args=(cp.int32(n_bbox), cp.float32(thresh), bbox, mask_dev),
      )
  
      mask_host = mask_dev.get()
      selection, n_selec = _nms_gpu_post(
          mask_host, n_bbox, threads_per_block, col_blocks
      )
      return selection, n_selec
  
file_path: chainercv/chainercv/utils/bbox/non_maximum_suppression.py
imports: from __future__ import division
  import numpy
  from chainer.backends import cuda
  from chainercv.utils.bbox._nms_gpu_post import _nms_gpu_post
label_desc: Use image node_id 4 for calling a global function with example usage: _call_nms_kernel(bbox, thresh) and returns: selection,  n_selec