Ë
    ÄÓ^j"  ã                  ó¨  — 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dZdZ	 d'	 	 	 	 	 d(d„Zd)d„Z G d„ de«      Z G d„ de«      Z e
«       rjd dlZd dlZd dlZ eej2                  j4                  d«      rd dlmZ 	 	 	 d*d„ZnL eej4                  j4                  d«      rd dlmZ 	 	 	 d*d„Zn!	 	 	 d*d„Zn ej:                  dg d¢g d¢¬«      Z G d„ de«      Z G d„ de«      Z G d „ d!ej@                  «      Z!d+d"„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_é@   i   é   c                ó¤   — | j                  dd«      | j                  dd«      z  | j                  dd«      z  |€| j                  dd«      z  S |z  S )NÚXBLOCKé   ÚYBLOCKÚZBLOCKÚR0_BLOCK)Úget)ÚkwargsÚr0_blocks     úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/runtime/hints.pyÚnative_matmul_block_numelr      si   € ð 	�
‰
�8˜QÓØ
�*‰*�X˜qÓ
!ñ	"à
�*‰*�X˜qÓ
!ñ	"ð )1Ð(8ˆ6�:‰:�j !Ó$ñ	Hðð ?Gñ	Hðó    c                ó"   — t        | t        «      S ©N)ÚmaxÚTRITON_DOT_MIN_BLOCK)r   s    r   Únative_matmul_persistent_rblockr   &   s   € ÜˆxÔ-Ó.Ð.r   c                  ó   — e Zd ZdZdZdZdZy)ÚReductionHintr   r   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚINNERÚOUTERÚ
OUTER_TINYÚDEFAULT© r   r   r!   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-   1   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Úclsr2   r   r3   r   )r/   Ú	from_dictr$   Úproperty_values)Údivisible_by_16Ú
equal_to_1Úpointer_range_32r   Úress        r   ÚAttrsDescriptorWrapperr<   @   sk   € ð $3Ø)ñˆFô "×+Ñ+Ø#)´/×2JÑ2JÑKóˆCð ×&Ñ&Ð'8Ñ9¸RÒ?Ð?Ð?Ø×&Ñ& }Ñ5¸Ò:Ð:Ð:ØˆJr   c                ó"   — | |dœ}t        di |¤ŽS )N)r8   r9   r+   r0   )r8   r9   r:   r   s       r   r<   r<   W   s!   € ð $3Ø(ñˆFô #Ñ, VÑ,Ð,r   c                ó¢   — | xs dD �ci c]	  }|fddgg“Œ }}|xs dD ](  }|f}||v r||   j                  ddg«       Œ!ddgg||<   Œ* |S c c}w )Nr+   r2   r   ztt.pointer_rangeé    )Úappend)r8   r9   r:   ÚxÚresultÚkeys         r   r<   r<   k   s‡   € ð APÒ@UÐSUÖW¸!�q�dÐ/°Ð4Ð5Ñ5ÐWˆFÐWØ%Ò+¨ò =�Ø�d�Ø˜&‘=Ø˜3‘K×&Ñ&Ð(:¸BÐ'?Õ@à$6¸Ð#;Ð"<�F˜3’Kð=ð ˆMùò Xs   ‰A)r8   r9   r:   )r+   r+   r+   )Údefaultsc                  ó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   rF   rF   †   s4   „ Ù›6ÐÙ“€IÙ“€IÙ“€JÙ‹v€HÙ“F€MÙ‹F�Er   rF   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   rO   rO   �   s   „ ØÐð �|‰|�Hr   rO   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
dd„«       Z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                ó6   — | j                   �| j                   S dS )Nr?   )r`   ©Úselfs    r   Úwarp_size_or_defaultz%DeviceProperties.warp_size_or_default§   s   € à!%§¡Ð!;ˆt�~‰~ÐCÀÐCr   c                óê  — 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   r\   r]   r^   r_   r   r`   Úcpur?   )	rV   rX   rY   rZ   r\   r]   r^   r_   r`   )ÚtorchÚtorch._dynamo.device_interfacerf   rV   Úversionrh   Úget_device_propertiesrY   ÚAttributeErrorÚgpu_subslice_countrX   Úget_compute_capabilityÚgetattr)r5   Údevicerl   rf   Údevice_typeÚdevice_interfaceÚpropsrY   s           r   ÚcreatezDeviceProperties.create«   s  € ó 	ÝKà—k‘kˆà�=‰=×Ò °Ò!6ØˆKá3°FÓ;ÐØ ×6Ñ6°vÓ>ˆð	Ø$)×$?Ñ$?Ð!ñ ØØ—,‘,Ø"7Ø×6Ñ6°vÓ>Ü˜% ¨$Ó/Ü$+¨EÐ3LÈdÓ$SÜ,3ØÐ8¸$ó-ô #*¨%Ð1HÈ$Ó"OÜ˜e [¸ÀuÒ8L°"ÓWô
ð 	
ð SWÓWô
ð 	
øô ò 	Ø˜eÒ#Ø(-×(@Ñ(@Ñ%Ø Ò&Ø(*Ñ%àùð	ús   ÁC Ã$C2Ã1C2©ÚreturnrW   )rz   rT   )r$   r%   r&   Ú__doc__Ú__annotations__r\   r]   r^   r_   r`   Úpropertyrd   ÚclassmethodÚ	functoolsÚcacherx   r+   r   r   rT   rT   š   sƒ   … ÙYà
ƒIØƒJØÓØƒGØ€Eˆ:ÓØ*.Ð˜ZÓ.Ø26Ð# ZÓ6Ø(,Ð˜:Ó,Ø €IˆzÓ àòDó ðDð Ø‡_�_ò 
ó ó ñ 
r   rT   c                ó@   — t         j                  | «      j                  S )a@  Return the wave/warp size in threads for the given device.

    Reads from torch.cuda.get_device_properties(device).warp_size via the
    cached DeviceProperties.create(). Correct on both AMD (64 for CDNA/gfx9,
    32 for RDNA/gfx10+) and NVIDIA (always 32). Falls back to 32 only when
    the field is unavailable.
    )rT   rx   rd   )rt   s    r   Úget_warp_sizer‚   Ð   s   € ô ×"Ñ" 6Ó*×?Ñ?Ð?r   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)ÚHalideInputSpecrU   Ú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*)r…   rb   s    r   Úbindings_typezHalideInputSpec.bindings_typeã   s   € Ø�:‰:Ð7Ñ7ØØ�z‰zÐr   c                ó‚   — | j                   dk(  ry| j                   dk(  ryd| j                   j                  dd«      › d�S )	Nr�   z$halide_type_t(halide_type_float, 16)rŽ   z%halide_type_t(halide_type_bfloat, 16)zhalide_type_of<Ú*Ú z>())r…   Úreplacerb   s    r   Úhalide_typezHalideInputSpec.halide_typeè   sA   € Ø�:‰:˜Ò$Ø9Ø�:‰:˜Ò(Ø:Ø  §¡×!3Ñ!3°C¸Ó!<Ð =¸SÐAÐAr   c                ó   — | j                   d u S r   ©r‡   rb   s    r   Ú	is_scalarzHalideInputSpec.is_scalarï   s   € Ø�z‰z˜TÐ!Ð!r   c                ó   — | j                   d uS r   r–   rb   s    r   Ú	is_bufferzHalideInputSpec.is_bufferò   s   € Ø�z‰z Ð%Ð%r   )rz   rU   ©rz   Úbool)r$   r%   r&   r|   r‡   rˆ   rŠ   r‹   r�   r”   r—   r™   r+   r   r   r„   r„   Û   sK   … ØƒJØ
ƒIØ"€EÐÓ"Ø#€FÐÓ#Ø€FˆJÓØ€HˆjÓóó
Bó"ô&r   r„   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]ÚargtypesrU   ÚtargetNr‰   Ú	schedulerzdict[str, int | str] | NoneÚscheduler_flagsr[   Ú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    r@   r¡   Úitems)rc   ÚargsÚkÚvs       r   r¦   zHalideMeta.argsý   s‰   € à˜$Ÿ+™+˜Ð'Ð(ˆØ�>Š>Ø�K‰K˜.¨¯©Ð(8Ð9Ô:Ø×ÒØ—>’>Ð!�>Ø×,Ñ,×2Ñ2Ó4ò 6‘��1Ø—‘˜n¨Q¨C¨q°°Ð4Õ5ð6àˆr   c                ó   — | j                   d uS r   )r¢   rb   s    r   Úis_cudazHalideMeta.is_cuda  s   € Ø×Ñ tÐ+Ð+r   )rz   z	list[str]rš   )	r$   r%   r&   r|   r    r¡   r¢   r¦   rª   r+   r   r   r�   r�   ö   s6   … Ø#Ó#ØƒKØ €IˆzÓ Ø37€OÐ0Ó7Ø"€K�Ó"ó	ô,r   r�   r   )r   ztyping.Mapping[str, int]r   r[   rz   rW   )r   rW   rz   rW   )NNNry   )%Ú
__future__r   Úcollectionsr   ÚtypingÚenumr   r   rl   Útorch.utils._tritonr   rn   rh   ÚTRITON_MAX_BLOCKÚTRITON_MAX_RSPLITÚTRITON_MAX_TENSOR_NUMELr   r   r   r!   r-   ÚtritonÚtriton.backends.compilerÚtriton.compiler.compilerÚhasattrÚbackendsÚcompilerr/   r<   Ú
namedtuplerF   rO   Ú
NamedTuplerT   r‚   r„   r�   r+   r   r   ú<module>r»      s{  ðå "ã Û Û ß ã Ý 2ð —‘×"Ò"‰¨Ø	Ø	ØØñÐ ð Ð Ø!Ð ØÐ ð >BðØ$ðØ0:ðàóó/ô�Dô ôˆtô ñ ÔÛÛ#Û#áˆv�‰×'Ñ'Ð):Ô;å<ð !ØØ!ô	ñ& 
�—‘×)Ñ)Ð+<Ô	=å<ð !ØØ!ô	-ð* !ØØ!ô	ð& 4˜[×3Ñ3àÚ=Úô	Ðô�Dô ô�4ô ô3
�v×(Ñ(ô 3
ól@ô&�f×'Ñ'ô &ô6,�×"Ñ"õ ,r   