+
    "Ý³jºE  ã                  ó(  € ^ RI Ht ^ RIHtHt ^ RIt^ RIHt ^ RIt^ RI	H
t
 ^RIHtHt ^RIHtHt ^RIHtHt ^RIHtHtHtHt ^R	IHtHtHt ^R
IHt ^RIH t  ^RI!H"t" R R lt#R R lt$R R lt%RRRRRR/R R llt& ! R R] 4      t'RR.t(R# )é    )Úannotations)ÚOptionalÚTupleN)Ú_ConvNd)ÚAdapterÚLora)ÚDEVICEÚPLATFORM)ÚFORMATÚMETHOD)Ú_normalize_fp8_fmtÚ_normalize_fp8_scale_semanticsÚ _normalize_fp8_weight_block_sizeÚ"_normalize_fp8_weight_scale_method)Úavailable_float8_dtype_namesÚdequantize_fp8Údevice_supports_native_fp8)ÚBACKEND)ÚWeightOnlyQuantLinear)Ú_apply_optional_smootherc               ó    € V ^8„  d   QhRRRR/# )é   ÚfmtÚstrÚreturnútorch.dtype© )Úformats   "Úa/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/nn_modules/qlinear/fp8.pyÚ__annotate__r        s   € ÷ 3ñ 3˜cð 3 kñ 3ó    c                ó4   € \        \        \        V 4      4      # ©N)ÚgetattrÚtorchr   )r   s   &r   Ú_fp8_dtype_from_namer&       s   € Ü”5Ô,¨SÓ1Ó2Ð2r!   c               ó    € V ^8„  d   QhRRRR/# ©r   Úlinearú	nn.Moduler   útorch.Tensorr   )r   s   "r   r    r    $   s   € ÷ ñ ˜ið ¨Lñ r!   c                óô   € V P                   P                  4       p\        V \        4      '       d   VP	                  ^4      p\        V \
        P                  P                  4      '       d   VP                  pV# )é   )	ÚweightÚdetachÚ
isinstancer   ÚflattenÚtransformersÚpytorch_utilsÚConv1DÚT)r)   r.   s   & r   Ú_weight_to_matrixr6   $   sV   € Ø�]‰]×!Ñ!Ó#€FÜ�&œ'×"Ò"Ø—‘ Ó"ˆÜ�&œ,×4Ñ4×;Ñ;×<Ò<Ø—‘ˆØ€Mr!   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úabs_maxr+   Úfp8_maxÚfloatr   r   )r   s   "r   r    r    -   s!   € ÷ ñ  ð °uð Àñ r!   c           	     ób  € V P                  \        P                  4      p \        P                  ! \        P                  4      P                  p\        P
                  ! V ^ 8„  \        P                  ! V \        V4      4      V P                  V4      ,          \        P                  ! V 4      4      # )r   )
Útor%   Úfloat32ÚfinfoÚtinyÚwhereÚ	full_liker:   Ú	clamp_minÚ	ones_like)r8   r9   Úepss   && r   Ú_compute_scale_invrE   -   sr   € Ø�j‰jœŸ™Ó'€GÜ
�+Š+”e—m‘mÓ
$×
)Ñ
)€CÜ�;Š;Ø�!‰Ü�Š˜¤ w£Ó0°7×3DÑ3DÀSÓ3IÕIÜ�Š˜Ó óð r!   r   Úfloat8_e4m3fnÚweight_scale_methodÚrowÚweight_block_sizec          
     ó,   € V ^8„  d   QhRRRRRRRRRR	/# )
r   r.   r+   r   r   rG   rI   úOptional[Tuple[int, int]]r   ú!tuple[torch.Tensor, torch.Tensor]r   )r   s   "r   r    r    7   sC   € ÷ 9Lñ 9LØð9Lð ð9Lð ð	9Lð
 1ð9Lð 'ñ9Lr!   c               ó†  € V P                   ^8w  d#   \        R\        V P                  4       R24      h\	        V4      pVR8X  d   \        R4      h\        V4      p\        VVR7      p\        V4      p\        P                  ! V4      P                  pV P                  R\        P                  R7      P                  4       p VR8X  d‡   \        V P                  4       P!                  4       V4      p\        P"                  ! W,          V) VR	7      P                  V4      pVP                  4       VP                  \        P                  4      3# VR
8X  d¦   \        V P                  4       P!                  ^R7      V4      p\        P"                  ! WP%                  ^4      ,          V) VR	7      P                  V4      pVP                  4       VP                  \        P                  4      P                  4       3# Vf   \        R4      hVw  ršV P                  w  r¼W¹,          ^ 8w  g   WÊ,          ^ 8w  d&   \        R\        V P                  4       RV R24      hW¹,          pWÊ,          pV P'                  WÙWê4      p\        VP                  4       P!                  RR7      V4      pW÷P%                  ^4      P%                  ^4      ,          p\        P"                  ! VV) VR	7      P                  V4      P'                  W¼4      pVP                  4       VP                  \        P                  4      P                  4       3# )r   z7FP8 quantization expects a 2D weight matrix, got shape Ú.Úfloat8_e8m0fnuz‚TorchFP8Linear does not quantize dense weights to float8_e8m0fnu; use that format only for dequantization of existing checkpoints.©rI   Úcpu©ÚdeviceÚdtypeÚtensor©ÚminÚmaxrH   ©Údimz4FP8 block quantization requires `weight_block_size`.z%FP8 block quantization expects shape z to be divisible by block size )r-   é   )ÚndimÚ
ValueErrorÚtupleÚshaper   r   r   r&   r%   r>   rX   r<   r=   Ú
contiguousrE   ÚabsÚamaxÚclampÚ	unsqueezeÚreshape)r.   r   rG   rI   Ú
block_sizeÚ	fp8_dtyper9   Ú	scale_invÚ	quantizedÚ
block_rowsÚ
block_colsÚrowsÚcolsÚ
row_blocksÚ
col_blocksÚblocksÚscaleds   &$$$             r   Úquantize_fp8_weightrr   7   sÃ  € ð ‡{�{�aÔÜÐRÔSXÐY_×YeÑYeÓSfÐRgÐghÐiÓjÐjä Ó'€FØÐ!Ô!ÜðOó
ð 	
ô 2Ð2CÓD€JÜ<ØØ$ôÐô % VÓ,€IÜ�kŠk˜)Ó$×(Ñ(€Gà�Y‰Y˜e¬5¯=©=ˆYÓ9×DÑDÓF€Fà˜hÔ&Ü& v§z¡z£|×'8Ñ'8Ó':¸GÓDˆ	Ü—K’K Õ 2¸¸ÀgÔN×QÑQÐR[Ó\ˆ	Ø×#Ñ#Ó% y§|¡|´E·M±MÓ'BÐBÐBà˜eÔ#Ü& v§z¡z£|×'8Ñ'8¸QÐ'8Ó'?ÀÓIˆ	Ü—K’KØ×(Ñ(¨Ó+Õ+Ø�Øô
÷ ‰"ˆY‹-ð	 	ð
 ×#Ñ#Ó% y§|¡|´E·M±MÓ'B×'MÑ'MÓ'OÐOÐOàÒÜÐOÓPÐPà'Ñ€JØ—‘�J€DØÕ˜AÔ Õ!2°aÔ!7ÜØ3´E¸&¿,¹,Ó4GÐ3HÐHgØˆl˜!ðó
ð 	
ð
 Õ#€JØÕ#€JØ�^‰^˜J°JÓK€FÜ" 6§:¡:£<×#4Ñ#4¸Ð#4Ó#@À'ÓJ€IØ×)Ñ)¨!Ó,×6Ñ6°qÓ9Õ9€FÜ—’˜F¨¨°gÔ>×AÑAÀ)ÓL×TÑTÐUYÓ`€IØ×ÑÓ! 9§<¡<´·±Ó#>×#IÑ#IÓ#KÐKÐKr!   c                  óF  a € ] tR t^st]P
                  .t]P                  .t	]
P                  ^/t^.tRtRtRt^.t^.t]P&                  ]P(                  ]P*                  ]P,                  ]P.                  .t]P4                  .t]P:                  ]P<                  ]P>                  ]P@                  .t!]".t#]PH                  ]PJ                  ]PL                  .t'Rt(R]P>                  RRRRRR3R V 3R	 lllt)]*R
 4       t+R R lt,R R lt-R R lt.R t/R R lt0R R lt1R6R R llt2R7R R llt3R6RRRR/R R lllt4]Pj                  ! 4       R6RR/R  R! lll4       t6R8R" R# llt7R$ R% lt8RRR&R/R' R( llt9R) R* lt:R+ R, lt;R- R. lt<R/ R0 lt=R1 R2 lt>R3 R4 lt?R5t@V ;tA# )9ÚTorchFP8LinearTFÚfp8NrF   rH   Úinversec               óP   € V ^8„  d   QhRRRRRRRRRRRRR	RR
RRRRRRRRRRRRR/# )r   ÚbitsÚintÚ
group_sizeÚsymÚboolÚdesc_actÚin_featuresÚout_featuresÚbiasÚ
pack_dtyper   Úadapterr   Úregister_buffersr   r   rG   rI   rK   Úweight_scale_semanticsr   )r   s   "r   r    ÚTorchFP8Linear.__annotate__‡   s–   € ÷ 2.ñ 2.àð2.ð ð2.ð ð	2.ð
 ð2.ð ð2.ð ð2.ð ð2.ð  ð2.ð ð2.ð ð2.ð ð2.ð !ð2.ð 5ð2.ð !$ñ2.r!   c                	óL  <€ \        V4      V n        \        V P                  4      V n        \	        V4      p\        VVR 7      V n        VV n        \        V4      V n	        RV n
        V P                  R8X  dS   V P                  eE   V P                  w  ppVV,          ^ 8w  g   VV,          ^ 8w  d   \        RV P                   R24      h\        SV `4  ! RRVRVRVR	VR
VP                  R
\        P                   4      RV	RRRV/VB  V
'       d   V P#                  VR7       R# R# )rP   FÚblockNzeTorchFP8Linear block scaling requires out_features/in_features to be divisible by `weight_block_size=ú`.rx   r~   r   r€   Úbackendr‚   rƒ   r�   )r€   r   )r   Ú
fp8_formatr&   rg   r   r   rG   rI   r   r„   Ú_scaled_mm_hard_disabledr]   ÚsuperÚ__init__Úpopr   Ú	FP8_TORCHÚ_allocate_buffers)Úselfrx   rz   r{   r}   r~   r   r€   r�   r‚   rƒ   r   rG   rI   r„   Úkwargsrf   rj   rk   Ú	__class__s   &&&&&&&&&&&&&&&,   €r   r�   ÚTorchFP8Linear.__init__‡   sY  ø€ ô$ -¨VÓ4ˆŒÜ-¨d¯o©oÓ>ˆŒÜ5Ð6GÓHˆ
Ü#EØØ(ô$
ˆÔ ð ",ˆÔÜ&DÐE[Ó&\ˆÔ#Ø(-ˆÔ%à×#Ñ# wÔ.°4×3IÑ3IÒ3UØ%)×%;Ñ%;Ñ"ˆJ˜
Ø˜jÕ(¨AÔ-°¸zÕ1IÈQÔ1NÜ ð=Ø=A×=SÑ=SÐ<TÐTVðXóð ô
 	‰Òñ 
	
Øð
	
à#ð
	
ð &ð
	
ð ð	
	
ð
 —J‘J˜y¬'×*;Ñ*;Ó<ð
	
ð ð
	
ð #ð
	
ð "ð
	
ð ò
	
÷ Ø×"Ñ"¨Ð"Ö-ñ r!   c                	ó@   € \        4       '       g   R \        R4      3# R# )Fz8TorchFP8Linear requires a PyTorch build with FP8 dtypes.)TN)r   ÚRuntimeError)Úclss   &r   Úvalidate_onceÚTorchFP8Linear.validate_once»   s"   € ä+×-Ò-Øœ,Ð'aÓbÐbÐbØÐr!   c               ó   € V ^8„  d   QhRR/# )r   r   ry   r   )r   s   "r   r    r…   Á   s   € ÷ ñ  3ñ r!   c                	ój   € V P                   R 8X  d"   V P                  e   V P                  ^,          # R# )r‡   éÿÿÿÿ)rG   rI   ©r‘   s   &r   Úsmooth_block_sizeÚ TorchFP8Linear.smooth_block_sizeÁ   s1   € Ø×#Ñ# wÔ.°4×3IÑ3IÒ3UØ×)Ñ)¨!Õ,Ð,Øˆ	r!   c               ó   € V ^8„  d   QhRR/# )r   r   ztuple[int, ...]r   )r   s   "r   r    r…   Æ   s   € ÷ 
ñ 
˜oñ 
r!   c                	óþ   € V P                   R 8X  d   R# V P                   R8X  d   V P                  3# V P                  f   \        R4      hV P                  w  rV P                  V,          V P                  V,          3# )rU   rH   ú:TorchFP8Linear block scaling requires `weight_block_size`.r   )rG   r   rI   r]   r~   )r‘   rj   rk   s   &  r   Ú_scale_shapeÚTorchFP8Linear._scale_shapeÆ   s~   € Ø×#Ñ# xÔ/ØˆIØ×#Ñ# uÔ,Ø×%Ñ%Ð'Ð'Ø×!Ñ!Ò)ÜÐYÓZÐZØ!%×!7Ñ!7Ñˆ
à×Ñ Õ+Ø×Ñ 
Õ*ð
ð 	
r!   c               ó    € V ^8„  d   QhRRRR/# )r   r€   r|   r   ÚNoner   )r   s   "r   r    r…   Ó   s   € ÷ ñ ¨ð °$ñ r!   c               	ó^  € \         P                  ! V P                  V P                  3V P                  R 7      p\         P
                  ! V P                  4       \         P                  R 7      pRV P                  9   d   W n	        MV P                  RV4       RV P                  9   d   W0n        MV P                  RV4       V'       d^   \         P                  ! V P                  \         P                  R 7      pRV P                  9   d	   W@n        R# V P                  RV4       R# RV n        R# ))rT   r.   Úweight_scale_invr€   N)r%   Úzerosr   r~   rg   Úonesr£   r=   Ú_buffersr.   Úregister_bufferr¨   Úfloat16r€   )r‘   r€   r.   ÚscaleÚbias_tensors   &$   r   r�   Ú TorchFP8Linear._allocate_buffersÓ   sÍ   € Ü—’˜d×/Ñ/°×1AÑ1AÐBÈ$Ï.É.ÔYˆÜ—
’
˜4×,Ñ,Ó.´e·m±mÔDˆà�t—}‘}Ô$Ø �Kà× Ñ  ¨6Ô2à §¡Ô.Ø$)Õ!à× Ñ Ð!3°UÔ;çÜŸ+š+ d×&7Ñ&7¼u¿}¹}ÔMˆKØ˜Ÿ™Ô&Ø'–	à×$Ñ$ V¨[Ö9àˆDŽIr!   c                	ól  € . p\        V R 4      '       d*   V P                  e   VP                  V P                  4       \        V R4      '       d*   V P                  e   VP                  V P                  4       \        V R4      '       d*   V P                  e   VP                  V P                  4       V# )r.   r¨   r€   )Úhasattrr.   Úappendr¨   r€   )r‘   Úbufferss   & r   Úlist_buffersÚTorchFP8Linear.list_buffersê   sƒ   € ØˆÜ�4˜×"Ò" t§{¡{Ò'>Ø�N‰N˜4Ÿ;™;Ô'Ü�4Ð+×,Ò,°×1FÑ1FÒ1RØ�N‰N˜4×0Ñ0Ô1Ü�4˜× Ò  T§Y¡YÒ%:Ø�N‰N˜4Ÿ9™9Ô%Øˆr!   c               ó   € V ^8„  d   QhRR/# )r   r   r   r   )r   s   "r   r    r…   ô   s   € ÷ 
ñ 
˜Cñ 
r!   c           
     	óŒ   € R V P                    RV P                   RV P                  RJ RV P                   RV P                   2
# )zin_features=z, out_features=z, bias=Nz	, format=z, weight_scale_method=)r~   r   r€   rŠ   rG   r�   s   &r   Ú
extra_reprÚTorchFP8Linear.extra_reprô   sY   € à˜4×+Ñ+Ð,¨O¸D×<MÑ<MÐ;Nð OØ—I‘I TÐ)Ð*¨)°D·O±OÐ3Dð E#Ø#'×#;Ñ#;Ð"<ð>ð	
r!   c               ó    € V ^8„  d   QhRRRR/# r(   r   )r   s   "r   r    r…   û   s   € ÷ )ñ )¨	ð )°lñ )r!   c                	ó   € \        V4      # r#   )r6   )r‘   r)   s   &&r   r6   Ú TorchFP8Linear._weight_to_matrixû   s   € Ü  Ó(Ð(r!   c               ó(   € V ^8„  d   QhRRRRRRRR/# ©r   r)   r*   Úscalesr+   r©   Úg_idxr   )r   s   "r   r    r…   þ   s/   € ÷ Sñ S˜9ð S¨lð SÀ<ð SÐXdñ Sr!   c                	ó,   € V P                  WW4R 7       R# ©)r)   rÀ   r©   rÁ   N©Úpack_original)r‘   r)   rÀ   r©   rÁ   s   &&&&&r   ÚpackÚTorchFP8Linear.packþ   s   € Ø×Ñ &¸uÐÖRr!   é    c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R/# )
r   r)   r*   rÀ   r+   r©   rÁ   Úblock_inry   Úworkersr   )r   s   "r   r    r…     sN   € ÷ 
Sñ 
Sàð
Sð ð
Sð ð	
Sð
 ð
Sð ð
Sð ñ
Sr!   c                	ó0   € ??V P                  WW4R 7       R# rÃ   rÄ   )r‘   r)   rÀ   r©   rÁ   rÊ   rË   s   &&&&&&&r   Ú
pack_blockÚTorchFP8Linear.pack_block  s   € ð �gØ×Ñ &¸uÐÖRr!   rÊ   rS   c               ó0   € V ^8„  d   QhRRRRRRRRRRR	R
/# )r   r)   r*   rÀ   r+   r©   rÁ   rÊ   ry   rS   ztorch.device | Noner   )r   s   "r   r    r…     sN   € ÷ Sñ SàðSð ðSð ð	Sð
 ðSð ðSð $ñSr!   c               	ó0   € ??V P                  WW4R 7       R# rÃ   rÄ   )r‘   r)   rÀ   r©   rÁ   rÊ   rS   s   &&&&&$$r   Úpack_gpuÚTorchFP8Linear.pack_gpu  s   € ð �fØ×Ñ &¸uÐÖRr!   Úsmoothc               ó(   € V ^8„  d   QhRRRRRRRR/# r¿   r   )r   s   "r   r    r…     s2   € ÷ +.ñ +.àð+.ð ð+.ð ð	+.ð
 ñ+.r!   c               	óª  € ???V P                  V4      P                  R \        P                  R7      p\	        VVV P                  4       R7      p\        VV P                  V P                  V P                  R7      w  rxRV P                  9   d   Wpn        MV P                  RV4       RV P                  9   d   W€n        MV P                  RV4       VP                  ee   VP                  P                  4       P                  R \        P                   R7      p	RV P                  9   d   W�n        MV P                  RV	4       MRV n        RV n        R# )	rQ   rR   )rÓ   rz   )r   rG   rI   r.   r¨   Nr€   F)r6   r<   r%   r=   r   rž   rr   rŠ   rG   rI   r«   r.   r¬   r¨   r€   r/   r­   r‹   )
r‘   r)   rÀ   r©   rÁ   rÓ   r.   Úqweightr¨   r€   s
   &&&&&$    r   rÅ   ÚTorchFP8Linear.pack_original  s  € ð �E˜5à×'Ñ'¨Ó/×2Ñ2¸%ÄuÇ}Á}Ð2ÓUˆÜ)ØØØ×-Ñ-Ó/ô
ˆô
 %8ØØ—?‘?Ø $× 8Ñ 8Ø"×4Ñ4ô	%
Ñ!ˆð �t—}‘}Ô$Ø!�Kà× Ñ  ¨7Ô3à §¡Ô.Ø$4Õ!à× Ñ Ð!3Ð5EÔFà�;‰;Ò"Ø—;‘;×%Ñ%Ó'×*Ñ*°%¼u¿}¹}Ð*ÓMˆDØ˜Ÿ™Ô&Ø •	à×$Ñ$ V¨TÕ2àˆDŒIà(-ˆÖ%r!   c               ó   € V ^8„  d   QhRR/# )r   r   z tuple[torch.device, torch.dtype]r   )r   s   "r   r    r…   H  s   € ÷ +ñ +Ð:Zñ +r!   c                	ó”   € Vf   V P                   P                  M\        P                  ! V4      pVf   \        P                  MTpW43# r#   )r.   rS   r%   r=   )r‘   rS   rT   Útarget_deviceÚtarget_dtypes   &&&  r   Ú_resolve_targetÚTorchFP8Linear._resolve_targetH  s8   € Ø.4ªn˜Ÿ™×*Ò*Ä%Ç,Â,ÈvÓBVˆØ(-ª”u—}’}¸5ˆØÐ*Ð*r!   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rÚ   útorch.devicerÛ   r   r   r+   r   )r   s   "r   r    r…   M  s#   € ÷ ñ °Lð ÐP[ð Ð`lñ r!   c               	óŒ  € V P                   pVP                  V8w  g   VP                  V8w  d   VP                  WR 7      pV P                  R8X  d   V# V P                  R8X  d   VP                  R^4      # V P                  f   \        R4      hV P                  w  rEVP                  V^ R7      pVP                  V^R7      pV# )rR   rU   rH   r¢   rY   rœ   )	r¨   rS   rT   r<   rG   ÚviewrI   r]   Úrepeat_interleave)r‘   rÚ   rÛ   rh   rj   rk   Úexpandeds   &$$    r   Ú_expanded_scale_invÚ"TorchFP8Linear._expanded_scale_invM  s¾   € Ø×)Ñ)ˆ	Ø×Ñ˜}Ô,°	·±À<Ô0OØ!Ÿ™¨M˜ÓNˆIà×#Ñ# xÔ/ØÐØ×#Ñ# uÔ,Ø—>‘> " aÓ(Ð(Ø×!Ñ!Ò)ÜÐYÓZÐZà!%×!7Ñ!7Ñˆ
Ø×.Ñ.¨z¸qÐ.ÓAˆØ×-Ñ-¨j¸aÐ-Ó@ˆØˆr!   rT   c               ó$   € V ^8„  d   QhRRRRRR/# )r   rS   ztorch.device | str | NonerT   ztorch.dtype | Noner   r+   r   )r   s   "r   r    r…   ^  s/   € ÷ %Añ %Að *ð%Að "ð	%Að
 
ñ%Ar!   c               	óŠ  € V P                  WR 7      w  r4V P                  R8w  d   \        RV P                   R24      hVP                  R8H  pV P                  R8X  d   RpVP                  R8X  d   \        V4      '       g   RpV'       d­   \        V P                  P                  RR7      V P                  P                  RR7      V P                  R	8X  d   R
MV P                  R8X  d   ^ M^ VR7      pVP                  R8w  d   VP                  VR7      pVP                  ^ ^4      P                  4       # V P                  P                  V8X  d   V P                  MV P                  P                  VR7      pVP                  V4      pV P                  W4R7      pWg,          P                  ^ ^4      P                  4       # )rR   rv   z!Unsupported FP8 scale semantics `rˆ   rQ   rO   TÚcuda©rS   r‡   NrH   )rh   ÚaxisrÛ   )rÚ   rÛ   )rÜ   r„   ÚNotImplementedErrorÚtyperŠ   r   r   r.   r<   r¨   rG   Ú	transposer`   rS   rä   )r‘   rS   rT   rÚ   rÛ   Úprefer_cpu_dequantr.   rh   s   &$$     r   Údequantize_weightÚ TorchFP8Linear.dequantize_weight^  s”  € ð '+×&:Ñ&:À&Ð&:Ó&VÑ#ˆà×&Ñ&¨)Ô3Ü%Ø3°D×4OÑ4OÐ3PÐPRÐSóð ð +×/Ñ/°5Ñ8Ðð �?‰?Ð.Ô.Ø!%ÐØ×Ñ Ô'Ô0JÈ=×0YÒ0YØ!%ÐçÜ#Ø—‘—‘ e�Ó,Ø×/Ñ/×2Ñ2¸%Ð2Ó@Ø!×5Ñ5¸Ô@‘TÈD×LdÑLdÐhmÔLmÁqÐstØ)ô	ˆFð ×!Ñ! UÔ*ØŸ™¨-˜Ó8�Ø×#Ñ# A qÓ)×4Ñ4Ó6Ð6à $§¡× 2Ñ 2°mÔ C�—’ÈÏÉÏÉÐ_lÈÓImˆØ—‘˜<Ó(ˆØ×,Ñ,¸=Ð,Ódˆ	ØÕ"×-Ñ-¨a°Ó3×>Ñ>Ó@Ð@r!   c               ó    € V ^8„  d   QhRRRR/# )r   rS   rß   r   r+   r   )r   s   "r   r    r…   …  s   € ÷ 	bñ 	b°ð 	bÀ,ñ 	br!   c               	óH  € V P                   pVP                  V8w  d   VP                  VR 7      p\        P                  ! VP                  \        P
                  4      4      pV P                  R8X  d   V# V P                  R8X  d   VP                  ^R4      # \        R4      h)ré   rU   rH   z<scaled_mm is only used for tensorwise or rowwise FP8 scales.rœ   )	r¨   rS   r<   r%   Ú
reciprocalr=   rG   rá   rë   )r‘   rS   rh   r®   s   &$  r   Ú_scaled_mm_weight_scaleÚ&TorchFP8Linear._scaled_mm_weight_scale…  s†   € Ø×)Ñ)ˆ	Ø×Ñ˜vÔ%Ø!Ÿ™¨F˜Ó3ˆIÜ× Ò  §¡¬e¯m©mÓ!<Ó=ˆØ×#Ñ# xÔ/ØˆLØ×#Ñ# uÔ,Ø—:‘:˜a Ó$Ð$Ü!Ð"`ÓaÐar!   c               ó    € V ^8„  d   QhRRRR/# )r   Úx_flatr+   r   rL   r   )r   s   "r   r    r…   �  s   € ÷ Bñ B°Lð BÐEfñ Br!   c                	ó:  € \         P                  ! V P                  4      P                  pVP	                  \         P
                  4      pV P                  R 8X  d*   \        VP                  4       P                  4       V4      pM+\        VP                  4       P                  ^RR7      V4      p\         P                  ! W4,          V) VR7      P	                  V P                  4      pV\         P                  ! V4      P	                  \         P
                  4      3# )rU   T)rZ   ÚkeepdimrV   )r%   r>   rg   rX   r<   r=   rG   rE   ra   rb   rc   ró   )r‘   r÷   r9   Úx_workrh   Úx_qs   &&    r   Ú_quantize_input_for_scaled_mmÚ,TorchFP8Linear._quantize_input_for_scaled_mm�  sÃ   € Ü—+’+˜dŸn™nÓ-×1Ñ1ˆØ—‘œ5Ÿ=™=Ó)ˆØ×#Ñ# xÔ/Ü*¨6¯:©:«<×+<Ñ+<Ó+>ÀÓH‰Iä*¨6¯:©:«<×+<Ñ+<ÀÈDÐ+<Ó+QÐSZÓ[ˆIÜ�kŠk˜&Õ,°7°(ÀÔH×KÑKÈDÏNÉNÓ[ˆØ”E×$Ò$ YÓ/×2Ñ2´5·=±=ÓAÐAÐAr!   c               ó    € V ^8„  d   QhRRRR/# )r   r÷   r+   r   r|   r   )r   s   "r   r    r…   š  s   € ÷ 
ñ 
¨ð 
¸$ñ 
r!   c                	ó$  € V P                   '       * ;'       dù    \        \        R 4      ;'       dá    VP                  P                  R8H  ;'       dÀ    V P
                  R8H  ;'       d©    V P                  R8g  ;'       d’    VP                  \        P                  \        P                  09   ;'       d]    VP                  R,          V P                  8H  ;'       d5    V P                  ^,          ^ 8H  ;'       d    V P                  ^,          ^ 8H  # )Ú
_scaled_mmrè   rU   rO   rœ   )r‹   r²   r%   rS   rì   rG   rŠ   rT   r­   Úbfloat16r_   r~   r   )r‘   r÷   s   &&r   Ú_can_use_scaled_mmÚ!TorchFP8Linear._can_use_scaled_mmš  sü   € à×-Ñ-Ô-÷ ,ð ,Üœ˜|Ó,÷,ð ,à—‘×"Ñ" fÑ,÷,ð ,ð ×(Ñ(¨HÑ4÷,ð ,ð —‘Ð#3Ñ3÷	,ð ,ð
 —‘¤§¡´·±Ð ?Ñ?÷,ð ,ð —‘˜RÕ  D×$4Ñ$4Ñ4÷,ð ,ð × Ñ  2Õ%¨Ñ*÷,ð ,ð ×!Ñ! BÕ&¨!Ñ+ð
	
r!   c               ó    € V ^8„  d   QhRRRR/# ©r   r÷   r+   r   r   )r   s   "r   r    r…   §  s   € ÷ ,ñ ,¨lð ,¸|ñ ,r!   c                	ó|   € V P                  VP                  VP                  R 7      p\        P                  ! W4      # )rR   )rï   rS   rT   r%   Úmatmul)r‘   r÷   r.   s   && r   Ú_forward_dequant_matmulÚ&TorchFP8Linear._forward_dequant_matmul§  s.   € Ø×'Ñ'¨v¯}©}ÀFÇLÁLÐ'ÓQˆÜ�|Š|˜FÓ+Ð+r!   c               ó    € V ^8„  d   QhRRRR/# r  r   )r   s   "r   r    r…   «  s   € ÷ 

ñ 

¨ð 

¸,ñ 

r!   c                	ót  € V P                   P                  VP                  8X  d   V P                   M%V P                   P                  VP                  R 7      pV P                  V4      w  r4V P	                  VP                  R 7      p\
        P                  ! VVP                  4       VVVP                  R7      # )ré   )Úscale_aÚscale_bÚ	out_dtype)	r.   rS   r<   rü   rô   r%   r   ÚtrT   )r‘   r÷   r.   rû   r  r  s   &&    r   Ú_forward_scaled_mmÚ!TorchFP8Linear._forward_scaled_mm«  s�   € Ø $§¡× 2Ñ 2°f·m±mÔ C�—’ÈÏÉÏÉÐ_e×_lÑ_lÈÓImˆØ×9Ñ9¸&ÓA‰ˆØ×.Ñ.°f·m±mÐ.ÓDˆÜ×ÒØØ�H‰H‹JØØØ—l‘lô
ð 	
r!   c               ó   € V ^8„  d   QhRR/# )r   Úxr+   r   )r   s   "r   r    r…   ·  s   € ÷ .ñ .˜ñ .r!   c                	óÎ  € VP                   R R V P                  3,           pVP                  RVP                   R,          4      pV P                  V4      '       d    V P	                  V4      pMV P                  V4      pV P                  er   V P                  pVP                  VP                  8w  g   VP                  VP                  8w  d(   VP                  VP                  VP                  R7      pWE,           pV P                  '       d   V P                  P                  W4R7      pVP                  V4      #   \
         d    RT n        T P                  T4      p Lãi ; i)NTrR   )r  Úoutrœ   )r_   r   re   r  r  Ú	Exceptionr‹   r  r€   rS   rT   r<   r‚   Úapply)r‘   r  Úoriginal_shaper÷   Úoutputr€   s   &&    r   ÚforwardÚTorchFP8Linear.forward·  s  € ØŸ™  "˜¨×):Ñ):Ð(<Õ<ˆØ—‘˜2˜qŸw™w r�{Ó+ˆà×"Ñ" 6×*Ò*ð>Ø×0Ñ0°Ó8‘ð
 ×1Ñ1°&Ó9ˆFà�9‰9Ò Ø—9‘9ˆDØ�{‰{˜fŸm™mÔ+¨t¯z©z¸V¿\¹\Ô/IØ—w‘w f§m¡m¸6¿<¹<�wÓH�Ø•]ˆFà�<�<ˆ<Ø—\‘\×'Ñ'¨&Ð'Ó=ˆFà�~‰~˜nÓ-Ð-øô ô >Ø04�Ô-Ø×5Ñ5°fÓ=’ð>ús   ÁD> Ä>#E$Å#E$)	r‹   r€   rg   rŠ   r.   rI   r¨   rG   r„   r#   )NrÈ   r-   )NN)BÚ__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r�   ÚSUPPORTS_BACKENDSr   ÚFP8ÚSUPPORTS_METHODSr   ÚSUPPORTS_FORMATSÚSUPPORTS_BITSÚSUPPORTS_SHARDSÚSUPPORTS_TRAININGÚSUPPORTS_AUTO_PADDINGÚ!SUPPORTS_IN_FEATURES_DIVISIBLE_BYÚ"SUPPORTS_OUT_FEATURES_DIVISIBLE_BYr	   ÚCPUÚCUDAÚROCMÚXPUÚMPSÚSUPPORTS_DEVICESr
   ÚALLÚSUPPORTS_PLATFORMr%   Úint8Úint16Úint32Úint64ÚSUPPORTS_PACK_DTYPESr   ÚSUPPORTS_ADAPTERSr­   r  r=   ÚSUPPORTS_DTYPESÚ
QUANT_TYPEr�   Úclassmethodr˜   rž   r£   r�   rµ   r¹   r6   rÆ   rÍ   rÑ   Úinference_moderÅ   rÜ   rä   rï   rô   rü   r  r  r  r  Ú__static_attributes__Ú__classcell__)r“   s   @r   rt   rt   s   sÉ  ø† Ø ×*Ñ*Ð+ÐØŸ
™
�|ÐØŸ
™
 BÐ'ÐØ�C€MØ€OØÐØ!ÐØ)*¨Ð%Ø*+¨Ð&ð Ÿ
™
 F§K¡K°·±¸f¿j¹jÈ&Ï*É*ÐUÐØ!Ÿ™˜ÐØ!ŸJ™J¨¯©°U·[±[À%Ç+Á+ÐNÐØ˜ÐØ—}‘} e§n¡n°e·m±mÐD€Oà€Jð Ø"'§+¡+ØØ!%Ø%Ø#(Ø7;Ø&/÷2.ò 2.ðh ñó ðõ
õ

õò.õ
õ)÷S÷
SñSð ðSð '+÷Sð Sð ×ÒÓñ+.ð ÷+.ó ð+.÷Z+õ
ð"%Að -1ð%Að %)÷	%AõN	bõBõ
õ,õ

÷.ó .r!   rt   rr   ))Ú
__future__r   Útypingr   r   r%   Útorch.nnÚnnr2   Útorch.nn.modules.convr   Úadapter.adapterr   r   Úmodels._constr	   r
   Úquantizationr   r   Úquantization.configr   r   r   r   Úquantization.dtyper   r   r   Úutils.backendr   Ú r   Úggufr   r&   r6   rE   rr   rt   Ú__all__r   r!   r   Ú<module>rL     s•   ðõ #ç "ã Ý Û Ý )ç ,ß -ß *÷ó ÷ñ õ
 %Ý #Ý *õ3õõð9Lð "ð9Lð  %ð	9Lð
 48÷9LôxZ.Ð*ô Z.ðz
 Ð2Ð
3‚r!   