
    `ip;                     :   U d dl Z d dlmZmZmZ d dlZd dlmc mZ	 d dl
mZ d dlmZ ej        j        ZdZdZdZg aeej        j        j                 ed<   d	ej        j        j        d
dfdZddZ	 	 ddej        j        dej        j        deej                 dee         d
df
dZdej        j        deee                  d
e fdZ! G d dej        j"                  Z#	 ddej        j        deeej        j        ge f                  d
dfdZ$	 	 	 d dej        j        de deee                  deeej        j        ge f                  d
df
dZ%	 	 	 d dej        j        de deee                  deeej        j        ge f                  d
ej        j        f
dZ&dS )!    N)AnyCallableOptional)maybe_set_is_frozen_param)
OrderedSetMODULE_TYPE_MAIN_MODULE_CONST_MODULE_dont_constant_foldopreturnc                 :    t                               |            d S N)r   appendr   s    t/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torch/_inductor/constant_folding.pyadd_dont_constant_foldr      s    r"""""    c                  8    t                                            d S r   )r   clear r   r   clear_dont_constant_foldr      s    r   gmnodeconstantnamec                    | j         }|r|}nEt          | d          sd| _        | j        }	 d| }t          | |          sn|dz  }|dz   | _        |                    |          5  ||                    d|di           }n|                    d|di           }|                    |           |j                            |j                   |                    |           |j	        |_	        d d d            n# 1 swxY w Y   |8| 
                    ||           t          | ||           t          |           d S d S )	N_frozen_param_countr   T_frozen_param   get_attrr   placeholder)graphhasattrr   inserting_beforecreate_nodereplace_all_uses_withmetaupdate
erase_noder   register_buffersetattrr   )r   r   r   r   gqualnameinew_input_nodes           r   replace_node_with_constantr1       s    	A 'r011 	'%&B""	*q**H2x(( FA		 "#Q	
		D	!	! 	( 	(]]:xRHHNN ]]=(BKKN"">222""49---	T"i	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 
8X...Hh'''!(+++++ s   'B	C<<D D lifted_constant_namesc                 .    | j         dk    p
| j        |pdv S )Nr!   r   )r   r   )r   r2   s     r   is_const_sourcer4   J   s#     7j NDI2G2M2$NNr   c                       e Zd Z	 	 	 ddej        j        dedeee	                  dee
ej        j        gef                  ddf
 fdZdefd	Zd
ej        j        def fdZd
ej        j        j        defdZdeej        j        eej        j                 f         fdZd
ej        j        def fdZdej        defdZd
ej        j        dej        ddfdZdef fdZdeej        j        ef         ddfdZ xZS )ConstantFolderFNr   skip_constructorsr2   skip_folding_node_fnr   c                 0   t                                          |           i | _        t          j                    | _        t                      | _        || _        | 	                                | _
        || _        t                      | _        || _        d S r   )super__init__node_replacementscollectionsCounterreplaced_usesobjectunknown_valuer7   node_to_last_non_output_useuser_to_last_usesr2   deferred_valuer8   )selfr   r7   r2   r8   	__class__s        r   r;   zConstantFolder.__init__Q   s     	;=7B7J7L7L#XX'8 "&!A!A!C!C%:"$hh$8!!!r   c                     dS )NFr   )rE   s    r   _support_dynamic_shapez%ConstantFolder._support_dynamic_shapee   s    ur   r   c                    | j         !t                                          |          S | j        |                     |          r| j        S t          j        |j        i |j        }|D ]P}t          |t          j        j                  r/|j        | j         pdvr| j        |         | j        k    r	| j        c S Q| j        S )Nr   )r2   r:   run_noder8   rA   pytreearg_tree_leavesargskwargs
isinstancetorchfxNoder   envrD   )rE   r   flattened_node_inpsinprF   s       r   _deduce_valuezConstantFolder._deduce_valuei   s    %-77##D))) $0T5N5Nt5T5T0%%$4diO4;OO& 	* 	*C3..*HT%?%E2FFHSMT%888))))""r   c                    dt           j        j        j        dt          fd} ||          sf|j        t           j        j        j        j	        k    rdt          |j                  dk    rL |t          t          |j                                      r"t          |j        d         | j                  rdS t#          t           j        j        dd           d u}|rs|j        t           j        j        j        j	        t           j        j        j        j	        t           j        j        j        j        t           j        j        j        j        fv rdS |j        t0          v rdS dS )	Nr   r   c                 R   | j         t          j        j        j        j        k    ot          | j        d         t          j        j	                  oYd| j        d         j
        v oE| j        d         j
        d         j        t          j        k    o| j        d         t          j        k    S )Nr   valr    )targetrP   opsprimsconvert_element_typedefaultrO   rM   rQ   rR   r(   dtypeint8bfloat16)r   s    r   is_woq_int8_patternz5ConstantFolder.is_impure.<locals>.is_woq_int8_pattern{   s    uyCKK 3ty|UX];;3TYq\..3 IaL%e,2ej@3 IaLEN2r   r    r   Tdequantize_per_channelF)rP   rQ   r   rR   boolrZ   r[   atenpermuter^   lenusersnextiterr4   rM   r2   getattrquantized_decomposedrc   dequantize_per_tensortensorr]   no_fuser   )rE   r   rb   quant_registereds       r   	is_impurezConstantFolder.is_impurez   sS   	ehm&8 	T 	 	 	 	  %%	 uy~5===
OOq((''T$*-=-=(>(>?? ) IaL&
 
 ) 4 EI24LdSS 	  		I*AII*@HI*@GI*?G	0
 !
 !
 4;---4ur   c                 ^   t          j        t                    t          t          j        j                             t          t          t          | j
        j        j                                      }t          | j
        j        j                  D ]j        dk    rdt          j        j        dd ffd}t          j        t          j        j        |j        j        f           t%          j                  dk    r$|j        v r                                        S )NoutputrU   r   c                 t    | v rd S                      |                                         |            d S r   )addr   )rU   last_non_output_user   	seen_usess    r   add_usez;ConstantFolder.node_to_last_non_output_use.<locals>.add_use   sD    )##Fc"""#D)0055555r   r    )r=   defaultdictlistr   rP   rQ   rR   ri   rj   reversedmoduler#   nodesrZ   rK   tree_map_only_rM   rN   rg   rh   r   )rE   output_noderx   rv   r   rw   s      @@@r   rB   z*ConstantFolder.node_to_last_non_output_use   s   )5d;;ux}-//	4):)@ A ABBCCT[.455 	7 	7D{h&&6UX] 6t 6 6 6 6 6 6 6 6 !%(-49dk:RSSS 4:!##tz(A(A#D)00666""r   c                     |j         dk    rddt          j        j        dd f fd}t	          j        t          j        j        ||j                   t                                          |          S  	                    |          \  }}t	          j
        |i |}t           fd|D                       r j        S |j        dk    r!|j         t          j        j        k    r j        S |j        dk    r|j        dk    r j        S  j        r5t'          | j                  s t          d |D                       s j        S t+          |j         t          j        j                  r$t          j        j        |j         j        v r j        S |j        dk    r+t+          |j         t          j        j                  r j        S                      |          }t+          |t          j        j                  r|S | j        k    r j        S t'          | j                  s=t+          |t          j                  s| j         k    r| j         k    r|j!        j"        d	k    r|S  #                    |          s|S  $                    |          r j        S  %                    ||           t	          j
        |j        i |j&        }|D ]7}t+          |t          j        j                  s" j'        |xx         d
z  cc<   8 j(        )                    |g           D ]@}	 j'        |	         tU          |	j+                  k    r j,        -                    |	d            A|S )Nrs   argr   c                 &    j         j        | <   d S r   )rA   rS   )r   rE   s    r   set_envz(ConstantFolder.run_node.<locals>.set_env   s     $ 2r   c              3   x   K   | ]4}t          j                  t          |          k    o
j        |k    V  5d S r   )typerA   ).0input_rE   s     r   	<genexpr>z*ConstantFolder.run_node.<locals>.<genexpr>   sZ       
 
 #$$V4U9Kv9U
 
 
 
 
 
r   call_function&triton_kernel_wrapper_functional_proxyc              3   J   K   | ]}t          |t          j                  V  d S r   )rO   rP   Tensor)r   es     r   r   z*ConstantFolder.run_node.<locals>.<genexpr>   s.      NN
1el33NNNNNNr   r(   r    ).rZ   rP   rQ   rR   rK   r~   rM   r:   rJ   fetch_args_kwargs_from_envrL   anyrA   r   re   _efficientzerotensorr^   r   r7   r4   r2   rO   _ops
OpOverloadTagnondeterministic_seededtagsHigherOrderOperatorrV   _CScriptObjectr   rD   devicer   insertable_tensor_checkrq   add_node_replacementrN   r?   rC   getrg   rh   r<   pop)rE   r   r   rM   rN   flattened_inputsoutrT   n	to_deleterF   s   `         r   rJ   zConstantFolder.run_node   s   ;(""3UX] 3t 3 3 3 3 3 3 !%(-$)DDD77##D)))66t<<f!14B6BB
  
 
 
 
*
 
 
 
 
 	& %% G&&t8@@@%% G&&	EEE%% "	&#D$*DEE	& NN=MNNNNN	&
 %% t{EJ$9::	&	1T[5EEE%%7o%%*K7+
 +
% %%  &&c58011 	J$$$$%%tT%?@@ 	@sEL))	@-0D4G-G-Gd)))cjo.G.G
//44 
~~d## *))%%dC000"("8$)"St{"S"S( + +!!UX]33 "1%%%*%%%%!377bAA @ @	%i0C	4H4HHH*..y$???
r   rn   c                     dS )NTr   )rE   rn   s     r   r   z&ConstantFolder.insertable_tensor_check  s    tr   c                     || j         |<   d S r   )r<   )rE   r   rn   s      r   r   z#ConstantFolder.add_node_replacement!  s    '-t$$$r   c                 v    i }|                      |           t                                          |          S )N)initial_env)insert_placerholder_valuesr:   run)rE   rS   rF   s     r   r   zConstantFolder.run$  s4    (*'',,,ww{{s{+++r   rS   c                     | j         j                            d          D ]}| j        ||<   | j        d S | j         j        j        D ]}|j        | j        pdv r
| j        ||<   d S )Nr"   r   r   )r|   r#   
find_nodesrA   r2   r}   r   rD   )rE   rS   r   s      r   r   z)ConstantFolder.insert_placerholder_values)  s    "---?? 	( 	(A'CFF%-F"( 	- 	-Av$4:;;,A	- 	-r   )FNN)__name__
__module____qualname__rP   rQ   GraphModulerd   r   rz   strr   rR   r;   rH   r   rV   r   rq   dictrB   rJ   r   r   r   r   r   __classcell__)rF   s   @r   r6   r6   P   s)        #(59JN9 9H 9  9  (S	2	9
 'x0E'FG9 
9 9 9 9 9 9(    #%(- #C # # # # # #"*ehm0 *T * * * *X#T%(-ehmAT2T-U # # # #2]UX] ]s ] ] ] ] ] ]~el t    . . .QU . . . .,S , , , , , ,
-d58=#3E.F -4 - - - - - - - -r   r6   constraint_fnc                    t           j        j                                        5  t	          | d          }|                                 |j                                        D ]$\  }}| ||          st          | ||           %g }| j	        
                    d          D ]Y}t          |j                  dk    r?t          | |j                  rt          | |j                   |                    |           Z|D ]}| j	                            |           | j	                                         | j	                                         |                                  d d d            d S # 1 swxY w Y   d S )NT)r7   r!   r   r   )rP   utils_python_dispatch_disable_current_modesr6   r   r<   itemsr1   r#   r   rg   rh   r$   rZ   delattrr   r*   eliminate_dead_codelint	recompile)r   r   cfr   r   erased_paramss         r   constant_foldr   3  s    
	%	<	<	>	>  B$777
 288:: 	; 	;ND((t1D1D(&r4::::H'':'66 	+ 	+D4:!##2t{++ -B,,,$$T***! 	& 	&DH%%%%
$$&&&

+                 s   E E11E58E5Tr7   r8   c                    t           j        j                                        5  t	          | |||          }|                                 | j        j        D ]o}|  ||          rt          |j	        t          <   $t          ||          s||j        v s	||j        v rt          |j	        t          <   [t          |j	        t          <   p	 d d d            d S # 1 swxY w Y   d S )N)r7   r2   r8   )rP   r   r   r   r6   r   r#   r}   
MODULE_TAGr(   META_TAGr4   r<   r?   CONST_MODULE_TAG)r   r7   r2   r8   r   r   s         r   constant_graph_tagr   O  s9    
	%	<	<	>	> 1 1/"7!5	
 
 
 	HN 	1 	1D#/4H4H4N4N/&0	(#&;<<12///2+++&6	(##&0	(##	11 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   B$CCCc                    t          | |||           dt          j        j        dt          fd}| j        j        D ]#}|j        dk    s|j        |pdv r ||           $t          j        	                                }i g }| j        j        D ]x}|j
        t                   t          k    r|                    |fd          }||<   |j        D ]4}	|	j
        t                   t          k    r|                    |            n5y|                    t#          |                     |                                 t          j                            | |          }
|
S )zr
    Construct a GraphModule which corresponds to the part which could be
    constant folded in provided gm.
    r   r   c                     d}| j         D ]!}|j        t                   t          k    rd} n"|st          | j        t          <   |S )NFT)rh   r(   r   r   r   )r   used_to_foldus      r   untagz)run_and_get_constant_graph.<locals>.untag{  sV     	 	Avh#333# 4  	-",DIhr   r!   r   c                     |          S r   r   )xnode_remappings    r   <lambda>z,run_and_get_constant_graph.<locals>.<lambda>  s    ~a7H r   )r   rP   rQ   rR   rd   r#   r}   r   r   Graphr(   r   r   	node_copyrh   r   rs   tupler   r   )r   r7   r2   r8   r   r   	new_graphoutput_nodesnew_nodeusernew_gmr   s              @r   run_and_get_constant_graphr   l  s    
46J  EHM d       7j  TY3H3NB%O%OE$KKK  I9;NL 
 
9X*,,&&t-H-H-H-HII'tJ 	 	Dy"j00##H--- 1 U<(()))NNX!!"i00FMr   )r   N)NNr   )TNN)'r=   typingr   r   r   rP   torch.utils._pytreer   _pytreerK   torch._inductor.freezing_utilsr   torch.utils._ordered_setr   r[   re   r   r   r   r   rz   rQ   r   Target__annotations__r   r   r   rR   r   r   r1   rd   r4   Interpreterr6   r   r   r   r   r   r   <module>r      s        * * * * * * * * * *  $ $ $ $ $ $ $ $ $ D D D D D D / / / / / / y~
 
" 24 T%(-./ 4 4 4#ux}3 # # # # #
        (,	', ',',
(-', u|$', 3-	',
 
', ', ', ',TO
(-O08c0CO	O O O O`- `- `- `- `-UX) `- `- `-J @D Hehm_d%:;< 
   < #15FJ	1 111 $DI.1 #8UX]OT,A#BC	1
 
1 1 1 1> #15FJ	3 333 $DI.3 #8UX]OT,A#BC	3
 X3 3 3 3 3 3r   