
    x-j                     $   d dl mZmZ d dlmZ ddlmZmZm	Z	  e	d           G d de                      Z
 e	d           G d	 d
e                      Z e	d           G d de                      Z e	d           G d de                      Z e	d           G d de                      Z e	d           G d de                      Z e	d           G d de                      Z e	d           G d de                      Z e	d           G d de                      Z e	d            G d! d"e                      Z e	d#           G d$ d%e                      Zd& Z e	d'           G d( d)e                      Zd*S )+    )_apply_passcore)Executor   )CPPPassWrapperPassTyperegister_passfuse_elewise_add_actc                   :     e Zd Z fdZed             Zd Z xZS )FuseElementwiseAddActPassc                 H    t                                                       d S Nsuper__init__self	__class__s    b/var/www/html/banglarbhumi/venv/lib/python3.11/site-packages/paddle/distributed/passes/cpp_pass.pyr   z"FuseElementwiseAddActPass.__init__           c                     dS )Nfuse_elewise_add_act_pass r   s    r   cpp_namez"FuseElementwiseAddActPass.cpp_name   s    **r   c                     t           j        S r   r   
FUSION_OPTr   s    r   _typezFuseElementwiseAddActPass._type!       ""r   __name__
__module____qualname__r   propertyr   r    __classcell__r   s   @r   r   r      sb             + + X+# # # # # # #r   r   fuse_bn_actc                   :     e Zd Z fdZed             Zd Z xZS )FuseBatchNormActPassc                 H    t                                                       d S r   r   r   s    r   r   zFuseBatchNormActPass.__init__'   r   r   c                     dS )Nfuse_bn_act_passr   r   s    r   r   zFuseBatchNormActPass.cpp_name*   s    !!r   c                     t           j        S r   r   r   s    r   r    zFuseBatchNormActPass._type.   r!   r   r"   r(   s   @r   r+   r+   %   sb             " " X"# # # # # # #r   r+   fuse_bn_add_actc                   :     e Zd Z fdZed             Zd Z xZS )FuseBatchNormAddActPassc                 H    t                                                       d S r   r   r   s    r   r   z FuseBatchNormAddActPass.__init__4   r   r   c                     dS )Nfuse_bn_add_act_passr   r   s    r   r   z FuseBatchNormAddActPass.cpp_name7       %%r   c                     t           j        S r   r   r   s    r   r    zFuseBatchNormAddActPass._type;   r!   r   r"   r(   s   @r   r2   r2   2   b             & & X&# # # # # # #r   r2   fuse_relu_depthwise_convc                   :     e Zd Z fdZed             Zd Z xZS )FuseReluDepthwiseConvPassc                 H    t                                                       d S r   r   r   s    r   r   z"FuseReluDepthwiseConvPass.__init__A   r   r   c                     dS )Nfuse_relu_depthwise_conv_passr   r   s    r   r   z"FuseReluDepthwiseConvPass.cpp_nameD   s    ..r   c                     t           j        S r   r   r   s    r   r    zFuseReluDepthwiseConvPass._typeH   r!   r   r"   r(   s   @r   r;   r;   ?   sb             / / X/# # # # # # #r   r;   fused_attentionc                   :     e Zd Z fdZed             Zd Z xZS )FusedAttentionPassc                 H    t                                                       d S r   r   r   s    r   r   zFusedAttentionPass.__init__N   r   r   c                     dS )Nfused_attention_passr   r   s    r   r   zFusedAttentionPass.cpp_nameQ   r6   r   c                     t           j        S r   r   r   s    r   r    zFusedAttentionPass._typeU   r!   r   r"   r(   s   @r   rB   rB   L   r8   r   rB   fused_feedforwardc                   :     e Zd Z fdZed             Zd Z xZS )FusedFeedforwardPassc                 H    t                                                       d S r   r   r   s    r   r   zFusedFeedforwardPass.__init__[   r   r   c                     dS )Nfused_feedforward_passr   r   s    r   r   zFusedFeedforwardPass.cpp_name^   s    ''r   c                     t           j        S r   r   r   s    r   r    zFusedFeedforwardPass._typeb   r!   r   r"   r(   s   @r   rI   rI   Y   sb             ( ( X(# # # # # # #r   rI   fuse_gemm_epiloguec                   :     e Zd Z fdZed             Zd Z xZS )FuseGemmEpiloguePassc                 H    t                                                       d S r   r   r   s    r   r   zFuseGemmEpiloguePass.__init__h   r   r   c                     dS )Nfuse_gemm_epilogue_passr   r   s    r   r   zFuseGemmEpiloguePass.cpp_namek   s    ((r   c                     t           j        S r   r   r   s    r   r    zFuseGemmEpiloguePass._typeo   r!   r   r"   r(   s   @r   rP   rP   f   sb             ) ) X)# # # # # # #r   rP   
fuse_adamwc                   :     e Zd Z fdZed             Zd Z xZS )FuseAdamWPassc                 H    t                                                       d S r   r   r   s    r   r   zFuseAdamWPass.__init__u   r   r   c                     dS )Nfuse_adamw_op_passr   r   s    r   r   zFuseAdamWPass.cpp_namex   s    ##r   c                     t           j        S r   r   r   s    r   r    zFuseAdamWPass._type|   r!   r   r"   r(   s   @r   rW   rW   s   sb             $ $ X$# # # # # # #r   rW   fuse_dot_product_attentionc                   :     e Zd Z fdZed             Zd Z xZS )FuseDotProductAttentionPassc                 H    t                                                       d S r   r   r   s    r   r   z$FuseDotProductAttentionPass.__init__   r   r   c                     dS )Nfuse_dot_product_attention_passr   r   s    r   r   z$FuseDotProductAttentionPass.cpp_name   s    00r   c                     t           j        S r   r   r   s    r   r    z!FuseDotProductAttentionPass._type   r!   r   r"   r(   s   @r   r^   r^      sb             1 1 X1# # # # # # #r   r^   fuse_optimizerc                   :     e Zd Z fdZed             Zd Z xZS )FuseOptimizerPassc                 H    t                                                       d S r   r   r   s    r   r   zFuseOptimizerPass.__init__   r   r   c                 
    g dS )N)fuse_adam_op_passfuse_sgd_op_passfuse_momentum_op_passr   r   s    r   r   zFuseOptimizerPass.cpp_name   s    
 
 
 	
r   c                     t           j        S r   r   r   s    r   r    zFuseOptimizerPass._type   r!   r   r"   r(   s   @r   re   re      sb             
 
 X
# # # # # # #r   re   fuse_resunitc                   :     e Zd Z fdZed             Zd Z xZS )FuseResUnitPassc                 H    t                                                       d S r   r   r   s    r   r   zFuseResUnitPass.__init__   r   r   c                     dS )Nfuse_resunit_passr   r   s    r   r   zFuseResUnitPass.cpp_name   s    ""r   c                     t           j        S r   r   r   s    r   r    zFuseResUnitPass._type   r!   r   r"   r(   s   @r   rn   rn      sb             # # X## # # # # # #r   rn   c                     t          j                    |          }d |                    d          D             }|                    |           d                    |          t          j                    | <   d S )Nc                 ^    g | ]*}|                                 |                                 +S r   )strip).0vs     r   
<listcomp>z%_set_cinn_op_flag.<locals>.<listcomp>   s-    @@@Aaggii@aggii@@@r   ;)r   globalssplitextendjoin)	flag_name	extra_opsvaluess      r   _set_cinn_op_flagr      se    \^^I&F@@c!2!2@@@F
MM) # 0 0DLNN9r   
build_cinnc                   @     e Zd Z fdZed             Zd Zd Z xZS )BuildCINNPassc                     t                                                       |                     dg            |                     dg            d S )N	allow_opsdeny_ops)r   r   set_attrr   s    r   r   zBuildCINNPass.__init__   sG    k2&&&j"%%%%%r   c                     dS )Nbuild_cinn_passr   r   s    r   r   zBuildCINNPass.cpp_name   s      r   c                     t           j        S r   )r   CALC_OPTr   s    r   r    zBuildCINNPass._type   s      r   c                    dt          j                    v s
J d            t          j                    d         }t          j                    d         }	 t          d|                     d                     t          d|                     d                     |                     dg           }|                     dg           }|                     dd	          }|r.t	          j        |||g           }	t	          j        |	|d
          }	nt	          j        ||d
          }	t          |	|| j        i | j	                   t	          j
        |	          }	t          j        |	j                  }	|                    |	           |t          j                    d<   |t          j                    d<   d S # |t          j                    d<   |t          j                    d<   w xY w)NFLAGS_allow_cinn_opsz.PaddlePaddle is not compiled with CINN supportFLAGS_deny_cinn_opsr   r   feed
fetch_listprune_programTfetch)r   rz   r   get_attrr   _prune_program_add_fetch_ops_apply_cpp_passr   cpp_attr_types_remove_fetch_opsProgramDescdesc_rebuild_from_desc)
r   main_programstartup_programcontextold_allow_opsold_deny_opsr   r   r   tmp_main_programs
             r   _apply_single_implz BuildCINNPass._apply_single_impl   s   %777< 877 '=>|~~&;<(	A&k(B(B   3T]]:5N5NOOO==,,D|R88J MM/4@@M #+#: $
B$ $  $,#:$j'$ $  
 $,#: *g$ $   #    (9:JKK#/0@0EFF++,<=== 6CDLNN124@DLNN0111 6CDLNN124@DLNN01@@@@s   D-F. ..G)	r#   r$   r%   r   r&   r   r    r   r'   r(   s   @r   r   r      sx        & & & & &
 ! ! X!! ! !.A .A .A .A .A .A .Ar   r   N)paddle.frameworkr   r   r   paddle.staticr   	pass_baser   r   r	   r   r+   r2   r;   rB   rI   rP   rW   r^   re   rn   r   r   r   r   r   <module>r      s          # " " " " " > > > > > > > > > > %&&	# 	# 	# 	# 	# 	# 	# '&	# }	# 	# 	# 	# 	#> 	# 	# 	#  !!	# 	# 	# 	# 	#n 	# 	# "!	# )**	# 	# 	# 	# 	# 	# 	# +*	#  !!	# 	# 	# 	# 	# 	# 	# "!	# "##	# 	# 	# 	# 	#> 	# 	# $#	# #$$	# 	# 	# 	# 	#> 	# 	# %$	# |	# 	# 	# 	# 	#N 	# 	# 	# +,,	# 	# 	# 	# 	#. 	# 	# -,	#   # # # # # # # ! #: ~	# 	# 	# 	# 	#n 	# 	# 	#1 1 1 |;A ;A ;A ;A ;AN ;A ;A ;A ;A ;Ar   