§
    ÓóÉjƒ  ã                   óÈ   — d dl mZmZ d dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZ d„ Zd„ Zd„ Zd	„ Zd
„ Zd„ Z G d„ de¦  «        Z G d„ de¬¦  «        Z G d„ de¦  «        ZdS )é    )ÚABCMetaÚabstractmethodN)ÚCallableÚListÚProtocolÚSequence)Úfind_paths_if©Úmake_tensordesc_argsc                 ón   — | j         g| j        ¢| j        ¢| j        dk    ‘| j        ‘| j        ¢| j        ¢S )NÚnan)ÚbaseÚshapeÚstridesÚpaddingÚround_f32_to_tf32©Úargs    ú{/home/lighthouse/badge-speaker-benchmark/.benchmark-venv-community/lib64/python3.11/site-packages/triton/backends/driver.pyÚdecompose_descriptorr   	   sC   € ð ŒHÐv�s”yÐv 3¤;Ðv°´¸uÒ0DÐvÀcÔF[ÐvÐ^aÔ^gÐvÐjmÔjuÐvÐvó    c                 óV   — t          | t          ¦  «        o|                      d¦  «        S )NÚ
tensordesc)Ú
isinstanceÚstrÚ
startswithr   s    r   Ú_is_descriptorr      s#   € Ý�c�3ÑÔÐ@ C§N¢N°<Ñ$@Ô$@Ð@r   c                 óø   ‡ ‡‡‡‡	— t          ‰                     ¦   «         ¦  «        Št          ‰d„ ¦  «        }t          |¦  «        dk    r‰ S i Š	|D ]}‰	}|D ]}|                     |i ¦  «        }ŒŒ ˆ ˆˆ	ˆˆfd„}|S )Nc                 ó    — t          |¦  «        S ©N)r   )Ú_Úxs     r   ú<lambda>z-wrap_handle_tensordesc_impl.<locals>.<lambda>   s   € ½^ÈAÑ=NÔ=N€ r   r   c                  ód   •— | d d…         }| d         }t          |‰‰‰|‰¦  «        } ‰g |¢|‘R Ž S )Néÿÿÿÿr
   )	ÚargsÚ	base_argsÚkernel_argsÚwrappedÚlauncherÚmake_tensordesc_argÚrelevant_pathsÚ	signatureÚtensordesc_metas	       €€€€€r   Úinnerz*wrap_handle_tensordesc_impl.<locals>.inner"   sW   ø€ Ø˜˜"˜”Iˆ	Ø˜2”hˆÝ&ØØØØØØñ
ô 
ˆð ˆxÐ,˜Ð, GÐ,Ð,Ð,Ð,r   )ÚtupleÚvaluesr	   ÚlenÚ
setdefault)
r*   r-   r.   r+   Útensordesc_pathsÚpathÚcurÚstepr/   r,   s
   ````     @r   Úwrap_handle_tensordesc_implr8      sÅ   øøøøø€ Ý�i×&Ò&Ñ(Ô(Ñ)Ô)€IÝ$ YÐ0NÐ0NÑOÔOÐÝ
ÐÑÔ Ò!Ð!Øˆð
 €NØ ð +ð +ˆØˆØð 	+ð 	+ˆDØ—.’.  rÑ*Ô*ˆCˆCð	+ð-ð -ð -ð -ð -ð -ð -ð -ð -ð €Lr   c                 óL  — t          j        d| ¦  «        }|sJ d| › �¦   «         ‚|                     d¦  «        }|                     d¦  «        }|                     d¦  «        dz   }t          j        d| ¦  «        }|r"t          |                     d¦  «        ¦  «        n|}||fS )Nz+tensordesc(?:_im2col)?<([^[>]*)\[([^\]]*)\]z"Malformed tensor descriptor type: é   é   ú,z,input_rank=(\d+))ÚreÚmatchÚgroupÚcountÚsearchÚint)Ú
descriptorr>   ÚdtypeÚblock_shapeÚ
block_ndimÚ
rank_matchÚndims          r   Ú_parse_descriptorrI   2   s¨   € ÝŒHÐCÀZÑPÔP€EØÐCÐCÐC°zÐCÐCÑCÔCÐCà�KŠK˜‰NŒN€EØ—+’+˜a‘.”.€KØ×"Ò" 3Ñ'Ô'¨!Ñ+€Jå”Ð/°Ñ<Ô<€JØ'1ÐA�3ˆz×Ò Ñ"Ô"Ñ#Ô#Ð#°z€DØ�4ˆ=Ðr   c                 óÒ  — t          | ¦  «        \  }}g }|sm|                     d|z   ¦  «         t          d|z  ¦  «        D ]}|                     d¦  «         Œ|                     d¦  «         |                     d¦  «         n|                     |¦  «         t          |¦  «        D ]}|                     d¦  «         Œt          |¦  «        D ]}|                     d¦  «         Œ|S )NÚ*r;   Úi64Úi1Úi32)rI   ÚappendÚrange)rC   Úhas_tensordesc_metaÚdescriptor_typerD   rH   Úexpandedr!   s          r   Ú_expand_descriptorrT   ?   sø   € Ý# JÑ/Ô/�K€Eˆ4Ø€Hð ð )Ø�Š˜˜e™Ñ$Ô$Ð$Ý�q˜4‘x‘”ð 	#ð 	#ˆAØ�OŠO˜EÑ"Ô"Ð"Ð"Ø�Š˜ÑÔÐØ�Š˜ÑÔÐÐà�Š˜Ñ(Ô(Ð(å�4‰[Œ[ð ð ˆØ�Š˜ÑÔÐÐÝ�4‰[Œ[ð ð ˆØ�Š˜ÑÔÐÐØ€Or   c                 ób   ‡‡‡— t          |¦  «        Šg }ˆˆˆfd„Šg }| D ]} ‰||¦  «         Œ|S )Nc                 ó4  •— t          | ¦  «        r&|                     t          | ‰‰¦  «        ¦  «         d S t          | t          ¦  «        r7g }| D ]} ‰||¦  «         Œ|                     t	          |¦  «        ¦  «         d S |                     | ¦  «         d S r    )r   ÚextendrT   r   r0   rO   )r-   Úresultr/   ÚsrR   rQ   Úvisits       €€€r   rZ   zexpand_signature.<locals>.visitZ   s¥   ø€ Ý˜)Ñ$Ô$ð 		%Ø�MŠMÕ,¨YÐ8KÈ_Ñ]Ô]Ñ^Ô^Ð^ØˆFÝ˜	¥5Ñ)Ô)ð 	%ØˆEØð  ð  �Ø��a˜‘”��Ø�MŠM�% ™,œ,Ñ'Ô'Ð'Ð'Ð'à�MŠM˜)Ñ$Ô$Ð$Ð$Ð$r   )Úbool)r-   r.   rR   rX   rY   rQ   rZ   s     `  @@r   Úexpand_signaturer\   U   sk   øøø€ Ý˜Ñ/Ô/Ðà€Fð
%ð 
%ð 
%ð 
%ð 
%ð 
%ð 
%ð €FØð ð ˆØˆˆa�ÑÔÐÐØ€Mr   c                   ó:   — e Zd Zdedee         dee         fd„ZdS )ÚBenchmarkerÚkernel_callÚ	quantilesÚreturnc                ó   — d S r    © )Úselfr_   r`   Úkwargss       r   Ú__call__zBenchmarker.__call__n   ó   € Øˆr   N)Ú__name__Ú
__module__Ú__qualname__r   r   Úfloatr   rf   rc   r   r   r^   r^   l   sH   € € € € € ð Hð ¸DÀ¼Kð ÐV^Ð_dÔVeð ð ð ð ð ð r   r^   c                   ó´   — e Zd Zeed„ ¦   «         ¦   «         Zededefd„¦   «         Zed„ ¦   «         Zed„ ¦   «         Z	ede
fd„¦   «         Zded	efd
„Zdd„ZdS )Ú
DriverBasec                 ó   — d S r    rc   ©rd   s    r   Ú	is_activezDriverBase.is_activet   s	   € ð 	ˆr   Útyra   c                 ó   — dS )zù
        Converts a Triton type string to its corresponding C++ type string for this backend.

        Args:
            ty (str): The Triton type string. e.g., 'i32', '*fp16', 'fp32'.

        Returns:
            str: The C++ type string.
        Nrc   )rd   rq   s     r   Úmap_python_to_cpp_typez!DriverBase.map_python_to_cpp_typey   s	   € ð 	ˆr   c                 ó   — d S r    rc   ro   s    r   Úget_current_targetzDriverBase.get_current_target†   ó   € àˆr   c                 ó   — d S r    rc   ro   s    r   Úget_active_torch_devicez"DriverBase.get_active_torch_deviceŠ   rv   r   c                 ó   — t           ‚)z[
        Return the benchmarking function that this backend should use by default.
        ©ÚNotImplementedErrorro   s    r   Úget_benchmarkerzDriverBase.get_benchmarkerŽ   s
   € õ
 "Ð!r   ÚsizeÚ	alignmentc                 ó   — t           ‚)ze
        Allocate profile scratch when no explicit profile allocator override was installed.
        rz   )rd   r}   r~   Ústreams       r   Ú allocate_default_profile_scratchz+DriverBase.allocate_default_profile_scratch•   s
   € õ "Ð!r   Nc                 ó   — d S r    rc   ro   s    r   Ú__init__zDriverBase.__init__›   rg   r   )ra   N)rh   ri   rj   Úclassmethodr   rp   r   rs   ru   rx   r^   r|   rB   r�   rƒ   rc   r   r   rm   rm   r   sø   € € € € € àØðð ñ „^ñ „[ðð ð
¨ð 
°ð 
ð 
ð 
ñ „^ð
ð ðð ñ „^ðð ðð ñ „^ðð ð" ð "ð "ð "ñ „^ð"ð"°Sð "ÀSð "ð "ð "ð "ðð ð ð ð ð r   rm   )Ú	metaclassc                   ó*   — e Zd Zd„ Zd„ Zdedefd„ZdS )Ú	GPUDriverc                 óÈ   ‡— dd l Š‰j        j        | _        	 ddlm} || _        n# t          $ r ˆfd„| _        Y nw xY w‰j        j        | _        ‰j        j	        | _
        d S )Nr   )Ú_cuda_getCurrentRawStreamc                 óB   •— ‰j                              | ¦  «        j        S r    )ÚcudaÚcurrent_streamÚcuda_stream)ÚidxÚtorchs    €r   r#   z$GPUDriver.__init__.<locals>.<lambda>©   s   ø€ °%´*×2KÒ2KÈCÑ2PÔ2PÔ2\€ r   )r�   r‹   Úget_device_capabilityÚtorch._Cr‰   Úget_current_streamÚImportErrorÚcurrent_deviceÚget_current_deviceÚ
set_deviceÚset_current_device)rd   r‰   r�   s     @r   rƒ   zGPUDriver.__init__¡   s’   ø€ àˆˆˆØ%*¤ZÔ%EˆÔ"ð	]Ø:Ð:Ð:Ð:Ð:Ð:Ø&?ˆDÔ#Ð#øÝð 	]ð 	]ð 	]Ø&\Ð&\Ð&\Ð&\ˆDÔ#Ð#Ð#ð	]øøøà"'¤*Ô";ˆÔØ"'¤*Ô"7ˆÔÐÐs   ˜& ¦=¼=c                 ó   — |S r    rc   )rd   Útensormaps_infor&   s      r   Úassemble_tensormap_to_argz#GPUDriver.assemble_tensormap_to_arg®   s   € Øˆr   r}   r~   c                 óN  — dd l }|                      ¦   «         }|                      ¦   «         }|€|                     ||j        |¬¦  «        S |dk    r]|                     |                     |¦  «        ¦  «        5  |                     ||j        |¬¦  «        cd d d ¦  «         S # 1 swxY w Y   |                     ||¬¦  «        }|                     |¦  «        5  |                     ||j        |¬¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     |¦  «         |S )Nr   )rD   Údevice)rœ   )	r�   rx   Úget_device_interfaceÚzerosÚint8r€   Údefault_streamÚExternalStreamÚrecord_stream)	rd   r}   r~   r€   r�   rœ   Údevice_interfaceÚlaunch_streamÚscratchs	            r   r�   z*GPUDriver.allocate_default_profile_scratch±   sÀ  € ØˆˆˆØ×-Ò-Ñ/Ô/ˆØ×4Ò4Ñ6Ô6ÐØˆ>Ø—;’;˜t¨5¬:¸f�;ÑEÔEÐEØ�QŠ;ˆ;Ø!×(Ò(Ð)9×)HÒ)HÈÑ)PÔ)PÑQÔQð Jð JØ—{’{ 4¨u¬zÀ&�{ÑIÔIðJð Jð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jà(×7Ò7¸ÀvÐ7ÑNÔNˆØ×$Ò$ ]Ñ3Ô3ð 	Ið 	IØ—k’k $¨e¬jÀ�kÑHÔHˆGð	Ið 	Ið 	Iñ 	Iô 	Ið 	Ið 	Ið 	Ið 	Ið 	Ið 	Iøøøð 	Ið 	Ið 	Ið 	Ià×Ò˜mÑ,Ô,Ð,Øˆs$   Á:B$Â$B(Â+B(ÃDÄD	ÄD	N)rh   ri   rj   rƒ   rš   rB   r�   rc   r   r   r‡   r‡   Ÿ   sT   € € € € € ð
8ð 
8ð 
8ðð ð ð°Sð ÀSð ð ð ð ð ð r   r‡   )Úabcr   r   r=   Útypingr   r   r   r   Útriton._utilsr	   Útriton._C.libtritonr   r   r   r8   rI   rT   r\   r^   rm   r‡   rc   r   r   ú<module>rª      s\  ðØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 	€	€	€	Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ðwð wð wðAð Að Aðð ð ð>
ð 
ð 
ðð ð ð,ð ð ð.ð ð ð ð �(ñ ô ð ð*ð *ð *ð *ð *˜7ð *ñ *ô *ð *ðZð ð ð ð �
ñ ô ð ð ð r   