
    >̄i&                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 ddl
mZ ej                  j                  ej                  j                  ej                  j                  e                  ZdZ G d d      Zi Ze	eef   ed<   d	ed
efdZd	efdZdefdZ e j4                         d        Z e j4                         d        Z e j4                         d        Z e j4                         d        Zdad Z y)    N)Dict   )
DriverBasez2.2.0c                   z    e Zd ZdeddfdZd Zd Zd ZdefdZ	d	 Z
d
 Zd Zd Zd Zd Zd Zedefd       Zy)BaseBackenddevice_typereturnNc                     || _         y N)r   )selfr   s     _/home/obispo/Crisostomo_bridge/mision_env/lib/python3.12/site-packages/triton/common/backend.py__init__zBaseBackend.__init__   s
    &    c                     t         )zZ
        Custom the arch, extern_libs and stages per backend specific requirement
        NotImplementedError)r   archextern_libsstagess       r   
add_stageszBaseBackend.add_stages   
     "!r   c                     t         )zZ
        Custom the ir, module, metadata and asm per backend specific requirement
        r   )r   ir
cur_modulenext_modulemetadataasms         r   add_meta_infozBaseBackend.add_meta_info   r   r   c                     t         )z2
        Return a callable to load binary
        r   r   s    r   get_load_binary_fnzBaseBackend.get_load_binary_fn"   r   r   c                     t         )zW
        Get the backend driver. Please refer to "DriverBase" for more details
        r   r    s    r   
get_driverzBaseBackend.get_driver(   r   r   c                     t         )z/
        Get stream for current device
        r   r    s    r   
get_streamzBaseBackend.get_stream.   r   r   c                     t         r   r   r   devices     r   get_device_propertiesz!BaseBackend.get_device_properties4       !!r   c                     t         )z$
        Get current device
        r   r    s    r   get_current_devicezBaseBackend.get_current_device7   r   r   c                     t         )z8
        Set current device as the given device
        r   r'   s     r   set_current_devicezBaseBackend.set_current_device=   r   r   c                     t         r   r   r    s    r   get_kernel_binzBaseBackend.get_kernel_binC   r*   r   c                     t         )zA
        Generate the launcher stub to launch the kernel
        r   )r   name	signature	constantss       r   make_launcher_stubzBaseBackend.make_launcher_stubF   r   r   c                     t         )z=
        Get the architecture descriptor the backend
        r   )r   kwargss     r   get_architecture_descriptorz'BaseBackend.get_architecture_descriptorL   r   r   c                      | |      S r    )clsr   s     r   create_backendzBaseBackend.create_backendR   s    ;r   )__name__
__module____qualname__strr   r   r   r!   r   r#   r%   r)   r,   r.   r0   r5   r8   classmethodr<   r:   r   r   r   r      sn    'C 'D '""""J """"""""      r   r   	_backendsr   backend_clsc                 F    | t         vr|j                  |       t         | <   y y r   )rB   r<   )r   rC   s     r   register_backendrE   Z   s$    )#!,!;!;K!H	+ $r   c                 6   | t         vr\d|  }t        j                  j                  |t        j
                        r'	 t        j                  |t        j
                         ny | t         v r	t         |    S d S # t        $ r t        j                          Y 2w xY w)Nz...third_party.)package)
rB   	importlibutil	find_spec__spec__r2   import_module	Exception	traceback	print_exc)r   device_backend_package_names     r   get_backendrQ   _   s    )#(7}&E#>>##$?#W&''(CX]][ %0I%=9[!G4G	  &##%&s   %A8 8BB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   	--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)rR   base_dirpathsprY   resultversions          r   _path_to_binaryry   l   s   ww||BGGOOH5ryyAH


 06;
X}feVDE
  /ggcl1o77>>#277>>##6,,c;-?
HYHYZF!))$=v}}W?U]_]i]ij&gmmA.../ fX.
//r   c                      t        d      S )Nptxasry   r:   r   r   path_to_ptxasr}   ~   s    7##r   c                      t        d      S )N	cuobjdumpr|   r:   r   r   path_to_cuobjdumpr      s    ;''r   c                      t        d      S )Nnvdisasmr|   r:   r   r   path_to_nvdisasmr      s    :&&r   c                  J   dd l } g }t        t        d      5 }|t        j                  |j                               j                         gz  }d d d        t        j                  j                  t        d      }| j                  |g      D ]y  }t        |j                  j                  |j                        j                  d      5 }|t        j                  |j                               j                         gz  }d d d        { t        j                         }t        t        j                  j                  t        d      d      5 }	 |j                  d      }|sn|j!                  |       &	 d d d        |j#                  |j                                t        j                  j                  t        d      }| j                  |g      D ]y  }t        |j                  j                  |j                        j                  d      5 }|t        j                  |j                               j                         gz  }d d d        { dj                  t$              dj                  |      z   S # 1 sw Y   'xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nr   rbcompilerz_C/libtriton.soi   language-)pkgutilopenrc   hashlibsha1read	hexdigestr_   r`   ra   TRITON_PATHiter_modulesmodule_finderrJ   r2   originupdateappendTRITON_VERSION)r   contentsfcompiler_pathliblibtriton_hashchunklanguage_paths           r   compute_core_version_keyr      s    H	h	 9W\\!&&(+557889 GGLLj9M##]O4 =###--chh7>>E 	=affh/99;<<H	= 	== \\^N	bggll;(9:D	A )QFF7OE!!%(	  	) OON,,./GGLLj9M##]O4 =###--chh7>>E 	=affh/99;<<H	= 	== 88N#chhx&888+9 9
	= 	=) )	= 	=s/   6I26I?	(J6J2I<?J		JJ"	c                      t         Xt               } 	 t               d   }t        j                  |dg      }| dz   t        j                  |      j                         z   a t         S # t
        $ r d}Y <w xY w)Nr   r[   s   NO_PTXASr   )	_cached_cuda_version_keyr   r}   rk   rl   rs   r   r   r   )keyr{   ptxas_versions      r   get_cuda_version_keyr      su    '&(	(!OA&E&33UK4HIM $'9w||M/J/T/T/V#V ##  	('M	(s   $A% %A32A3)!	functoolsr   rH   importlib.utilr_   rn   rk   rN   typingr   runtime.driverr   r`   rb   abspathrc   r   r   r   rB   r@   __annotations__typerE   rQ   ry   	lru_cacher}   r   r   r   r   r   r:   r   r   <module>r      s0       	 	    'ggoobggoobggooh.GHIC  C L %'	4[ ! &I# ID I

HS 
H0C 0$ $ $ ( ( ' ' 9 98   
$r   