
    çg
                         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dS )    N)ABCMetaabstractmethodabstractclassmethod)	dataclass)UnionT)frozenc                   >    e Zd ZU eed<   eeef         ed<   eed<   dS )	GPUTargetbackendarch	warp_sizeN)__name__
__module____qualname__str__annotations__r   int     T/var/www/html/ai-engine/env/lib/python3.11/site-packages/triton/backends/compiler.pyr
   r
   
   s8          LLL
S/NNNNNr   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dS )BaseBackendtargetreturnNc                 B    || _         |                     |          sJ d S N)r   supports_target)selfr   s     r   __init__zBaseBackend.__init__   s)    ##F+++++++r   binaryc                    t           j                            t           j                            t                    t           j                  }t           j                            d|                                  dd          t           j                            |ddd|           g}|D ]}|	                    d          d         }t           j        
                    |          rt           j                            |          rst          j        |d	gt          j        
          }|Ot          j        d|                    d          t          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   sC   7<< 9 929EEJNN:V\\^^:::B??GLL=&%HH
  	3 	3A''#,,q/Cw~~c"" 3rw~~c':': 3#0#{1CJL]^^^% i(A6==QXCYCYacamnnnG* '--"2"222222&223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 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\      s    				 				     < < < < < < < < < < ! ! ! ! ! !       $       9" 9" 9" 9" 9"G 9" 9" 9" 9" 9" 9"r   