
    i4                      d   d dl Z  G d de j                  j                        Z G d de j                  j                        Z G d de      Z G d d	e      Z G d
 de      Z G d de j                  j                        Z G d de j                  j                        Z	e j                  fdZy)    Nc                        e Zd Zd fdZej
                  j                  d        Zej
                  j                  d        Zej
                  j                  d        Z	 xZ
S )MkldnnLinearc                    t         |           | j                  d|j                  j	                  |             |j
                  +| j                  d|j
                  j	                                y | j                  dt        j                  |j                  j                  d      gt        j                        j	                                y )Nweightbiasr   dtype)
super__init__register_bufferr   	to_mkldnnr   torchzerossizefloatselfdense_moduler	   	__class__s      L/var/www/html/engine/venv/lib/python3.12/site-packages/torch/utils/mkldnn.pyr   zMkldnnLinear.__init__   s    X|':':'D'DU'KL(   ):):)D)D)FG   \0055a89MWWY[    c                     | j                   j                         | j                  j                         | j                  fS Nr   to_denser   trainingr   s    r   __getstate__zMkldnnLinear.__getstate__   -    $$&		(:(:(<dmmLLr   c                 x    |d   j                         | _        |d   j                         | _        |d   | _        y Nr         r   r   r   r   r   states     r   __setstate__zMkldnnLinear.__setstate__   5    Ah((*!H&&(	ar   c                     |j                   r|n|j                         }t        j                  j                  j                  || j                  | j                        }|j                   r|}|S |j                         }|S r   )		is_mkldnnr   r   _C_nnmkldnn_linearr   r   r   r   xx_mkldnny_mkldnnys        r   forwardzMkldnnLinear.forward   s^    188<<--hTYYOH *2):):)<r   returnN__name__
__module____qualname__r   r   jitscript_methodr   r'   r3   __classcell__r   s   @r   r   r      se    [ YYM M YY! !
 YY r   r   c                        e Zd ZdZg dZd fdZej                  j                  d        Z	ej                  j                  d        Z
 xZS )_MkldnnConvNdz-Common base of MkldnnConv1d and MkldnnConv2d.)stridepaddingdilationgroupsc                    t         |           |j                  | _        |j                  | _        |j                  | _        |j
                  | _        |j                  +| j                  d|j                  j                                y | j                  dt        j                  |j                  j                  d      gt        j                        j                                y )Nr   r   r   )r
   r   r@   rA   rB   rC   r   r   r   r   r   r   r   r   r   r   r   s     r   r   z_MkldnnConvNd.__init__*   s    "))#++$--"))(  ):):)D)D)FG
   \0055a89MWWY[r   c                     | j                   j                         | j                  j                         | j                  fS r   r   r   s    r   r   z_MkldnnConvNd.__getstate__<   r   r   c           	          t        j                  || j                  | j                  | j                  | j
                  | j                  | j                        S r   )r   mkldnn_convolutionr   r   rA   r@   rB   rC   r   r/   s     r   r3   z_MkldnnConvNd.forward@   sB    ''KKIILLKKMMKK 	r   r4   )r7   r8   r9   __doc____constants__r   r   r:   r;   r   r3   r<   r=   s   @r   r?   r?   %   sO    7?M[$ YYM M YY r   r?   c                   X     e Zd Zd fdZej
                  j                  d        Z xZS )MkldnnConv1dc                 z    t         |   |       | j                  d|j                  j	                  |             y Nr   r
   r   r   r   r   r   s      r   r   zMkldnnConv1d.__init__M   s1    &X|':':'D'DU'KLr   c                 x    |d   j                         | _        |d   j                         | _        |d   | _        y r!   r$   r%   s     r   r'   zMkldnnConv1d.__setstate__R   r(   r   r4   	r7   r8   r9   r   r   r:   r;   r'   r<   r=   s   @r   rM   rM   L   s'    M
 YY! !r   rM   c                   X     e Zd Zd fdZej
                  j                  d        Z xZS )MkldnnConv2dc           
          t         |   |       | j                  dt        j                  j
                  j                  |j                  j                  |      | j                  | j                  | j                  | j                               y rO   )r
   r   r   r   r+   r,   mkldnn_reorder_conv2d_weightr   r   rA   r@   rB   rC   r   s      r   r   zMkldnnConv2d.__init__Z   e    &Xuxx||'P'P))%0LLKKMMKK( 	r   c                    t         j                  j                  j                  |d   j	                         | j
                  | j                  | j                  | j                        | _	        |d   j	                         | _
        |d   | _        y r!   )r   r+   r,   rV   r   rA   r@   rB   rC   r   r   r   r%   s     r   r'   zMkldnnConv2d.__setstate__d   i    hhll??!H LLKKMMKK !H&&(	ar   r4   rR   r=   s   @r   rT   rT   Y   &     YY! !r   rT   c                   X     e Zd Zd fdZej
                  j                  d        Z xZS )MkldnnConv3dc           
          t         |   |       | j                  dt        j                  j
                  j                  |j                  j                  |      | j                  | j                  | j                  | j                               y rO   )r
   r   r   r   r+   r,   mkldnn_reorder_conv3d_weightr   r   rA   r@   rB   rC   r   s      r   r   zMkldnnConv3d.__init__p   rW   r   c                    t         j                  j                  j                  |d   j	                         | j
                  | j                  | j                  | j                        | _	        |d   j	                         | _
        |d   | _        y r!   )r   r+   r,   r^   r   rA   r@   rB   rC   r   r   r   r%   s     r   r'   zMkldnnConv3d.__setstate__z   rY   r   r4   rR   r=   s   @r   r\   r\   o   rZ   r   r\   c                        e Zd ZddgZd fdZej                  j                  d        Zej                  j                  d        Z	ej                  j                  d        Z
 xZS )MkldnnBatchNormexponential_average_factorepsc                 h   t         |           |j                  rt        d      |j                  st        d      |j
                  st        d      |j                  d| _        n|j                  | _        |j                  | _        | j                  d|j                  j                                | j                  d|j                  j                                | j                  d|j                  j                                | j                  d|j                  j                                y )	Nz4Only support eval mode batchnorm for mkldnn path nowz9Only support track_running_stats=True for mkldnn path nowz,Only support affine=True for mkldnn path nowg        r   r   running_meanrunning_var)r
   r   r   AssertionErrortrack_running_statsaffinemomentumrb   rc   r   r   r   r   re   rf   rE   s     r   r   zMkldnnBatchNorm.__init__   s       !WXX// !\]]"" !OPP  (.1D+.:.C.CD+##X|':':'D'D'FGV\%6%6%@%@%BC^\-F-F-P-P-RS]L,D,D,N,N,PQr   c                     | j                   j                         }| j                  j                         }| j                  j                         }| j                  j                         }||||| j
                  fS r   )r   r   r   re   rf   r   )r   r   r   re   rf   s        r   r   zMkldnnBatchNorm.__getstate__   sc    %%'yy!!#((113&&//1lKGGr   c                     |d   j                         | _        |d   j                         | _        |d   j                         | _        |d   j                         | _        |d   | _        y )Nr   r"   r#         )r   r   r   re   rf   r   r%   s     r   r'   zMkldnnBatchNorm.__setstate__   s_    Ah((*!H&&(	!!H..0 8--/ar   c                     t        j                  || j                  | j                  | j                  | j
                  d| j                  | j                  d	      S )NF)r   
batch_normr   r   re   rf   rb   rc   rI   s     r   r3   zMkldnnBatchNorm.forward   sN    KKII++HH

 
	
r   r4   )r7   r8   r9   rK   r   r   r:   r;   r   r'   r3   r<   r=   s   @r   ra   ra      so    159MR* YYH H YY! ! YY
 
r   ra   c                        e Zd Zd fdZej
                  j                  d        Zej
                  j                  d        Zej
                  j                  d        Z	 xZ
S )MkldnnPreluc                 x    t         |           | j                  d|j                  j	                  |             y rO   rP   r   s      r   r   zMkldnnPrelu.__init__   s/    X|':':'D'DU'KLr   c                 N    | j                   j                         | j                  fS r   )r   r   r   r   s    r   r   zMkldnnPrelu.__getstate__   s    $$&66r   c                 H    |d   j                         | _        |d   | _        y )Nr   r"   )r   r   r   r%   s     r   r'   zMkldnnPrelu.__setstate__   s!    Ah((*ar   c                     |j                   r|n|j                         }t        j                  || j                        }|j                   r|}|S |j                         }|S r   )r*   r   r   prelur   r   r.   s        r   r3   zMkldnnPrelu.forward   sN    1;;x5H *2):):)<r   r4   r6   r=   s   @r   rr   rr      sc    M YY7 7 YY! ! YY r   rr   c                     |t         j                  t         j                  t         j                  fvrt	        d      d fd | |      S )Nz6MKLDNN only support float, bfloat16, and half path nowc                 x   t        | t        j                  j                        rt	        | |      S t        | t        j                  j
                        rt        | |      S t        | t        j                  j                        rt        | |      S t        | t        j                  j                        rt        | |      S t        | t        j                  j                  t        j                  j                  f      rt        |       S t        | t        j                  j                        rt        | |      S | S r   )
isinstancer   nnLinearr   Conv1drM   Conv2drT   Conv3dr\   BatchNorm2dBatchNorm3dra   PReLUrr   )mds     r   m_fnzto_mkldnn.<locals>.m_fn   s    a)1%%588??+1%%588??+1%%588??+1%%EHH00%((2F2FGH #1%%588>>*q!$$Hr   c           	      r     | |      }| j                         D ]  \  }}t        || ||              |S r   )named_childrensetattr)r   r   new_mnamesub_mr   m_fn_recs        r   r   zto_mkldnn.<locals>.m_fn_rec   sB    Q
++- 	5KD%E4%!34	5r   )r   r   bfloat16halfrg   )moduler	   r   r   s     @@r   r   r      sC    U[[%..%**==UVV$ FE""r   )r   r:   ScriptModuler   r?   rM   rT   r\   ra   rr   r   r    r   r   <module>r      s    599)) @$EII** $N
!= 
!!= !,!= !.4
eii,, 4
l%))(( * "KK #r   