
    !&h                         d dl Z d dlZd dlZd dlZd dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ  ed       G d d	e             Z G d
 de      Zy)    N)ABCMetaabstractmethod)	dataclass)DictUnion)
ModuleTypeT)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     n/var/www/pru.catia.catastroantioquia-mas.com/valormas/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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e	deeef   fd       Ze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                  d      z  } t        j                  j	                  t        j                  j                  t              t        j                        }t        j                  j                  d| j                          dd      t        j                  j	                  |ddd|       g}|D ]  }t        j                  j                  |      s#t        j                  j                  |      sCt        j                  |dgt        j                  	      }|mt!        j"                  d
|j%                  d      t         j&                        }|||j)                  d      fc S  t+        d|        )NEXETRITON__PATH third_partycudabinz	--version)stderrz.*release (\d+\.\d+).*zutf-8)flags   zCannot find )	sysconfigget_config_varospathjoindirname__file__pardirenvirongetupperexistsisfile
subprocesscheck_outputSTDOUTresearchdecode	MULTILINEgroupRuntimeError)r!   base_dirpathsr0   resultversions         r   _path_to_binaryzBaseBackend._path_to_binary   s"   )**51177<< 9299EJJNNWV\\^$4E:B?GGLL=&%H
  	6Dww~~d#t(<#00$1DZM^M^_% ii(A6==QXCYacamamnG*#W]]1%555	6 \&233r   c                     t         r   NotImplementedError)r   s    r   r   zBaseBackend.supports_target+   
     "!r   c                     t         )z,Returns a unique identifier for this backendrI   r   s    r   hashzBaseBackend.hash0   rK   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
        rI   )r   rO   s     r   parse_optionszBaseBackend.parse_options5   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.
        rI   )r   rR   rO   s      r   
add_stageszBaseBackend.add_stages=   s
     "!r   c                     t         )zK
        Load additional MLIR dialects into the provided `context`
        rI   )r   contexts     r   load_dialectszBaseBackend.load_dialectsI   
    
 "!r   c                     t         )z\
        Return a map of interface modules to their device-specific implementations
        rI   rM   s    r   get_module_mapzBaseBackend.get_module_mapP   rX   r   c                 F    t        | t              sJ g }d| v r|ddggz  }|S )NDztt.divisibility   )
isinstancer   )descrets     r   
parse_attrzBaseBackend.parse_attrW   s6    $$$$$;&+,,C
r   c                     |dk(  r| dz  dk(  r|j                  dd      ry|dk(  r)| j                         dz  dk(  r|j                  dd      ryy)	zX
        Return a string unique to each possible specialization of the argument
        r   r]   r   alignFr\   tensorr&   )r6   data_ptr)argtykwargss      r   get_arg_specializationz"BaseBackend.get_arg_specialization_   sQ    
 ;38q=VZZ-G>cllnr1Q66::gu;Ur   )r   r   r   r   r    staticmethodr   rG   classmethodr   r   rN   dictobjectrQ   rT   rW   r   r   rZ   ra   ri   r   r   r   r   r      s   ,y ,T , 4 4 4  "	 "  " "c " " "T "f " " 	" 	" 	"4 	" 	" " " "S*_ 5 " "    r   r   )	metaclass)r/   r=   r:   r-   abcr   r   dataclassesr   typingr   r   typesr   rm   r   r   r   r   r   <module>rs      sK    	 	   ' !   $  TG Tr   