
    wg
                         d dl Z d dlZd dlZd dlmZmZmZ d dlmZ d dl	m
Z
  ed       G d de             Z G d	 d
e      Zy)    N)ABCMetaabstractmethodabstractclassmethod)	dataclass)UnionT)frozenc                   6    e Zd ZU eed<   eeef   ed<   eed<   y)	GPUTargetbackendarch	warp_sizeN)__name__
__module____qualname__str__annotations__r   int     ]/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/triton/backends/compiler.pyr
   r
   
   s     L
S/Nr   r
   c                       e Zd ZdeddfdZedefd       Zedefd       Z	e
defd       Ze
d	edefd
       Ze
ded	eddfd       Ze
d        Zy)BaseBackendtargetreturnNc                 8    || _         | j                  |      sJ y N)r   supports_target)selfr   s     r   __init__zBaseBackend.__init__   s    ##F+++r   binaryc                    t         j                  j                  t         j                  j                  t              t         j
                        }t         j                  j                  d| j                          dd      t         j                  j                  |ddd|       g}|D ]  }|j                  d      d   }t         j                  j                  |      s7t         j                  j                  |      sWt        j                  |d	gt        j                  
      }|t        j                   d|j#                  d      t        j$                        }|||j'                  d      fc S  t)        d|        )NTRITON__PATH third_partycudabin r   z	--version)stderrz.*release (\d+\.\d+).*zutf-8)flags   zCannot find )ospathjoindirname__file__pardirenvirongetuppersplitexistsisfile
subprocesscheck_outputSTDOUTresearchdecode	MULTILINEgroupRuntimeError)r    base_dirpathspr'   resultversions          r   _path_to_binaryzBaseBackend._path_to_binary   s   77<< 9299EJJNNWV\\^$4E:B?GGLL=&%H
  	3A''#,q/Cww~~c"rww~~c':#00#{1CJL]L]^% ii(A6==QXCYacamamnG* '--"222	3 \&233r   c                     t         r   NotImplementedError)r   s    r   r   zBaseBackend.supports_target*   s    !!r   c                     t         )z,Returns a unique identifier for this backendrH   )r   s    r   hashzBaseBackend.hash.   s
     "!r   optionsc                     t         )z
        Converts an `options` dictionary into an arbitrary object and returns it.
        This function may contain target-specific heuristics and check the legality of the provided options
        rH   )r   rL   s     r   parse_optionszBaseBackend.parse_options3   s
     "!r   stagesc                     t         )a  
        Populates `stages` dictionary with entries of the form:
        ir_name [str] => Function[(src: str, metadata: dict) -> str|bytes]
        The value of each entry may populate a `metadata` dictionary.
        Stages will be run sequentially (in inseriton order) and can communicate using `metadata`.
        All stages are expected to return a `str` object, except for the last stage which returns
        a `bytes` object for execution by the launcher.
        rH   )r   rO   rL   s      r   
add_stageszBaseBackend.add_stages;   s
     "!r   c                     t         )zK
        Load additional MLIR dialects into the provided `context`
        rH   )r   contexts     r   load_dialectszBaseBackend.load_dialectsG   s
    
 "!r   )r   r   r   r
   r   staticmethodr   rF   r   r   r   rK   dictobjectrN   rQ   rT   r   r   r   r   r      s    ,y ,T , 4 4 4  "	 " " "c " " "T "f " " 	" 	" 	"4 	" 	" " "r   r   )	metaclass)r,   r;   r8   abcr   r   r   dataclassesr   typingr   rW   r
   r   r   r   r   <module>r\      sF    	 	  < < !  $  9"G 9"r   