
    3j=                     0   % S SK r S SKrS SKJr  S SKJr  S SKrS SKJs  J	r
  S SKJr  S SKJr  \R                  R                   rSrSrSr/ q\\R,                  R.                  R0                     \S	'   S
\R,                  R.                  R0                  SS4S jrSS jr  SS\R,                  R8                  S\R,                  R:                  S\R<                  S-  S\S-  SS4
S jjr S\R,                  R:                  S\\   S-  S\!4S jr" " S S\R,                  RF                  5      r$ SS\R,                  R8                  S\\R,                  R:                  /\!4   S-  SS4S jjr%   S S\R,                  R8                  S\!S\\   S-  S\\R,                  R:                  /\!4   S-  SS4
S jjr&   S S\R,                  R8                  S\!S\\   S-  S\\R,                  R:                  /\!4   S-  S\R,                  R8                  4
S jjr'g)!    N)Callable)Any)maybe_set_is_frozen_param)
OrderedSetMODULE_TYPE_MAIN_MODULE_CONST_MODULE_dont_constant_foldopreturnc                 .    [         R                  U 5        g N)r
   appendr   s    Z/home/wildlama/miniconda3/lib/python3.13/site-packages/torch/_inductor/constant_folding.pyadd_dont_constant_foldr      s    r"    c                  ,    [         R                  5         g r   )r
   clear r   r   clear_dont_constant_foldr      s    r   gmnodeconstantnamec                 ~   U R                   nU(       a  UnOL[        U S5      (       d  SU l        U R                  n SU 3n[        X5      (       d  OUS-  nM  US-   U l        UR                  U5         Ub  UR	                  SUS0 5      nOUR	                  SUS0 5      nUR                  U5        UR                  R                  UR                  5        UR                  U5        UR                  Ul	        S S S 5        Ub)  U R                  XR5        [        XU5        [        U5        g g ! , (       d  f       N;= f)N_frozen_param_countr   _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_constantr0   "   s&    	Ar011%&B"""&qc*H2((FA	  "#Q	
		D	!]]:xRHN ]]=(BKN"">2""499-	T"ii 
" 
8.h'!(+  
"	!s   4BD..
D<lifted_constant_namesc                 ^    U R                   S:H  =(       d    U R                  U=(       d    S;   $ )Nr    r   )r   r   )r   r1   s     r   is_const_sourcer3   L   s'     77j NDII2G2M2$NNr   c                     ^  \ rS rSr   SS\R
                  R                  S\S\\	   S-  S\
\R
                  R                  /\4   S-  SS4
U 4S jjjrS\4S	 jrS
\R
                  R                  S\4U 4S jjrS
\R
                  R                   R                  S\4S jrS\\R
                  R                  \\R
                  R                     4   4S jr\R*                  S
\R
                  R                  S\4U 4S jj5       rS\R.                  S\4S jrS
\R
                  R                  S\R.                  SS4S jrS\4U 4S jjrS\\R
                  R                  \4   SS4S jrSrU =r$ )ConstantFolderR   Nr   skip_constructorsr1   skip_folding_node_fnr   c                    > [         TU ]  U5        0 U l        [        R                  " 5       U l        [        5       U l        X l        U R                  5       U l
        X0l        [        5       U l        X@l        g r   )super__init__node_replacementscollectionsCounterreplaced_usesobjectunknown_valuer7   node_to_last_non_output_useuser_to_last_usesr1   deferred_valuer8   )selfr   r7   r1   r8   	__class__s        r   r;   ConstantFolder.__init__S   sd     	;=7B7J7J7L#X'8 "&!A!A!C%:"$h$8!r   c                     g)NFr   )rE   s    r   _support_dynamic_shape%ConstantFolder._support_dynamic_shapeg   s    r   r   c                   > U R                   c  [        TU ]	  U5      $ U R                  b"  U R                  U5      (       a  U R                  $ [
        R                  " UR                  0 UR                  D6nU H}  n[        U[        R                  R                  5      (       d  M.  UR                  U R                   =(       d    S;  d  MS  U R                  U   U R                  Ld  Mq  U R                  s  $    U R                  $ )Nr   )r1   r:   run_noder8   rA   pytreearg_tree_leavesargskwargs
isinstancetorchfxNoder   envrD   )rE   r   flattened_node_inpsinprF   s       r   _deduce_valueConstantFolder._deduce_valuek   s    %%-7#D)) $$0T5N5Nt5T5T%%%$44diiO4;;O&C3..HHT%?%?%E2FHHSM)<)<<))) ' """r   c                    S[         R                  R                  R                  S[        4S jnU" U5      (       d}  UR
                  [         R                  R                  R                  R                  L ak  [        UR                  5      S:X  aR  U" [        [        UR                  5      5      5      (       a)  [        UR                  S   U R                   5      (       a  g[#        [         R                  R$                  SS 5      S LnU(       a  UR
                  [         R                  R$                  R&                  R                  [         R                  R$                  R(                  R                  [         R                  R$                  R(                  R*                  [         R                  R$                  R,                  R.                  4;   a  gUR
                  [0        ;   a  gg)	Nr   r   c                    U R                   [        R                  R                  R                  R
                  L =(       a    [        U R                  S   [        R                  R                  5      =(       a    SU R                  S   R                  ;   =(       a^    U R                  S   R                  S   R                  [        R                  :H  =(       a     U R                  S   [        R                  :H  $ )Nr   valr   )targetrR   opsprimsconvert_element_typedefaultrQ   rO   rS   rT   r'   dtypeint8bfloat16)r   s    r   is_woq_int8_pattern5ConstantFolder.is_impure.<locals>.is_woq_int8_pattern}   s    uyyCCKKK 3tyy|UXX]];3TYYq\...3 IIaL%%e,22ejj@3 IIaLENN2r   r   r   Tdequantize_per_channelF)rR   rS   r   rT   boolr]   r^   atenpermutera   lenusersnextiterr3   rO   r1   getattrquantized_decomposedrg   dequantize_per_tensortensorr`   no_fuser
   )rE   r   re   quant_registereds       r   	is_impureConstantFolder.is_impure|   sV   	ehhmm&8&8 	T 	  %%uyy~~55===

Oq('T$**-=(>??IIaL&&
 
  EII224LdS 	 II**AAIIII**@@HHII**@@GGII**??GG	0
 !
 ;;--r   c                   ^^^ [         R                  " [        5      m[        [        R
                  R                     " 5       m[        [        [        U R                  R                  R                  5      5      5      n[        U R                  R                  R                  5       H  mTR                  S:X  a  M  S[        R
                  R                  SS 4UUU4S jjn[        R                  " [        R
                  R                  UTR                   TR"                  45        [%        TR&                  5      S:X  d  M  UTR&                  ;   d  M  TT   R)                  T5        M     T$ )NoutputrW   r   c                 ^   > U T;   a  g TR                  U 5        TT   R                  U 5        g r   )addr   )rW   last_non_output_user   	seen_usess    r   add_use;ConstantFolder.node_to_last_non_output_use.<locals>.add_use   s-    )#c"#D)005r   r   )r=   defaultdictlistr   rR   rS   rT   rm   rn   reversedmoduler"   nodesr]   rM   tree_map_only_rO   rP   rk   rl   r   )rE   output_noder}   r{   r   r|   s      @@@r   rB   *ConstantFolder.node_to_last_non_output_use   s    )55d;uxx}}-/	4):):)@)@ ABCT[[..445D{{h&6UXX]] 6t 6 6 !!%((--499dkk:RS 4::!#tzz(A#D)006! 6$ #"r   c                   >^  UR                   S:X  al  S[        R                  R                  SS 4U 4S jjn[        R
                  " [        R                  R                  X!R                  5        [        T
T ]!  U5      $ T R                  U5      u  p4[        R                  " U0 UD6n[        U 4S jU 5       5      (       a  T R                  $ UR                  S:X  a3  UR                   [        R                  R                   L a  T R                  $ UR                  S:X  a  UR"                  S:X  a  T R                  $ T R$                  (       a>  ['        UT R(                  5      (       d#  [        S U 5       5      (       d  T R                  $ [+        UR                   [        R,                  R.                  5      (       a>  [        R0                  R2                  UR                   R4                  ;   a  T R                  $ UR                  S:X  a?  [+        UR                   [        R,                  R6                  5      (       a  T R                  $ T R9                  U5      n[+        U[        R:                  R<                  [        R>                  R@                  RB                  45      (       a  U$ UT R                  L a  T R                  $ ['        UT R(                  5      (       Gd  [+        U[        RD                  5      (       d  UT RF                  L GaR  UT RF                  La  URH                  RJ                  S	:X  a  U$ T RM                  U5      (       d  U$ T RO                  U5      (       a  T R                  $ T RQ                  X5        [        R                  " UR                  0 URR                  D6nU HE  n[+        U[        R                  R                  5      (       d  M.  T RT                  U==   S
-  ss'   MG     T RV                  RY                  U/ 5       HG  n	T RT                  U	   [[        U	R\                  5      :X  d  M+  T R^                  Ra                  U	S 5        MI     U$ )Nrx   argr   c                 8   > TR                   TR                  U '   g r   )rA   rU   )r   rE   s    r   set_env(ConstantFolder.run_node.<locals>.set_env   s     $ 2 2r   c              3      >#    U  H;  n[        TR                  5      [        U5      L =(       a    TR                  U:H  v   M=     g 7fr   )typerA   ).0input_rE   s     r   	<genexpr>*ConstantFolder.run_node.<locals>.<genexpr>   s?      
* ##$V4U9K9Kv9UU*s   AAcall_function&triton_kernel_wrapper_functional_proxyc              3   V   #    U  H  n[        U[        R                  5      v   M!     g 7fr   )rQ   rR   Tensor)r   es     r   r   r      s      N=M
1ell33=Ms   ')r'   r   )1r]   rR   rS   rT   rM   r   rO   r:   rL   fetch_args_kwargs_from_envrN   anyrA   r   ri   _efficientzerotensorra   r   r7   r3   r1   rQ   _ops
OpOverloadTagnondeterministic_seededtagsHigherOrderOperatorrX   _CScriptObject_libraryfake_class_registryFakeScriptObjectr   rD   devicer   insertable_tensor_checkru   add_node_replacementrP   r?   rC   getrk   rl   r<   pop)rE   r   r   rO   rP   flattened_inputsoutrV   n	to_deleterF   s   `         r   rL   ConstantFolder.run_node   sn   ;;("3UXX]] 3t 3 !!%((--))D7#D))66t<!114B6B
  
*
 
 
 %%% GG&t88@@@%%% GG&		EE%%% ""#D$*D*DEEN=MNNN%%% t{{EJJ$9$9::		11T[[5E5EE%%%77o%*KK77+
 +
 %%%  &%%22CC
 
 J$$$$%%%tT%?%?@@sELL))SD4G4G-G 4...JJOOv-
//  
~~d##)))%%d0"("8"8$))"St{{"S(!!UXX]]33""1%*%	 ) "3377bA	%%i0C	4HH**..y$? B 
r   rr   c                     g)NTr   )rE   rr   s     r   r   &ConstantFolder.insertable_tensor_check,  s    r   c                      X R                   U'   g r   )r<   )rE   r   rr   s      r   r   #ConstantFolder.add_node_replacement/  s    '-t$r   c                 D   > 0 nU R                  U5        [        TU ]	  US9$ )N)initial_env)insert_placerholder_valuesr:   run)rE   rU   rF   s     r   r   ConstantFolder.run2  s'    (*'',w{s{++r   rU   c                 D   U R                   R                  R                  SS9 H  nU R                  X'   M     U R                  c  g U R                   R                  R
                   H6  nUR                  U R                  =(       d    S;   d  M(  U R                  X'   M8     g )Nr!   r   r   )r   r"   
find_nodesrA   r1   r   r   rD   )rE   rU   r   s      r   r   )ConstantFolder.insert_placerholder_values7  s    ""---?A''CF @%%-""((Avv$44:;,, )r   )rD   r1   r<   r?   r7   r8   rA   rC   )FNN)__name__
__module____qualname____firstlineno__rR   rS   GraphModulerh   r   strr   rT   r;   rI   r   rX   r   ru   dictrB   typing_extensionsoverriderL   r   r   r   r   r   __static_attributes____classcell__)rF   s   @r   r5   r5   R   s    #(26GK9HH  9  9  $Cy4/	9
 ''<=D9 
9 9( #%((-- #C #"*ehhmm00 *T *X#T%((--ehhmmAT2T-U #2 hUXX]] hs h  hTell t . . .QU .,S ,
-d588==#3E.F -4 - -r   r5   constraint_fnc                    [         R                  R                  R                  5          [	        U SS9nUR                  5         UR                  R                  5        H#  u  p4Ub  U" U5      (       d  M  [        XU5        M%     / nU R                  R                  SS9 H^  n[        UR                  5      S:X  d  M  [        XR                  5      (       a  [        XR                  5        UR!                  U5        M`     U H  nU R                  R#                  U5        M      U R                  R%                  5         U R                  R'                  5         U R)                  5         S S S 5        g ! , (       d  f       g = f)NT)r7   r    r   r   )rR   utils_python_dispatch_disable_current_modesr5   r   r<   itemsr0   r"   r   rk   rl   r#   r]   delattrr   r)   eliminate_dead_codelint	recompile)r   r   cfr   r   erased_paramss         r   constant_foldr   A  s    
	%	%	<	<	>B$7
 2288:ND(t1D1D&r: ;
 HH'':'6D4::!#2{{++B,$$T*	 7 "DHH% " 	$$&

+ 
?	>	>s   BE3>B,E33
Fr7   r8   c                    [         R                  R                  R                  5          [	        U UUUS9nUR                  5         U R                  R                   H  nUb&  U" U5      (       a  [        UR                  [        '   M,  [        XR5      (       d  XTR                  ;   d  XTR                  ;   a  [        UR                  [        '   Ms  [        UR                  [        '   M     S S S 5        g ! , (       d  f       g = f)N)r7   r1   r8   )rR   r   r   r   r5   r   r"   r   
MODULE_TAGr'   META_TAGr3   r<   r?   CONST_MODULE_TAG)r   r7   r1   r8   r   r   s         r   constant_graph_tagr   ]  s     
	%	%	<	<	>/"7!5	
 	HHNND#/4H4N4N&0		(#<<///+++&6		(#&0		(# # 
?	>	>s   CC33
Dc                   ^ [        XX#5        S[        R                  R                  S[        4S jnU R
                  R                   H6  nUR                  S:X  d  UR                  U=(       d    S;   d  M.  U" U5        M8     [        R                  R                  5       n0 m/ nU R
                  R                   H}  nUR                  [           [        :X  a  M   UR                  UU4S j5      nUTU'   UR                   H2  n	U	R                  [           [        :X  d  M   UR                  U5          M{     M     UR!                  [#        U5      5        UR%                  5         [        R                  R'                  X5      n
U
$ )zf
Construct a GraphModule which corresponds to the part which could be
constant folded in provided gm.
r   r   c                     SnU R                    H"  nUR                  [           [        :X  d  M   Sn  O   U(       d  [        U R                  [        '   U$ )NFT)rl   r'   r   r   r   )r   used_to_foldus      r   untag)run_and_get_constant_graph.<locals>.untag  sH    Avvh#33#  ",DIIhr   r    r   c                    > TU    $ r   r   )xnode_remappings    r   <lambda>,run_and_get_constant_graph.<locals>.<lambda>  s
    ~a7Hr   )r   rR   rS   rT   rh   r"   r   r   r   Graphr'   r   r   	node_copyrl   r   rx   tupler   r   )r   r7   r1   r8   r   r   	new_graphoutput_nodesnew_nodeusernew_gmr   s              @r   run_and_get_constant_graphr   z  s-    
4EHHMM d  77j TYY3H3NB%O$K   I9;NL99X*,&&t-HI'tJJDyy"j0##H-   U<()NNXX!!"0FMr   )r   N)NNr   )TNN)(r=   r   collections.abcr   typingr   rR   torch.utils._pytreer   _pytreerM   torch._inductor.freezing_utilsr   torch.utils._ordered_setr   r^   ri   r   r   r   r
   r   rS   r   Target__annotations__r   r   r   rT   r   r   r0   rh   r3   Interpreterr5   r   r   r   r   r   r   <module>r      sQ     $   $ $ D / yy~~
 
" 24 T%((--../ 4#uxx}}33 # #
  %)	',',
((--', llT!', *	',
 
',TO
((--O04S	D0@O	Ol-UXX)) l-b =AUXX]]OT12T9 
< #.2CG	111  9t+1 #EHHMM?D#89D@	1
 
1> #.2CG	333  9t+3 #EHHMM?D#89D@	3
 XX3r   