code: def enable_device_interop(gpu_func):
      @functools.wraps(gpu_func)
      def dispatch(self, *args, **kwargs):
          # check that the estimator implements CPU/GPU interoperability
          if hasattr(self, "dispatch_func"):
              func_name = gpu_func.__name__
              return self.dispatch_func(
                  func_name, gpu_func, *args, **kwargs
              )
          else:
              return gpu_func(self, *args, **kwargs)
  
      return dispatch
  
imports: import contextlib
  import functools
  import inspect
  import typing
  import warnings
  from cuml.internals import input_utils
  from cuml.internals.api_context_managers import BaseReturnAnyCM
  from cuml.internals.api_context_managers import BaseReturnArrayCM
  from cuml.internals.api_context_managers import BaseReturnGenericCM
  from cuml.internals.api_context_managers import BaseReturnSparseArrayCM
  from cuml.internals.api_context_managers import InternalAPIContextBase
  from cuml.internals.api_context_managers import ReturnAnyCM
  from cuml.internals.api_context_managers import ReturnArrayCM
  from cuml.internals.api_context_managers import ReturnGenericCM
  from cuml.internals.api_context_managers import ReturnSparseArrayCM
  from cuml.internals.api_context_managers import set_api_output_dtype
  from cuml.internals.api_context_managers import set_api_output_type
  from cuml.internals.constants import CUML_WRAPPED_FLAG
  from cuml.internals.global_settings import GlobalSettings
  from cuml.internals.memory_utils import using_output_type
  from cuml.internals.type_utils import _DecoratorType, wraps_typed
  from cuml.internals import logger
label_desc: Use image node_id 9 for calling a global function with example usage: enable_device_interop(gpu_func) and returns: dispatch, self, gpu_func