
    Χg                     6   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dS )    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                                                       |                     d|j                            |                     |j        /|                     d|j                                                   d S |                     dt          j        |j                            d          gt          j	                                                             d S )Nweightbiasr   dtype)
super__init__register_bufferr   	to_mkldnnr   torchzerossizefloatselfdense_moduler	   	__class__s      N/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/utils/mkldnn.pyr   zMkldnnLinear.__init__   s    X|':'D'DU'K'KLLL(   ):)D)D)F)FGGGGG   \055a889MMMWWYY[ [ [ [ [    c                 r    | j                                         | j                                        | j        fS Nr   to_denser   trainingr   s    r   __getstate__zMkldnnLinear.__getstate__   -    $$&&	(:(:(<(<dmLLr   c                     |d                                          | _        |d                                          | _        |d         | _        d S Nr         r   r   r   r   r   states     r   __setstate__zMkldnnLinear.__setstate__   ?    Ah((**!H&&((	ar   c                     |j         r|n|                                }t          j        j                            || j        | j                  }|j         r|n|                                }|S r   )		is_mkldnnr   r   _C_nnmkldnn_linearr   r   r   r   xx_mkldnny_mkldnnys        r   forwardzMkldnnLinear.forward   sZ    6118<--hTYOO<HH):):)<)<r   __name__
__module____qualname__r   r   jitscript_methodr   r'   r3   __classcell__r   s   @r   r   r      s        [ [ [ [ [ YM M M Y! ! !
 Y      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        /|                     d|j                                                   d S |                     dt          j
        |j                            d          gt          j                                                             d S )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)FGGGGG
   \055a889MMMWWYY[ [ [ [ [r   c                 r    | j                                         | j                                        | j        fS r   r   r   s    r   r   z_MkldnnConvNd.__getstate__<   r   r   c           	      r    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@   s8    'KILKMK  	r   )r5   r6   r7   __doc____constants__r   r   r8   r9   r   r3   r:   r;   s   @r   r=   r=   %   s        77???M[ [ [ [ [$ YM M M Y      r   r=   c                   H     e Zd Z fdZej        j        d             Z xZS )MkldnnConv1dc                     t                                          |           |                     d|j                            |                     d S Nr   r
   r   r   r   r   r   s      r   r   zMkldnnConv1d.__init__M   sH    &&&X|':'D'DU'K'KLLLLLr   c                     |d                                          | _        |d                                          | _        |d         | _        d S 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 M M M M
 Y! ! ! ! ! ! !r   rK   c                   H     e Zd Z fdZej        j        d             Z xZS )MkldnnConv2dc           
         t                                          |           |                     dt          j        j                            |j                            |          | j	        | j
        | j        | j                             d S rM   )r
   r   r   r   r+   r,   mkldnn_reorder_conv2d_weightr   r   r?   r>   r@   rA   r   s      r   r   zMkldnnConv2d.__init__Z   }    &&&Xux|'P'P))%00LKMK( ( 	 	 	 	 	r   c                    t           j        j                            |d                                         | j        | j        | j        | j                  | _	        |d                                         | _
        |d         | _        d S r!   )r   r+   r,   rT   r   r?   r>   r@   rA   r   r   r   r%   s     r   r'   zMkldnnConv2d.__setstate__d   l    hl??!H  LKMK  !H&&((	ar   rP   r;   s   @r   rR   rR   Y   Y             Y! ! ! ! ! ! !r   rR   c                   H     e Zd Z fdZej        j        d             Z xZS )MkldnnConv3dc           
         t                                          |           |                     dt          j        j                            |j                            |          | j	        | j
        | j        | j                             d S 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                            |d                                         | j        | j        | j        | j                  | _	        |d                                         | _
        |d         | _        d S 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                 4   t                                                       |j        rJ |j        sJ |j        sJ |j        d| _        n|j        | _        |j        | _        |                     d|j	        
                                           |                     d|j        
                                           |                     d|j        
                                           |                     d|j        
                                           d S )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++.:.CD+#X|':'D'D'F'FGGGV\%6%@%@%B%BCCC^\-F-P-P-R-RSSS]L,D,N,N,P,PQQQQQr   c                     | 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    %%''y!!##(1133&//11lKGGr   c                    |d                                          | _        |d                                          | _        |d                                          | _        |d                                          | _        |d         | _        d S )Nr   r"   r#         )r   r   r   rc   rd   r   r%   s     r   r'   zMkldnnBatchNorm.__setstate__   so    Ah((**!H&&((	!!H..00 8--//ar   c                 v    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   sA    KI+H

 

 
	
r   )r5   r6   r7   rI   r   r   r8   r9   r   r'   r3   r:   r;   s   @r   r_   r_      s        159MR R R R R$ YH H H Y! ! ! Y
 
 
 
 
 
 
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                     t                                                       |                     d|j                            |                     d S rM   rN   r   s      r   r   zMkldnnPrelu.__init__   sF    X|':'D'DU'K'KLLLLLr   c                 B    | j                                         | j        fS r   )r   r   r   r   s    r   r   zMkldnnPrelu.__getstate__   s    $$&&66r   c                 ^    |d                                          | _        |d         | _        d S )Nr   r"   )r   r   r   r%   s     r   r'   zMkldnnPrelu.__setstate__   s(    Ah((**ar   c                     |j         r|n|                                }t          j        || j                  }|j         r|n|                                }|S r   )r*   r   r   prelur   r   r.   s        r   r3   zMkldnnPrelu.forward   sN    611;x55<HH):):)<)<r   r4   r;   s   @r   ro   ro      s        M M M M M Y7 7 7 Y! ! ! Y      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                 Z   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%%%58?++ 	1%%%58?++ 	1%%%58?++ 		1%%%EH0%(2FGHH 	 #1%%%58>** 	q!$$$Hr   c           	           | |          }|                                  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   sW    Q

++-- 	5 	5KD%E4%!3!34444r   )r   r   bfloat16half)moduler	   r   r   s     @@r   r   r      sn    U[%.%*====@ >==  $      8FE"""r   )r   r8   ScriptModuler   r=   rK   rR   rZ   r_   ro   r   r    r   r   <module>r      sp       59)   @$ $ $ $ $EI* $ $ $N
! 
! 
! 
! 
!= 
! 
! 
!! ! ! ! != ! ! !,! ! ! ! != ! ! !.1
 1
 1
 1
 1
ei, 1
 1
 1
f    %)(   * "K # # # # # #r   