code: def is_numba_cuda_fp16_supported(
      return_reason: bool = False,
  ) -> Union[bool, Tuple[bool, str]]:
      """
      Utility method that returns a bool, stating if FP16 is supported for numba cuda kernels or not.
  
      Returns:
          bool, whether Numba CUDA will support fp16 or not.
      """
      reason = ""
      use_nvidia_binding = os.environ.get(
          "NUMBA_CUDA_USE_NVIDIA_BINDING", None
      )
      if use_nvidia_binding is not None:
          use_nvidia_binding = use_nvidia_binding.lower() == "1"
          reason += "Env variable `NUMBA_CUDA_USE_NVIDIA_BINDING` is available and set to `1`. "
      else:
          use_nvidia_binding = False
          reason += "Env variable `NUMBA_CUDA_USE_NVIDIA_BINDING` is not available or has not set to `1`."
  
      numba_fp16_version_correct = model_utils.check_lib_version(
          "numba",
          __NUMBA_MINIMUM_VERSION_FP16_SUPPORTED__,
          operator=operator.ge,
      )[0]
  
      if numba_fp16_version_correct:
          reason += f"Numba CUDA FP16 is supported in installed numba version."
      else:
          reason += f"Numba CUDA FP16 is not supported in installed numba version."
  
      result = use_nvidia_binding and numba_fp16_version_correct
  
      if return_reason:
          return result, reason
      else:
          return result
  
file_path: NeMo/nemo/core/utils/numba_utils.py
imports: import contextlib
  import logging
  import operator
  import os
  from typing import Tuple, Union
  from nemo.utils import model_utils
label_desc: Use image node_id 6 for calling a global function with example usage: is_numba_cuda_fp16_supported(return_reason) and returns: result,  reason, result