Ë
    g^(hòÆ  ã                   ó  — d dl Z d dlmZ d dlZd dlmc mZ d dlm	Z	 ddl
mZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZmZmZmZmZmZmZ ddlmZmZmZ ddlmZm Z m!Z! ddl"m#Z#m$Z$ 	 	 	 	 ddede%e   de%e   fd„Z&de&_'        d„ Z(y)é    N)ÚOptional)Úmm_argsé   )Úir)ÚCppGemmTemplate)ÚCppGroupedGemmTemplate©Úcreate_epilogue_with_attr)Ú	TensorBox)ÚaddÚadd_needs_realized_inputsÚatenÚpermuteÚregister_loweringÚto_dtypeÚview)Úautotune_select_algorithmÚChoiceCallerÚExternKernelChoice)Úuse_aten_gemm_kernelsÚuse_cpp_gemm_templateÚuse_max_autotune)ÚopsÚVÚxÚwÚbc           
      ó   — | j                  «       }t        |«      dkD  rt        | d|d   g«      } t        |«      }t        «       sJ ‚|D �	cg c]%  }	|	€|	nt        j
                  j                  |	«      ‘Œ' }}	g }
t        | t        |d   ddg«      |¬«      �^ }}} }t        |D �	cg c]  }	|	d u‘Œ c}	dd t        |«      D �ci c]  }|| “Œ c}¬«      }| g|¢}|j                  |D �	cg c]  }	|	€Œ|	‘Œ	 c}	«       t        j                  |
||fi |¤Ž t        |
«      dk7  sJ ‚t        d|
||«      }|j                  j                  }t        |«      D �cg c]   }t	        j                   ||t"        |fg«      ‘Œ" }}t	        j$                  |d   j'                  «       ¬	«      |_        ||_        t        |«      D �cg c]$  }t        j,                  j/                  ||   «      ‘Œ& }}t        |«      dkD  r>t        |«      D ]0  }t        ||   g |d d ¢||   j                  «       d   ‘­«      ||<   Œ2 |S c c}	w c c}	w c c}w c c}	w c c}w c c}w )
Né   éÿÿÿÿr   r   ©ÚlayoutT)Úhas_biasÚtrans_wÚepilogue_creatorÚact_mappingÚgrouped_gemm)Údevice)Úget_sizeÚlenr   r   r   ÚExternKernelÚrealize_inputr   r   ÚdictÚrangeÚextendr   Úadd_choicesr   ÚdataÚMultiOutputÚlistÚMultiOutputLayoutÚ
get_devicer"   Úoutputsr   Úcreate)r   r   r   ÚattrÚscalarsÚ	algorithmr"   Úx_sizeÚnum_gemmÚbiasÚchoicesÚ_ÚnumÚkwargsÚinput_nodesÚresultÚtemplate_bufÚgemm_idxÚreturn_bufsÚreturn_tensorss                       ú^/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/mkldnn_lowerings.pyÚgrouped_gemm_loweringrI       st  € ð �Z‰Z‹\€FÜ
ˆ6ƒ{�Q‚ä��R˜ ™Ð$Ó%ˆÜ�1‹v€HäÔÐÐØSTÖUÈ4��‰¤2§?¡?×#@Ñ#@ÀÓ#FÑ	FÐU€AÐUà"$€GÜ˜q¤'¨!¨A©$°°A°Ó"7ÀÔGÑ€Qˆ��1äØ/0Ö1 t�$˜dÒ"Ò1ØØÜ',¨X£Ö7 �S˜!‘VÒ7ô	€Fð �'�q�'€KØ×Ñ¨Ö? ¨dÑ.>šÒ?Ô@ä×&Ñ&ØØØñð ò	ô ˆw‹<˜1ÒÐÐÜ&ØØØØó	€Fð —;‘;×#Ñ#€Lô ˜h›öàô 	�‰�v˜|¬t°XÐ.>Ð-?Õ@ð€Kð ô ×.Ñ.°kÀ!±n×6OÑ6OÓ6QÔR€LÔØ&€LÔäCHÈÃ?öØ7?Œ�‰×Ñ˜K¨Ñ1Õ2ð€Nð ô ˆ6ƒ{�Q‚Ü˜h›ò 	ˆHÜ'+Ø˜xÑ(ØG�&˜˜"�+ÐG˜~¨hÑ7×@Ñ@ÓBÀ2ÑFÑGó(ˆN˜8Ò$ð	ð
 Ðùò[ 	Vùò 2ùò 8ùò @ùò"ùòs*   Á*H2Â$H7Ã 
H<Ã&IÃ.IÅ%IÆ9)ITc            !      óø  ‡‡‡‡‡‡— t         j                  j                  �rYddlmŠ t        t         j                  j                  j                  dd‰j                  j                  ¬«      Št        t         j                  j                  j                  j                  dd‰j                  j                  ¬«      Št        t         j                  j                  j                  dd‰j                  j                  ¬«      Št        t         j                  j                  j                  j                  dd‰j                   j                  ¬«      Št         j                  j                  j"                  t         j                  j                  j$                  t         j                  j                  j&                  t         j                  j                  j                  t(        j*                  j,                  t         j                  j                  j.                  g} t1        t         j                  j                  j"                  «      dt2        dt2        d	t2        fˆfd
„«       }t1        t         j                  j                  j"                  j                  «      dt2        dt2        dt2        d	t2        fˆfd„«       }t1        t         j                  j                  j$                  j                  «      dt2        dt2        dt2        d	t2        fˆfd„«       }t1        t         j                  j                  j                  «      	 d3dt2        dt2        dt2        fˆfd„«       }t1        t         j                  j                  j                  j                  «      	 d3dt2        dt2        dt2        dt2        fˆfd„«       }t1        t         j                  j                  j&                  «      dt2        dt2        d	t2        fˆfd„«       }t1        t(        j*                  j,                  «      dt2        dt2        dt2        dt2        dt2        dt2        dt2        dt4        dt6        t8           dt8        dt8        dt8        dt4        d t4        d!t4        d"t4        f ˆfd#„«       }t1        t         j                  j                  j.                  d ¬$«      dt2        d%t2        d&t2        d't2        d	t2        f
ˆfd(„«       }t1        t         j                  j                  j.                  j                  d ¬$«      t1        t         j                  j                  j.                  j:                  d ¬$«      dt2        d%t2        d&t2        d't2        d)t2        d	t2        fˆfd*„«       «       }	t1        t         j                  j                  j                  d ¬$«      	 d3dt2        d%t2        d&t2        d't2        d	t2        f
ˆfd+„«       }
t1        t         j                  j                  j                  j                  d ¬$«      t1        t         j                  j                  j                  j:                  d ¬$«      	 d3dt2        d%t2        d&t2        d't2        d,t2        d	t2        fˆfd-„«       «       }t         j                  j<                  rÐt        t         j                  j>                  j@                  d.d‰jB                  j                  ¬«      Š| jE                  t         j                  j>                  j@                  «       t1        t         j                  j>                  j@                  «      d d/œdt2        d0t2        d1t2        dtF        t2           fˆfd2„«       }tI        | «       y y )4Nr   )Ú	mkldnn_irzmkldnn::_linear_pointwiseF)Úhas_out_variantÚkernel_creatorzonednn::qlinear_pointwiser   Úweightr=   c
                 ór   •— t        j                  ‰
j                  j                  | |||||||||	«
      «      S ©N)r   r7   ÚConvolutionUnary)r   rN   r=   ÚpaddingÚstrideÚdilationÚgroupsr8   r9   r:   rK   s             €rH   Úconvolution_unaryz5register_onednn_fusion_ops.<locals>.convolution_unaryˆ   sJ   ø€ ô ×#Ñ#Ø×*Ñ*×1Ñ1ØØØØØØØØØØóóð ó    Úotherc                 óx   •— t        j                  ‰j                  j                  | |||||||||	|
||«      «      S rP   )r   r7   ÚConvolutionBinary©r   rX   rN   r=   rR   rS   rT   rU   Úbinary_attrÚbinary_alphaÚ
unary_attrÚunary_scalarsÚunary_algorithmrK   s                €rH   Úconvolution_binaryz6register_onednn_fusion_ops.<locals>.convolution_binary¤   sS   ø€ ô  ×#Ñ#Ø×+Ñ+×2Ñ2ØØØØØØØØØØ ØØ!Ø#óóð rW   c                 óx   •— t        j                  ‰j                  j                  | |||||||||	|
||«      «      S rP   )r   r7   ÚConvolutionBinaryInplacer[   s                €rH   Úconvolution_binary_inplacez>register_onednn_fusion_ops.<locals>.convolution_binary_inplaceÆ   sS   ø€ ô  ×#Ñ#Ø×2Ñ2×9Ñ9ØØØØØØØØØØ ØØ!Ø#óóð rW   r   r   c                 ó^  •‡‡‡— | j                  «       }t        |«      dkD  rt        | d|d   g«      } |�t        j                  j                  |«      }g }t        «       rvt        |ddg«      }	t        | |	|¬«      �^ }
}} }	t        || |	«      rHˆˆˆfd„}t        |d ud‰dk(  rd n|¬	«      }|�g d
¢|d<   t        j                  |||€| |gn| ||gfi |¤Ž t        |«      dk(  s
t        «       rAt        ‰‰‰¬«      }|€d |d<   |j                   ‰j                  |€| |gn| ||g|fi |¤Ž«       |j!                  «       t"        j$                  j&                  v sJ ‚dd„ i}t)        d||€| |gn| ||g||¬«      }t        |«      dkD  r%t        |g |d d ¢|j                  «       d   ‘­«      }|S )Nr   r    r   r   r!   c                 ó"   •— t        | ‰‰‰¬«      S )N©r9   r:   r	   )Úbufr:   r8   r9   s    €€€rH   r%   zJregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.epilogue_creatorþ   s   ø€ Ü8Ø ¨wÀ)ô ð rW   TÚnone©r#   r$   r%   )r   r   r   Úinput_indices)r8   r9   r:   ÚBc                 óX   — t         j                  j                  | j                  «          S rP   ©r   ÚgraphÚ	constantsÚget_name©r   s    rH   ú<lambda>zBregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.<lambda>  ó   € œQŸW™W×.Ñ.¨q¯z©z«|Ñ<€ rW   Úlinear_unary©Úinput_gen_fns©r)   r*   r   r   r+   r,   r   r   r   r   r-   r   r0   r   ÚappendÚbindrq   r   ro   rp   r   )r   r   r   r8   r9   r:   r"   r;   r>   Útransposed_wr?   r%   rA   rw   rC   Úaten_mkldnn_linear_unarys      ```         €rH   ru   z0register_onednn_fusion_ops.<locals>.linear_unaryè   sð  û€ ð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Øˆ}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜÔ!Ü& q¨1¨a¨&Ó1�Ü.5°a¸ÈfÔ.UÑ+��F˜A˜|Ü(¨°°LÔAöô
 "Ø!"¨$ Ø $Ø15¸²©ÐEUô�Fð
 �}Ú2;˜˜Ñ/Ü#×/Ñ/ØØØ"# )˜˜A™°!°Q¸°ñð !ò	ô �7‹|˜qÒ Ô$9Ô$;Ü 4°ÀIÔN�Ø�9Ø"&�F˜3‘KØ—‘Ø1Ð,×1Ñ1Ø"# )˜˜A™°!°Q¸°Øñð !ñôð —:‘:“<¤1§7¡7×#4Ñ#4Ñ4Ð4Ð4àÑ<ðˆMô /ØØØ˜)��A‘¨!¨Q°¨ØØ+ôˆFô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrW   Úyc                 ó¾  •‡‡— | j                  «       }t        |«      dkD  rt        | d|d   g«      } ‰j                  «       }t        |«      dkD  rt        ‰d|d   g«      Š|�t        j                  j                  |«      }g }t        «       rvt        |ddg«      }	t        | |	‰|¬«      �^ }
}} }	Št        || |	«      rFˆˆfd„}t        |d ud|¬«      }|€g d	¢ng d
¢|d<   t        j                  |||€| ‰|gn| ‰||gfi |¤Ž t        |«      dk(  s
t        «       rAt        ‰¬«      }|€d |d<   |j                   ‰j                  |€| ‰|gn| ‰||g|fi |¤Ž«       |j!                  «       t"        j$                  j&                  v sJ ‚dd„ i}t)        d||€| ‰|gn| ‰||g||¬«      }t        |«      dkD  r%t        |g |d d ¢|j                  «       d   ‘­«      }|S )Nr   r    r   r   r!   c                 ó    •— t        | ‰‰¬«      S )N)rX   r	   )rh   r8   r}   s    €€rH   r%   zKregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.epilogue_creator?  s   ø€ Ü8¸¸dÈ!ÔLÐLrW   Trj   )r   r   r   )é   r   r   r   rk   )r8   rl   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.<lambda>[  rt   rW   Úlinear_binaryrv   rx   )r   r}   r   r   r8   r"   r;   Úy_sizer>   r{   r?   r%   rA   rw   rC   Úaten_mkldnn_linear_binarys    `  `          €rH   r‚   z1register_onednn_fusion_ops.<locals>.linear_binary*  s$  ú€ ð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Ø—Z‘Z“\ˆFÜ�6‹{˜QŠÜ˜˜R ¨¡Ð,Ó-�Øˆ}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜÔ!Ü& q¨1¨a¨&Ó1�Ü18Ø�| Q¨vô2Ñ.��F˜A˜|¨Qô )¨°°LÔAõMô "Ø!"¨$ Ø $Ø)9ô�Fð
 <=¸9«iÊ,�F˜?Ñ+Ü#×/Ñ/ØØØ%& Y˜˜A˜q™	°Q¸¸1¸a°Lñð !ò	ô �7‹|˜qÒ Ô$9Ô$;Ü 4œ�Ø�9Ø"&�F˜3‘KØ—‘Ø2Ð-×2Ñ2Ø%& Y˜˜A˜q™	°Q¸¸1¸a°LØñð !ñôð —:‘:“<¤1§7¡7×#4Ñ#4Ñ4Ð4Ð4àÑ<ðˆMô /ØØØ˜Y��A�q‘	¨Q°°1°a¨LØØ+ôˆFô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrW   c                 ót   •— t        j                  ‰j                  j                  | |||||||||	|
«      «      S rP   )r   r7   ÚConvolutionTransposeUnary)r   rN   r=   rR   Úoutput_paddingrS   rT   rU   r8   r9   r:   rK   s              €rH   Úconvolution_transpose_unaryz?register_onednn_fusion_ops.<locals>.convolution_transpose_unaryh  sM   ø€ ô ×#Ñ#Ø×3Ñ3×:Ñ:ØØØØØ"ØØØØØØóóð rW   Úw0Úw1Úw2Úw3ÚhxÚcxÚreverseÚbatch_sizesÚmodeÚhidden_sizeÚ
num_layersÚ
has_biasesÚbidirectionalÚbatch_firstÚtrainc                 óœ   •— t        j                  t        j                  ‰j                  j                  | |||||||||	|
|||||«      «      S rP   )ÚpytreeÚtree_mapr   r7   ÚMkldnnRnnLayer)r   r‰   rŠ   r‹   rŒ   r�   rŽ   r�   r�   r‘   r’   r“   r”   r•   r–   r—   rK   s                   €rH   Úmkldnn_rnn_layerz4register_onednn_fusion_ops.<locals>.mkldnn_rnn_layer†  sc   ø€ ô& —?‘?Ü× Ñ Ø×(Ñ(×/Ñ/ØØØØØØØØØØØØØØ!ØØó!óð rW   )Útype_promotion_kindÚpacked_weightÚw_scaleÚw_zpc                 óà  •— t        |«      t        k(  sJ ‚t        j                  j	                  t        j                  |t
        j                  ¬«      d¬«      }t        |«      t        k(  sJ ‚t        j                  j	                  t        j                  |t
        j                  ¬«      d¬«      }t        j                  ‰j                  j                  | |||||||||	|
||||||«      «      S )N©ÚdtypeÚx_scale©ÚnameÚx_zp)ÚtypeÚfloatr   ro   Úadd_tensor_constantÚtorchÚtensorÚfloat32ÚintÚint32r   r7   ÚQConvPointWisePT2E)r   r¤   r§   rž   rŸ   r    r=   rS   rR   rT   rU   Úo_inv_scaleÚo_zero_pointÚoutput_dtyper8   r9   r:   rK   s                    €rH   Úqconvolution_unaryz6register_onednn_fusion_ops.<locals>.qconvolution_unary¯  sá   ø€ ô* ˜“=¤EÒ)Ð)Ð)Ü—g‘g×1Ñ1Ü—‘˜W¬E¯M©MÔ:Àð 2ó ˆGô ˜“:¤Ò$Ð$Ð$Ü—7‘7×.Ñ.Ü—‘˜T¬¯©Ô5¸Fð /ó ˆDô ×#Ñ#Ø×,Ñ,×3Ñ3ØØØØ!ØØØØØØØØØ Ø ØØØó#óð rW   Úaccumc                 óÖ  •— t        |«      t        k(  sJ ‚t        j                  j	                  t        j                  |t
        j                  ¬«      d¬«      }t        |«      t        k(  sJ ‚t        j                  j	                  t        j                  |t
        j                  ¬«      d¬«      }|dk(  rq|t
        j                  t
        j                  fv rO|j                  «       t
        j                  t
        j                  fv r|j                  «       |k7  rt        ||«      }t        j                  ‰j                  j                  | |||||||||	|
|||||||||||«      «      S )Nr¢   r¤   r¥   r§   Úsum)r¨   r©   r   ro   rª   r«   r¬   r­   r®   r¯   Úbfloat16Ú	get_dtyper   r   r7   ÚQConvPointWiseBinaryPT2E)r   r¤   r§   rž   rŸ   r    rµ   r=   rS   rR   rT   rU   r±   r²   r³   Úaccum_scaleÚaccum_zpr\   Úalphar^   r_   Úunary_algorithmmrK   s                         €rH   Úqconvolution_binaryz7register_onednn_fusion_ops.<locals>.qconvolution_binaryã  sF  ø€ ô> ˜“=¤EÒ)Ð)Ð)Ü—g‘g×1Ñ1Ü—‘˜W¬E¯M©MÔ:Àð 2ó ˆGô ˜“:¤Ò$Ð$Ð$Ü—7‘7×.Ñ.Ü—‘˜T¬¯©Ô5¸Fð /ó ˆDð
 ˜uÒ$Ø ¤U§]¡]´E·N±NÐ$CÑCØ—O‘OÓ%¬%¯-©-¼¿¹Ð)HÑHØ—O‘OÓ%¨Ò5ô ! ¨Ó5�Ü×#Ñ#Ø×2Ñ2×9Ñ9ØØØØ!ØØØØØØØØØØ Ø ØØØØØØ!Ø$ó-óð rW   c                 óÒ  •‡‡‡‡‡‡‡	‡
‡‡‡‡— |j                  «       t        j                  u sJ d«       ‚| j                  «       }t	        |«      dkD  rt        | d|d   g«      } t        ‰t        j                  «      sYt        ‰«      t        k(  sJ ‚t        j                  j                  t        j                  ‰t        j                  ¬«      d¬«      Šn^‰j!                  «        t#        d„ ‰j                  «       D «       «      rt        ‰g «      Št	        ‰j                  «       «      dv sJ d	«       ‚‰€Dt        j                  j                  t        j                  d
t        j$                  ¬«      d¬«      Št        ‰t        j                  «      sYt        ‰«      t&        k(  sJ ‚t        j                  j                  t        j                  ‰t        j$                  ¬«      d¬«      Šn‰j!                  «        ‰j)                  «       dk(  sJ d«       ‚|€Dt        j                  j                  t        j                  d
t        j$                  ¬«      d¬«      }‰j!                  «        |j!                  «        |j                  «       t        j$                  k7  rÑt        t        j*                  j-                  |«      t        j.                  «      ršt        j                  j0                  |j3                  «          j5                  t        j$                  «      }t        j                  j                  t        j                  |t        j$                  ¬«      |j3                  «       ¬«      }‰€d n‰j                  «       Šg }t7        «       �rít9        | ||‰	¬«      �^ }}} }t        t        j*                  j-                  |«      t        j.                  «      �r¡t        j:                  t        j<                  t        j                  j0                  |j3                  «          «      t        j                  j0                  |j3                  «          «      �r%t?        || |«      �rt        j                  j0                  |j3                  «          jA                  «       }t        jB                  |j5                  t        j                  «      d
¬«      }t        j                  j                  ||j3                  «       dz   ¬«      Šˆˆ
ˆˆˆˆˆ	ˆˆˆˆˆfd„}| j                  «       t        jD                  t        j                  fv sJ ‚tG        jH                  ||‰€| ‰‰|‰|gn| ‰‰|‰|‰g‰d u|‰€g d¢ng d¢¬«       t	        |«      d
k(  s
tK        «       rLtM        ‰‰‰	‰
‰‰¬«      }‰€d |d<   |jO                   ‰jP                  ‰€| ‰‰|‰|fn| ‰‰|‰|‰f|fi |¤Ž«       |j3                  «       t        j                  j0                  v sJ ‚d„ d„ d„ d„ dœ}t        t        j*                  j-                  ‰«      t        j.                  «      rd„ |d<   t        t        j*                  j-                  ‰«      t        j.                  «      rd„ |d<   tS        d|‰€| ‰‰|‰|gn| ‰‰|‰|‰g||¬ «      }t	        |«      dkD  r%t        |g |d d ¢|j                  «       d   ‘­«      }|S )!Nz2Only int8 weights are supported by oneDNN qlinear.r   r    r¢   r¤   r¥   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w©r   N© ©Ú.0Údims     rH   ú	<genexpr>zDregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<genexpr>P  ó   è ø€ Ò> C�s˜a•xÑ>ùó   ‚©r   r   úx_scale must be 0D or 1Dr   r§   r   z(x_zp is incompatible with oneDNN qlinearr    ©r"   Ú	out_dtype©rÆ   Ú_BMatrixCompensc                 ó$  •‡‡‡‡‡	‡
‡‡‡— ‰t         j                  t         j                  t         j                  t         j                  fv sJ ‚| j                  «       Š‰j                  «       Š‰j                  «       Š‰j                  «       Š
‰j                  «       Šd Š‰�‰j                  «       Šˆˆˆˆˆ
ˆˆˆfd„}t        j                  | j                  «       t         j                  || j                  «       ¬«      }‰dk7  rt        |‰‰‰¬«      }‰t         j                  k(  rM|j                  «       Šˆˆfd„}t        j                  |j                  «       ‰||j                  «       ¬«      }|S ‰t         j                  t         j                  fv rzddlmŠ |j                  «       Š	ˆˆˆ	fd„}t        j                  |j                  «       ‰t        j                  |t!        ‰«      t#        ‰«      ¬	«      |j                  «       ¬«      }|S )
Nc                 óš  •—  ‰| «      }t        j                  |t        j                  «      }| d   f} ‰d«      } ‰d«      } ‰|«      } ‰|«      }t        j                  t        j                  ||«      |«      }t        j
                  |t        j                  t        j                  t        j                  ||«      |«      |«      «      }‰	�y ‰|«      }‰
t        j                  t        j                  fv sJ ‚‰
t        j                  k(  r$t        j                  |t        j                  «      }t        j                  ||«      }|S )Nr    rÃ   ©r   r   r«   r­   ÚmulÚsubr¸   r   )ÚindexÚinputÚweight_compens_indexÚ_x_scaleÚ_x_zpÚ_w_scaleÚ_weight_compoÚtempÚ_biasr=   Ú
bias_dtypeÚbias_loaderÚinput_loaderÚw_scale_loaderÚweight_compens_loaderÚx_scale_loaderÚx_zp_loaders            €€€€€€€€rH   Úinner_fnz]register_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn«  s)  ø€ á$0°Ó$7˜Eô %(§L¡L°¼¿¹Ó$F˜EØ49¸"±I°<Ð0Ù'5°bÓ'9˜HÙ$/°£O˜EÙ'5Ð6JÓ'K˜HÙ,AÐBVÓ,W˜Mô $'§7¡7Ü #§¡Ø$)Ø$,ó!"ð !)ó$˜Dô $'§7¡7Ø $Ü #§¡Ü$'§G¡GÜ(+¯©Ø,4Ø,4ó)*ð ).ó%&ð %2ó	!"ó$˜Dð  $Ð/Ù(3Ð4HÓ(I à'1´e·m±mÄUÇ^Á^Ð5TÑ'TÐ TÐ'TØ#-´·±Ò#?Ü,/¯L©L¸ÄÇÁÓ,N EÜ'*§w¡w¨t°UÓ'; à#'˜KrW   ©r(   r£   rå   Úrangesri   rg   c                 ó@   •—  ‰| «      }t        j                  |‰«      S rP   ©r   r   ©rÕ   rÖ   Úoutput_cast_loaderr³   s     €€rH   Úinner_fn_cast_output_to_bf16zqregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn_cast_output_to_bf16ñ  ó   ø€ Ù(:¸5Ó(A Ü'*§|¡|°E¸<Ó'HÐ HrW   r   ©Ú_create_constantsc                 ó   •—  ‰| «      } ‰	d|z  |t         j                  ¬«      \  }}t        j                  ||z  «      |z   }‰
t         j                  k(  r ‰	ddt         j                  ¬«      \  }}n ‰	ddt         j                  ¬«      \  }}t        j
                  t        j                  ||«      |«      }t        j                  |‰
«      S ©Ng      ð?r¢   r   éÿ   i€ÿÿÿé   ©r«   r­   r   ÚroundÚuint8ÚminimumÚmaximumr   ©rÕ   ÚscaleÚ
zero_pointrÖ   Ú	inv_scaleÚvalÚqminÚqmaxÚclampedrï   r³   Úrequant_input_loaders            €€€rH   Úinner_fn_requantzeregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator.<locals>.inner_fn_requant   s´   ø€ Ù(<¸UÓ(C Ù8IØ$'¨%¡K°Ä5Ç=Á=ô9"Ñ 5 	¨:ô '*§i¡i°¸	Ñ0AÓ&BÀZÑ&O Ø#/´5·;±;Ò#>Ù1BØ()¨3´e·m±mô2&¡J D©$ñ 2CØ(,¨c¼¿¹ô2&¡J D¨$ô +.¯+©+´c·k±kÀ#ÀtÓ6LÈdÓ*S Ü'*§|¡|°G¸\Ó'JÐ JrW   ©rú   rû   ©r«   r­   r¸   rö   Úint8Úmake_loaderr   Ú	Pointwiser5   r)   r
   Úget_device_or_errorÚloweringrï   Ú	functoolsÚpartialr©   r®   )Úinput_bufferrå   Ú
output_bufrì   r  rï   rß   rà   rë   r  rá   râ   rã   rä   r:   r8   r=   rÞ   Úo_scaler²   r³   r9   rŸ   Úweight_compensr¤   r§   s        @@@@@@@@@€€€€€€€€€€€€rH   r%   zKregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creator™  sÑ  ÿù€ à+Ü!ŸM™MÜ!ŸN™NÜ!ŸK™KÜ!ŸJ™Jð	0ñ  ð ð  ð (4×'?Ñ'?Ó'A˜Ø0>×0JÑ0JÓ0LÐ-Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÐ+Ø*.×*:Ñ*:Ó*<˜K÷3(ó 3(ôj &(§\¡\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#8Ñ#8Ó#:ô	&˜
ð   6š>Ü)BØ *¨D¸'ÈYô*˜Jð
 (¬5¯>©>Ò9Ø1;×1GÑ1GÓ1IÐ.õIô *,¯©Ø'1×'EÑ'EÓ'GØ&2Ø)EØ'1×':Ñ':Ó'<ô	*˜JðN  *Ð)ðC *¬e¯k©k¼5¿:¹:Ð-FÑFÝCà3=×3IÑ3IÓ3KÐ0öKô" *,¯©Ø'1×'EÑ'EÓ'GØ&2Ü)2×):Ñ):Ø$4Ü*/°«.Ü/2°<Ó/@ô*"ð
 (2×':Ñ':Ó'<ô	*˜Jð  *Ð)rW   )r   r€   r   r   é   é   )é   r   r€   r   r   r  r  ©r#   r%   rk   )Úoutput_scaleÚoutput_zero_pointr³   Úpost_op_nameÚpost_op_argsÚpost_op_algorithmr=   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>A  rt   rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>B  rt   rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>C  rt   rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>D  rt   rW   )r€   r  r  r  c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>K  ó   € ¬Q¯W©W×->Ñ->¸q¿z¹z»|Ñ-L€ rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>P  r  rW   Úqlinear_unaryrv   )*r¹   r«   r  r)   r*   r   Ú
isinstancer   r   r¨   r©   r   ro   rª   r¬   r­   ÚrealizeÚallr¯   r®   Ú	get_numelÚInputsKernelÚunwrap_storage_for_inputÚConstantBufferrp   rq   Útor   r   ÚequalÚ
zeros_liker   Úto_denser·   rö   r   r0   r   r-   ry   rz   r   )r   r¤   r§   rž   rŸ   r    r=   r  r²   r³   r8   r9   r:   r"   r;   Úw_zp_tensorr>   r?   ÚW_tensorÚweight_compens_tensorr%   rA   rw   rC   rÞ   r  Úaten_mkldnn_qlinear_unarys    `` ` ```````           @@€rH   r   z1register_onednn_fusion_ops.<locals>.qlinear_unary1  sÔ  ÿü€ ð" !×*Ñ*Ó,´·
±
Ñ:ð ØDóÐ:ð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Ü˜g¤r§|¡|Ô4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó ‘ð —‘Ô!ÜÑ>¨7×+;Ñ+;Ó+=Ô>Ô>ô # 7¨BÓ/�GÜ˜7×+Ñ+Ó-Ó.°&Ñ8ÐTÐ:TÓTÐ8àˆ|ô
 —w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ô ˜d¤B§L¡LÔ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L‘L ¬U¯[©[Ô9Àð 3ó ‘ð —‘”à—>‘>Ó# qÒ(ÐTÐ*TÓTÐ(ð
 ˆ|ô —w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ð �O‰OÔØ�L‰LŒNØ�~‰~Ó¤5§;¡;Ò.´:Ü—‘×8Ñ8¸Ó>Ü×!Ñ!ô4ô
  Ÿg™g×/Ñ/°·±³Ñ@×CÑCÄEÇKÁKÓP�Ü—w‘w×2Ñ2Ü—L‘L ´E·K±KÔ@ÀtÇ}Á}Ãð 3ó �ð "& ™°4·>±>Ó3CˆJØ*,ˆGäÕ!Ü/6Ø�}¨V¸|ô0Ñ,��F˜A˜}ô ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)õô Ÿ™Ü×(Ñ(¬¯©×):Ñ):¸4¿=¹=»?Ñ)KÓLÜŸ™×)Ñ)¨$¯-©-«/Ñ:õô ,¨F°A°}ÕEÜ Ÿw™w×0Ñ0°×1GÑ1GÓ1IÑJ×SÑSÓU�HÜ,1¯I©I°h·k±kÄ%Ç+Á+Ó6NÐTUÔ,VÐ)Ü%&§W¡W×%@Ñ%@Ø-Ø*×3Ñ3Ó5Ð8IÑIð &Aó &�N÷
C*÷ C*ðJ Ÿ;™;›=¬U¯[©[¼%¿*¹*Ð,EÑEÐEÐEÜ#×/Ñ/ØØà˜<ð ˜G T¨=¸'À4ÑHà ¨$°¸wÈÈdÐSØ!%¨TÐ!1Ø)9à˜<ó '9â2õô �7‹|˜qÒ Ô$9Ô$;ÜØ!(Ø&2Ø!-Ø!%Ø!(Ø&/ô�ð �<Ø%)�F˜6‘NØ—‘Ø2Ð-×2Ñ2à˜<ð ˜G T¨=¸'À4ÑHà ¨$°¸wÈÈdÐSØñ	ð
 !ñôð !×)Ñ)Ó+¬q¯w©w×/@Ñ/@Ñ@Ð@Ð@á<Ù<Ù<Ù<ñ	ˆMô Ü—‘×8Ñ8¸ÓAÜ×!Ñ!ôñ
 $M�˜aÑ ÜÜ—‘×8Ñ8¸Ó>Ü×!Ñ!ôñ $M�˜aÑ ä.ØØà�<ð �G˜T =°'¸4Ñ@à˜ $¨°wÀÀdÐKØØ+ôˆFô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrW   Úx2c                 ó¸  •‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡ — | j                  «       }‰j                  «       }t        |«      t        |«      k(  sJ ‚t        |«      dkD  r'|dk(  r"t        | d|d   g«      } t        ‰d|d   g«      Št        ‰t        j
                  «      sYt        ‰«      t        k(  sJ ‚t        j                  j                  t        j                  ‰t        j                  ¬«      d¬«      Šn^‰j                  «        t        d„ ‰j                  «       D «       «      rt        ‰g «      Št        ‰j                  «       «      dv sJ d	«       ‚‰€Dt        j                  j                  t        j                  d
t        j                   ¬«      d¬«      Š|€Dt        j                  j                  t        j                  d
t        j                   ¬«      d¬«      }t        ‰t        j
                  «      sYt        ‰«      t"        k(  sJ ‚t        j                  j                  t        j                  ‰t        j                   ¬«      d¬«      Šn‰j                  «        ‰j                  «        |j                  «        |j%                  «       t        j                   k7  rÑt        t        j&                  j)                  |«      t        j*                  «      ršt        j                  j,                  |j/                  «          j1                  t        j                   «      }t        j                  j                  t        j                  |t        j                   ¬«      |j/                  «       ¬«      }|dk(  rŒ‰
t        j                  t        j2                  fv rP‰j%                  «       t        j                  t        j2                  fv r ‰j%                  «       ‰
k7  r't5        ‰‰
«      Šn‰j%                  «       ‰
k(  sJ d«       ‚‰j%                  «       Š ‰�‰j%                  «       nd Šg }t7        «       �r&|dk(  �r t9        | |‰|‰
¬«      �^ }}} }Št        t        j&                  j)                  ‰«      t        j*                  «      �rÒt        ‰j;                  «       j<                  «      d
k(  �r«t        t        j&                  j)                  |«      t        j*                  «      �rst        j>                  t        j@                  t        j                  j,                  |j/                  «          «      t        j                  j,                  |j/                  «          «      røtC        || |«      rët        j                  j,                  |j/                  «          }|jE                  «       }t        jF                  |j1                  t        j                  «      d
¬«      }t        j                  j                  ||j/                  «       dz   ¬«      Šˆˆˆˆ	ˆ
ˆˆˆˆˆˆˆ ˆˆfd„}tI        jJ                  ||‰€	| ‰‰|‰|‰gn	| ‰‰|‰|‰‰g‰d u|‰€g d¢ng d¢¬«       t        |«      d
k(  s
tM        «       rRtO        ‰‰	‰
||||‰‰‰¬«
      }‰€d |d<   |jQ                   ‰!jR                  ‰€	| ‰‰|‰|‰fn	| ‰‰|‰|‰‰f|fi |¤Ž«       |j/                  «       t        j                  j,                  v sJ ‚d„ d„ d„ dœ}‰�d„ |d<   tU        d|‰€	| ‰‰|‰|‰gn	| ‰‰|‰|‰‰g||¬«      }t        |«      dkD  r*|dk(  r%t        |g |d d ¢|j                  «       d   ‘­«      }|S ) Nr   r   r    r¢   r¤   r¥   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrÂ   rÃ   rÄ   s     rH   rÇ   zEregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<genexpr>ˆ  rÈ   rÉ   rÊ   rË   r   r§   r    r·   zCdtype of accum for qlinear post op sum should be the same as outputrÌ   rÎ   rÏ   c                 óf  •‡‡‡‡‡	‡
‡‡‡‡— ‰t         j                  t         j                  t         j                  t         j                  fv sJ ‚| j                  «       Š‰j                  «       Š‰j                  «       Š‰j                  «       Š‰j                  «       Š
‰j                  «       Šd Š‰�‰j                  «       Šˆˆˆˆˆ
ˆˆˆˆˆf
d„}t        j                  | j                  «       t         j                  || j                  «       ¬«      }‰dk7  rt        |‰‰‰¬«      }‰t         j                  k(  rM|j                  «       Šˆˆfd„}t        j                  |j                  «       ‰||j                  «       ¬«      }|S ‰t         j                  t         j                  fv rˆddlmŠ |j                  «       Š	ˆˆˆ	fd„}t        j                  |j                  «       t         j                  t        j                  |t!        ‰«      t#        ‰«      ¬	«      |j                  «       ¬«      }|S )
Nc                 óŒ  •
—  ‰| «      } ‰| «      } ‰d«      } ‰d«      }t        j                  |t        j                  «      }| d   f} ‰|«      } ‰|«      }t        j                  t        j                  ||«      |«      }t        j
                  |t        j                  t        j                  t        j                  ||«      |«      |«      «      }‰
�y ‰|«      }	‰t        j                  t        j                  fv sJ ‚‰t        j                  k(  r$t        j                  |	t        j                  «      }	t        j                  ||	«      }‰t        j                  t        j                  fv sJ ‚‰t        j                  k(  r$t        j                  |t        j                  «      }t        j                  ||«      }|S )NrÃ   r    rÒ   )rÕ   rÖ   Ú_x2rØ   rÙ   r×   rÚ   Ú_weight_compensrÜ   rÝ   r=   rÞ   rß   rà   rá   râ   Úx2_dtypeÚ	x2_loaderrã   rä   s             €€€€€€€€€€rH   rå   z^register_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fnò  s‚  ø€ á$0°Ó$7˜EÙ"+¨EÓ"2˜CÙ'5°bÓ'9˜HÙ$/°£O˜Eô %(§L¡L°¼¿¹Ó$F˜EØ49¸"±I°<Ð0Ù'5Ð6JÓ'K˜HÙ.CØ 4ó/˜Oô $'§7¡7Ü #§¡Ø$)Ø$,ó!"ð !)ó$˜Dô $'§7¡7Ø $Ü #§¡Ü$'§G¡GÜ(+¯©Ø,4Ø,4ó)*ð ).ó%&ð %4ó	!"ó$˜Dð  $Ð/Ù(3Ð4HÓ(I à'1´e·m±mÄUÇ^Á^Ð5TÑ'TÐ TÐ'TØ#-´·±Ò#?Ü,/¯L©L¸ÄÇÁÓ,N EÜ'*§w¡w¨t°UÓ'; ð $,´·±¼u¿~¹~Ð/NÑ#NÐNÐ#NØ'¬5¯>©>Ò9Ü&)§l¡l°3¼¿¹Ó&F Ü#&§7¡7¨4°Ó#5˜Dà#'˜KrW   ræ   ri   rg   c                 ó@   •—  ‰| «      }t        j                  |‰«      S rP   ré   rê   s     €€rH   rì   zrregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn_cast_output_to_bf16=  rí   rW   r   rî   c                 ó¼  •—  ‰| «      } ‰	d|z  |t         j                  ¬«      \  }}t        j                  ||z  «      |z   }‰
t         j                  k(  r ‰	ddt         j                  ¬«      \  }}n ‰	ddt         j                  ¬«      \  }}t        j
                  t        j                  ||«      |«      }t        j                  |t         j                  «      S rñ   rô   rù   s            €€€rH   r  zfregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn_requantL  s¸   ø€ Ù(<¸UÓ(C Ù8IØ$'¨%¡K°Ä5Ç=Á=ô9"Ñ 5 	¨:ô '*§i¡i°¸	Ñ0AÓ&BÀZÑ&O Ø#/´5·;±;Ò#>Ù1BØ()¨3´e·m±mô2&¡J D©$ñ 2CØ(,¨c¼¿¹ô2&¡J D¨$ô +.¯+©+´c·k±kÀ#ÀtÓ6LÈdÓ*S Ü'*§|¡|°G¼U¿[¹[Ó'IÐ IrW   r  r  )r  rå   r  rì   r  rï   rß   rà   rë   r  rá   râ   r8  rã   rä   r=   rÞ   r  r²   r³   r¾   r^   r_   rŸ   r  r0  r7  r¤   r§   s        @@@@@@@@@@€€€€€€€€€€€€€€rH   r%   zLregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creatorÞ  så  ÿú€ à+Ü!ŸM™MÜ!ŸN™NÜ!ŸK™KÜ!ŸJ™Jð	0ñ  ð ð  ð (4×'?Ñ'?Ó'A˜Ø$&§N¡NÓ$4˜	Ø0>×0JÑ0JÓ0LÐ-Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÐ+Ø*.×*:Ñ*:Ó*<˜K÷5(õ 5(ôn &(§\¡\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#8Ñ#8Ó#:ô	&˜
ð &¨Ò/Ü)BØ *Ø *Ø(5Ø*:ô	*˜Jð (¬5¯>©>Ò9Ø1;×1GÑ1GÓ1IÐ.õIô *,¯©Ø'1×'EÑ'EÓ'GØ&2Ø)EØ'1×':Ñ':Ó'<ô	*˜JðN  *Ð)ðC *¬e¯k©k¼5¿:¹:Ð-FÑFÝCà3=×3IÑ3IÓ3KÐ0öJô" *,¯©Ø'1×'EÑ'EÓ'GÜ&+§k¡kÜ)2×):Ñ):Ø$4Ü*/°«.Ü/2°<Ó/@ô*"ð
 (2×':Ñ':Ó'<ô	*˜Jð  *Ð)rW   )r   r€   r   r   r  r  r  )é   r   r€   r   r   r  r  r  r  )
r  r  r³   Úother_scaleÚother_zpÚbinary_post_opr]   Úunary_post_opÚunary_post_op_argsÚunary_post_op_algorithmr=   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>’  rt   rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>“  rt   rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>”  rt   rW   )r€   r  r  c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>—  r  rW   r;  Úqlinear_binaryrv   )+r)   r*   r   r!  r   r   r¨   r©   r   ro   rª   r«   r¬   r­   r"  r#  r¯   r®   r¹   r%  r&  r'  rp   rq   r(  r¸   r   r   r   Ú
get_layoutÚsizer)  r*  r   r+  r·   r   r0   r   r-   ry   rz   r   )"r   r¤   r§   rž   rŸ   r    r0  r=   r  r²   r³   Úx2_scaleÚx2_zpr\   r½   r^   r_   r¾   r"   r;   Úx2_sizer,  r>   r?   r-  r.  r%   rA   rw   rC   rÞ   r  r7  Úaten_mkldnn_qlinear_binarys"    `` ` `````    ```            @@@€rH   rF  z2register_onednn_fusion_ops.<locals>.qlinear_binary_  sW  ÿþ€ ð6 —Z‘Z“\ˆFØ—k‘k“mˆGÜ�v“;¤# g£,Ò.Ð.Ð.Ü�6‹{˜QŠ ;°%Ò#7ä˜˜R ¨¡Ð,Ó-�Ü˜"˜r 7¨2¡;Ð/Ó0�Ü˜g¤r§|¡|Ô4Ü˜G“}¬Ò-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó ‘ð —‘Ô!ÜÑ>¨7×+;Ñ+;Ó+=Ô>Ô>ô # 7¨BÓ/�GÜ˜7×+Ñ+Ó-Ó.°&Ñ8ÐTÐ:TÓTÐ8àˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ð ˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ô ˜d¤B§L¡LÔ1Ü˜D“z¤SÒ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L‘L ¬U¯[©[Ô9Àð 3ó ‘ð —‘”ð
 �O‰OÔØ�L‰LŒNØ�~‰~Ó¤5§;¡;Ò.´:Ü—‘×8Ñ8¸Ó>Ü×!Ñ!ô4ô  Ÿg™g×/Ñ/°·±³Ñ@×CÑCÄEÇKÁKÓP�Ü—w‘w×2Ñ2Ü—L‘L ´E·K±KÔ@ÀtÇ}Á}Ãð 3ó �ð ˜eÒ#ØÜ—M‘MÜ—N‘Nð$ñ ð —l‘l“n¬¯©¼¿¹Ð(GÑGØ—|‘|“~¨Ò5ô
 & b¨,Ó7™àŸ<™<›>¨\Ò9ð Ø]óÐ9ð —|‘|“~ˆHØ-1Ð-=˜Ÿ™Ô)À4ˆJØ*,ˆGä Õ" {°eÓ';ä3:Ø�} b°À<ô4Ñ0��F˜A˜}¨bô ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)õô ˜DŸO™OÓ-×2Ñ2Ó3°qÓ8Ü"ÜŸ™×@Ñ@ÀÓFÜ×)Ñ)õô Ÿ™Ü×(Ñ(¬¯©×):Ñ):¸4¿=¹=»?Ñ)KÓLÜŸ™×)Ñ)¨$¯-©-«/Ñ:ôô .¨f°a¸ÔGä Ÿw™w×0Ñ0°×1GÑ1GÓ1IÑJ�HØ'×0Ñ0Ó2�HÜ,1¯I©I°h·k±kÄ%Ç+Á+Ó6NÐTUÔ,VÐ)Ü%&§W¡W×%@Ñ%@Ø-Ø*×3Ñ3Ó5Ð8IÑIð &Aó &�N÷
J*÷ J*ñ J*ôX $×/Ñ/ØØà˜<ð ˜G T¨=¸'À4ÈÑLà ¨$°¸wÈÈbÐRVÐWØ!%¨TÐ!1Ø)9ð  ˜<ó '<â5õô �7‹|˜qÒ Ô$9Ô$;ÜØ!(Ø&2Ø!-Ø (Ø"Ø#.Ø!&Ø",Ø'4Ø,<ô�ð �<Ø%)�F˜6‘NØ—‘Ø3Ð.×3Ñ3à˜<ð ˜G T¨=¸'À4ÈÑLà ¨$°¸wÈÈbÐRVÐWØñ	ð
 !ñôð !×)Ñ)Ó+¬q¯w©w×/@Ñ/@Ñ@Ð@Ð@á<Ù<Ù<ñˆMð
 ÐÙ#L�˜aÑ Ü.Ø Øà�<ð �G˜T =°'¸4ÀÑDà˜ $¨°wÀÀbÈ$ÐOØØ+ôˆFô �6‹{˜QŠ ;°%Ò#7Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMrW   zmkl::_mkl_linearr!   Úpacked_wÚorig_wc                ó8  •— g }t        «       rMt        |ddg«      }t        | ||¬«      �^ }}} }t        || |«      rt	        j
                  ||| ||gdddg¬«       t        |«      dk(  s
t        «       r'|j                  ‰j                  | ||f|d |¬«      «       |j                  «       t        j                  j                  v sJ ‚|j                  «       t        j                  j                  v sJ ‚d„ d	„ d
œ}	t        d|| ||g||	¬«      }
|�t        |
|«      }
|
S )Nr   r   r!   Tr   )r$   rk   )rl   Ú
batch_sizec                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zGregister_onednn_fusion_ops.<locals>.mkl_packed_linear.<locals>.<lambda>Ó  ó   € ¤§¡×!2Ñ!2°1·:±:³<Ñ!@€ rW   c                 óX   — t         j                  j                  | j                  «          S rP   rn   rr   s    rH   rs   zGregister_onednn_fusion_ops.<locals>.mkl_packed_linear.<locals>.<lambda>Ô  rR  rW   )r   r   Úpacked_linearrv   )r   r   r   r   r   r0   r*   r   ry   rz   rq   r   ro   rp   r   r   )r   rM  rN  r   rP  r"   r>   r{   r?   rw   rC   Úaten_mkl_linears              €rH   Úmkl_packed_linearz5register_onednn_fusion_ops.<locals>.mkl_packed_linear®  s>  ø€ ð /1�Ü#Ô%Ü#*¨6°A°q°6Ó#:�LÜ29Ø˜<°ô3Ñ/�Q˜  <ô -¨V°Q¸ÔEÜ'×3Ñ3Ø#Ø"Ø ¨&Ð1Ø$(Ø+,¨a¨&õô �w“< 1Ò$Ô(=Ô(?Ø—N‘NØ'×,Ñ,Ø ¨&Ð1°6¸TÈjð -ó ôð  ×(Ñ(Ó*¬a¯g©g×.?Ñ.?Ñ?Ð?Ð?Ø—‘Ó(¬A¯G©G×,=Ñ,=Ñ=Ð=Ð=ñ AÙ@ñ!�ô %>Ø#ØØ˜ &Ð)ØØ"/ô%�ð �=Ü  ¨›^�FØ�rW   rP   )%r«   Ú_CÚ_has_mkldnnÚ rK   r   r   ÚmkldnnÚ_linear_pointwiseÚLinearUnaryr7   ÚbinaryÚLinearBinaryÚonednnÚqlinear_pointwiseÚQLinearPointwisePT2EÚQLinearPointwiseBinaryPT2EÚ_convolution_pointwiseÚ_convolution_pointwise_Ú _convolution_transpose_pointwiser   rœ   ÚdefaultÚqconv2d_pointwiser   r   Úboolr3   r®   Úbinary_tensorÚhas_mklÚmklÚ_mkl_linearÚMKLPackedLinearry   r   r   )Úcpu_needs_realized_inputsrV   ra   rd   ru   r‚   rˆ   rœ   r´   r¿   r   rF  rV  rU  r„   r|   rL  r/  rK   s                @@@@@@rH   Úregister_onednn_fusion_opsro  c   sÎ  ý€ Ü‡x�x×ÓÝä#5Ü�I‰I×Ñ×.Ñ.Ø'Ø!Ø$×0Ñ0×7Ñ7ô	$
Ð ô %7Ü�I‰I×Ñ×.Ñ.×5Ñ5Ø'Ø!Ø$×1Ñ1×8Ñ8ô	%
Ð!ô %7Ü�I‰I×Ñ×.Ñ.Ø'Ø!Ø$×9Ñ9×@Ñ@ô	%
Ð!ô &8Ü�I‰I×Ñ×.Ñ.×5Ñ5Ø'Ø!Ø$×?Ñ?×FÑFô	&
Ð"ô �I‰I×Ñ×3Ñ3Ü�I‰I×Ñ×4Ñ4Ü�I‰I×Ñ×=Ñ=Ü�I‰I×Ñ×.Ñ.Ü×!Ñ!×)Ñ)Ü�I‰I×Ñ×.Ñ.ð%
Ð!ô 
œ5Ÿ9™9×+Ñ+×BÑBÓ	Cð	Üð	äð	ô ô	ó 
Dð	ô6 
œ5Ÿ9™9×+Ñ+×BÑB×IÑIÓ	Jð	Üð	äð	ô ð	ô ô		ó 
Kð	ôB 
œ5Ÿ9™9×+Ñ+×CÑC×JÑJÓ	Kð	Üð	äð	ô ð	ô ô		ó 
Lð	ôB 
œ5Ÿ9™9×+Ñ+×=Ñ=Ó	>ð ñ?	Üð?	äð?	ô ô?	ó 
?ð?	ôB 
œ5Ÿ9™9×+Ñ+×=Ñ=×DÑDÓ	EàQUñ;	Üð;	Ü&ð;	Ü+4ð;	Ü9Bô;	ó 
Fð;	ôz 
œ5Ÿ9™9×+Ñ+×LÑLÓ	Mð	Üð	äð	ô ô	ó 
Nð	ô: 
œ4×0Ñ0×8Ñ8Ó	9ð&	Üð&	äð&	ô ð&	ô ð	&	ô
 ð&	ô ð&	ô ð&	ô ð&	ô œc™ð&	ô ð&	ô ð&	ô ð&	ô ð&	ô  ð&	ô ð&	ô  ô!&	ó 
:ð&	ôP 
œ5Ÿ9™9×+Ñ+×=Ñ=ÐSWÔ	Xð1	Üð1	ô %ð	1	ô
 ð1	ô ð1	ô ô1	ó 
Yð1	ôf 
Ü�I‰I×Ñ×.Ñ.×5Ñ5È4ô

ô 
Ü�I‰I×Ñ×.Ñ.×<Ñ<ÐRVô

ðF	ÜðF	ô %ð	F	ô
 ðF	ô ðF	ô ðF	ô ôF	ó

ó

ðF	ôP 
œ5Ÿ9™9×+Ñ+×=Ñ=ÐSWÔ	Xð ñk	Üðk	ô %ð	k	ô
 ðk	ô ðk	ô ôk	ó 
Yðk	ôZ	 
Ü�I‰I×Ñ×.Ñ.×5Ñ5È4ô

ô 
Ü�I‰I×Ñ×.Ñ.×<Ñ<ÐRVô

ð, ñ'~	Üð~	ô %ð	~	ô
 ð~	ô ð~	ô ð~	ô ô~	ó

ó

ð~	ô@
 �8‰8×ÒÜ0Ü—	‘	—‘×)Ñ)Ø"Ø %Ø(×8Ñ8×?Ñ?ô	ˆOð &×,Ñ,¬U¯Y©Y¯]©]×-FÑ-FÔGäœuŸy™yŸ}™}×8Ñ8Ó9ð ò0Üð0ä#ð0ô "ð0ô œIÑ&ô	0ó :ð0ôd 	"Ð";Õ<àrW   )NNNN))r
  Útypingr   r«   Útorch.utils._pytreeÚutilsÚ_pytreer™   Ú torch._inductor.kernel.mm_commonr   rY  r   Úcodegen.cpp_gemm_templater   Ú!codegen.cpp_grouped_gemm_templater   Úcodegen.cpp_utilsr
   r   r	  r   r   r   r   r   r   r   Úselect_algorithmr   r   r   r   r   r   Úvirtualizedr   r   r3   rI   Ú_inductor_lowering_functionro  rÃ   rW   rH   ú<module>r{     s’   ðã Ý ã ß $Ð $Ý 4å Ý 6Ý EÝ 8Ý ÷÷ ñ ÷ñ ÷
 RÑ Qß ð 
ØØØñ=Øð=àˆI�ð=ð ˆI�ó=ð@ 59Ð Ô 1ó@rW   