
    ϑi(                    ,   S SK Jr  S SKrS SKJr  S SKrS SKJrJr  SSK	J
r
  SSKJrJrJrJrJrJrJrJrJrJr  SS	KJr  SS
KJr  \(       a  S SKJrJr  SSKJr  SSKJr  S r S r!S r"S r# " S S5      r$ " S S\S9r% " S S5      r& " S S\\S9r'g)    )annotationsN)TYPE_CHECKING)
EventGuardevent_register   )convert_meta_to_input_spec)
ENV_SOT_EXPORTCacheInfoCollectorNewSymbolHitRateInfo	SingletonSIRToCodeMapStepInfoManagerSubGraphInfoSubGraphRelationInfolog_do   )export)compile_sir)	InputSpecProgram)StatementIRBuilder)ParametersHolderc                     [         R                  " 5       n U R                  bQ  U R                  n U R                  n[        R
                  R                  R                  U5        U R                  b  MP  g g N)inspectcurrentframef_backf_codepaddle	frameworkcoresot_set_with_graph)framecodes     e/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/jit/sot/symbolic/compile_cache.pytrace_back_framesr'   .   sR      "E
,,
"||006 ,,
"    c                $    U  H
  nSUl         M     g )N )name)output_tensorsoutput_tensors     r&   clear_eager_tensor_namer.   6   s    ' (r(   c                N    U R                  5       R                  S5      u  pUS:H  $ )N.builtin)r+   split)opdialect_nameopnames      r&   _is_builtin_opr6   ;   s$    779??3/L9$$r(   c                V    [        U 5      (       + =(       a    U R                  5       S;  $ )N)z
pd_op.data)r6   r+   )r3   s    r&   _is_computation_opr8   @   s     b!!Ebggi~&EEr(   c                  &    \ rS rSrS rS rS rSrg)UniqueIdGeneratorD   c                    SU l         g )Nr   _idselfs    r&   __init__UniqueIdGenerator.__init__E   s	    r(   c                D    U =R                   S-  sl         U R                   $ Nr   r=   r?   s    r&   generateUniqueIdGenerator.generateH   s    Axxr(   c                "    U R                  5       $ r   )rE   r?   s    r&   __call__UniqueIdGenerator.__call__L   s    }}r(   r=   N)__name__
__module____qualname____firstlineno__rA   rE   rH   __static_attributes__ r(   r&   r:   r:   D   s    r(   r:   c                  $    \ rS rSrSrS rS rSrg)TensorIdAllocatorP   __tensor_id__c                "    [        5       U l        g r   )r:   _id_generatorr?   s    r&   rA   TensorIdAllocator.__init__S   s    .0r(   c                    [        XR                  5      (       d$  [        XR                  U R                  5       5        [	        XR                  5      $ r   )hasattrTENSOR_ID_ATTRsetattrrU   getattr)r@   tensors     r&   allocateTensorIdAllocator.allocateV   s=    v2233F//1C1C1EFv2233r(   )rU   N)rJ   rK   rL   rM   rY   rA   r]   rN   rO   r(   r&   rQ   rQ   P   s    $N14r(   rQ   )	metaclassc                  b    \ rS rSrSrSS jrS rS rS rSS jr	S r
\" S	 5      S
 5       rSrg)FallbackWrapper\   zO
Used to store and call static graph methods generated by paddle.jit.to_static
c                `    Xl         S U l        S U l        X l        X0l        SU l        SU l        g )NFT)compiled_fnpartial_programconcrete_programSIRis_trainingexportedis_first_call)r@   rd   rg   rh   s       r&   rA   FallbackWrapper.__init__a   s2    &# $&!r(   c                  ^  T R                   cu  [        [        U 4S jT R                  R                   5       5      5      nT R
                  R                  U5      u  T l        T l         T R                  T R                   l	        T R                  R                  R                  5       R                  n[        [        [        U5      5      n[!        U5      $ )Nc              3  V   >#    U  H  nTR                   R                  U   v   M      g 7fr   )rg   symbol_meta_map).0symbolr@   s     r&   	<genexpr>-FallbackWrapper.graph_size.<locals>.<genexpr>m   s'      "1 HH,,V4"1s   &))re   r   tuplerg   inputsrd   get_concrete_programrf   rh   trainingmain_programglobal_blockopslistfilterr8   len)r@   
input_specglobal_block_opsnon_builtin_opss   `   r&   
graph_sizeFallbackWrapper.graph_sizej   s    '3 "&((// J   55jA%$,0,<,<D  )00==JJLPPv&8:JKL?##r(   c                v   [        5       R                  [        5      (       d  g / n/ n[        U5      S:X  d   e[	        US   [
        5      (       d   e[        US   5       HX  u  pV[	        U[        R                  5      (       d
   SU 35       e[        5       R                  U5      nUR                  U5        MZ     [        U5       HP  u  pX[	        U[        R                  5      (       d   e[        5       R                  U5      nUR                  U5        MR     [        5       R                  [        X45        g )Nr   r   Expect Tensor, got )r   need_collectr   r|   
isinstancers   	enumerater    TensorrQ   r]   appendattach)	r@   rt   outputsinput_tensor_idsoutput_tensor_idsiarg	tensor_idouts	            r&   collect_new_symbol_hit_rate+FallbackWrapper.collect_new_symbol_hit_rate{   s   ++,@AA6{a&)U++++q	*FAc6==11N5H3NN1)+44S9I##I. +
  (FAc6==1111)+44S9I$$Y/ )
 	 "2	
r(   c           	        [        5       R                  [        5      (       d  g / n/ nUR                  R                  S   nUR                  R                  S   n[        U5      S:X  d   e[        US   [        5      (       d   e[        US   5      [        U5      :X  d   e[        U5      [        U5      :X  d   e[        US   5       H  u  p[        U	[        R                  5      (       d
   SU	 35       e[        5       R                  U	5      n
Xh   R                  nU	R                  n[        R                  " XU5      nUR                  U5        M     [        U5       H  u  p[        U[        R                  5      (       d   e[        5       R                  U5      n
UUR                   R"                  U      R                  nUR                  n[        R                  " XU5      nUR                  U5        M     [        5       R%                  [        U R&                  R(                  UUU R*                  U R-                  5       5        g )Nfxfor   r   r   )r   r   r   programprogram_attrr|   r   rs   r   r    r   rQ   r]   shapeConcreteShapeInfor   _outputsquick_index_mapr   rg   r+   rj   r   )r@   rt   r   partial_program_layerinput_shape_infosoutput_shape_infosforward_input_valuesforward_output_valuesr   r   r   input_ir_shapeinput_real_shapeinput_shape_infor   output_ir_shapeoutput_real_shapeoutput_shape_infos                     r&   collect_subgraph_relation)FallbackWrapper.collect_subgraph_relation   s   ++,@AA4<<II$O 5 = = J J4 P6{a&)U++++6!9~%9!::::7|s#89999q	*FAc6==11N5H3NN1)+44S9I14::N"yy3EE+;  $$%56 +  (FAc6==1111)+44S9I3%..>>qAe  !$		 4 F F,=! %%&78 ) 	 HHMMOO	
r(   c                    [        5       R                  [        5      (       d  g [        5       R                  [        [	        U5      U R                  5       U R                  R                  5        g r   )r   r   r   r   strr   rg   r+   )r@   r   s     r&   collect_subgraph_info%FallbackWrapper.collect_subgraph_info   sG    ++L99LOOHHMM		
r(   c                *   U R                   (       d  g SSKJn  [        5       R	                  U5      nUc
   SU 35       eU" 5       R
                  R                  US5        U" 5       R
                  U==   UR                  R                  5       -  ss'   g )Nr   )OpcodeExecutorCachezCannot find code for SIR: r   )	rj   )opcode_translator.executor.executor_cacher   r   getcompile_time_stats
setdefault_compile_time_counterget_total_time)r@   rg   r   r   r%   s        r&   update_compile_time_info(FallbackWrapper.update_compile_time_info   s    !!	
 ~!!#&C#=cU!CC00;;D!D006!77FFH	
6r(   c                4    SU R                   R                   3$ )NzFallbackWrapper: )rg   r+   )r@   argskwargss      r&   <lambda>FallbackWrapper.<lambda>   s    (9$((--&Ir(   c                  ^ ^^ [        5       R                  (       a
  [        5         [        SU 4S j5        [        SUUU 4S j5        T R                  cX  [        S5         T R                  R                  " T0 TD6u  T l        T l        T R                  T R                  l
        S S S 5        T R                  R                  " T0 TD6n[        U5        [        SS 5        T R                  TU5        T R                  TUT R                  5        T R                  T R                  R                   5        T R#                  T R$                  T R                  5        [&        R(                  " 5       S:w  aA  T R*                  (       d0  [-        T R$                  [&        R(                  " 5       5        ST l        S	T l        U$ ! , (       d  f       GN = f)
Nr   c                 0   > [        ST R                  5      $ )Nz"[FallbackWrapper] start run SIR: 
)printrg   r?   s   r&   r   *FallbackWrapper.__call__.<locals>.<lambda>   s    E?Jr(      c                 h   > [        TR                  R                  " T 0 TD6S   R                  5      $ rD   )r   rd   ru   train_program)r   r   r@   s   r&   r   r      s0    E  55tFvF-r(   z%FallbackWrapper: get_concrete_programc                     [        S5      $ )Nz'[CompileCache] run sir forward success.)r   rO   r(   r&   r   r      s
    ECDr(   r*   TF)r   need_back_tracer'   r   re   r   rd   ru   rf   rh   rv   sot_callr.   r   r   r   rw   r   rg   r	   r   ri   r   rj   )r@   r   r   r   s   ``` r&   rH   FallbackWrapper.__call__   sq    ,,J	
 		
 'CD $$994J6J)(040@0@$$- E &&//@@(D	
 	((w7&&tWd6J6JK""4#8#8#E#EF%%dhh0D0DE2%dmm488^//12 DM"- EDs   !AF??
G)rg   rd   rf   ri   rj   rh   re   N)rh   bool)r   r   )rJ   rK   rL   rM   __doc__rA   r   r   r   r   r   r   rH   rN   rO   r(   r&   ra   ra   \   sB    "$"
*(
T	

 I''r(   ra   c                  `   ^  \ rS rSrSrU 4S jr        SS jr        SS jrSrU =r	$ )CompileSIRCachei  z$
Cache the compiled function of SIR
c                    > [         TU ]  SS9  g )NF)weak)superrA   )r@   	__class__s    r&   rA   CompileSIRCache.__init__  s    e$r(   c                x    UR                  U5      n[        [        U5      /UQ[        U5      PUS   P75      nU$ )z
generate a hash key for a SIR

Args:
    context: The context to compile
    sir_name: The name of the sir to compile
    build_strategy: The build strategy to compile

Returns:
    The hash key of the SIR
rv   )get_sirhashr   id)r@   buildersir_nameparameters_holderr}   r   sirhash_keys           r&   key_fnCompileSIRCache.key_fn	  sG    & ooh'XN
NB'8$9N6*;MN
 r(   c           
         UR                  SS5      nUR                  SS5      n[        [        R                  R	                  [        XU5      U/UUSS9UR                  U5      US   S9$ )z
Generate static graph function

Args:
    context: The context to compile
    sir_name: The name of the sir to compile
    build_strategy: The build strategy to compile

Returns:
    The static graph function
build_strategyNbackendT)r}   r   r   
full_graphrv   )rh   )r   ra   r    jit	to_staticr   r   )r@   r   r   r   r}   r   r   r   s           r&   value_fnCompileSIRCache.value_fn#  sx    &  $4d;**Y-JJ  G/@A&<- !  OOH%z*

 
	
r(   rO   )r   r   r   r   r   r   r}   ztuple[InputSpec | None, ...])
rJ   rK   rL   rM   r   rA   r   r   rN   __classcell__)r   s   @r&   r   r     sh    %#  ,	
 14
#
 
 ,	

 1
 
r(   r   )(
__future__r   r   typingr   r    paddle.jit.profilerr   r   
infer_metar   utilsr	   r
   r   r   r   r   r   r   r   r   r   interpreterr   paddle.staticr   r   r   r   statement_irr   r'   r.   r6   r8   r:   rQ   ra   r   rO   r(   r&   <module>r      s    #     : 3    $0+.7 
%
F	 		4) 	4b bJA
ey A
r(   