+
    ÒÜ³jÿ&  ã                   óà   € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIH	t	 ^ RI
Ht ]! R4      w  ttRs ^ RIHtHt R	t ! R
 R]4      t ! R R]P*                  4      tR#   ] d    Rt L-i ; i)é    N)ÚFunction)Ú
try_import)Úget_best_device)Údequantize_gemmÚawq_extF)Úawq_gemm_tritonÚawq_dequantize_tritonTc                   óD   a € ] tR t^t o ]RR l4       t]R 4       tRtV tR# )ÚWQLinearMMFunctionNc	           	     ó  € V P                  WW4V4       W€n        VP                  R R V3,           p	VP                  \        P
                  4      pVP                  ^ ,          ^ 8X  d-   \        P                  ! W‘P                  VP                  R7      # \        e¤   VP                  ^ ,          VP                  ^,          ,          R8¬  p
V
'       d3   \        P                  W$V^ ^ ^ R4      p\        P                  ! W4      pEM<\        P                  VP                  RVP                  R,          4      W$V^4      pEM\        '       d¤   VP                  ^ ,          VP                  ^,          ,          R8¬  p
V
'       d=   \        W$V4      p\        P                  ! WP                  VP                  4      4      pMƒ\!        VP                  RVP                  R,          4      W$V^R7      pMR\"        '       g$   \$        P&                  ! R\(        ,           4       Rs\+        W#WEV4      p\        P                  ! W4      pVe	   W·,           MTpVP                  V	4      p\-        VP                  4      ^8X  d   VP/                  ^ 4      pV# )N©ÚdtypeÚdevicei   F)Úsplit_k_itersz"Using naive (slow) implementation.Téÿÿÿÿ)Úsave_for_backwardÚout_featuresÚshapeÚtoÚtorchÚfloat16Úzerosr   r   r   Údequantize_weights_cudaÚmatmulÚgemm_forward_cudaÚreshapeÚTRITON_AVAILABLEr	   r   Úuser_has_been_warnedÚwarningsÚwarnÚmsgr   ÚlenÚ	unsqueeze)ÚctxÚxÚqweightÚqzerosÚscalesÚw_bitÚ
group_sizeÚbiasr   Ú	out_shapeÚFP16_MATMUL_HEURISTIC_CONDITIONÚouts   &&&&&&&&&   ÚX/home/luca/screen-checking/.venv/lib/python3.14/site-packages/awq/modules/linear/gemm.pyÚforwardÚWQLinearMMFunction.forward   sã  € ð 	×Ñ˜a¨&¸$Ô?Ø'Ôà—G‘G˜C˜R�L L ?Õ2ˆ	Ø�D‰D”—‘ÓˆØ�7‰7�1�:˜Œ?Ü—;’;˜y·±ÀÇÁÔIÐIäÒØ./¯g©g°a­j¸1¿7¹7À1½:Õ.EÈÑ.MÐ+ç.Ü×5Ñ5Ø V¨Q°°1°eó�ô —l’l 1Ó*’ä×/Ñ/Ø—I‘I˜b !§'¡'¨"¥+Ó.°ÀÈó’÷ ÓØ./¯g©g°a­j¸1¿7¹7À1½:Õ.EÈÑ.MÐ+ç.Ü+¨G¸VÓD�Ü—l’l 1§f¡f¨Q¯W©W£oÓ6‘ä%Ø—I‘I˜b !§'¡'¨"¥+Ó.°ÀÐWXô‘÷ (Ó'Ü—’ÐBÄSÕHÔIØ'+Ð$Ü! '°6À*ÓMˆCÜ—,’,˜qÓ&ˆCà Ò,ˆcŽj°#ˆØ�k‰k˜)Ó$ˆô ˆs�y‰y‹>˜QÔØ—-‘- Ó"ˆCàˆ
ó    c           	     ó  € V P                   w  r#rEp\        f   \        '       g   \        R4      h\        e5   \        P	                  W5V^^ ^ R4      P                  VP                  4      pM%\        W5V4      P                  VP                  4      pV P                  ^ ,          '       dU   VP                  ^ ,          pVP                  VP                  ^ ^4      P                  ^ 4      P                  V^^4      4      p	X	R R R R R R R 3# )NzÓeither triton or autoawq-kernels is needed to be installed to use `.backward()`. Make sure to install the auto-awq kernels by following the installation guides in https://github.com/casper-hansen/AutoAWQ_kernelsF)Úsaved_tensorsr   r   Ú
ValueErrorr   r   r   r	   Úneeds_input_gradr   ÚbmmÚ	transposer#   Úrepeat)
r$   Úgrad_outputÚinputr&   r'   r(   r+   ÚweightsÚ
batch_sizeÚ
grad_inputs
   &&        r/   ÚbackwardÚWQLinearMMFunction.backwardX   s  € à/2×/@Ñ/@Ñ,ˆ˜¨äŠ?×#3Ó#3Üðlóð ô ÒÜ×5Ñ5Ø ¨¨A¨q°%óç‰b�×"Ñ"Ó#ñ ô ,Ø óç‰b�×"Ñ"Ó#ð ð ×Ñ ×"Ô"ð %×*Ñ*¨1Õ-ˆJØ$Ÿ™¨×):Ñ):¸1¸aÓ)@×)JÑ)JÈ1Ó)M×)TÑ)TÐU_ÐabÐdeÓ)fÓgˆJà˜4  t¨T°4¸¸tÐCÐCr2   © )é   é€   Nr   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ústaticmethodr0   r?   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @r/   r   r      s.   ø‡ € Øó;ó ð;ðz ñDó öDr2   r   c                   ób   a a€ ] tR t^tt oRV 3R llt]RR l4       tR tV3R lR ltRt	Vt
V ;t# )	ÚWQLinear_GEMMc           	     ó¦  <€ \         SV `  4        VR9  d   \        R4      hW0n        W@n        Wn        VR	8w  d   TMTV n        Wpn        V P                  V P                  ,          ^ 8X  g   Q hV^ V P
                  ,          ,          ^ 8X  g   Q hV P                  R\        P                  ! W4^ V P
                  ,          ,          3\        P                  VR7      4       V P                  R\        P                  ! W0P                  ,          V^ V P
                  ,          ,          3\        P                  VR7      4       V P                  R\        P                  ! W0P                  ,          V3\        P                  VR7      4       V'       d:   V P                  R\        P                  ! V\        P                  VR7      4       R# RV n        R# )
rB   ú!Only 4-bit are supported for now.r&   r   r'   r(   r+   N)rB   r   )ÚsuperÚ__init__ÚNotImplementedErrorÚin_featuresr   r)   r*   ÚtrainingÚregister_bufferr   r   Úint32r   r+   )	Úselfr)   r*   rS   r   r+   ÚdevrT   Ú	__class__s	   &&&&&&&&€r/   rQ   ÚWQLinear_GEMM.__init__u   sv  ø€ ô 	‰ÑÔà˜ÔÜ%Ð&IÓJÐJà&ÔØ(ÔØŒ
Ø(2°bÔ(8™*¸kˆŒØ Œð ×Ñ $§/¡/Õ1°QÔ6Ð6Ð6Ø˜r T§Z¡ZÕ/Õ0°AÔ5Ð5Ð5à×ÑØÜ�KŠKØ¨r°T·Z±ZÕ/?Õ@ÐAÜ—k‘kØôô	
ð 	×ÑØÜ�KŠKØ§¡Õ/°À"ÈÏ
É
ÕBRÕ1SÐTÜ—k‘kØôô	
ð 	×ÑØÜ�KŠKØ§¡Õ/°Ð>Ü—m‘mØôô	
÷ Ø× Ñ ØÜ—’Ø!ÜŸ-™-Øôöð ˆDŽIr2   c           	     óê  € V ! VVVP                   VP                  VP                  R JVP                  P                  4      pV'       d   V# Ve   Vf   Q hWe,          pVP                  4       P                  4       Vn        VP                  e.   VP                  P                  4       P                  4       Vn        ^ VP                  ,          p	. p
\        VP                   4       F›  pV
P                  \        P                  ! VP                  P                  RV3,          W‹V,          ,          ,           VP                  W³,          ,          ,          4      P                  \        P                  4      R,          4       K�  	  \        P                   ! V
^R7      p
V
P#                  4       P%                  4       p
V
P                  \        P&                  R7      p
\)        4       pRV9   d   V
P                  R4      p
\        P*                  ! V
P,                  ^ ,          V
P,                  ^,          ^ ,          VP                  ,          3\        P&                  V
P                  R7      p\        V
P,                  ^,          V	,          4       F„  pVP                  ^8X  d   . R	OpM\/        R4      h\        V	4       FQ  pV
RWé,          VV,          ,           3,          pVRV3;;,          VVVP                  ,          ,          ,          uu&   KS  	  K†  	  W×n        VP                  \        P&                  VR7      pRV9   d   VP                  R4      p\        P*                  ! VP,                  ^ ,          VP,                  ^,          ^ ,          VP                  ,          3\        P&                  VP                  R7      p\        VP,                  ^,          V	,          4       F„  pVP                  ^8X  d   . R	OpM\/        R4      h\        V	4       FQ  pVRWé,          VV,          ,           3,          pVRV3;;,          VVVP                  ,          ,          ,          uu&   KS  	  K†  	  VVn        V# )
NºNNN)Údim©r   ÚmpsÚcpur   rO   )r\   N)r   é   rB   é   é   é   é   é   )rS   r   r+   Úweightr   ÚcloneÚhalfr(   r)   ÚrangeÚappendr   ÚroundÚdatar   ÚintÚcatÚtÚ
contiguousrV   r   r   r   rR   r&   r'   )ÚclsÚlinearr)   r*   Ú	init_onlyr(   r   Ú
awq_linearÚscale_zerosÚpack_numÚ	intweightÚidxÚbest_devicer&   ÚcolÚ	order_mapÚiÚqweight_colr'   Ú	qzero_cols   &&&&&&&             r/   Úfrom_linearÚWQLinear_GEMM.from_linear«   sm  € ñ ØØØ×ÑØ×ÑØ�K‰K˜tÐ#Ø�M‰M× Ñ ó
ˆ
÷ ØÐð Ò! eÒ&7Ð7Ð7Ø•nˆà"ŸL™L›N×/Ñ/Ó1ˆ
ÔØ�;‰;Ò"Ø$Ÿk™k×/Ñ/Ó1×6Ñ6Ó8ˆJŒOà˜×)Ñ)Õ)ˆàˆ	Ü˜×/Ñ/Ö0ˆCØ×ÑÜ—’Ø—]‘]×'Ñ'¨¨3¨Õ/°+ÀZÕ>OÕ2PÕPØ ×'Ñ'¨Õ(9Õ:õ;ó÷ ‘"”U—Y‘Y“- õ)öñ 1ô —I’I˜i¨QÔ/ˆ	Ø—K‘K“M×,Ñ,Ó.ˆ	Ø—L‘L¤u§{¡{�LÓ3ˆ	ä%Ó'ˆð �KÔØ!Ÿ™ UÓ+ˆIä—+’+Ø�_‰_˜QÕ §¡°Õ!3°rÕ!9¸J×<LÑ<LÕ!LÐMÜ—+‘+Ø×#Ñ#ô
ˆô ˜Ÿ™¨Õ+¨xÕ7Ö8ˆCØ×Ñ 1Ô$Ú4‘	ä)Ð*MÓNÐNÜ˜8–_�Ø'¨¨3­>¸IÀa½LÕ+HÐ(HÕI�Ø˜˜3˜— ;°1°z×7GÑ7GÕ3GÕ#HÕH•ó %ñ 9ð %Ôà—‘œuŸ{™{°;�Ó?ˆà�KÔØ—H‘H˜U“OˆEä—’Ø�[‰[˜�^˜UŸ[™[¨�^¨rÕ1°J×4DÑ4DÕDÐEÜ—+‘+Ø—<‘<ô
ˆô ˜Ÿ™ Q�¨8Õ3Ö4ˆCØ×Ñ 1Ô$Ú4‘	ä)Ð*MÓNÐNÜ˜8–_�Ø! ! S¥^°iÀµlÕ%BÐ"BÕC�	Ø�q˜#�v— )°°J×4DÑ4DÕ0DÕ"EÕE•ó %ñ 5ð #ˆ
ÔàÐr2   c                ó6  € VP                   R R V P                  3,           pVP                  pV\        P                  8w  d   VP                  4       pV P                  '       dd   \        P                  VV P                  V P                  V P                  V P                  V P                  V P                  V P                  4      pMˆ\        P                  ! 4       ;_uu_ 4        \        P                  VV P                  V P                  V P                  V P                  V P                  V P                  V P                  4      pR R R 4       V\        P                  8w  d   XP!                  VR7      pXP#                  V4      #   + '       g   i     LH; i)Nr^   r   )r   r   r   r   r   ri   rT   r   Úapplyr&   r'   r(   r)   r*   r+   Úno_gradr   r   )rW   r%   r,   Úinput_dtyper.   s   &&   r/   r0   ÚWQLinear_GEMM.forwardý   s  € Ø—G‘G˜C˜R�L D×$5Ñ$5Ð#7Õ7ˆ	à—g‘gˆØœ%Ÿ-™-Ô'Ø—‘“ˆAà�=�=ˆ=Ü$×*Ñ*ØØ—‘Ø—‘Ø—‘Ø—
‘
Ø—‘Ø—	‘	Ø×!Ñ!ó	‰Cô —’—•Ü(×.Ñ.ØØ—L‘LØ—K‘KØ—K‘KØ—J‘JØ—O‘OØ—I‘IØ×%Ñ%ó	�÷ !ð œ%Ÿ-™-Ô'Ø—&‘&˜{�&Ó+ˆCà�{‰{˜9Ó%Ð%÷ !—ús   Ã%A#FÆF	c                ó    <€ V ^8„  d   QhRS[ /# )ra   Úreturn)Ústr)ÚformatrK   s   "€r/   Ú__annotate__ÚWQLinear_GEMM.__annotate__!  s   ø€ ÷ 	
ñ 	
™Cñ 	
r2   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)rŠ   rS   r   r+   r)   r*   )rW   s   &r/   Ú
extra_reprÚWQLinear_GEMM.extra_repr!  sA   € àO×VÑVØ× Ñ Ø×!Ñ!Ø—	‘	 Ð%Ø—
‘
Ø—‘óð	
r2   )r+   r*   rS   r   rT   r)   )F)FNN)rD   rE   rF   rG   rQ   Úclassmethodr€   r0   rŽ   rI   rJ   Ú__classcell__)rY   rK   s   @@r/   rM   rM   t   s7   ù‡ € ÷4ðl óOó ðOòb"&÷H	
÷ 	
ð 	
r2   rM   )r   r   Útorch.nnÚnnÚtorch.autogradr   Úawq.utils.moduler   Úawq.utils.utilsr   Úawq.utils.packing_utilsr   r   r!   r   Úawq.modules.triton.gemmr   r	   r   ÚImportErrorr   ÚModulerM   rA   r2   r/   Ú<module>r›      s{   ðÛ Û Ý Ý #Ý 'Ý +Ý 3ñ ˜)Ó$�€ˆØÐ ðßNð ÐôZD˜ô ZDôxv
�B—I‘Iö v
øðA ô ØÒðús   µ
A! Á!	A-Á,A-