U
    9%e                     @   s   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 ddlm	Z	 G dd de j
d	ZG d
d deZG dd deZG dd deZG dd deZG dd deZG dd dZdd ZeeZdS )    N)Path   )_build   )get_cache_managerc                   @   s.   e Zd ZdZdZedd ZddddZdS )	
DriverBaser   r   c                   C   s    t jt jt jtddS )Nz..Zthird_party)ospathjoindirnameabspath__file__ r   r   T/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/triton/runtime/driver.pythird_party_dir   s    zDriverBase.third_party_dirN)returnc                 C   s   d S Nr   selfr   r   r   __init__   s    zDriverBase.__init__)__name__
__module____qualname__CUDAHIPstaticmethodr   r   r   r   r   r   r      s
   
r   )	metaclassc                       s$   e Zd Z fddZdd Z  ZS )	CudaUtilsc                    s"   t | dstt| | | _| jS Ninstance)hasattrsuperr   __new__r   cls	__class__r   r   r"      s    
zCudaUtils.__new__c              
   C   s  t jt jt}tt j|dd }t	|
d }t|}d}||}|d krt j}t j|d}t|d}	|	| W 5 Q R X td||}
t|
d}	|j|	 |d	d
}W 5 Q R X W 5 Q R X dd l}|jd|}|j|}|j| |j| _|j| _d S )Nbackendszcuda.cutf-8zcuda_utils.somain.cwZ
cuda_utilsrbTbinaryr   r   r	   r   realpathr   r   r
   	read_texthashlibmd5encode	hexdigestr   Zget_filetempfileTemporaryDirectoryopenwriter   putreadimportlib.utilutilspec_from_file_locationmodule_from_specloaderexec_moduleZload_binaryZget_device_propertiesr   r   srckeycachefname
cache_pathZtmpdirZsrc_pathfso	importlibspecmodr   r   r   r   "   s(    

(zCudaUtils.__init__r   r   r   r"   r   __classcell__r   r   r%   r   r      s   r   c                       s$   e Zd Z fddZdd Z  ZS )
CudaDriverc                    s"   t | dstt| | | _| jS r   )r    r!   rN   r"   r   r#   r%   r   r   r"   ;   s    
zCudaDriver.__new__c                 C   s   t  | _| j| _d S r   )r   utilsr   backendr   r   r   r   r   @   s    zCudaDriver.__init__rL   r   r   r%   r   rN   9   s   rN   c                       s$   e Zd Z fddZdd Z  ZS )HIPUtilsc                    s"   t | dstt| | | _| jS r   )r    r!   rQ   r"   r   r#   r%   r   r   r"   J   s    
zHIPUtils.__new__c              
   C   s  t jt jt}tt j|dd }t	|
d }t|}d}||}|d krt j}t j|d}t|d}	|	| W 5 Q R X td||}
t|
d}	|j|	 |d	d
}W 5 Q R X W 5 Q R X dd l}|jd|}|j|}|j| |j| _|j| _d S )Nr'   zhip.cr(   zhip_utils.sor)   r*   Z	hip_utilsr+   Tr,   r   r.   rA   r   r   r   r   O   s(    

(zHIPUtils.__init__rL   r   r   r%   r   rQ   I   s   rQ   c                       s$   e Zd Z fddZdd Z  ZS )	HIPDriverc                    s"   t | dstt| | | _| jS r   )r    r!   rR   r"   r   r#   r%   r   r   r"   h   s    
zHIPDriver.__new__c                 C   s   t  | _| j| _d S r   )rQ   rO   r   rP   r   r   r   r   r   m   s    zHIPDriver.__init__rL   r   r   r%   r   rR   f   s   rR   c                       s$   e Zd Z fddZdd Z  ZS )UnsupportedDriverc                    s"   t | dstt| | | _| jS r   )r    r!   rS   r"   r   r#   r%   r   r   r"   t   s    
zUnsupportedDriver.__new__c                 C   s   d | _ d | _d S r   )rO   rP   r   r   r   r   r   y   s    zUnsupportedDriver.__init__rL   r   r   r%   r   rS   r   s   rS   c                       sL   e Zd Zdd Zdd Zdd Z fddZd	d
 Zdd Zdd Z	  Z
S )	LazyProxyc                 C   s   || _ d | _d S r   _init_fn_obj)r   Zinit_fnr   r   r   r      s    zLazyProxy.__init__c                 C   s   | j d kr|  | _ d S r   )rW   rV   r   r   r   r   _initialize_obj   s    
zLazyProxy._initialize_objc                 C   s   |    t| j|S r   )rX   getattrrW   r   namer   r   r   __getattr__   s    zLazyProxy.__getattr__c                    s2   |dkrt  || n|   t| j|| d S )NrU   )r!   __setattr__rX   setattrrW   )r   r[   valuer%   r   r   r]      s    zLazyProxy.__setattr__c                 C   s   |    t| j| d S r   )rX   delattrrW   rZ   r   r   r   __delattr__   s    zLazyProxy.__delattr__c                 C   s,   | j d kr"d| jj d| j dS t| j S )N<z for z not yet initialized>)rW   r&   r   rV   reprr   r   r   r   __repr__   s    
zLazyProxy.__repr__c                 C   s   |    t| jS r   )rX   strrW   r   r   r   r   __str__   s    zLazyProxy.__str__)r   r   r   r   rX   r\   r]   ra   rd   rf   rM   r   r   r%   r   rT      s   rT   c                  C   s4   dd l } | jjd k	rt S | j r*t S t S d S )Nr   )torchversionZhiprR   cudaZis_availablerN   rS   )rg   r   r   r   initialize_driver   s    
rj   )abcr1   r   r5   pathlibr   Zcommon.buildr   rD   r   ABCMetar   objectr   rN   rQ   rR   rS   rT   rj   Zdriverr   r   r   r   <module>   s   "
