
    ȅi                       S SK Jr  S SKrS SKrS SKrS SKJrJr  S SKrS SK	J
r
  \R                  R                  (       a  SOSSSSS	S
.rSr " S S\5      r " S S\5      r\
" 5       (       at  S SKrS SKrS SKr\" \R*                  R,                  S5      (       a  S SKJr    S$S jrON\" \R,                  R,                  S5      (       a  S SKJr    S$S jrO  S$S jrO\R2                  " SSS/SS/S9rSr " S S\5      r " S S\5      r " S S\R:                  5      r " S  S!\R:                  5      r " S" S#\R:                  5      r g)%    )annotationsN)autoEnum)has_triton_packagei    i      i   i   )XYZR0_R1_@   c                  $    \ rS rSrSrSrSrSrSrg)ReductionHint   r             N)	__name__
__module____qualname____firstlineno__INNEROUTER
OUTER_TINYDEFAULT__static_attributes__r       W/home/james-whalen/.local/lib/python3.13/site-packages/torch/_inductor/runtime/hints.pyr   r      s    EEJGr   r   c                      \ rS rSrSrSrSrg)TileHint    r   r   r   N)r   r   r   r   SQUAREr   r   r   r   r   r!   r!       s    FGr   r!   AttrsDescriptorr$   c                    U US.n[         R                  " U[         R                  S.5      nUR                  S   S:X  d   eUR                  S   S:X  d   eU$ )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   AttrsDescriptorWrapperr2   /   sk     $3)F "++#)/2J2JKC &&'89R???&&}5:::Jr   c                "    U US.n[        S0 UD6$ )N)r.   r/   r   r%   )r.   r/   r0   s      r   r2   r2   E   s!     $3(F #,V,,r   c                :    U  Vs0 s H	  o"4SS//_M     sn$ s  snf )Nr'   r+   r   )r.   r/   xs      r   r2   r2   X   s+    
 >MM_D-r233_MMMs   r.   r/   r   )defaultsr"   c                  v    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       rSrg)HeuristicTypel   r   N)r   r   r   r   r   PERSISTENT_REDUCTION	POINTWISE	REDUCTION
SPLIT_SCANTEMPLATEUSER_AUTOTUNEFIXEDr   r   r   r   r8   r8   l   s4    6IIJvHFMFEr   r8   c                  0    \ rS rSrSr\R                  rSrg)AutotuneHintv   r   r   N)	r   r   r   r   ONE_ELEMENT_PER_THREADr   __str____repr__r   r   r   r   rB   rB   v   s     ||Hr   rB   c                      \ rS rSr% SrS\S'   S\S'   S\S'   S\S'   S	rS
\S'   S	rS
\S'   S	rS
\S'   S	r	S
\S'   S	r
S
\S'   \\R                  SS j5       5       rSrg	)DeviceProperties   zOCopy 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                   SS K nSSKJn  UR                  nUR                  R
                  (       a  US:X  a  SnU" U5      nUR                  U5      n UR                  nU " UUR                  UUR                  U5      [        USS 5      [        US	S 5      [        US
S 5      [        USS5      [        USUS:w  a  S5      S9	$ S 5      S9	$ ! [         a     US:X  a  UR                  n NUS:X  a  Sn Ne f = f)Nr   )get_interface_for_devicecudahipxpumtiar   rQ   rR   rS   rT   r   rU   cpur"   )	rK   rM   rN   rO   rQ   rR   rS   rT   rU   )torchtorch._dynamo.device_interfacerW   rK   versionrY   get_device_propertiesrN   AttributeErrorgpu_subslice_countrM   get_compute_capabilitygetattr)r*   devicer]   rW   device_typedevice_interfacepropsrN   s           r   create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 C6*C64C6r   )returnrH   )r   r   r   r   __doc____annotations__rQ   rR   rS   rT   rU   classmethod	functoolscacheri   r   r   r   r   rH   rH      sm    Y
IJGE:*.Z.26#Z6(,:, Iz __ 
   
r   rH   c                      \ rS rSr% S\S'   S\S'   SrS\S'   SrS\S'   SrS	\S
'   SrS	\S'   SS jr	SS jr
SS jrSS jrSrg)HalideInputSpec   rJ   ctypenameNzlist[str] | Noneshapestride
str | Noneoffsetalias_ofc                <    U R                   S;   a  gU R                   $ )N)	at::Half*at::BFloat16*z	uint16_t*)rt   selfs    r   bindings_typeHalideInputSpec.bindings_type   s    ::77zzr   c                    U R                   S:X  a  gU R                   S:X  a  gSU R                   R                  SS5       S3$ )	Nr|   z$halide_type_t(halide_type_float, 16)r}   z%halide_type_t(halide_type_bfloat, 16)zhalide_type_of<* z>())rt   replacer~   s    r   halide_typeHalideInputSpec.halide_type   sA    ::$9::(: !3!3C!< =SAAr   c                    U R                   S L $ Nrv   r~   s    r   	is_scalarHalideInputSpec.is_scalar   s    zzT!!r   c                    U R                   S L$ r   r   r~   s    r   	is_bufferHalideInputSpec.is_buffer   s    zz%%r   r   )rk   rJ   rk   bool)r   r   r   r   rm   rv   rw   ry   rz   r   r   r   r   r   r   r   r   rr   rr      sK    J
I"E"#F#FJHj
B"&r   rr   c                  h    \ rS rSr% S\S'   S\S'   SrS\S'   SrS	\S
'   SrS\S'   SS jrSS jr	Sr
g)
HalideMeta   zlist[HalideInputSpec]argtypesrJ   targetNrx   	schedulerzdict[str, int | str] | Nonescheduler_flagsrP   cuda_devicec                @   SU R                    3/nU R                  (       a  UR                  SU R                   35        U R                  (       aM  U R                  (       d   eU R                  R	                  5        H  u  p#UR                  SU SU 35        M     U$ )z-Command line args to pass to halide generatorztarget=zautoscheduler=zautoscheduler.=)r   r   appendr   items)r   argskvs       r   r   HalideMeta.args   s    $++'(>>KK.(89:>>!>,,224nQCq45 5r   c                    U R                   S L$ r   )r   r~   s    r   is_cudaHalideMeta.is_cuda   s    t++r   r   )rk   z	list[str]r   )r   r   r   r   rm   r   r   r   r   r   r   r   r   r   r   r      s6    ##K Iz 37O07"K"	,r   r   )NN)!
__future__r   collectionsro   typingenumr   r   r]   torch.utils._tritonr   r_   rY   TRITON_MAX_BLOCKTRITON_MAX_RSPLITr   r!   tritontriton.backends.compilertriton.compiler.compilerhasattrbackendscompilerr$   r2   
namedtuple_NUM_THREADS_PER_WARPr8   rB   
NamedTuplerH   rr   r   r   r   r   <module>r      sQ   "      2 ""		   D t  ##v''):;;< !	$ 
))+<	=	=< !	-( !	N )33	L)b	  D 4 /
v(( /
d&f'' &6,"" ,r   