code: def percentile_cudf(a, q, interpolation="linear"):
      # Cudf dispatch to the equivalent of `np.percentile`:
      # https://numpy.org/doc/stable/reference/generated/numpy.percentile.html
      a = cudf.Series(a)
      # a is series.
      n = len(a)
      if not len(a):
          return None, n
      if isinstance(q, Iterator):
          q = list(q)
  
      if cudf.api.types.is_categorical_dtype(a.dtype):
          result = cp.percentile(
              a.cat.codes, q, interpolation=interpolation
          )
  
          return (
              pd.Categorical.from_codes(
                  result, a.dtype.categories, a.dtype.ordered
              ),
              n,
          )
      if np.issubdtype(a.dtype, np.datetime64):
          result = a.quantile(
              [i / 100.0 for i in q], interpolation=interpolation
          )
  
          if q[0] == 0:
              # https://github.com/dask/dask/issues/6864
              result[0] = min(result[0], a.min())
          return result.to_pandas(), n
      if not np.issubdtype(a.dtype, np.number):
          interpolation = "nearest"
      return (
          a.quantile(
              [i / 100.0 for i in q], interpolation=interpolation
          ).to_pandas(),
          n,
      )
  
imports: import warnings
  from collections.abc import Iterator
  import cupy
  import numpy
  import pandas
  import pyarrow
  from pandas.api.types import is_scalar
  from pandas.core.tools.datetimes import is_datetime64tz_dtype
  import dask.dataframe
  from dask import config
  from dask.array.dispatch import percentile_lookup
  from dask.dataframe.backends import DataFrameBackendEntrypoint, PandasBackendEntrypoint
  from dask.dataframe.core import get_parallel_type, meta_nonempty
  from dask.dataframe.dispatch import categorical_dtype_dispatch, concat_dispatch, from_pyarrow_table_dispatch, group_split_dispatch, grouper_dispatch, hash_object_dispatch, is_categorical_dtype_dispatch, make_meta_dispatch, pyarrow_schema_dispatch, to_pyarrow_table_dispatch, tolist_dispatch, union_categoricals_dispatch
  from dask.dataframe.utils import UNKNOWN_CATEGORIES, _nonempty_scalar, _scalar_from_dtype, make_meta_obj
  from dask.sizeof import sizeof
  from dask.utils import Dispatch, is_arraylike
  import cudf
  from cudf.api.types import is_string_dtype
  from cudf.utils.nvtx_annotation import _dask_cudf_nvtx_annotate
  from .core import DataFrame, Index, Series
label_desc: Use image node_id 15 for calling a global function with example usage: percentile_cudf(a, q, interpolation) and returns: a,  n, None,  n, pd,  n, result,  n