Ë
    ÄÓ^jÃâ  ã                   óp  — d dl Z d dlZd dlmc mZ d dlmZ ddlm	Z	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 ddl m!Z!m"Z"m#Z# dejH                  de
j"                  de
j"                  de
j"                  de
j"                  de%e&e
j"                  e
j"                  dz  f   fd„Z'de&de"de"de"dz  de"dz  de"dz  de"dz  de"fd„Z(	 	 	 	 d&dede)e   de)e   fd„Z*d e*_+        	 d'd!e
j"                  d"ejX                  d#e-de
j"                  fd$„Z.d%„ Z/ e/«        y)(é    N)Úmm_argsé   )ÚconfigÚ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)ÚopsÚOpsValueÚVÚW_tensorÚpacked_weightÚx_scaleÚx_zpÚw_scaleÚreturnc                 óR  — d }t        d„ |||fD «       «      }|�r#t        j                  j                  |j	                  «          t        j                  j                  |j	                  «          z  }t        j                  j                  ||j	                  «       dz   ¬«      }t        j                  | j                  t        j                  «      d¬«      }t        j                  j                  |j	                  «          }	||z  |	z  }t        j                  j                  ||j	                  «       dz   ¬«      }
nft        j                  | j                  t        j                  «      d¬«      }t        j                  j                  ||j	                  «       dz   ¬«      }
||
|fS )Nc              3   ó8  K  — | ]’  }t        |t        j                  «      xrr |j                  «       t        j
                  j                  v xrF t        |j                  d «      xr. t        |j                  j                  t        j                  «      –— Œ” y­w)ÚdataN)
Ú
isinstancer   r   Úget_namer   ÚgraphÚ	constantsÚhasattrr#   ÚConstantBuffer)Ú.0Úitems     úk/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_inductor/mkldnn_lowerings.pyú	<genexpr>z+create_int8_compensation.<locals>.<genexpr>+   sy   è ø€ ò *ð
 ô	 	�4œŸ™Ó&ò 	:Ø�M‰M‹OœqŸw™w×0Ñ0Ð0ò	:ä�D—I‘I˜vÓ&ò	:ô �t—y‘y—~‘~¤r×'8Ñ'8Ó9ó	:ñ*ùs   ‚BBÚ_x_w_compens©Únamer   )ÚdimÚ_BMatrixCompens)
Úallr   r&   r'   r%   Úadd_tensor_constantÚtorchÚsumÚtoÚfloat)r   r   r   r   r   Ú	x_w_scaleÚuse_int8_fast_compensation_pathÚx_w_scale_tensorÚweight_compens_tensorÚx_zp_tensorÚweight_compenss              r,   Úcreate_int8_compensationr?      sz  € ð &*€IÜ&)ñ *ð
 ˜d GÐ,ô*ó 'Ð#ò 'ä�G‰G×Ñ˜g×.Ñ.Ó0Ñ1Ü�g‰g×Ñ × 0Ñ 0Ó 2Ñ3ñ4ð 	ô —G‘G×/Ñ/ØØ×'Ñ'Ó)¨NÑ:ð 0ó 
ˆ	ô !&§	¡	¨(¯+©+´e·k±kÓ*BÈÔ JÐÜ—g‘g×'Ñ'¨¯©«Ñ8ˆØ 5Ð8HÑ HÈ;Ñ VÐÜŸ™×4Ñ4Ø!Ø×'Ñ'Ó)Ð,=Ñ=ð 5ó 
‰ô
 !&§	¡	¨(¯+©+´e·k±kÓ*BÈÔ JÐÜŸ™×4Ñ4Ø!Ø×'Ñ'Ó)Ð,=Ñ=ð 5ó 
ˆð
 	(ØØðð ó    r:   ÚinputÚ_weight_compoÚ_x_scaleÚ_x_zpÚ_w_scaleÚ
_x_w_scalec                 óZ  — | r,t        j                  t        j                  ||«      |«      }|S t        j                  t        j                  ||«      |«      }t        j                  |t        j                  t        j                  t        j                  ||«      |«      |«      «      }|S ©N)r   ÚsubÚmul)r:   rA   rB   rC   rD   rE   rF   Útemps           r,   Ú'codegen_int8_gemm_template_compensationrL   O   s©   € ñ 'Ü�w‰wÜ�G‰GØØóð ó
ˆðH €Kô9 �w‰wÜ�G‰GØØóð ó
ˆô �w‰wØÜ�G‰GÜ—‘Ü—G‘GØ Ø óð óð ó	ó
ˆð €Kr@   ÚxÚwÚbc           	      óÂ  — | j                  «       }t        |«      dkD  rt        | d|d   g«      } t        |«      }t        j                  st        j
                  sJ ‚|D �	cg c]%  }	|	€|	nt        j                  j                  |	«      ‘Œ' }}	g }
t        | t        |d   ddg«      |¬«      �^ }}} }|D �	cg c]  }	|	d u‘Œ c}	dd t        j                  t        |«      | «      dœ}| 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        j2                  j5                  ||   «      ‘Œ& }}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 )
Né   éÿÿÿÿr   r   ©ÚlayoutT)Úhas_biasÚtrans_wÚepilogue_creatorÚact_mappingÚgrouped_gemm)Údevice)Úget_sizeÚlenr   r   Úmax_autotuneÚmax_autotune_gemmr   ÚExternKernelÚrealize_inputr   r   ÚdictÚfromkeysÚrangeÚextendr   Úadd_choicesr   r#   ÚMultiOutputÚlistÚMultiOutputLayoutÚ
get_devicerT   Úoutputsr   Úcreate)rM   rN   rO   ÚattrÚscalarsÚ	algorithmrT   Úx_sizeÚnum_gemmÚbiasÚchoicesÚ_ÚkwargsÚinput_nodesÚresultÚtemplate_bufÚgemm_idxÚreturn_bufsÚreturn_tensorss                      r,   Úgrouped_gemm_loweringr{   €   sy  € ð �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ð 34Ö4¨$�T Ò%Ò4ØØ Ü—}‘}¤U¨8£_°aÓ8ñ	€Fð �'�q�'€KØ×Ñ¨Ö? ¨dÑ.>šÒ?Ô@ä×&Ñ&ØØØñð ò	ô ˆw‹<˜1ÒÐÐÜ)ØØØØó	�I€FˆAð —;‘;×#Ñ#€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ùò 5ùò @ùò"ùòs$   Á!*IÂ5IÃ9IÄIÅ(%IÇ)ITÚ
tensor_boxÚdtypeÚname_suffixc                 óV  — t        | t        j                  «      r3| j                  }t        |t        j                  «      r|j                  }n| }t        |t        j
                  «      rzt        j                  j                  j                  | j                  «       «      }|�At        j                  j                  |j                  g «      | j                  «       |z   ¬«      S ddlm}  ||«      }|�Mt        j                  j                  t        j                   |j"                  |¬«      j                  g «      «      S | j%                  «        ddlm}m} t        | j                  |«      r.t        j                  |j+                  | j                  «      «      } t-        | g «      }	|	S )zS
    Normalize a tensor with all dimensions equal to 1 to a 0D ConstantBuffer.
    r/   r   )Úget_constant_value©r}   r   )r_   ÚGenericView)r$   r   r   r#   Ú
StorageBoxr)   r   r&   r'   Úgetr%   r4   ÚreshapeÚtorch._inductor.loweringr€   r5   ÚtensorÚvalueÚrealizer_   r‚   Úrequire_contiguousr   )
r|   r}   r~   r#   r‡   r€   Úconst_valuer_   r‚   rv   s
             r,   Ú_convert_to_0d_constantrŒ   Å   s@  € ô �*œbŸl™lÔ+Ø�‰ˆÜ�dœBŸM™MÔ*Ø—9‘9‰Dàˆä�$œ×)Ñ)Ô*Ü—‘×"Ñ"×&Ñ& z×':Ñ':Ó'<Ó=ˆØÐÜ—7‘7×.Ñ.Ø—‘˜rÓ"¨×)<Ñ)<Ó)>ÀÑ)Lð /ó ð õ <á$ TÓ*€KØÐÜ�w‰w×*Ñ*Ü�L‰L˜×*Ñ*°%Ô8×@Ñ@ÀÓDó
ð 	
ð ×ÑÔç-ä�*—/‘/ ;Ô/Ü—\‘\ ,×"AÑ"AÀ*Ç/Á/Ó"RÓSˆ
ä�*˜bÓ!€FØ€Mr@   c            !      óØ  ‡‡‡‡‡‡— t         j                  j                  �rId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        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        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@                  jB                  d.d‰jD                  j                  ¬«      Š| jG                  t         j                  j@                  jB                  «       t1        t         j                  j@                  jB                  «      d d/œdt2        d0t2        d1t2        dt2        d z  fˆfd2„«       }tI        | «       y y )4Nr   )Ú	mkldnn_irzmkldnn::_linear_pointwiseF)Úhas_out_variantÚkernel_creatorzonednn::qlinear_pointwiserM   Úweightrq   c
                 ór   •— t        j                  ‰
j                  j                  | |||||||||	«
      «      S rH   )r   rk   ÚConvolutionUnary)rM   r‘   rq   ÚpaddingÚstrideÚdilationÚgroupsrl   rm   rn   rŽ   s             €r,   Úconvolution_unaryz5register_onednn_fusion_ops.<locals>.convolution_unary  sJ   ø€ ô ×#Ñ#Ø×*Ñ*×1Ñ1ØØØØØØØØØØóóð r@   Úotherc                 óx   •— t        j                  ‰j                  j                  | |||||||||	|
||«      «      S rH   )r   rk   ÚConvolutionBinary©rM   r™   r‘   rq   r”   r•   r–   r—   Úbinary_attrÚbinary_alphaÚ
unary_attrÚunary_scalarsÚunary_algorithmrŽ   s                €r,   Úconvolution_binaryz6register_onednn_fusion_ops.<locals>.convolution_binary1  sS   ø€ ô  ×#Ñ#Ø×+Ñ+×2Ñ2ØØØØØØØØØØ ØØ!Ø#óóð r@   c                 óx   •— t        j                  ‰j                  j                  | |||||||||	|
||«      «      S rH   )r   rk   ÚConvolutionBinaryInplacerœ   s                €r,   Úconvolution_binary_inplacez>register_onednn_fusion_ops.<locals>.convolution_binary_inplaceS  sS   ø€ ô  ×#Ñ#Ø×2Ñ2×9Ñ9ØØØØØØØØØØ ØØ!Ø#óóð r@   rN   rO   c                 ó€  •‡‡‡— | j                  «       }t        |«      dkD  rt        | d|d   g«      } |�t        j                  j                  |«      }g }t        j                  st        j                  rnt        |ddg«      }	t        | |	|¬«      �^ }
}} }	t        || |	«      r@ˆˆˆfd„}|d ud‰dk(  rd n|d	œ}|�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 )NrQ   rR   r   r   rS   c                 ó"   •— t        | ‰‰‰¬«      S )N©rm   rn   r	   )Úbufrn   rl   rm   s    €€€r,   rW   zJregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.epilogue_creator‹  s   ø€ Ü8Ø ¨wÀ)ô ð r@   TÚnone©rU   rV   rW   )rQ   r   r   Úinput_indices)rl   rm   rn   ÚBc                 óX   — t         j                  j                  | j                  «          S rH   ©r   r&   r'   r%   ©rM   s    r,   ú<lambda>zBregister_onednn_fusion_ops.<locals>.linear_unary.<locals>.<lambda>¬  ó   € œQŸW™W×.Ñ.¨q¯z©z«|Ñ<€ r@   Úlinear_unary©Úinput_gen_fns©r[   r\   r   r   r_   r`   r   r]   r^   r   r   r   r   re   r   ra   ÚappendÚbindr%   r   r&   r'   r   )rM   rN   rO   rl   rm   rn   rT   ro   rr   Útransposed_wrs   rW   rt   rµ   rv   Úaten_mkldnn_linear_unarys      ```         €r,   r³   z0register_onednn_fusion_ops.<locals>.linear_unaryu  sü  û€ ð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Øˆ}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜ×"Ò"¤f×&>Ò&>Ü& q¨1¨a¨&Ó1�Ü.5°a¸ÈfÔ.UÑ+��F˜A˜|Ü(¨°°LÔAöð %&¨T MØ#'à$(¨F¢N™DÐ8Hñ	�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ô 2ØØØ˜)��A‘¨!¨Q°¨ØØ+ô‰IˆF�Aô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMr@   Úyc                 óà  •‡‡— | j                  «       }t        |«      dkD  rt        | d|d   g«      } ‰j                  «       }t        |«      dkD  rt        ‰d|d   g«      Š|�t        j                  j                  |«      }g }t        j                  st        j                  rnt        |ddg«      }	t        | |	‰|¬«      �^ }
}} }	Št        || |	«      r>ˆˆfd„}|d ud|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 )NrQ   rR   r   r   rS   c                 ó    •— t        | ‰‰¬«      S )N)r™   r	   )r©   rl   r»   s    €€r,   rW   zKregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.epilogue_creatorÎ  s   ø€ Ü8¸¸dÈ!ÔLÐLr@   Tr«   )r   rQ   r   )é   r   rQ   r   r¬   )rl   r­   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.linear_binary.<locals>.<lambda>ì  r²   r@   Úlinear_binaryr´   r¶   )rM   r»   rN   rO   rl   rT   ro   Úy_sizerr   r¹   rs   rW   rt   rµ   rv   Úaten_mkldnn_linear_binarys    `  `          €r,   rÀ   z1register_onednn_fusion_ops.<locals>.linear_binary¹  s0  ú€ ð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Ø—Z‘Z“\ˆFÜ�6‹{˜QŠÜ˜˜R ¨¡Ð,Ó-�Øˆ}Ü—O‘O×1Ñ1°!Ó4�Ø*,ˆGÜ×"Ò"¤f×&>Ò&>Ü& q¨1¨a¨&Ó1�Ü18Ø�| Q¨vô2Ñ.��F˜A˜|¨Qô )¨°°LÔAõMð %&¨T MØ#'Ø,<ñ�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ô 2ØØØ˜Y��A�q‘	¨Q°°1°a¨LØØ+ô‰IˆF�Aô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMr@   c                 ót   •— t        j                  ‰j                  j                  | |||||||||	|
«      «      S rH   )r   rk   ÚConvolutionTransposeUnary)rM   r‘   rq   r”   Úoutput_paddingr•   r–   r—   rl   rm   rn   rŽ   s              €r,   Úconvolution_transpose_unaryz?register_onednn_fusion_ops.<locals>.convolution_transpose_unaryù  sM   ø€ ô ×#Ñ#Ø×3Ñ3×:Ñ:ØØØØØ"ØØØØØØóóð r@   Ú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 rH   )ÚpytreeÚtree_mapr   rk   ÚMkldnnRnnLayer)rM   rÇ   rÈ   rÉ   rÊ   rË   rÌ   rÍ   rÎ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rŽ   s                   €r,   Úmkldnn_rnn_layerz4register_onednn_fusion_ops.<locals>.mkldnn_rnn_layer  sc   ø€ ô& —?‘?Ü× Ñ Ø×(Ñ(×/Ñ/ØØØØØØØØØØØØØØ!ØØó!óð r@   )Útype_promotion_kindr   r   c                 ó\  •— t        |t        j                  «      sWt        |«      t        u sJ ‚t
        j                  j                  t        j                  |t        j                  ¬«      d¬«      }|€Dt
        j                  j                  t        j                  dt        j                  ¬«      d¬«      }t        |t        j                  «      sWt        |«      t        u sJ ‚t
        j                  j                  t        j                  |t        j                  ¬«      d¬«      }|€Dt
        j                  j                  t        j                  dt        j                  ¬«      d¬«      }t        j                  ‰j                  j                  | |||||||||	|
||||||«      «      S )Nr�   r   r/   r   r   Úw_zp)r$   r   r   Útyper8   r   r&   r4   r5   r‡   Úfloat32Úint32Úintrk   ÚQConvPointWisePT2E)rM   r   r   r   r   rÝ   rq   r•   r”   r–   r—   Úo_inv_scaleÚo_zero_pointÚoutput_dtyperl   rm   rn   rŽ   s                    €r,   Úqconvolution_unaryz6register_onednn_fusion_ops.<locals>.qconvolution_unary@  se  ø€ ô( ˜g¤r§|¡|Ô4Ü˜G“}¬Ñ-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó �ð ˆ|Ü—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ó �ð ˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ô ×#Ñ#Ø×,Ñ,×3Ñ3ØØØØ!ØØØØØØØØØ Ø ØØØó#óð r@   Úaccumc                 óR  •— t        |t        j                  «      sWt        |«      t        u sJ ‚t
        j                  j                  t        j                  |t        j                  ¬«      d¬«      }|€Dt
        j                  j                  t        j                  dt        j                  ¬«      d¬«      }t        |t        j                  «      sWt        |«      t        u sJ ‚t
        j                  j                  t        j                  |t        j                  ¬«      d¬«      }|€Dt
        j                  j                  t        j                  d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   r   rÝ   r6   )r$   r   r   rÞ   r8   r   r&   r4   r5   r‡   rß   rà   rá   Úbfloat16Ú	get_dtyper   rk   ÚQConvPointWiseBinaryPT2E)rM   r   r   r   r   rÝ   rç   rq   r•   r”   r–   r—   rã   rä   rå   Úaccum_scaleÚaccum_zpr�   ÚalpharŸ   r    r¡   rŽ   s                         €r,   Úqconvolution_binaryz7register_onednn_fusion_ops.<locals>.qconvolution_binary  sÊ  ø€ ô< ˜g¤r§|¡|Ô4Ü˜G“}¬Ñ-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó �ð ˆ|Ü—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ó �ð ˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó �ð
 ˜uÒ$Ø ¤U§]¡]´E·N±NÐ$CÑCØ—O‘OÓ%¬%¯-©-¼¿¹Ð)HÑHØ—O‘OÓ%¨Ò5ô ! ¨Ó5�Ü×#Ñ#Ø×2Ñ2×9Ñ9ØØØØ!ØØØØØØØØØØ Ø ØØØØØØ!Ø#ó-óð r@   rÝ   c                 ó|  •‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡— |j                  «       t        j                  t        j                  fv sJ d«       ‚| j	                  «       }t        |«      dkD  rt        | d|d   g«      } t        ‰t        j                  «      sXt        ‰«      t        u sJ ‚t        j                  j                  t        j                  ‰t        j                   ¬«      d¬«      Šn~‰j	                  «       }t        |«      dk(  st#        d„ |D «       «      rt%        ‰t        j                   d	«      Šn‰j'                  «        t        ‰j	                  «       «      d
v sJ d«       ‚‰€Et        j                  j                  t        j                  dt        j(                  ¬«      d¬«      Šnàt        ‰t        j                  «      sjt        ‰«      t*        u sJ dt        ‰«      › d�«       ‚t        j                  j                  t        j                  ‰t        j(                  ¬«      d¬«      Šn\‰j	                  «       }t        |«      dk(  st#        d„ |D «       «      rt%        ‰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.                  j1                  |«      t        j2                  «      ršt        j                  j4                  |j7                  «          j9                  t        j(                  «      }t        j                  j                  t        j                  |t        j(                  ¬«      |j7                  «       ¬«      }‰€d n‰j                  «       Šg }t:        j<                  st:        j>                  �rštA        | ||‰	¬«      �^ }}} }t        t        j.                  j1                  |«      t        j2                  «      �rNt        jB                  t        jD                  t        j                  j4                  |j7                  «          «      t        j                  j4                  |j7                  «          «      rÓtG        || |«      rÆt        j                  j4                  |j7                  «          jI                  «       }tK        ||‰‰‰«      \  ŠŠŠˆˆ
ˆˆˆˆˆ	ˆˆˆˆˆˆˆfd„}| j                  «       t        jL                  t        j                  fv sJ ‚tO        jP                  ||‰€| ‰‰|‰|gn| ‰‰|‰|‰g‰d u|‰€g d¢ng d¢¬«       t        |«      dk(  s
tS        «       rLtU        ‰‰‰	‰
‰‰¬«      }‰€d |d<   |jW                   ‰jX                  ‰€| ‰‰|‰|fn| ‰‰|‰|‰f|fi |¤Ž«       |j7                  «       t        j                  j4                  v sJ ‚d„ d„ d„ d„ dœ}t        t        j.                  j1                  ‰«      t        j2                  «      rd„ |d<   t        t        j.                  j1                  ‰«      t        j2                  «      rd „ |d<   t[        d!|‰€| ‰‰|‰|gn| ‰‰|‰|‰g||¬"«      \  }}t        |«      dkD  r%t        |g |d d ¢|j	                  «       d   ‘­«      }|S )#Nz=Only int8 and e4m3fn weights are supported by oneDNN qlinear.rQ   rR   r�   r   r/   r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­w©r   N© ©r*   r1   s     r,   r-   zDregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<genexpr>÷  ó   è ø€ Ò0R¸c°¸µÑ0Rùó   ‚Ú_0d©r   r   úx_scale must be 0D or 1Dr   zx_zp type is z	, not intc              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrò   ró   rô   s     r,   r-   zDregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<genexpr>  ó   è ø€ Ò-L¸3¨c°Q­hÑ-Lùrö   r   z(x_zp is incompatible with oneDNN qlinearrÝ   ©rT   Ú	out_dtypec                 óZ  •‡‡‡‡‡	‡
‡‡‡‡— ‰t         j                  t         j                  t         j                  t         j                  fv sJ ‚| j                  «       Š‰j                  «       Šd Š‰r‰€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 }d }‰s ‰d«      } ‰d«      } ‰|«      } ‰|«      }d }‰r‰€J ‚ ‰|«      }t	        ‰||||||«      }‰
�y ‰|«      }	‰t        j                  t        j
                  fv sJ ‚‰t        j
                  k(  r$t        j                  |	t        j                  «      }	t        j                  ||	«      }|S ©NrR   ró   ©r   r   r5   rß   rL   ré   r   )ÚindexrA   Úweight_compens_indexrC   rD   rE   rB   rF   rK   Ú_biasrq   Ú
bias_dtypeÚbias_loaderÚinput_loaderr:   Úw_scale_loaderÚweight_compens_loaderÚx_scale_loaderÚx_w_scale_loaderÚx_zp_loaders             €€€€€€€€€€r,   Ú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à'+˜HØ$(˜EØ'+˜HÙ#BÙ+9¸"Ó+= Ù(3°B« Ù+9Ð:NÓ+O Ù,AÐBVÓ,W˜MØ)-˜JÙ>Ø'7Ð'CÐ CÐ'CÙ-=Ð>RÓ-S 
ä#JØ ?Ø %Ø -Ø (Ø %Ø (Ø *ó$˜Dð  $Ð/á(3Ð4HÓ(I à'1´e·m±mÄUÇ^Á^Ð5TÑ'TÐ TÐ'TØ#-´·±Ò#?Ü,/¯L©L¸ÄÇÁÓ,N EÜ'*§w¡w¨t°UÓ'; à#'˜Kr@   ©rZ   r}   r  Úrangesrª   r¨   c                 ó@   •—  ‰| «      }t        j                  |‰«      S rH   ©r   r   ©r  rA   Úoutput_cast_loaderrå   s     €€r,   Ú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Ð Hr@   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€ÿÿÿé   ©r5   rß   r   ÚroundÚuint8ÚminimumÚmaximumr   ©r  ÚscaleÚ
zero_pointrA   Ú	inv_scaleÚvalÚqminÚqmaxÚclampedr  rå   Úrequant_input_loaders            €€€r,   Ú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Ð Jr@   ©r"  r#  ©r5   rß   ré   r  Úint8Úmake_loaderr   Ú	Pointwiseri   r[   r
   Úget_device_or_errorÚloweringr  Ú	functoolsÚpartialr8   rá   )Úinput_bufferr  Ú
output_bufr  r*  r  r  r  r  r)  r  r	  r
  r  r  rn   rl   rq   r  Úo_scalerä   rå   rm   r:   r   r>   r   r9   r   s        @@@@@@@@@@€€€€€€€€€€€€€€r,   rW   zKregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.epilogue_creatorI  sõ  ÿú€ à+Ü!ŸM™MÜ!ŸN™NÜ!ŸK™KÜ!ŸJ™Jð	0ñ  ð ð  ð (4×'?Ñ'?Ó'A˜Ø0>×0JÑ0JÓ0LÐ-Ø+/Ð(Ù:Ø#,Ð#8Ð8Ð#8Ø/8×/DÑ/DÓ/FÐ,Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÐ+Ø*.×*:Ñ*:Ó*<˜K÷((õ ((ôT &(§\¡\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#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ð  *Ð)r@   )r   r¾   r   rQ   é   é   )é   r   r¾   r   rQ   r7  r8  ©rU   rW   r¬   )Úoutput_scaleÚoutput_zero_pointrå   Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrq   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>ê  r²   r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>ë  r²   r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>ì  r²   r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>í  r²   r@   )r¾   r7  r8  r9  c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>ô  ó   € ¬Q¯W©W×->Ñ->¸q¿z¹z»|Ñ-L€ r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zCregister_onednn_fusion_ops.<locals>.qlinear_unary.<locals>.<lambda>ù  rE  r@   Úqlinear_unaryr´   ).rê   r5   r-  Úfloat8_e4m3fnr[   r\   r   r$   r   r   rÞ   r8   r   r&   r4   r‡   rß   r3   rŒ   r‰   rà   rá   Ú	get_numelÚInputsKernelÚunwrap_storage_for_inputr)   r'   r%   r7   r   r]   r^   r   ÚequalÚ
zeros_liker   Úto_denser?   r  r   re   r   ra   r·   r¸   r   )rM   r   r   r   r   rÝ   rq   r6  rä   rå   rl   rm   rn   rT   ro   Úx_scale_sizeÚ	x_zp_sizeÚw_zp_tensorrr   rs   r   rW   rt   rµ   rv   r  r:   r>   r9   Úaten_mkldnn_qlinear_unarys    `` ` ```````            @@@@€r,   rG  z1register_onednn_fusion_ops.<locals>.qlinear_unaryØ  s*  ÿþ€ ð" !×*Ñ*Ó,´·±¼U×=PÑ=PÐ0QÑQð ØOóÐQð —Z‘Z“\ˆFÜ�6‹{˜QŠä˜˜R ¨¡Ð,Ó-�Ü˜g¤r§|¡|Ô4Ü˜G“}¬Ñ-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó ‘ð  '×/Ñ/Ó1�Ü�|Ó$¨Ò)¬SÑ0RÀ\Ô0RÔ-RÜ5°g¼u¿}¹}ÈeÓT‘Gà—O‘OÔ%Ü˜7×+Ñ+Ó-Ó.°&Ñ8ÐTÐ:TÓTÐ8àˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó ‘ô   ¤b§l¡lÔ3Ü˜D“z¤SÑ(ÐO¨M¼$¸t»*¸ÀYÐ*OÓOÐ(Ü—w‘w×2Ñ2Ü—L‘L ¬U¯[©[Ô9Àð 3ó ‘ð !ŸM™M›O�	Ü�y“> QÒ&¬#Ñ-LÀ)Ô-LÔ*Lô 3°4¼¿¹ÀeÓL‘Dà—L‘L”Nà—>‘>Ó# 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ä×"Ò"¤f×&>Ó&>Ü/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Ø Ø%ØØØóñ	Ø7Ø&Ø!÷|*÷ |*ñ |*ð| Ÿ;™;›=¬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Ñ ä1ØØà�<ð �G˜T =°'¸4Ñ@à˜ $¨°wÀÀdÐKØØ+ô‰IˆF�Aô �6‹{˜QŠÜ˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMr@   Úx2c                 ó²  •‡‡‡‡‡‡‡	‡
‡‡‡‡‡ ‡!‡"‡#— | j                  «       }‰j                  «       }t        |«      t        |«      k(  sJ ‚t        |«      dkD  r&|dv r"t        | d|d   g«      } t        ‰d|d   g«      Št        ‰t        j
                  «      sXt        ‰«      t        u sJ ‚t        j                  j                  t        j                  ‰t        j                  ¬«      d¬«      Šn~‰j                  «       }t        |«      dk(  st        d„ |D «       «      rt        ‰t        j                  d	«      Šn‰j!                  «        t        ‰j                  «       «      d
v sJ d«       ‚‰€Et        j                  j                  t        j                  dt        j"                  ¬«      d¬«      ŠnÎt        ‰t        j
                  «      sXt        ‰«      t$        u sJ ‚t        j                  j                  t        j                  ‰t        j"                  ¬«      d¬«      Šn\‰j                  «       }t        |«      dk(  st        d„ |D «       «      rt        ‰t        j"                  d	«      Šn‰j!                  «        |€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                  j.                  |j1                  «          j3                  t        j"                  «      }t        j                  j                  t        j                  |t        j"                  ¬«      |j1                  «       ¬«      }|dk(  rŒ‰
t        j                  t        j4                  fv rP‰j'                  «       t        j                  t        j4                  fv r ‰j'                  «       ‰
k7  r't7        ‰‰
«      Šn‰j'                  «       ‰
k(  sJ d«       ‚‰j'                  «       Š"‰�‰j'                  «       nd Šg }t8        j:                  st8        j<                  �rÔ|dv �rÏt?        | |‰|‰
¬«      �^ }}} }Št        t        j(                  j+                  ‰«      t        j,                  «      �r�t        ‰jA                  «       jB                  «      dk(  �rZt        t        j(                  j+                  |«      t        j,                  «      �r"t        jD                  t        jF                  t        j                  j.                  |j1                  «          «      t        j                  j.                  |j1                  «          «      r§tI        || |«      ršt        j                  j.                  |j1                  «          }|jK                  «       }tM        ||‰‰‰«      \  Š Š!Š#ˆˆˆˆ	ˆ
ˆˆˆˆ ˆˆ!ˆˆ"ˆˆ#ˆfd„}tO        jP                  ||‰€	| ‰‰|‰|‰gn	| ‰‰|‰|‰‰g‰d u|‰€g d¢ng d¢¬«       t        |«      dk(  s
tS        «       rRtU        ‰‰	‰
||||‰‰‰¬«
      }‰€d |d<   |jW                   ‰$jX                  ‰€	| ‰‰|‰|‰fn	| ‰‰|‰|‰‰f|fi |¤Ž«       |j1                  «       t        j                  j.                  v sJ ‚d„ d„ d„ dœ}‰�d„ |d<   t[        d|‰€	| ‰‰|‰|‰gn	| ‰‰|‰|‰‰g||¬«      \  }}t        |j\                  j\                  t        j^                  «      �r|dk(  �r|j\                  j\                  j`                  ‰jA                  «       k(  råt        j
                  jc                  t	        j^                  t	        jd                  t	        jf                  ‰‰jA                  «       ¬ «      «      |j\                  j\                  jh                  |j\                  j\                  jj                  |j\                  j\                  jl                  |j\                  j\                  jn                  ¬!«      «      }t        |«      dkD  r)|dv r%t        |g |d d ¢|j                  «       d   ‘­«      }|S )"NrQ   )r   r6   rR   r�   r   r/   r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrò   ró   rô   s     r,   r-   zEregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<genexpr>1  rõ   rö   r÷   rø   rù   r   c              3   ó&   K  — | ]	  }|d k(  –— Œ y­wrò   ró   rô   s     r,   r-   zEregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<genexpr>B  rû   rö   rÝ   r6   zCdtype of accum for qlinear post op sum should be the same as outputrü   c                 óœ  •‡‡‡‡‡	‡
‡‡‡‡‡— ‰t         j                  t         j                  t         j                  t         j                  fv sJ ‚| j                  «       Š‰j                  «       Š‰j                  «       Šd Š‰r‰€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 }d }| d   f}‰s ‰d«      } ‰d«      } ‰|«      }t        j                  |t        j                  «      } ‰|«      }d }‰r‰€J ‚ ‰|«      }t	        ‰||||||«      }	‰�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 r   r  )r  rA   Ú_x2rC   rD   rE   r  rB   rF   rK   r  rq   r  r  r  r:   r  r	  Úx2_dtypeÚ	x2_loaderr
  r  r  s              €€€€€€€€€€€€r,   r  z^register_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn¨  s`  ø€ á$0°Ó$7˜EÙ"+¨EÓ"2˜CØ'+˜HØ$(˜EØ'+˜HØ49¸"±I°<Ð0Ù#BÙ+9¸"Ó+= Ù(3°B« Ù+9Ð:NÓ+O ä$'§L¡L°¼¿¹Ó$F˜EÙ,AÐBVÓ,W˜MØ)-˜JÙ>Ø'7Ð'CÐ CÐ'CÙ-=Ð>RÓ-S 
ä#JØ ?Ø %Ø -Ø (Ø %Ø (Ø *ó$˜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à#'˜Kr@   r  rª   r¨   c                 ó@   •—  ‰| «      }t        j                  |‰«      S rH   r  r  s     €€r,   r  zrregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.epilogue_creator.<locals>.inner_fn_cast_output_to_bf16ì  r  r@   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            €€€r,   r*  zfregister_onednn_fusion_ops.<locals>.qlinear_binary.<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¼U¿[¹[Ó'IÐ Ir@   r+  r,  ) r4  r  r5  r  r*  r  r  r  r  r)  r  r	  r[  r
  r  r  rq   r  r6  rä   rå   r¡   rŸ   r    r:   r   r>   rS  rZ  r   r9   r   s         @@@@@@@@@@@€€€€€€€€€€€€€€€€r,   rW   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Ð-Ø+/Ð(Ù:Ø#,Ð#8Ð8Ð#8Ø/8×/DÑ/DÓ/FÐ,Ø)0×)<Ñ)<Ó)>˜Ø)0×)<Ñ)<Ó)>˜Ø&*×&6Ñ&6Ó&8˜à&*˜ØÐ+Ø*.×*:Ñ*:Ó*<˜K÷.(÷ .(ô` &(§\¡\Ø#/×#:Ñ#:Ó#<Ü"'§-¡-Ø%-Ø#/×#8Ñ#8Ó#:ô	&˜
ð &¨Ò/Ü)BØ *Ø *Ø(5Ø*9ô	*˜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ð  *Ð)r@   )r   r¾   r   rQ   r7  r8  r9  )é   r   r¾   r   rQ   r7  r8  r9  r:  )
r;  r<  rå   Úother_scaleÚother_zpÚbinary_post_oprž   Úunary_post_opÚunary_post_op_argsÚunary_post_op_algorithmrq   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>A  r²   r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>B  r²   r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>C  r²   r@   )r¾   r7  r8  c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zDregister_onednn_fusion_ops.<locals>.qlinear_binary.<locals>.<lambda>F  rE  r@   r^  Úqlinear_binaryr´   )r#   rT   )rT   ÚinputsÚmake_kernel_renderÚtemplateÚchoice)8r[   r\   r   r$   r   r   rÞ   r8   r   r&   r4   r5   r‡   rß   r3   rŒ   r‰   rà   rá   rê   rJ  rK  r)   r'   r%   r7   ré   r   r   r]   r^   r   Ú
get_layoutÚsizerL  rM  r   rN  r?   r   re   r   ra   r·   r¸   r   r#   ÚCppTemplateBufferrT   rk   ÚNonOwningLayoutÚReinterpretViewrj  rk  rl  rm  )%rM   r   r   r   r   rÝ   rS  rq   r6  rä   rå   Úx2_scaleÚx2_zpr�   rî   rŸ   r    r¡   rT   ro   Úx2_sizerO  rP  rQ  rr   rs   r   rW   rt   rµ   rv   r  r:   r>   rZ  r9   Úaten_mkldnn_qlinear_binarys%    `` ` `````    ```             @@@@@€r,   ri  z2register_onednn_fusion_ops.<locals>.qlinear_binary  sj  ÿÿø€ ð6 —Z‘Z“\ˆFØ—k‘k“mˆGÜ�v“;¤# g£,Ò.Ð.Ð.Ü�6‹{˜QŠ ;°.Ñ#@ä˜˜R ¨¡Ð,Ó-�Ü˜"˜r 7¨2¡;Ð/Ó0�Ü˜g¤r§|¡|Ô4Ü˜G“}¬Ñ-Ð-Ð-ÜŸ'™'×5Ñ5Ü—L‘L ´·±Ô>ÀYð 6ó ‘ð  '×/Ñ/Ó1�Ü�|Ó$¨Ò)¬SÑ0RÀ\Ô0RÔ-RÜ5°g¼u¿}¹}ÈeÓT‘Gà—O‘OÔ%Ü˜7×+Ñ+Ó-Ó.°&Ñ8ÐTÐ:TÓTÐ8àˆ|Ü—w‘w×2Ñ2Ü—L‘L ¬%¯+©+Ô6¸Vð 3ó ‘ô   ¤b§l¡lÔ3Ü˜D“z¤SÑ(Ð(Ð(Ü—w‘w×2Ñ2Ü—L‘L ¬U¯[©[Ô9Àð 3ó ‘ð !ŸM™M›O�	Ü�y“> QÒ&¬#Ñ-LÀ)Ô-LÔ*LÜ2°4¼¿¹ÀeÓL‘Dà—L‘L”Nàˆ|Ü—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ó �ð ˜eÒ#ØÜ—M‘MÜ—N‘Nð$ñ ð —l‘l“n¬¯©¼¿¹Ð(GÑGØ—|‘|“~¨Ò5ô
 & b¨,Ó7™àŸ<™<›>¨\Ò9ð Ø]óÐ9ð —|‘|“~ˆHØ-1Ð-=˜Ÿ™Ô)À4ˆJØ*,ˆGÜ×#Ò#¤v×'?Ó'?À[ð Uò Fô 4;Ø�} 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Ø Ø%ØØØóñ	Ø7Ø&Ø!÷G*÷ G*ó G*ôR $×/Ñ/ØØà˜<ð ˜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Ñ Ü1Ø Øà�<ð �G˜T =°'¸4ÀÑDà˜ $¨°wÀÀbÈ$ÐOØØ+ô‰IˆF�Aô ˜6Ÿ;™;×+Ñ+¬R×-AÑ-AÕBØ 5Ó(Ø—K‘K×$Ñ$×+Ñ+¨r¯}©}«Ò>ô Ÿ™×,Ñ,Ü×(Ñ(Ü!×1Ñ1Ü×.Ñ.°B¸r¿}¹}»ÔOó ð  &Ÿ{™{×/Ñ/×6Ñ6Ø+1¯;©;×+;Ñ+;×+NÑ+NØ!'§¡×!1Ñ!1×!:Ñ!:Ø%Ÿ{™{×/Ñ/×6Ñ6ôó
�ô �6‹{˜QŠ ;°.Ñ#@Ü˜fÐ&K¨¨s°¨Ð&K°V·_±_Ó5FÀrÑ5JÑ&KÓL�ØˆMr@   zmkl::_mkl_linearrS   Úpacked_wÚorig_wc                ój  •— g }t         j                  st         j                  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   rS   TrQ   )rV   r¬   )r­   Ú
batch_sizec                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zGregister_onednn_fusion_ops.<locals>.mkl_packed_linear.<locals>.<lambda>”  ó   € ¤§¡×!2Ñ!2°1·:±:³<Ñ!@€ r@   c                 óX   — t         j                  j                  | j                  «          S rH   r¯   r°   s    r,   r±   zGregister_onednn_fusion_ops.<locals>.mkl_packed_linear.<locals>.<lambda>•  r|  r@   )r   rQ   Úpacked_linearr´   )r   r]   r^   r   r   r   r   re   r\   r   r·   r¸   r%   r   r&   r'   r   r   )rM   rw  rx  rO   rz  rT   rr   r¹   rs   rµ   rv   Úaten_mkl_linears              €r,   Úmkl_packed_linearz5register_onednn_fusion_ops.<locals>.mkl_packed_linearo  sM  ø€ ð /1�Ü×&Ò&¬&×*BÒ*BÜ#*¨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Ù@ñ!�ô
 6Ø#ØØ˜ &Ð)ØØ"/ô‘	�˜ð �=Ü  ¨›^�FØ�r@   rH   )%r5   Ú_CÚ_has_mkldnnÚ rŽ   r   r   ÚmkldnnÚ_linear_pointwiseÚLinearUnaryrk   ÚbinaryÚLinearBinaryÚonednnÚqlinear_pointwiseÚQLinearPointwisePT2EÚQLinearPointwiseBinaryPT2EÚ_convolution_pointwiseÚ_convolution_pointwise_Ú _convolution_transpose_pointwiser   rÚ   ÚdefaultÚqconv_pointwiser   r   Úboolrg   rá   Úqconv2d_pointwiseÚbinary_tensorÚhas_mklÚmklÚ_mkl_linearÚMKLPackedLinearr·   r   )Úcpu_needs_realized_inputsr˜   r¢   r¥   r³   rÀ   rÆ   rÚ   ræ   rï   rG  ri  r€  r  rÂ   rº   rv  rR  rŽ   s                @@@@@@r,   Úregister_onednn_fusion_opsrš  î   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×+Ñ+×=Ñ=Ó	>ð ñA	ÜðA	äðA	ô ôA	ó 
?ðA	ôF 
œ5Ÿ9™9×+Ñ+×=Ñ=×DÑDÓ	EàQUñ=	Üð=	Ü&ð=	Ü+4ð=	Ü9Bô=	ó 
Fð=	ô~ 
œ5Ÿ9™9×+Ñ+×LÑLÓ	Mð	Üð	äð	ô ô	ó 
Nð	ô: 
œ4×0Ñ0×8Ñ8Ó	9ð&	Üð&	äð&	ô ð&	ô ð	&	ô
 ð&	ô ð&	ô ð&	ô ð&	ô œc™ð&	ô ð&	ô ð&	ô ð&	ô ð&	ô  ð&	ô ð&	ô  ô!&	ó 
:ð&	ôP 
œ5Ÿ9™9×+Ñ+×;Ñ;ÐQUÔ	Vð<	Üð<	ô %ð	<	ô
 ð<	ô ô<	ó 
Wð<	ô| 
Ü�I‰I×Ñ×.Ñ.×5Ñ5È4ô

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

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

ó

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

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

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

ó

ðV	ôp
 �8‰8×ÒÜ0Ü—	‘	—‘×)Ñ)Ø"Ø %Ø(×8Ñ8×?Ñ?ô	ˆOð &×,Ñ,¬U¯Y©Y¯]©]×-FÑ-FÔGäœuŸy™yŸ}™}×8Ñ8Ó9ð ò1Üð1ä#ð1ô "ð1ô ˜tÑ#ô	1ó :ð1ôf 	"Ð";Õ<ði% r@   )NNNN)r÷   )0r2  r5   Útorch.utils._pytreeÚutilsÚ_pytreer×   Ú torch._inductor.kernel.mm_commonr   rƒ  r   r   Úcodegen.cpp_gemm_templater   Ú!codegen.cpp_grouped_gemm_templater   Úcodegen.cpp_utilsr
   r   r1  r   r   r   r   r   r   r   Úselect_algorithmr   r   r   r   r   Úvirtualizedr   r   r   ÚTensorÚtupler’  r?   rL   rg   r{   Ú_inductor_lowering_functionr}   ÚstrrŒ   rš  ró   r@   r,   ú<module>r¨     s§  ðã ã ß $Ð $Ý 4ç Ý 6Ý EÝ 8Ý ÷÷ ñ ÷ñ ÷
 @ß )Ñ )ð-Ø�l‰lð-à—<‘<ð-ð �\‰\ð-ð �,‰,ð	-ð
 �\‰\ð-ð ØØ‡L�LØ‡L�L�4Ñðñó-ð`.Ø%)ð.àð.ð ð.ð ˜‰oð	.ð
 �d‰?ð.ð ˜‰oð.ð ˜4‘ð.ð ó.ðj 
ØØØñ?Øð?àˆI�ð?ð ˆI�ó?ðD 59Ð Ô 1ð ñ&Ø—‘ð&à�;‰;ð&ð ð&ð ‡\�\ó	&òRu=ñp% Õ r@   