code: def _setup_numba():
      """
      Configure the numba linker for use with cuDF. This consists of
      potentially putting numba into enhanced compatibility mode
      based on the user driver and runtime versions as well as the
      version of the CUDA Toolkit used to build the PTX files shipped
      with the user cuDF package.
      """
      # ptxcompiler is a requirement for cuda 11.x packages but not
      # cuda 12.x packages. However its version checking machinery
      # is still necessary. If a user happens to have ptxcompiler
      # in a cuda 12 environment, it's use for the purposes of
      # checking the driver and runtime versions is harmless
      try:
          from ptxcompiler.patch import NO_DRIVER, safe_get_versions
      except ModuleNotFoundError:
          # use vendored version
          from cudf.utils._ptxcompiler import (
              NO_DRIVER,
              safe_get_versions,
          )
  
      versions = safe_get_versions()
      if versions != NO_DRIVER:
          driver_version, runtime_version = versions
          ptx_toolkit_version = _get_cuda_version_from_ptx_file(
              CC_60_PTX_FILE
          )
  
          # MVC is required whenever any PTX is newer than the driver
          # This could be the shipped PTX file or the PTX emitted by
          # the version of NVVM on the user system, the latter aligning
          # with the runtime version
          if (driver_version < ptx_toolkit_version) or (
              driver_version < runtime_version
          ):
              if driver_version < (12, 0):
                  patch_numba_linker_cuda_11()
              else:
                  patch_numba_linker_pynvjitlink()
  
file_path: cudf/python/cudf/cudf/utils/_numba.py
imports: import glob
  import os
  import sys
  import warnings
  from numba import config
label_desc: Use image node_id 4 for calling a global function with example usage: _setup_numba() without return types