code: def _searchsorted(a, v, side, sorter, assume_increasing):
      """`assume_increasing` is used in the kernel to
      skip monotonically increasing or decreasing verification
      inside the cuda kernel.
      """
      if not isinstance(a, cupy.ndarray):
          raise NotImplementedError(
              "Only int or ndarray are supported for a"
          )
  
      if not isinstance(v, cupy.ndarray):
          raise NotImplementedError(
              "Only int or ndarray are supported for v"
          )
  
      if a.ndim > 1:
          raise ValueError("object too deep for desired array")
      if a.ndim < 1:
          raise ValueError(
              "object of too small depth for desired array"
          )
      if a.size == 0:
          return cupy.zeros(v.shape, dtype=cupy.int64)
  
      a_iscomplex = a.dtype.kind == "c"
      v_iscomplex = v.dtype.kind == "c"
  
      if a_iscomplex and not v_iscomplex:
          v = v.astype(a.dtype)
      elif v_iscomplex and not a_iscomplex:
          a = a.astype(v.dtype)
  
      # Numpy does not check if the array is monotonic inside searchsorted
      # which leads to undefined behavior in such cases.
      if sorter is not None:
          if sorter.dtype.kind not in ("i", "u"):
              raise TypeError("sorter must be of integer type")
          if sorter.size != a.size:
              raise ValueError("sorter.size must equal a.size")
          a = a.take(sorter)
  
      y = cupy.zeros(v.shape, dtype=cupy.int64)
  
      _searchsorted_kernel(
          v, a, a.size, side == "right", assume_increasing, y
      )
      return y
  
file_path: cupy/cupy/_sorting/search.py
imports: import cupy
  from cupy import _core
  from cupy._core import fusion
  from cupy import _util
  from cupy._core import _routines_indexing
  from cupy._core import _routines_statistics
label_desc: Use image node_id 10 for calling a global function with example usage: _searchsorted(a, v, side, sorter, assume_increasing) and returns: y, cupy