
    qi                    x   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Zd dl	m
Z
 ej                  j                  rdnddddd	d
ZdZ G d de      Z G d de      Z e
       rgd 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nJ eej,                  j,                  d      rd dlmZ 	 	 d$dZn 	 	 d$dZn ej2                  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 y)%    )annotationsN)autoEnum)has_triton_packagei    i      i   i   )XYZR0_R1_@   c                      e Zd ZdZdZdZdZy)ReductionHintr            N)__name__
__module____qualname__INNEROUTER
OUTER_TINYDEFAULT     c/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/torch/_inductor/runtime/hints.pyr   r      s    EEJGr   r   c                      e Zd ZdZdZy)TileHintr   r   N)r   r   r   SQUAREr   r   r   r   r   r       s    FGr   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.   /   sk     $3)F "++#)/2J2J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                6    | D ci c]	  }|fddgg c}S c c}w )Nr#   r'   r   )r*   r+   xs      r   r.   r.   X   s)    
 >MMQD-r233MMMs   r*   r+   r   )defaults    c                  n    e Zd Z e       Z e       Z e       Z e       Z e       Z e       Z	 e       Z
y)HeuristicTypeN)r   r   r   r   PERSISTENT_REDUCTION	POINTWISE	REDUCTION
SPLIT_SCANTEMPLATEUSER_AUTOTUNEFIXEDr   r   r   r5   r5   l   s4    6IIJvHFMFEr   r5   c                  (    e Zd ZdZej
                  Zy)AutotuneHintr   N)r   r   r   ONE_ELEMENT_PER_THREADr   __str____repr__r   r   r   r>   r>   v   s     ||Hr   r>   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<   dZ	d	ed<   e
ej                  dd              Zy)DevicePropertieszOCopy device properties into a data structure not requiring torch to be importedstrtypeintindexmulti_processor_countccN
int | Nonemajorregs_per_multiprocessormax_threads_per_multi_processormax_threads_per_block	warp_sizec                   dd l }ddlm} |j                  }|j                  j
                  r|dk(  rd} ||      }|j                  |      }	 |j                  } | ||j                  ||j                  |      t        |dd       t        |d	d       t        |d
d       t        |dd      t        |d|dk7  rd      	      S d       	      S # t        $ r |dk(  r|j                  }n	|dk(  rd}n Y w xY w)Nr   )get_interface_for_devicecudahipxpumtiar   rK   rL   rM   rN   r   rO   cpur3   )	rE   rG   rH   rI   rK   rL   rM   rN   rO   )torchtorch._dynamo.device_interfacerQ   rE   versionrS   get_device_propertiesrH   AttributeErrorgpu_subslice_countrG   get_compute_capabilitygetattr)r&   devicerW   rQ   device_typedevice_interfacepropsrH   s           r   createzDeviceProperties.create   s    	Kkk==!6K3F; 66v>	$)$?$?! ,,"766v>%$/$+E3Ld$S,38$- #*%1H$"Oe[u8L"W
 	
 SWW
 	
  	e#(-(@(@%&(*%	s   C $C21C2)returnrC   )r   r   r   __doc____annotations__rK   rL   rM   rN   rO   classmethod	functoolscacherc   r   r   r   rC   rC      sm    Y
IJGE:*.Z.26#Z6(,:, Iz __ 
   
r   rC   c                  z    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y)HalideInputSpecrD   ctypenameNzlist[str] | Noneshapestride
str | Noneoffsetalias_ofc                8    | j                   dv ry| j                   S )N)	at::Half*at::BFloat16*z	uint16_t*)rl   selfs    r   bindings_typezHalideInputSpec.bindings_type   s    ::77zzr   c                    | j                   dk(  ry| j                   dk(  ryd| j                   j                  dd       dS )	Nrt   z$halide_type_t(halide_type_float, 16)ru   z%halide_type_t(halide_type_bfloat, 16)zhalide_type_of<* z>())rl   replacerv   s    r   halide_typezHalideInputSpec.halide_type   sA    ::$9::(: !3!3C!< =SAAr   c                    | j                   d u S Nrn   rv   s    r   	is_scalarzHalideInputSpec.is_scalar   s    zzT!!r   c                    | j                   d uS r   r   rv   s    r   	is_bufferzHalideInputSpec.is_buffer   s    zz%%r   )rd   rD   rd   bool)r   r   r   rf   rn   ro   rq   rr   rx   r}   r   r   r   r   r   rk   rk      sK    J
I"E"#F#FJHj
B"&r   rk   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y)
HalideMetazlist[HalideInputSpec]argtypesrD   targetNrp   	schedulerzdict[str, int | str] | Nonescheduler_flagsrJ   cuda_devicec                    d| j                    g}| j                  r|j                  d| j                          | j                  rG| j                  sJ | j                  j	                         D ]  \  }}|j                  d| d|         |S )z-Command line args to pass to halide generatorztarget=zautoscheduler=zautoscheduler.=)r   r   appendr   items)rw   argskvs       r   r   zHalideMeta.args   s    $++'(>>KK.(89:>>!>,,224 61nQCq456r   c                    | j                   d uS r   )r   rv   s    r   is_cudazHalideMeta.is_cuda   s    t++r   )rd   z	list[str]r   )	r   r   r   rf   r   r   r   r   r   r   r   r   r   r      s6    ##K Iz 37O07"K"	,r   r   )NN)!
__future__r   collectionsrh   typingenumr   r   rW   torch.utils._tritonr   rY   rS   TRITON_MAX_BLOCKTRITON_MAX_RSPLITr   r   tritontriton.backends.compilertriton.compiler.compilerhasattrbackendscompilerr    r.   
namedtuple_NUM_THREADS_PER_WARPr5   r>   
NamedTuplerC   rk   r   r   r   r   <module>r      sJ   "      2 ""		   D t  ##v''):;< !	$ 
))+<	=< !	-( !	N 4[33	L)b	  D 4 /
v(( /
d&f'' &6,"" ,r   