+
    ÒÜ³j"  ã                   óž   € ^ RI t ^ RIHt ^RIHt ^ RIHt  ^ RIHt ]	! ]R4      '       g   Q R4       hRt
 ! R	 R
]4      tR tR#    Rt
 L; i)é    N)ÚWQLinear_GEMM)Údequantize_gemm)ÚIPEXWeightOnlyQuantizedLinearÚfrom_weightz,The minimum version for ipex is at least 2.4TFc                   óh   a € ] tR t^t o RR ltR tR t]RR l4       tR t	R t
V 3R lR	 ltR
tV tR# )ÚWQLinear_IPEXc           	     óÚ  € \         P                  P                  V 4       \        '       g   Q R 4       hV^8X  g   Q R4       hRV n        W0n        W@n        Wn        VR
8w  d   TMTV n        \        P                  V n        Wpn        V P
                  V P                  ,          ^ 8X  g   Q hV^ V P                  ,          ,          ^ 8X  g   Q h^ V P                  ,          V n        RV n        V P                  R\        P                   ! W0P                  ,          W@P                  ,          3\        P"                  VR7      4       T P                  R\        P                   ! W0P                  ,          V3V P                  '       d   \        P$                  M\        P                  VR7      4       V'       dZ   T P                  R\        P                   ! Y@P                  '       d   \        P$                  M\        P                  VR7      4       MV P                  RR4       \        P                   ! W4V P                  ,          3\        P"                  VR7      pV P                  R	V4       R# )zKPlease install IPEX package with `pip install intel_extension_for_pytorch`.z!Only 4 bit are supported for now.TFÚqzeros)ÚdtypeÚdeviceÚscalesÚbiasNÚqweightéÿÿÿÿ)ÚnnÚModuleÚ__init__ÚIPEX_INSTALLEDÚuse_bf16Úin_featuresÚout_featuresÚw_bitÚ
group_sizeÚtorchÚfloat32Úscale_dtypeÚtrainingÚpack_numÚ	init_ipexÚregister_bufferÚzerosÚint32Úbfloat16)	Úselfr   r   r   r   r   Údevr   r   s	   &&&&&&&& Ú]/home/luca/screen-checking/.venv/lib/python3.14/site-packages/awq/modules/linear/gemm_ipex.pyr   ÚWQLinear_IPEX.__init__   sÒ  € Ü
�	‰	×Ñ˜4Ô ß‹~ð 	ZØYó	Zˆ~à˜ŒzÐ>Ð>Ó>ˆzàˆŒà&ÔØ(ÔØŒ
Ø(2°bÔ(8™*¸kˆŒÜ Ÿ=™=ˆÔØ Œð ×Ñ $§/¡/Õ1°QÔ6Ð6Ð6Ø˜r T§Z¡ZÕ/Õ0°AÔ5Ð5Ð5Ø˜dŸj™jÕ(ˆŒàˆŒà×ÑØÜ�KŠKØ§¡Õ/°ÇÁÕ1NÐOÜ—k‘kØôô	
ð 	×ÑØÜ�KŠKØ§¡Õ/°Ð>Ø(,¯¯¨”e—n’n¼5¿=¹=Øôô	÷ Ø× Ñ ØÜ—’˜\ÇMÇMÀM´%·.².ÔW\×WdÑWdÐmpÔqõð
 × Ñ ØØôô —+’+˜{¸D¿M¹MÕ,IÐJÔRW×R]ÑR]ÐfiÔjˆØ×Ñ˜Y¨Ö0ó    c                ój   € V P                   P                  P                  pVR 8w  d   VR9   g   Q hR# R# )ÚmetaN)ÚcpuÚxpu)r   r   Útype)r$   Údevice_types   & r&   Ú	post_initÚWQLinear_IPEX.post_initB   s2   € Ø—l‘l×)Ñ)×.Ñ.ˆØ˜&Ô Ø .Ô0Ð0Ò0ñ !r(   c                ó  € V P                   '       go   \        P                  ! V P                  V P                  V P
                  V P                  V P                  R V P                  V P                  R ^^ R7      V n
        R # R # )N)Úquant_methodr   )r   r   r   r   r   r
   r   r   r   r   Úipex_linear©r$   s   &r&   Úinit_ipex_linearÚWQLinear_IPEX.init_ipex_linearG   sj   € Ø�}�}ˆ}Ü<×HÒHÈÏÉÐW[×WbÑWbÐdh×doÑdoØDH×DTÑDTÐVZ×VgÑVgÐimÐos×oxÑoxØDHÇOÁOÐUYÐhiÐqrô tˆDÖñ r(   Nc                ó®   € V ! VVVP                   VP                  VP                  R JVP                  P                  4      pV'       d   V# \        R4      h)Nz,Only inference is supported for IPEX kernels)r   r   r   Úweightr   ÚNotImplementedError)ÚclsÚlinearr   r   Ú	init_onlyr   Ú
awq_linears   &&&&&& r&   Úfrom_linearÚWQLinear_IPEX.from_linearM   sT   € áØØØ×ÑØ×ÑØ�K‰K˜tÐ#Ø�M‰M× Ñ ó
ˆ
÷ ØÐä!Ð"PÓQÐQr(   c                ó  € \         '       g   Q R 4       hV P                  '       g   V P                  4        RV n        \        V R4      '       d:   \        P
                  ! 4       ;_uu_ 4        V P                  V4      pRRR4       V# \        V P                  V P                  V P                  V P                  V P                  4      P                  VP                  4      p\        P                  ! W4      pV#   + '       g   i     X# ; i)z¶IPEX kernels could not be loaded. Please install with `pip install intel_extension_for_pytorch` and refer to the detial https://github.com/intel/intel-extension-for-pytorch/tree/mainTr3   N)r   r   r5   Úhasattrr   Úno_gradr3   r   r   r
   r   r   r   Útor   Úmatmul)r$   ÚxÚoutputss   && r&   ÚforwardÚWQLinear_IPEX.forward\   sÌ   € ß‹~ð 	bðaó	bˆ~ð
 �~�~ˆ~Ø×!Ñ!Ô#Ø!ˆDŒNä�4˜×'Ò'Ü—’—•Ø×*Ñ*¨1Ó-�÷ !ð ˆô & d§l¡l°D·K±KÀÇÁÈdÏjÉjÐZ^×ZiÑZiÓj×mÑmÐno×nuÑnuÓvˆGÜ—l’l 1Ó.ˆGàˆ÷ !–ð ˆús   Á,C:Ã:D	c                ór  € \        V P                  V P                  V P                  V P                  V P
                  4      P                  VP                  4      pVP                  ^ ,          pVP                  VP                  ^ ^4      P                  ^ 4      P                  V^^4      4      pVRRRRRRR3# )r   N)r   r   r
   r   r   r   rC   r   ÚshapeÚbmmÚ	transposeÚ	unsqueezeÚrepeat)r$   Úgrad_outputÚweightsÚ
batch_sizeÚ
grad_inputs   &&   r&   ÚbackwardÚWQLinear_IPEX.backwardo   sœ   € Ü! $§,¡,°·±¸T¿[¹[È$Ï*É*ÐVZ×VeÑVeÓf×iÑiÐju×j{Ñj{Ó|ˆØ ×&Ñ& qÕ)ˆ
Ø —_‘_ W×%6Ñ%6°q¸!Ó%<×%FÑ%FÀqÓ%I×%PÑ%PÐQ[Ð]^Ð`aÓ%bÓcˆ
à˜4  t¨T°4¸¸tÐCÐCr(   c                ó    <€ V ^8„  d   QhRS[ /# )é   Úreturn)Ústr)ÚformatÚ__classdict__s   "€r&   Ú__annotate__ÚWQLinear_IPEX.__annotate__v   s   ø€ ÷ ñ ™Cñ r(   c                ó”   € R P                  V P                  V P                  V P                  RJV P                  V P
                  4      # )zAin_features={}, out_features={}, bias={}, w_bit={}, group_size={}N)rY   r   r   r   r   r   r4   s   &r&   Ú
extra_reprÚWQLinear_IPEX.extra_reprv   sA   € ØS×ZÑZØ×ÑØ×ÑØ�I‰I˜TÐ!Ø�J‰JØ�O‰Oó
ð 	r(   )
r   r   r   r3   r   r   r   r   r   r   )F)FN)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r/   r5   Úclassmethodr>   rG   rS   r^   Ú__static_attributes__Ú__classdictcell__)rZ   s   @r&   r   r      sA   ø‡ € ô01òd1ò
tð óRó ðRòò&D÷ö r(   r   c                 óˆ   € V P                  4        F-  w  r\        V\        4      '       g   K  VP                  4        K/  	  V # )N)Únamed_modulesÚ
isinstancer   r/   )ÚmodelÚ_Ú	submodules   &  r&   Úipex_post_initrm   €   s7   € Ø×+Ñ+Ö-‰ˆÜ�i¤×/Ô/Ø×ÑÖ!ñ .ð €Lr(   )r   Útorch.nnr   Úgemmr   Úawq.utils.packing_utilsr   Ú,intel_extension_for_pytorch.llm.quantizationr   rA   r   r   rm   © r(   r&   Ú<module>rs      sY   ðÛ Ý Ý Ý 3ðÝZÙÐ0°-×@Ò@ÐpÐBpÓpÐ@Ø€Nô
o�Mô oôdøðmØ‚Nús   ˜A ­	A ÁA