o
    iq                     @   s   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mZ ddlm	Z	 G dd dZ
i Zeee
f ed< ded	efd
dZdefddZe  dd ZdS )    N)Dict   )
DriverBasec                   @   s   e Zd ZdeddfddZdd Zdd	 Zd
d ZdefddZ	dd Z
dd Zdd Zdd Zdd Zdd Zdd ZedefddZdS )BaseBackenddevice_typereturnNc                 C   s
   || _ d S N)r   )selfr    r
   d/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/triton/common/backend.py__init__   s   
zBaseBackend.__init__c                 C      t )zZ
        Custom the arch, extern_libs and stages per backend specific requirement
        NotImplementedError)r	   archZextern_libsZstagesr
   r
   r   
add_stages      zBaseBackend.add_stagesc                 C   r   )zZ
        Custom the ir, module, metadata and asm per backend specific requirement
        r   )r	   ZirZ
cur_moduleZnext_modulemetadataasmr
   r
   r   add_meta_info   r   zBaseBackend.add_meta_infoc                 C   r   )z2
        Return a callable to load binary
        r   r	   r
   r
   r   get_load_binary_fn   r   zBaseBackend.get_load_binary_fnc                 C   r   )zW
        Get the backend driver. Please refer to "DriverBase" for more details
        r   r   r
   r
   r   
get_driver#   r   zBaseBackend.get_driverc                 C   r   )z/
        Get stream for current device
        r   r   r
   r
   r   
get_stream)   r   zBaseBackend.get_streamc                 C   r   r   r   r	   Zdevicer
   r
   r   get_device_properties/      z!BaseBackend.get_device_propertiesc                 C   r   )z$
        Get current device
        r   r   r
   r
   r   get_current_device2   r   zBaseBackend.get_current_devicec                 C   r   )z8
        Set current device as the given device
        r   r   r
   r
   r   set_current_device8   r   zBaseBackend.set_current_devicec                 C   r   r   r   r   r
   r
   r   get_kernel_bin>   r   zBaseBackend.get_kernel_binc                 C   r   )zA
        Generate the launcher stub to launch the kernel
        r   )r	   name	signature	constantsr
   r
   r   make_launcher_stubA   r   zBaseBackend.make_launcher_stubc                 K   r   )z=
        Get the architecture descriptor the backend
        r   )r	   kwargsr
   r
   r   get_architecture_descriptorG   r   z'BaseBackend.get_architecture_descriptorc                 C   s   | |S r   r
   )clsr   r
   r
   r   create_backendM   s   zBaseBackend.create_backend)__name__
__module____qualname__strr   r   r   r   r   r   r   r   r   r   r   r#   r%   classmethodr'   r
   r
   r
   r   r      s    r   	_backendsr   backend_clsc                 C   s   | t vr|| t | < d S d S r   )r-   r'   )r   r.   r
   r
   r   register_backendU   s   r/   c                 C   sf   | t vr)d|  }tjj|tjdr'z
tj|tjd W n ty&   Y d S w d S | t v r1t |  S d S )Nz...third_party.)package)r-   	importlibutil	find_spec__spec__r    import_module	Exception)r   Zdevice_backend_package_namer
   r
   r   get_backendZ   s   
r7   c                  C   s   t jt jtt j} t jddt j| ddddg}|D ]<}|dd }t j	|r[t j
|r[tj|d	gtjd
}|d ur[tjd|dtjd}|d ur[||df  S qtd)NZTRITON_PTXAS_PATH Zthird_partycudabinptxas r   z	--version)stderrz.*release (\d+\.\d+).*zutf-8)flags   zCannot find ptxas)ospathjoindirname__file__pardirenvirongetsplitexistsisfile
subprocesscheck_outputSTDOUTresearchdecode	MULTILINEgroupRuntimeError)base_dirpathsr;   Z	ptxas_binresultversionr
   r
   r   path_to_ptxasg   s   rX   )	functoolsr1   importlib.utilr@   rN   rK   typingr   Zruntime.driverr   r   r-   r+   __annotations__typer/   r7   	lru_cacherX   r
   r
   r
   r   <module>   s   
E