
    sg                     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 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      E/var/www/html/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   __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 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>   r?   r@   rA   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   r?   r>   r@   rA   r   r/   s     r   r3   z_MkldnnConvNd.forward@   sB    ''KKIILLKKMMKK 	r   )r5   r6   r7   __doc____constants__r   r   r8   r9   r   r3   r:   r;   s   @r   r=   r=   %   sO    7?M[$ YYM M YY r   r=   c                   V     e Zd Z 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   	r5   r6   r7   r   r   r8   r9   r'   r:   r;   s   @r   rK   rK   L   s'    M
 YY! !r   rK   c                   V     e Zd Z 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 rM   )r
   r   r   r   r+   r,   mkldnn_reorder_conv2d_weightr   r   r?   r>   r@   rA   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,   rT   r   r?   r>   r@   rA   r   r   r   r%   s     r   r'   zMkldnnConv2d.__setstate__d   i    hhll??!H LLKKMMKK !H&&(	ar   rP   r;   s   @r   rR   rR   Y   &     YY! !r   rR   c                   V     e Zd Z 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 rM   )r
   r   r   r   r+   r,   mkldnn_reorder_conv3d_weightr   r   r?   r>   r@   rA   r   s      r   r   zMkldnnConv3d.__init__p   rU   r   c                    t         j                  j                  j                  |d   j	                         | j
                  | j                  | j                  | j                        | _	        |d   j	                         | _
        |d   | _        y r!   )r   r+   r,   r\   r   r?   r>   r@   rA   r   r   r   r%   s     r   r'   zMkldnnConv3d.__setstate__z   rW   r   rP   r;   s   @r   rZ   rZ   o   rX   r   rZ   c                        e Zd ZddgZ 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                 2   t         |           |j                  rJ |j                  sJ |j                  sJ |j
                  d| _        n|j
                  | _        |j                  | _        | j                  d|j                  j                                | j                  d|j                  j                                | j                  d|j                  j                                | j                  d|j                  j                                y )Ng        r   r   running_meanrunning_var)r
   r   r   track_running_statsaffinemomentumr`   ra   r   r   r   r   rc   rd   rC   s     r   r   zMkldnnBatchNorm.__init__   s    ((((////""""  (.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   rc   rd   r   )r   r   r   rc   rd   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   rc   rd   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   rc   rd   r`   ra   rG   s     r   r3   zMkldnnBatchNorm.forward   sN    KKII++HH

 
	
r   )r5   r6   r7   rI   r   r   r8   r9   r   r'   r3   r:   r;   s   @r   r_   r_      so    159MR$ YYH H YY! ! YY
 
r   r_   c                        e Zd Z 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 rM   rN   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   r;   s   @r   ro   ro      sc    M YY7 7 YY! ! YY r   ro   c                     |t         j                  t         j                  t         j                  fv sJ 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   Conv1drK   Conv2drR   Conv3drZ   BatchNorm2dBatchNorm3dr_   PReLUro   )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half)moduler	   r   r   s     @@r   r   r      sI    U[[%..%**== A@A=$ FE""r   )r   r8   ScriptModuler   r=   rK   rR   rZ   r_   ro   r   r    r   r   <module>r      s    599)) @$EII** $N
!= 
!!= !,!= !.1
eii,, 1
f%))(( * "KK #r   