code: def _get_cuda_version_from_ptx_file(path):
      """
      https://docs.nvidia.com/cuda/parallel-thread-execution/
      Each PTX module must begin with a .version
      directive specifying the PTX language version
  
      example header:
      //
      // Generated by NVIDIA NVVM Compiler
      //
      // Compiler Build ID: CL-31057947
      // Cuda compilation tools, release 11.6, V11.6.124
      // Based on NVVM 7.0.1
      //
  
      .version 7.6
      .target sm_52
      .address_size 64
  
      """
      with open(path) as ptx_file:
          for line in ptx_file:
              if line.startswith(".version"):
                  ver_line = line
                  break
          else:
              raise ValueError(
                  "Could not read CUDA version from ptx file."
              )
      version = ver_line.strip("\n").split(" ")[1]
      # This dictionary maps from supported versions of NVVM to the
      # PTX version it produces. The lowest value should be the minimum
      # CUDA version required to compile the library. Currently CUDA 11.5
      # or higher is required to build cudf. New CUDA versions should
      # be added to this dictionary when officially supported.
      ver_map = {
          "7.5": (11, 5),
          "7.6": (11, 6),
          "7.7": (11, 7),
          "7.8": (11, 8),
          "8.0": (12, 0),
          "8.1": (12, 1),
          "8.2": (12, 2),
          "8.3": (12, 3),
      }
  
      cuda_ver = ver_map.get(version)
      if cuda_ver is None:
          raise ValueError(
              f"Could not map PTX version {version} to a CUDA version"
          )
  
      return cuda_ver
  
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 5 for calling a global function with example usage: _get_cuda_version_from_ptx_file(path) and returns: cuda_ver