
    %VjiE                    D   d dl m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m	Z	 d dl
mZ ddddd	d
ZdZ G d de          Z G d de          Z e            rYd dlZd dlZd dlZ eej        j        d          rd dlmZ 	 	 d$dZnA eej        j        d          rd dlmZ 	 	 d$dZn	 	 d$dZn ej        dddgddg          ZdZ G d de          Z G d de          Z G d dej                  Z G d  d!ej                  Z G d" d#ej                  ZdS )%    )annotationsN)autoEnum)OptionalUnion)has_triton_packagei   i   i   i   )XYZR0_R1_@   c                      e Zd ZdZdZdZdZdS )ReductionHintr            N)__name__
__module____qualname__INNEROUTER
OUTER_TINYDEFAULT     W/root/voice-cloning/.venv/lib/python3.11/site-packages/torch/_inductor/runtime/hints.pyr   r      s"        EEJGGGr   r   c                      e Zd ZdZdZdS )TileHintr   r   N)r   r   r   SQUAREr   r   r   r   r   r       s        FGGGr   r   AttrsDescriptorr!   c                    | |d}t          j        |t           j        d          }|j        d         dk    sJ |j        d         dk    sJ |S )N)tt.divisibilitytt.equal_to)arg_propertiesclsr$      r%   r   )r!   	from_dictr   property_values)divisible_by_16
equal_to_1kwargsress       r   AttrsDescriptorWrapperr/   /   sr     $3) F "+#)/2JKK C &'89R????&}5::::Jr   c                $    | |d}t          di |S )Nr+   r,   r   r"   )r+   r,   r-   s      r   r/   r/   E   s,     $3( F #,,V,,,r   c                    d | D             S )Nc                    i | ]	}|fd dgg
S )r$   r(   r   ).0xs     r   
<dictcomp>z*AttrsDescriptorWrapper.<locals>.<dictcomp>\   s%    MMMQD-r23MMMr   r   r1   s     r   r/   r/   X   s     NM_MMMMr   r+   r,   r   )defaults    c                      e Zd Z e            Z e            Z e            Z e            Z e            Z e            Z	 e            Z
dS )HeuristicTypeN)r   r   r   r   PERSISTENT_REDUCTION	POINTWISE	REDUCTION
SPLIT_SCANTEMPLATEUSER_AUTOTUNEFIXEDr   r   r   r:   r:   j   s\        466IIJtvvHDFFMDFFEEEr   r:   c                       e Zd ZdZej        ZdS )AutotuneHintr   N)r   r   r   ONE_ELEMENT_PER_THREADr   __str____repr__r   r   r   rC   rC   t   s         |HHHr   rC   c                      e Zd ZU dZded<   ded<   ded<   ded<   dZd	ed
<   dZd	ed<   dZd	ed<   dZd	ed<   e	e
j        dd                        ZdS )DevicePropertieszOCopy device properties into a data structure not requiring torch to be importedstrtypeintindexmulti_processor_countccNOptional[int]majorregs_per_multiprocessormax_threads_per_multi_processor	warp_sizereturnc                   dd l }ddlm} |j        }|j        j        r|dk    rd} ||          }|                    |          }	 |j        }n(# t          $ r |dk    r|j	        }n
|dk    rd}n Y nw xY w | ||j
        ||                    |          t          |dd           t          |d	d           t          |d
d           t          |d|dk    rdnd                     S )Nr   )get_interface_for_devicecudahipxpumtiar   rP   rQ   rR   rS   cpur8   )rJ   rL   rM   rN   rP   rQ   rR   rS   )torchtorch._dynamo.device_interfacerV   rJ   versionrX   get_device_propertiesrM   AttributeErrorgpu_subslice_countrL   get_compute_capabilitygetattr)r'   devicer\   rV   device_typedevice_interfacepropsrM   s           r   createzDeviceProperties.create   sM    	KKKKKKk= 	 !6!6K33F;; 66v>>	$)$?!! 	 	 	e##(-(@%%&&(*%%	 s,"766v>>%$//$+E3Ld$S$S,38$- - e[u8L8L""RVWW
 
 
 	
s   A "A43A4)rT   rH   )r   r   r   __doc____annotations__rP   rQ   rR   rS   classmethod	functoolscacherh   r   r   r   rH   rH   ~   s         YYIIIJJJGGGE-1111159#9999#I####_
 
 
 _ [
 
 
r   rH   c                  |    e Zd ZU ded<   ded<   dZded<   dZded<   dZded	<   dZded
<   ddZddZ	ddZ
ddZdS )HalideInputSpecrI   ctypenameNzOptional[list[str]]shapestrideOptional[str]offsetalias_ofrT   c                &    | j         dv rdS | j         S )N)	at::Half*at::BFloat16*z	uint16_t*)rp   selfs    r   bindings_typezHalideInputSpec.bindings_type   s    :777;zr   c                t    | j         dk    rdS | j         dk    rdS d| j                             dd           dS )	Nrx   z$halide_type_t(halide_type_float, 16)ry   z%halide_type_t(halide_type_bfloat, 16)zhalide_type_of<* z>())rp   replacerz   s    r   halide_typezHalideInputSpec.halide_type   sK    :$$99:((::A!3!3C!<!<AAAAr   boolc                    | j         d u S Nrr   rz   s    r   	is_scalarzHalideInputSpec.is_scalar   s    zT!!r   c                    | j         d uS r   r   rz   s    r   	is_bufferzHalideInputSpec.is_buffer   s    z%%r   )rT   rI   rT   r   )r   r   r   rj   rr   rs   ru   rv   r|   r   r   r   r   r   r   ro   ro      s         JJJIII!%E%%%%"&F&&&& F    "H""""   
B B B B" " " "& & & & & &r   ro   c                  ^    e Zd ZU ded<   ded<   dZded<   dZded	<   dZd
ed<   ddZddZdS )
HalideMetazlist[HalideInputSpec]argtypesrI   targetNrt   	schedulerz$Optional[dict[str, Union[int, str]]]scheduler_flagsrO   cuda_devicerT   	list[str]c                    d| j          g}| j        r|                    d| j                    | j        rC| j        sJ | j                                        D ] \  }}|                    d| d|            !|S )z-Command line args to pass to halide generatorztarget=zautoscheduler=zautoscheduler.=)r   r   appendr   items)r{   argskvs       r   r   zHalideMeta.args   s    '$+''(> 	;KK999::: 	6>!!>,2244 6 614Q44445555r   r   c                    | j         d uS r   )r   rz   s    r   is_cudazHalideMeta.is_cuda   s    t++r   )rT   r   r   )	r   r   r   rj   r   r   r   r   r   r   r   r   r   r      s         ####KKK#I####<@O@@@@!%K%%%%	 	 	 	, , , , , ,r   r   )NN) 
__future__r   collectionsrl   typingenumr   r   r   r   torch.utils._tritonr   TRITON_MAX_BLOCKTRITON_MAX_RSPLITr   r   tritontriton.backends.compilertriton.compiler.compilerhasattrbackendscompilerr!   r/   
namedtuple_NUM_THREADS_PER_WARPr:   rC   
NamedTuplerH   ro   r   r   r   r   <module>r      s   " " " " " "                  " " " " " " " " 2 2 2 2 2 2 
		        D       t     >MMM########wv'):;; 1N<<<<<< !	 	 	 	 	$ 
)+<	=	= N<<<<<< !	- 	- 	- 	- 	-( !	N 	N 	N 	N 	N 4[3	L)b        D       4   -
 -
 -
 -
 -
v( -
 -
 -
`& & & & &f' & & &6, , , , ," , , , , ,r   