§
    H�’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
¦   «         r\d dlZd dlZd dlZ eej        j        d¦  «        rd dlmZ 	 	 	 d0d„ZnC eej        j        d¦  «        rd dlmZ 	 	 	 d0d„Zn	 	 	 d0d„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!d1d(„Z" G d)„ d*ej         ¦  «        Z# G d+„ d,ej         ¦  «        Z$dS )2é    )ÚannotationsN)ÚautoÚEnum)Úhas_triton_packagei    i   é   i   i €  )ÚXÚYÚZÚR0_ÚR1_é@   i   é   Úkwargsútyping.Mapping[str, int]Úr0_blockú
int | NoneÚreturnÚintc                óÀ   — |                       dd¦  «        |                       dd¦  «        z  |                       dd¦  «        z  |€|                       dd¦  «        n|z  S )NÚXBLOCKé   ÚYBLOCKÚZBLOCKÚR0_BLOCK)Úget)r   r   s     úKC:\Projects\DSCons\.venv\Lib\site-packages\torch\_inductor\runtime\hints.pyÚnative_matmul_block_numelr      si   € ð 	�
Š
�8˜QÑÔØ
�*Š*�X˜qÑ
!Ô
!ñ	"à
�*Š*�X˜qÑ
!Ô
!ñ	"ð )1Ð(8ˆ6�:Š:�j !Ñ$Ô$Ð$¸hñ	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dS )ÚReductionHintr   r   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚINNERÚOUTERÚ
OUTER_TINYÚDEFAULT© r   r   r%   r%   *   s"   € € € € € Ø€EØ€EØ€JØ€G€G€Gr   r%   c                  ó   — e Zd ZdZdZdS )ÚTileHintr   r   N)r(   r)   r*   ÚSQUAREr.   r/   r   r   r1   r1   1   s   € € € € € Ø€FØ€G€G€Gr   r1   ÚAttrsDescriptor©r3   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Úclsr6   r   r7   r   )r3   Ú	from_dictr(   Úproperty_values)Údivisible_by_16Ú
equal_to_1Úpointer_range_32r   Úress        r   ÚAttrsDescriptorWrapperr@   @   sr   € ð $3Ø)ðð ˆFõ "Ô+Ø#)µ/Ô2JÐKÐKñô ˆCð Ô&Ð'8Ô9¸RÒ?Ð?Ð?Ð?ØÔ& }Ô5¸Ò:Ð:Ð:Ð:ØˆJr   c                ó$   — | |dœ}t          di |¤ŽS )N)r<   r=   r/   r4   )r<   r=   r>   r   s       r   r@   r@   W   s,   € ð $3Ø(ðð ˆFõ #Ð,Ð, VÐ,Ð,Ð,r   c                óŠ   — d„ | pdD ¦   «         }|pdD ]/}|f}||v r||                               ddg¦  «         Œ'ddgg||<   Œ0|S )Nc                ó   — i | ]	}|fd dgg“Œ
S )r6   r   r/   )Ú.0Úxs     r   ú
<dictcomp>z*AttrsDescriptorWrapper.<locals>.<dictcomp>s   s%   € ÐWÐWÐW¸!�q�dÐ/°Ð4Ð5ÐWÐWÐWr   r/   ztt.pointer_rangeé    )Úappend)r<   r=   r>   ÚresultrE   Úkeys         r   r@   r@   k   s{   € ð XÐWÀÐ@UÐSUÐWÑWÔWˆFØ%Ð+¨ð =ð =�Ø�d�Ø˜&�=�=Ø˜3”K×&Ò&Ð(:¸BÐ'?Ñ@Ô@Ð@Ð@à$6¸Ð#;Ð"<�F˜3‘K�KØˆMr   )r<   r=   r>   )r/   r/   r/   )Údefaultsc                  óš   — 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   rM   rM   †   s\   € € € € € Ø˜4™6œ6ÐØ�‘”€IØ�‘”€IØ�‘”€JØˆt‰vŒv€HØ�D‘F”F€MØˆD‰FŒF€E€E€Er   rM   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   rV   rV   �   s   € € € € € ØÐð Œ|€H€H€Hr   rV   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dS )ÚDevicePropertieszOCopy device properties into a data structure not requiring torch to be importedÚstrÚtyper   ÚindexÚmulti_processor_countÚccNr   ÚmajorÚregs_per_multiprocessorÚmax_threads_per_multi_processorÚmax_threads_per_blockÚ	warp_sizer   c                ó"   — | j         �| j         ndS )NrG   )re   ©Úselfs    r   Úwarp_size_or_defaultz%DeviceProperties.warp_size_or_default§   s   € à!%¤Ð!;ˆtŒ~ˆ~ÀÐCr   c                óì  — 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¦  «        t          |d|dk    rdnd ¦  «        ¬¦	  «	        S )Nr   )Úget_interface_for_deviceÚcudaÚhipÚxpuÚmtiar   ra   rb   rc   rd   r   re   ÚcpurG   )	r]   r^   r_   r`   ra   rb   rc   rd   re   )ÚtorchÚtorch._dynamo.device_interfacerk   r]   Úversionrm   Úget_device_propertiesr_   ÚAttributeErrorÚgpu_subslice_countr^   Úget_compute_capabilityÚgetattr)r9   Údevicerq   rk   Údevice_typeÚdevice_interfaceÚpropsr_   s           r   ÚcreatezDeviceProperties.create«   s]  € ð 	ˆˆˆØKÐKÐKÐKÐKÐKà”kˆàŒ=Ôð 	  °Ò!6Ð!6ØˆKà3Ð3°FÑ;Ô;ÐØ ×6Ò6°vÑ>Ô>ˆð	Ø$)Ô$?Ð!Ð!øÝð 	ð 	ð 	Ø˜eÒ#Ð#Ø(-Ô(@Ð%Ð%Ø Ò&Ð&Ø(*Ð%Ð%àøøð	øøøð ˆsØØ”,Ø"7Ø×6Ò6°vÑ>Ô>Ý˜% ¨$Ñ/Ô/Ý$+¨EÐ3LÈdÑ$SÔ$SÝ,3ØÐ8¸$ñ-ô -õ #*¨%Ð1HÈ$Ñ"OÔ"OÝ˜e [¸ÀuÒ8LÐ8L°"°"ÐRVÑWÔWð
ñ 
ô 
ð 	
s   ÁA Á"A4Á3A4©r   r   )r   r[   )r(   r)   r*   Ú__doc__Ú__annotations__ra   rb   rc   rd   re   Úpropertyri   ÚclassmethodÚ	functoolsÚcacher}   r/   r   r   r[   r[   š   sé   € € € € € € ØYÐYà€I€I�IØ€J€J�JØÐÐÑØ€G€G�GØ€EÐÐÐÑØ*.ÐÐ.Ð.Ð.Ñ.Ø26Ð#Ð6Ð6Ð6Ñ6Ø(,ÐÐ,Ð,Ð,Ñ,Ø €IÐ Ð Ð Ñ àðDð Dð Dñ „XðDð Ø„_ð 
ð  
ð  
ñ „_ñ „[ð 
ð  
ð  
r   r[   c                ó@   — t                                | ¦  «        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.
    )r[   r}   ri   )ry   s    r   Úget_warp_sizer†   Ð   s   € õ ×"Ò" 6Ñ*Ô*Ô?Ð?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Zded
<   dd„Zdd„Z	dd„Z
dd„ZdS )ÚHalideInputSpecr\   ÚctypeÚnameNzlist[str] | NoneÚshapeÚstrideú
str | NoneÚoffsetÚalias_ofr   c                ó&   — | j         dv rdS | j         S )N)ú	at::Half*úat::BFloat16*z	uint16_t*)r‰   rg   s    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 )	Nr‘   z$halide_type_t(halide_type_float, 16)r’   z%halide_type_t(halide_type_bfloat, 16)zhalide_type_of<Ú*Ú z>())r‰   Úreplacerg   s    r   Úhalide_typezHalideInputSpec.halide_typeè   sK   € ØŒ:˜Ò$Ð$Ø9Ð9ØŒ:˜Ò(Ð(Ø:Ð:ØA ¤×!3Ò!3°C¸Ñ!<Ô!<ÐAÐAÐAÐAr   Úboolc                ó   — | j         d u S r    ©r‹   rg   s    r   Ú	is_scalarzHalideInputSpec.is_scalarï   s   € ØŒz˜TÐ!Ð!r   c                ó   — | j         d uS r    r›   rg   s    r   Ú	is_bufferzHalideInputSpec.is_bufferò   s   € ØŒz Ð%Ð%r   )r   r\   ©r   r™   )r(   r)   r*   r€   r‹   rŒ   rŽ   r�   r“   r˜   rœ   rž   r/   r   r   rˆ   rˆ   Û   sÀ   € € € € € € Ø€J€J�JØ€I€I�IØ"€EÐ"Ð"Ð"Ñ"Ø#€FÐ#Ð#Ð#Ñ#Ø€FÐÐÐÑØ€HÐÐÐÑðð ð ð ð
Bð Bð Bð 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dS )Ú
HalideMetazlist[HalideInputSpec]Úargtypesr\   ÚtargetNr�   Ú	schedulerzdict[str, int | str] | NoneÚscheduler_flagsr   Úcuda_devicer   ú	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¤   rH   r¥   Úitems)rh   ÚargsÚkÚvs       r   r«   zHalideMeta.argsý   s    € à'˜$œ+Ð'Ð'Ð(ˆØŒ>ð 	;Ø�KŠKÐ9¨¬Ð9Ð9Ñ:Ô:Ð:ØÔð 	6Ø”>Ð!Ð!�>ØÔ,×2Ò2Ñ4Ô4ð 6ð 6‘��1Ø—’Ð4¨QÐ4Ð4°Ð4Ð4Ñ5Ô5Ð5Ð5Øˆr   r™   c                ó   — | j         d uS r    )r¦   rg   s    r   Úis_cudazHalideMeta.is_cuda  s   € ØÔ tÐ+Ð+r   )r   r§   rŸ   )	r(   r)   r*   r€   r¤   r¥   r¦   r«   r¯   r/   r   r   r¡   r¡   ö   s†   € € € € € € Ø#Ð#Ð#Ñ#Ø€K€K�KØ €IÐ Ð Ð Ñ Ø37€OÐ7Ð7Ð7Ñ7Ø"€KÐ"Ð"Ð"Ñ"ð	ð 	ð 	ð 	ð,ð ,ð ,ð ,ð ,ð ,r   r¡   r    )r   r   r   r   r   r   )r   r   r   r   )NNNr~   )%Ú
__future__r   Úcollectionsrƒ   ÚtypingÚenumr   r   rq   Útorch.utils._tritonr   rs   rm   ÚTRITON_MAX_BLOCKÚTRITON_MAX_RSPLITÚTRITON_MAX_TENSOR_NUMELr"   r   r#   r%   r1   ÚtritonÚtriton.backends.compilerÚtriton.compiler.compilerÚhasattrÚbackendsÚcompilerr3   r@   Ú
namedtuplerM   rV   Ú
NamedTupler[   r†   rˆ   r¡   r/   r   r   ú<module>rÀ      sZ  ðà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ð Ð à €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2ð ”Ô"Ð	,ˆˆ¨Ø	Ø	ØØðð Ð ð Ð Ø!Ð ØÐ ð >Bðð ð ð ð ð/ð /ð /ð /ðð ð ð ð �Dñ ô ð ðð ð ð ð ˆtñ ô ð ð ÐÑÔð LØ€M€M€MØ#Ð#Ð#Ð#Ø#Ð#Ð#Ð#à€wˆvŒÔ'Ð):Ñ;Ô;ð >à<Ð<Ð<Ð<Ð<Ð<ð !ØØ!ð	ð 	ð 	ð 	ð 	ð& 
ˆ�”Ô)Ð+<Ñ	=Ô	=ð 'à<Ð<Ð<Ð<Ð<Ð<ð !ØØ!ð	-ð 	-ð 	-ð 	-ð 	-ð* !ØØ!ð	ð 	ð 	ð 	ð 	ð& 4˜[Ô3àØ=Ð=Ð=Ø��ð	ñ ô Ððð ð ð ð �Dñ ô ð ðð ð ð ð �4ñ ô ð ð3
ð 3
ð 3
ð 3
ð 3
�vÔ(ñ 3
ô 3
ð 3
ðl@ð @ð @ð @ð&ð &ð &ð &ð &�fÔ'ñ &ô &ð &ð6,ð ,ð ,ð ,ð ,�Ô"ñ ,ô ,ð ,ð ,ð ,r   