
    o
qi4                      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d fdZej        j        d             Zej        j        d             Zej        j        d             Z	 xZ
S )MkldnnLinearreturnNc                    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      r/var/www/html/bestrading.cuttalo.com/services/ml-inference/venv/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   r   N__name__
__module____qualname__r   r   jitscript_methodr   r(   r4   __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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groupsr   Nc                    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@   rA   rB   rC   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   rA   r@   rB   rC   r   r0   s     r   r4   z_MkldnnConvNd.forward@   s8    'KILKMK  	r   r5   )r7   r8   r9   __doc____constants__r   r   r:   r;   r   r4   r<   r=   s   @r   r?   r?   %   s        77???M[ [ [ [ [ [$ YM M M Y      r   r?   c                   J     e Zd Zd fdZej        j        d             Z xZS )MkldnnConv1dr   Nc                     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   	r7   r8   r9   r   r   r:   r;   r(   r<   r=   s   @r   rM   rM   L   sd        M M M M M M
 Y! ! ! ! ! ! !r   rM   c                   J     e Zd Zd fdZej        j        d             Z xZS )MkldnnConv2dr   Nc           
         t                                          |           |                     dt          j        j                            |j                            |          | j	        | j
        | j        | j                             d S rO   )r   r   r   r   r,   r-   mkldnn_reorder_conv2d_weightr   r   rA   r@   rB   rC   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-   rV   r   rA   r@   rB   rC   r   r   r   r&   s     r   r(   zMkldnnConv2d.__setstate__d   l    hl??!H  LKMK  !H&&((	ar   r5   rR   r=   s   @r   rT   rT   Y   ^              Y! ! ! ! ! ! !r   rT   c                   J     e Zd Zd fdZej        j        d             Z xZS )MkldnnConv3dr   Nc           
         t                                          |           |                     dt          j        j                            |j                            |          | j	        | j
        | j        | j                             d S 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                            |d                                         | j        | j        | j        | j                  | _	        |d                                         | _
        |d         | _        d S r"   )r   r,   r-   r^   r   rA   r@   rB   rC   r   r   r   r&   s     r   r(   zMkldnnConv3d.__setstate__z   rY   r   r5   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epsr   Nc                    t                                                       |j        rt          d          |j        st          d          |j        st          d          |j        d| _        n|j        | _        |j        | _        | 	                    d|j
                                                   | 	                    d|j                                                   | 	                    d|j                                                   | 	                    d|j                                                   d S )	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-     	Y !WXXX/ 	^ !\]]]" 	Q !OPPP (.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   re   rf   r   )r   r   r   re   rf   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   re   rf   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   re   rf   rb   rc   rI   s     r   r4   zMkldnnBatchNorm.forward   sA    KI+H

 

 
	
r   r5   )r7   r8   r9   rK   r   r   r:   r;   r   r(   r4   r<   r=   s   @r   ra   ra      s        159MR R R R R R* YH H H Y! ! ! Y
 
 
 
 
 
 
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 )MkldnnPrelur   Nc                     t                                                       |                     d|j                            |                     d S rO   rP   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   r4   zMkldnnPrelu.forward   sN    611;x55<HH):):)<)<r   r5   r6   r=   s   @r   rr   rr      s        M M M M M M Y7 7 7 Y! ! ! Y      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                 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   Conv1drM   Conv2drT   Conv3dr\   BatchNorm2dBatchNorm3dra   PReLUrr   )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halfrg   )moduler
   r   r   s     @@r   r   r      sl    U[%.%*===UVVV  $      8FE"""r   )r   r:   ScriptModuler   r?   rM   rT   r\   ra   rr   r   r    r   r   <module>r      sp       59)   @$ $ $ $ $EI* $ $ $N
! 
! 
! 
! 
!= 
! 
! 
!! ! ! ! != ! ! !,! ! ! ! != ! ! !.4
 4
 4
 4
 4
ei, 4
 4
 4
l    %)(   * "K # # # # # #r   