
    `i8              	       P   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                    ded           e                    de ed          d           e                    dd d!"           e                                Z eej        ej        ej                   ZdS dS )$    N)Pathsource_codereturnc                 ^    t          j        dd|           }t          j        dd|          }|S )Nz(\n.+\s\'\'\'\n)
z(\'\'\'\,.+))resub)r   remove_headremove_tails      q/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/utils/_get_clean_triton.py"remove_triton_function_declarationr   	   s/    &,dK@@K&$<<K    c                     t                               | dd          }t                               |dd          }t                               |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      sN    {{;0PRTUU[[!13RTVWWN^-@"EEJr   c                    d}d}d t          j        || t           j                  D             }t          |          D ]M\  }}|                     ||          }|dk    r,| d |         d| z   | |t          |          z   d          z   } MN| S )Nz/(\w+)\s*=\s*async_compile\.triton\('triton_',\szdef triton_c                 `    g | ]+}|                                 |                    d           f,S )   )endgroup).0matchs     r   
<listcomp>z"rename_kernels.<locals>.<listcomp>   s?        
ekk!nn%  r   zdef )r   finditerDOTALLreversedfindlen)r   patterntriton_kernel_declmatches	end_indexcaptured_string
index_of_Bs          r   rename_kernelsr+      s    @G& [+ryAA  G '/w&7&7  "	? %%&8)DD
 KZK(***+j3/A+B+BBDDEF K r   original_params
new_paramsc                 r    t          t          |                    D ]}||         dk    r| |         ||<   |S )NT)ranger$   )r,   r-   idxs      r   merge_paramsr2   0   sC    S__%% 3 3c?c!!-c2JsO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                    |                      d          }|                      d          }|         \  }}t          |                    d          |                    d                    }| d| dd                    |           d}|S )Nr      z, [z]())r   r2   splitjoin)r   	func_nameparamsr-   grid
new_stringr4   s         r   r   z"add_launch_params.<locals>.replace=   s    KKNN	Q+I6
D!&,,t"4"4j6F6Ft6L6LMM
 "DDDDDDIIj,A,ADDD
r   z"@triton_heuristics[^@]*@triton.jitz@triton.jit)flags)r   r   r	   r!   )r3   r4   r%   r   transformedremove_inductor_wrapperss    `    r   add_launch_paramsrC   7   sq     $G	# 	 	 	 	 	 	 &'844K!v-i	      $#r   Tinput_filenameoutput_filenameauto_generate_paramsc           	      8   t          |           5 }|                                }d d d            n# 1 swxY w Y   |}d|v rt          d          t          |          }t	          |          }|  d}t
          j                            |          s|rt          d| d           	 t
          j	        
                                }d|d<   t          j        d| g|d	d	t
          j                            |           pd
          }|j        dk    rXt          d|  d           t          d|j                    t          d|j                    t          d|j                   t          d|            n5# t"          $ r(}	t          d|  dt%          |	                     |	d }	~	ww xY wt
          j                            |          st          d| d|  d          t          |          5 }
|
                                }d d d            n# 1 swxY w Y   d |D             }d |D             }t)          ||          }t          |d          5 }|                    |           d d d            n# 1 swxY w Y   t          d|            |S )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_PARAMSpythonT.)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.c                 8    g | ]}|                     d           S )|)r:   )r   is     r   r   z process_file.<locals>.<listcomp>   s"    ===QAGGCLL===r   c                     i | ]A\  }}}|                                 |                                 |                                 fBS  )strip)r   abcs       r   
<dictcomp>z process_file.<locals>.<dictcomp>   s=    VVVgaA		AGGIIqwwyy#9VVVr   w)openreadRuntimeErrorr   r   ospathexistsprintenvironcopy
subprocessrundirname
returncodestdoutstderr	Exceptionr   	readlinesrC   write)rD   rE   rF   filer   transformed_codelaunch_params_filenamerL   resulteflaunch_params_metasplit_paramskernel_args_grids                 r   process_filerw   T   s    
n		 "iikk" " " " " " " " " " " " " " " #$$k
 
 	
 ::JKK+,<== .>>> 7>>011 6J U$:UUUVVV	*//##C69C23^>*#GOON33:s  F  A%%8~888999000111000111"lY_Yjll   D,BDDEEEE 	 	 	Y~YYQTUVQWQWYY 	
 7>>011 
x-xx`nxxx
 
 	
 
$	%	% +[[]]+ + + + + + + + + + + + + + + >=*<===LVVVVV()9;KLL	os	#	# %t

#$$$% % % % % % % % % % % % % % %	
5O
5
5666sI   155+CE> >
F0#F++F07HHHI==JJztriton_only_repro.py
input_pathoutput_pathc                 X    t          t          |           t          |          |          S )a4  Run experiments and output results to file

    Args:
        input_path (Optional[Path]): Path to inductor generated output codede
        output_path (Optional[Path]): Path to write out the new python file
        auto_generate_params (bool): Whether to automatically generate launch_params if missing
    )rw   r   )rx   ry   rF   s      r   get_clean_tritonr{      s%     J[)9)9;OP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)r~   defaultr   z--no-auto-generate
store_truez2Disable automatic generation of launch_params file)actionr   )T)argparser_   r   re   pathlibr   r   r   r   r+   listr2   dicttuplerC   boolrw   r{   __name__ArgumentParserparseradd_argument
parse_argsargsrx   ry   no_auto_generaterq   rU   r   r   <module>r      s    				 				          C C    c c         4$s) c tCy    $$%)#uS#X*>%?$$ $ $ $< MQ? ??*-?EI?? ? ? ?H 344!%Q QQQ Q Q Q Q z %X$S  F
 4&N     +,,8	     A     D )t/D+D FFFA r   