Ë
    ÌÓ^j5  ã            	       ó$  — d dl Z d dlZd dlZd dlZd dlZd dlmZ dedefd„Zdedefd„Z	dedefd„Z
dee   d	ee   dee   fd
„Zdedeeeeef   f   defd„Z	 d#dedededefd„Z ed«      dfdededefd„Zedk(  r‘	  e j(                  d¬«      Zej-                  ded¬«       ej-                  de ed«      d¬«       ej-                  dd d!¬"«       ej/                  «       Z eej2                  ej4                  ej6                   «      Zyy)$é    N)ÚPathÚsource_codeÚreturnc                 ób   — t        j                  dd| «      }t        j                  dd|«      }|S )Nz(\n.+\s\'\'\'\n)ú
z(\'\'\'\,.+))ÚreÚsub)r   Úremove_headÚremove_tails      úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/utils/_get_clean_triton.pyÚ"remove_triton_function_declarationr   
   s-   € Ü—&‘&Ð,¨d°KÓ@€KÜ—&‘&˜¨$°Ó<€KØÐó    c                 ó�   — t         j                  | dd«      }t         j                  |dd«      }t         j                  |dd«      }|S )Nzasync_compile = AsyncCompile()Ú zasync_compile.wait(globals())zdel async_compile)ÚstrÚreplace)r   Úremove_top_levelÚremove_compileÚ
remove_dels       r   Úremove_async_compiler      sE   € Ü—{‘{ ;Ð0PÐRTÓUÐÜ—[‘[Ð!1Ð3RÐTVÓW€NÜ—‘˜^Ð-@À"ÓE€JØÐr   c                 óJ  — d}d}t        j                  || t         j                  «      D �cg c]#  }|j                  «       |j	                  d«      f‘Œ% }}t        |«      D ]:  \  }}| j                  ||«      }|dk7  r| d | d|› �z   | |t        |«      z   d  z   } Œ;Œ< | S c c}w )Nz/(\w+)\s*=\s*async_compile\.triton\('triton_',\szdef triton_é   éÿÿÿÿzdef )r   ÚfinditerÚDOTALLÚendÚgroupÚreversedÚfindÚlen)r   ÚpatternÚtriton_kernel_declÚmatchÚmatchesÚ	end_indexÚcaptured_stringÚ
index_of_Bs           r   Úrename_kernelsr(      sÕ   € Ø@€GØ&Ðô —[‘[ ¨+´r·y±yÓAöàð 
�‰‹�e—k‘k !“nÒ%ð€Gð ô '/¨wÓ&7ò Ñ"ˆ	�?à ×%Ñ%Ð&8¸)ÓDˆ
Ø˜Òð ˜K˜ZÐ(Ø˜Ð)Ð*ñ+à˜j¬3Ð/AÓ+BÑBÐDÐEñFñ ð ðð Ðùò)s   ¬(B Úoriginal_paramsÚ
new_paramsc                 óZ   — t        t        |«      «      D ]  }||   dk(  sŒ| |   ||<   Œ |S )NÚT)Úranger    )r)   r*   Úidxs      r   Úmerge_paramsr/   1   s<   € Ü”S˜“_Ó%ò 3ˆØ�c‰?˜cÓ!Ø-¨cÑ2ˆJ�sŠOð3ð Ðr   ÚoriginalÚkernel_to_paramsc                 ó    ‡— d}dt         fˆfd„}t        j                  ||| «      }t        j                  dd|t        j                  ¬«      }|S )Nz(\w+)\.run\((.*)\)r   c                 óä   •— | j                  d«      }| j                  d«      }‰|   \  }}t        |j                  d«      |j                  d«      «      }|› d|› ddj                  |«      › d�}|S )Nr   é   z, ú[z](ú))r   r/   ÚsplitÚjoin)r#   Ú	func_nameÚparamsr*   ÚgridÚ
new_stringr1   s         €r   r   z"add_launch_params.<locals>.replace>   sv   ø€ à—K‘K “Nˆ	Ø—‘˜Q“ˆØ+¨IÑ6Ñˆ
�DÜ! &§,¡,¨tÓ"4°j×6FÑ6FÀtÓ6LÓMˆ
ð "�{ ! D 6¨¨D¯I©I°jÓ,AÐ+BÀ!ÐDˆ
ØÐr   z"@triton_heuristics[^@]*@triton.jitz@triton.jit)Úflags)r   r   r	   r   )r0   r1   r!   r   ÚtransformedÚremove_inductor_wrapperss    `    r   Úadd_launch_paramsr@   8   sQ   ø€ ð $€Gð	œ#õ 	ô —&‘&˜ '¨8Ó4€Kä!Ÿv™vØ-ØØÜ�i‰iô	 Ðð $Ð#r   TÚinput_filenameÚoutput_filenameÚauto_generate_paramsc           	      ót  — t        | «      5 }|j                  «       }d d d «       }d|v rt        d«      ‚t        |«      }t	        |«      }| › d�}t
        j                  j                  |«      sô|ròt        d|› d�«       	 t
        j                  j                  «       }d|d<   t        j                  t        j                  | g|ddt
        j                  j                  | «      xs d	¬
«      }|j                   dk7  rWt        d| › d�«       t        d|j"                  › �«       t        d|j$                  › �«       t        d|j                   › �«      ‚t        d|› �«       t
        j                  j                  |«      st        d|› d| › d�«      ‚t        |«      5 }
|
j+                  «       }d d d «       D �cg c]  }|j-                  d«      ‘Œ }}|D ���ci c]5  \  }}}|j/                  «       |j/                  «       |j/                  «       f“Œ7 }}}}t1        ||«      }t        |d«      5 }|j3                  |«       d d d «       t        d|› �«       |S # 1 sw Y   �ŒBxY w# t&        $ r }	t        d| › dt)        |	«      › �«      |	‚d }	~	ww xY w# 1 sw Y   ŒæxY wc c}w c c}}}w # 1 sw Y   ŒjxY w)Nzdef triton_(z]Need to run original Pytorch code generating kernels with TORCHINDUCTOR_UNIQUE_KERNEL_NAMES=1z.launch_paramszLaunch params file z not found. Generating...Ú1Ú TORCHINDUCTOR_DUMP_LAUNCH_PARAMSTú.)ÚenvÚcapture_outputÚtextÚcwdr   zError running ú:zstdout: zstderr: zBFailed to generate launch params. Command failed with return code zSuccessfully generated z,Failed to generate launch params by running z: zMissing z1. Run `TORCHINDUCTOR_DUMP_LAUNCH_PARAMS=1 python z` first.ú|Úw)ÚopenÚreadÚRuntimeErrorr   r   ÚosÚpathÚexistsÚprintÚenvironÚcopyÚ
subprocessÚrunÚsysÚ
executableÚdirnameÚ
returncodeÚstdoutÚstderrÚ	Exceptionr   Ú	readlinesr7   Ústripr@   Úwrite)rA   rB   rC   Úfiler   Útransformed_codeÚlaunch_params_filenamerH   ÚresultÚeÚfÚlaunch_params_metaÚiÚsplit_paramsÚaÚbÚcÚkernel_args_grids                     r   Úprocess_filerq   U   sÇ  € ô 
ˆnÓ	ð " Ø—i‘i“kˆ÷"ð #ÐØ˜Ñ$ÜØkó
ð 	
ô :Ð:JÓKÐÜ+Ð,<Ó=Ðà .Ð/¨~Ð>Ðô �7‰7�>‰>Ð0Ô1Ñ6JÜÐ#Ð$:Ð#;Ð;TÐUÔVð	ä—*‘*—/‘/Ó#ˆCØ69ˆCÐ2Ñ3ä—^‘^Ü—‘ Ð0ØØ#ØÜ—G‘G—O‘O NÓ3Ò:°sôˆFð × Ñ  AÒ%Ü˜ ~Ð&6°aÐ8Ô9Ü˜ §¡ Ð0Ô1Ü˜ §¡ Ð0Ô1Ü"ØXÐY_×YjÑYjÐXkÐlóð ô Ð+Ð,BÐ+CÐDÔEô �7‰7�>‰>Ð0Ô1ÜØÐ-Ð.Ð._Ð`nÐ_oÐowÐxó
ð 	
ô 
Ð$Ó	%ð +¨ØŸ[™[›]Ð÷+ð +=Ö= Q�A—G‘G˜C•LÐ=€LÐ=ØIU×VÐV¹g¸aÀÀA˜Ÿ™›	 A§G¡G£I¨q¯w©w«yÐ#9Ñ9ÐVÐÒVÜ(Ð)9Ð;KÓLÐä	ˆo˜sÓ	#ð % tØ�
‰
Ð#Ô$÷%ä	Ð# OÐ#4Ð
5Ô6ØÐ÷y"ñ "ûôP ò 	ÜØ>¸~Ð>NÈbÔQTÐUVÓQWÐPXÐYóàðûð	ú÷+ð +üò >ùÜV÷%ð %úsH   ŒIÂC"I* Æ JÆ=J"Ç:J'È3J.ÉI'É*	JÉ3JÊJÊJÊ.J7ztriton_only_repro.pyÚ
input_pathÚoutput_pathc                 ó@   — t        t        | «      t        |«      |«      S )a   Run experiments and output results to file

    Args:
        input_path (Path): Path to inductor generated output codede
        output_path (Path): Path to write out the new python file
        auto_generate_params (bool): Whether to automatically generate launch_params if missing
    )rq   r   )rr   rs   rC   s      r   Úget_clean_tritonru   —   s   € ô œ˜J›¬¨[Ó)9Ð;OÓPÐPr   Ú__main__z=Clean Inductor generated code to remove Inductor dependencies)Údescriptionz&Path to inductor generated output code)ÚtypeÚhelpz--output_pathz)Path to write out the clean triton output)rx   Údefaultry   z--no-auto-generateÚ
store_truez2Disable automatic generation of launch_params file)Úactionry   )T)ÚargparserR   r   rX   rZ   Úpathlibr   r   r   r   r(   Úlistr/   ÚdictÚtupler@   Úboolrq   ru   Ú__name__ÚArgumentParserÚparserÚadd_argumentÚ
parse_argsÚargsrr   rs   Úno_auto_generaterg   © r   r   ú<module>r‹      sÇ  ðã Û 	Û 	Û Û 
Ý ð°Cð ¸Có ð cð ¨có ð ð ¨ó ð4 $ s¡)ð ¸¸c¹ð ÀtÈCÁyó ð$Øð$Ø%)¨#¨u°S¸#°X©Ð*>Ñ%?ð$àó$ð< MQñ?Øð?Ø*-ð?ØEIð?àó?ñH Ð3Ó4Ø!%ñQØðQàðQð óQð ˆzÒðð %ˆX×$Ñ$ØSô€Fð
 ×ÑØ˜4Ð&Nð ô ð ×ÑØØÙÐ+Ó,Ø8ð	 ô ð ×ÑØØØAð ô ð ×ÑÓ€Dñ Ø�‰˜×)Ñ)¨t×/DÑ/DÐ+Dó�FðA r   