o
    i$                     @   s   d dl Z d dlZd dlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 dd	lmZ dd
lmZmZmZmZ e	jZi Zdd Zdd Zdd Zdeedf deedf fddZG dd dZG dd dZG dd dZG dd dZdd ZdS )     N)Tuple   )language)core   )torch_wrapper)ExecutionContext)	MemoryMap)TritonLangProxyWrappedTensor_primitive_to_tensordebugger_constexprc                    s   t | |  fdd}|S )Nc                     s    | i |S N )argskwargmethodr   m/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/triton/interpreter/interpreter.pyfun   s   zget_proxy_method.<locals>.fun)getattr)proxynamer   r   r   r   get_proxy_method   s   
r   c                 C   sj   dd t tD }|D ]'}t| |r2t| |}|t|< t|r)t| |t|| qt| |t|| qd S )Nc                 S   s   g | ]
}|d  dkr|qS )r   _r   ).0funcr   r   r   
<listcomp>       z!attach_triton.<locals>.<listcomp>)dirr
   hasattrr   tl_method_backupcallablesetattrr   )moduler   Zmethod_listr   attrr   r   r   attach_triton   s   

r&   c                 C   s"   t  D ]
\}}t| || qd S r   )r!   itemsr#   )r$   r   r   r   r   r   detach_triton'   s   r(   grid.returnc                 c   sD    t | }dd |D }ttj| }t| |D ]}|V  qd S )Nc                 S   s   g | ]}t |qS r   )range)r   dimr   r   r   r   /   s    z)program_ids_from_grid.<locals>.<listcomp>)reversedlist	itertoolsproductrandomshuffle)r)   Zreversed_gridZranges_for_each_dimensionZindex_combinationsZindex_combinationr   r   r   program_ids_from_grid,   s   
r3   c                   @   s>   e Zd ZdddZdd Zdd Zdd	 Zd
d Zdd ZdS )DebuggerFunctionr   c                 C      || _ || _d S r   )r   r)   )selfr   r)   r   r   r   __init__:      
zDebuggerFunction.__init__c                 C   s   || j jv o| j j| tju S r   )r   __annotations__lcore	constexpr)r7   r   r   r   r   _is_constexpr>   s   zDebuggerFunction._is_constexprc                 C   s2   g }| j j D ]\}}|tju r|| q|S r   )r   r:   r'   r;   r<   append)r7   resultr   
annotationr   r   r   _get_constexprA   s   

zDebuggerFunction._get_constexprc                    s8   |   } fdd|D }t|dksJ d| d S )Nc                    s   g | ]
}|   vr|qS r   )keys)r   ikwargsr   r   r   J   r   z6DebuggerFunction._assert_constexpr.<locals>.<listcomp>r   zYou must specify constexpr )rA   len)r7   rE   Zconstexpmissingr   rD   r   _assert_constexprH   s   z"DebuggerFunction._assert_constexprc                 K   s   t | jr
| |S | jS r   )r"   r)   )r7   rE   r   r   r   	_get_gridM   s   

zDebuggerFunction._get_gridc                    s   j di | t fdd tt tjjj|} fdd| D }j	di |}t
|D ]}tt||}tt| j|i | tt q6d S )Nc                    sR   | \}}t |r |}tt j|gt jddS |r#t|S tt|S )Ncuda)ZdtypeZdevice)	torch	is_tensorZ
add_tensorr   ZtensorZint64r=   r   r   )vr   argZptr)memoryr7   r   r   convert_argX   s   


z.DebuggerFunction.__call__.<locals>.convert_argc                    s&   i | ]\}}|d vr| ||fqS ))Z	num_warpsZ
num_stagesr   r   krM   rP   r   r   
<dictcomp>b   s   & z-DebuggerFunction.__call__.<locals>.<dictcomp>r   )rH   r	   tuplemapzipr   __code__co_varnamesr'   rI   r3   r
   r   r&   tlr(   )r7   r   rE   new_args
new_kwargsr)   Z
program_idr   r   )rP   rO   r7   r   __call__S   s   	

zDebuggerFunction.__call__N)r5   )	__name__
__module____qualname__r8   r=   rA   rH   rI   r]   r   r   r   r   r4   9   s    
r4   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	GridSelectorz%
    Entry point of the debugger
    c                 C   s*   t j}|d dksJ d| || _d S )Nr   2z2Triton Debugger only supports torch >= 2.0, using )rK   __version__r   )r7   r   versionr   r   r   r8   q   s   
zGridSelector.__init__c                 C   s   t | j|S r   r4   r   r7   r)   r   r   r   __getitem__v   s   zGridSelector.__getitem__c                 O   s   t | j|i |S r   re   r7   r   rE   r   r   r   r]   y   s   zGridSelector.__call__N)r^   r_   r`   __doc__r8   rg   r]   r   r   r   r   ra   l   s
    ra   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )AutotuneGridSelectorc                 C   r6   r   )r   autotune_params)r7   r   rk   r   r   r   r8   ~   r9   zAutotuneGridSelector.__init__c                 C   s   t | j| j|S r   AutotuneRunnerr   rk   rf   r   r   r   rg      s   z AutotuneGridSelector.__getitem__c                 O   s   t | j| j|i |S r   rl   rh   r   r   r   r]      s   zAutotuneGridSelector.__call__N)r^   r_   r`   r8   rg   r]   r   r   r   r   rj   }   s    rj   c                   @   s   e Zd ZdddZdd ZdS )rm   Nc                 C   s   || _ || _|| _d S r   )r   rk   r)   )r7   r   rk   r)   r   r   r   r8      s   
zAutotuneRunner.__init__c                    s   t | jd dksJ | jd dd  D ]5}dd  tt |} fdd| D }| jr>| j| j |i ||j q| j|i ||j q| jd d }| jrd| j| j |i ||j d S | j|i ||j d S )NZconfigsr   c                 S   s   t | r
t | S | S r   )rK   rL   clone)rM   r   r   r   rP      s   

z,AutotuneRunner.__call__.<locals>.convert_argc                    s   i | ]	\}}| |qS r   r   rQ   rS   r   r   rT      s    z+AutotuneRunner.__call__.<locals>.<dictcomp>r   )rF   rk   rU   rV   r'   r)   r   rE   )r7   r   rE   configr[   r\   Zmain_configr   rS   r   r]      s    zAutotuneRunner.__call__r   )r^   r_   r`   r8   r]   r   r   r   r   rm      s    
rm   c                     s    fdd}|S )Nc                    s
   t |  S r   )rj   )r   kwarsr   r   wrapper   s   
z&triton_debug_autotune.<locals>.wrapperr   )rq   rr   r   rp   r   triton_debug_autotune   s   rs   )r/   r1   typingr    r   rZ   r   r;   r   r   Z
memory_mapr	   Ztl_langr
   r   r   r   rK   r!   r   r&   r(   intr3   r4   ra   rj   rm   rs   r   r   r   r   <module>   s(    	"3