+
    "Ý³j~$  ã                  ó®   € R t ^ RIHt ^ RIt^ RIt^ RIHtHt ^ RIt^RI	H
t
Ht ^RIHt ^RIHtHtHt ^RIHt ^RIHt ^R	IHt  ! R
 R]4      tR.tR# )z/ParoQuant Triton-backed quantized linear layer.)ÚannotationsN)ÚOptionalÚTuple)ÚDEVICEÚPLATFORM)ÚFORMAT)Úparoquant_dequantize_tritonÚparoquant_gemm_triton_decodeÚparoquant_gemm_triton_prefill)Úhas_gil_disabled)ÚBACKEND)Ú
ParoLinearc            	      ó  a € ] tR t^tRt]P                  .t]P                  t	]
P                  ^ /t]P                  t]P                  t]P                  t]P                   t]P"                  t]P$                  t]P&                  t]P(                  t]P*                  t]P.                  .t]P4                  ]P6                  .t]P:                  t]P<                  t]P>                  tRt ]!PD                  PG                  RR4      R8g  t$]%! ^ ]&! ]!PD                  PG                  RR4      4      4      t']%! ^]&! ]!PD                  PG                  RR	4      4      4      t(]%! R
])! ]!PD                  PG                  RR4      4      4      t*]%! ^]&! ]!PD                  PG                  RR4      4      4      t+],R R l4       t-V 3R lt.V 3R lt/V 3R lt0]1R R l4       t2R R lt3R R lt4R R lt5R R lt6R R lt7R  R! lt8R" R# lt9R$ R% lt:R& R' lt;R(t<V ;t=# ))ÚParoQuantTritonLinearz@Use Triton fused kernels for ParoQuant prefill/decode execution.Úawq_paroquant_tritonÚ#GPTQMODEL_PAROQUANT_TRITON_AUTOTUNEÚ1Ú0Ú*GPTQMODEL_PAROQUANT_TRITON_AUTOTUNE_WARMUPÚ2Ú)GPTQMODEL_PAROQUANT_TRITON_AUTOTUNE_ITERSÚ4g        Ú*GPTQMODEL_PAROQUANT_TRITON_AUTOTUNE_MARGINz0.05Ú*GPTQMODEL_PAROQUANT_TRITON_DECODE_MAX_ROWSÚ8c               ó   € V ^8„  d   QhRR/# )é   Úreturnz Tuple[bool, Optional[Exception]]© )Úformats   "Ún/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/nn_modules/qlinear/paroquant_triton.pyÚ__annotate__Ú"ParoQuantTritonLinear.__annotate__;   s   € ÷ ñ Ð>ñ ó    c                óD  € ^ RI Hp ^ RIHp VP	                  V4      pW1P	                  R4      8  d   \        RV 24      h\        4       '       d!   W1P	                  R4      8  d   \        R4      h\        P                  P                  4       '       g   \        R4      hR# )	zDValidate the Triton and CUDA runtime prerequisites once per process.)Úversion)Ú__version__z2.0.0z*triton version must be >= 2.0.0: actual = z3.4.0zYGIL is disabled and not compatible with current Triton. Please upgrade to Triton >= 3.4.0zParoQuant Triton requires CUDA.)TN)Ú	packagingr%   Útritonr&   ÚparseÚImportErrorr   Ú	ExceptionÚtorchÚcudaÚis_availableÚRuntimeError)Úclsr%   Útriton_versionÚtriton_vs   &   r    Úvalidate_onceÚ#ParoQuantTritonLinear.validate_once:   sƒ   € õ 	&Ý8à—=‘= Ó0ˆà—m‘m GÓ,Ô,ÜÐ JÈ>ÐJZÐ[Ó\Ð\ä×Ò (¯]©]¸7Ó-CÔ"CÜÐwÓxÐxä�z‰z×&Ñ&×(Ò(ÜÐ@ÓAÐAàÐr#   c                ó   <€ VP                  R\        P                  4       \        SV `  ! V/ VB  V P
                  V n        V P                  V n        V P                  V n
        V P                  V n        V P                  V n        / V n        R# )zAInitialize Triton autotune settings and the per-shape plan cache.ÚbackendN)Ú
setdefaultr   ÚPAROQUANT_TRITONÚsuperÚ__init__ÚPAROQUANT_TRITON_AUTOTUNEÚ!paroquant_triton_autotune_enabledÚ PAROQUANT_TRITON_AUTOTUNE_WARMUPÚ paroquant_triton_autotune_warmupÚPAROQUANT_TRITON_AUTOTUNE_ITERSÚparoquant_triton_autotune_itersÚ PAROQUANT_TRITON_AUTOTUNE_MARGINÚ paroquant_triton_autotune_marginÚ PAROQUANT_TRITON_DECODE_MAX_ROWSÚ paroquant_triton_decode_max_rowsÚ_plan_cache)ÚselfÚargsÚkwargsÚ	__class__s   &*,€r    r:   ÚParoQuantTritonLinear.__init__M   sy   ø€ à×Ñ˜)¤W×%=Ñ%=Ô>Ü‰Ò˜$Ð) &Ò)Ø15×1OÑ1OˆÔ.Ø04×0UÑ0UˆÔ-Ø/3×/SÑ/SˆÔ,Ø04×0UÑ0UˆÔ-Ø04×0UÑ0UˆÔ-Ø+-ˆÖr#   c                ó$   <€ \         SV `  4        R# )zBDefer to the shared ParoQuant setup without forcing compute dtype.N)r9   Ú	post_init©rF   rI   s   &€r    rL   ÚParoQuantTritonLinear.post_initX   s   ø€ ä‰ÑÖr#   c                ó2   <€ \         SV `  4        / V n        R# )z<Drop cached plan decisions after major module state changes.N)r9   Úclear_autotunerE   rM   s   &€r    rP   Ú$ParoQuantTritonLinear.clear_autotune\   s   ø€ ä‰ÑÔ ØˆÖr#   c               ó    € V ^8„  d   QhRRRR/# )r   Údeviceztorch.devicer   ÚNoner   )r   s   "r    r!   r"   b   s   € ÷ 2ñ 2 |ð 2¸ñ 2r#   c                ól   € V P                   R8X  d#   \        P                  P                  V R7       R# R# )z6Synchronize CUDA timing measurements used by autotune.r-   ©rS   N)Útyper,   r-   ÚsynchronizerV   s   &r    Ú_sync_benchmark_deviceÚ,ParoQuantTritonLinear._sync_benchmark_devicea   s*   € ð �;‰;˜&Ô Ü�J‰J×"Ñ"¨&Ð"Ö1ñ !r#   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úxútorch.TensorÚx_flatr   Ústrr   )r   s   "r    r!   r"   g   s!   € ÷ ñ ¨ð ¸lð Èsñ r#   c                óð   € VP                  4       ^8¼  d=   VP                  R,          ^8X  d%   VP                  ^ ,          V P                  8:  d   R# VP                  ^ ,          V P                  8:  d   R# R# )z>Classify the workload as decode or prefill for plan selection.ÚdecodeÚprefilléþÿÿÿ)ÚdimÚshaperD   )rF   r\   r^   s   &&&r    Ú_classify_forward_kindÚ,ParoQuantTritonLinear._classify_forward_kindg   sR   € à�5‰5‹7�aŒ<˜AŸG™G B�K¨1Ô,°·±¸aµÀD×DiÑDiÔ1iÙØ�<‰<˜�?˜d×CÑCÔCÙÙr#   c               ó    € V ^8„  d   QhRRRR/# ©r   Úrotatedr]   r   r   )r   s   "r    r!   r"   o   s   € ÷ 	ñ 	¨\ð 	¸lñ 	r#   c                óÌ  € \        V P                  V P                  V P                  4      pVP                  VP                  8w  g   VP
                  VP
                  8w  d(   VP                  VP
                  VP                  R7      p\        P                  ! W4      pV P                  e8   W0P                  P                  VP
                  VP                  R7      ,           pV# )zFDense fallback used when fused Triton plans are unavailable or slower.)rS   Údtype)
r   ÚqweightÚscalesÚqzerosrl   rS   Útor,   ÚmatmulÚbias)rF   rj   ÚweightÚouts   &&  r    Ú_forward_triton_denseÚ+ParoQuantTritonLinear._forward_triton_denseo   s“   € ä,¨T¯\©\¸4¿;¹;ÈÏÉÓTˆØ�<‰<˜7Ÿ=™=Ô(¨F¯M©M¸W¿^¹^Ô,KØ—Y‘Y g§n¡n¸G¿M¹M�YÓJˆFä�lŠl˜7Ó+ˆØ�9‰9Ò ØŸ	™	Ÿ™¨G¯N©NÀ'Ç-Á-˜ÓPÕPˆCØˆ
r#   c               ó    € V ^8„  d   QhRRRR/# ri   r   )r   s   "r    r!   r"   z   s   € ÷ ñ ¨lð ¸|ñ r#   c                óœ   € \        WP                  V P                  V P                  4      pV P                  e   W P                  ,           pV# )zERun the fused Triton kernel optimized for small-row decode workloads.)r	   rm   rn   ro   rr   ©rF   rj   rt   s   && r    Ú_forward_triton_decodeÚ,ParoQuantTritonLinear._forward_triton_decodez   s6   € ä*¨7·L±LÀ$Ç+Á+ÈtÏ{É{Ó[ˆØ�9‰9Ò ØŸ	™	•/ˆCØˆ
r#   c               ó    € V ^8„  d   QhRRRR/# ri   r   )r   s   "r    r!   r"   �   s   € ÷ ñ ¨|ð Àñ r#   c                óœ   € \        WP                  V P                  V P                  4      pV P                  e   W P                  ,           pV# )zARun the fused Triton kernel optimized for larger prefill batches.)r
   rm   rn   ro   rr   ry   s   && r    Ú_forward_triton_prefillÚ-ParoQuantTritonLinear._forward_triton_prefill�   s9   € ä+¨G·\±\À4Ç;Á;ÐPT×P[ÑP[Ó\ˆØ�9‰9Ò ØŸ	™	•/ˆCØˆ
r#   c               ó$   € V ^8„  d   QhRRRRRR/# )r   Úplanr_   rj   r]   r   r   )r   s   "r    r!   r"   ˆ   s&   € ÷ Cñ C˜cð C¨Lð C¸\ñ Cr#   c                ó®   € VR8X  d   V P                  V4      # VR8X  d   V P                  V4      # VR8X  d   V P                  V4      # \        RV 24      h)z"Dispatch one named execution plan.ÚdenseÚdecode_fusedÚprefill_fusedzUnknown ParoQuant Triton plan: )ru   rz   r~   Ú
ValueError)rF   r�   rj   s   &&&r    Ú	_run_planÚParoQuantTritonLinear._run_planˆ   s_   € à�7Œ?Ø×-Ñ-¨gÓ6Ð6Ø�>Ô!Ø×.Ñ.¨wÓ7Ð7Ø�?Ô"Ø×/Ñ/°Ó8Ð8ÜÐ:¸4¸&ÐAÓBÐBr#   c               ó    € V ^8„  d   QhRRRR/# )r   Úkindr_   r   z	list[str]r   )r   s   "r    r!   r"   ’   s   € ÷ :ñ : Sð :¨Yñ :r#   c                ó    € VR8X  d   . RO# . RO# )zCReturn the execution plans worth benchmarking for a workload class.ra   )r„   rƒ   r…   )r…   rƒ   r„   r   )rF   rŠ   s   &&r    Ú_candidate_plansÚ&ParoQuantTritonLinear._candidate_plans’   s   € à�8ÔÚ=Ð=Ú9Ð9r#   c               ó$   € V ^8„  d   QhRRRRRR/# )r   r�   r_   rj   r]   r   Úfloatr   )r   s   "r    r!   r"   ˜   s&   € ÷ Tñ T Cð T°,ð TÀ5ñ Tr#   c                ó  € \         P                  ! 4       ;_uu_ 4        \        V P                  4       F  pV P	                  W4       K  	  V P                  VP                  4       \        P                  ! 4       p\        V P                  4       F  pV P	                  W4       K  	  V P                  VP                  4       RRR4       \        P                  ! 4       X,
          V P                  ,          #   + '       g   i     L=; i)z,Measure mean latency for one candidate plan.N)
r,   Úinference_modeÚranger>   r‡   rY   rS   ÚtimeÚperf_counterr@   )rF   r�   rj   Ú_Ústarts   &&&  r    Ú_benchmark_planÚ%ParoQuantTritonLinear._benchmark_plan˜   s¶   € ä×!Ò!×#Õ#Ü˜4×@Ñ@ÖA�Ø—‘˜tÖ-ñ Bà×'Ñ'¨¯©Ô7ä×%Ò%Ó'ˆEÜ˜4×?Ñ?Ö@�Ø—‘˜tÖ-ñ Aà×'Ñ'¨¯©Ô7÷ $ô ×!Ò!Ó# eÕ+¨t×/SÑ/SÕSÐS÷ $×#ús   žB&C9Ã9D		c               ó$   € V ^8„  d   QhRRRRRR/# )r   rŠ   r_   rj   r]   r   r   )r   s   "r    r!   r"   ¦   s!   € ÷ ñ  ð ¨|ð Àñ r#   c                óî  € VR8X  d   RMRpV P                   '       g   V P                  '       g   V# V P                  P                  V4      pVe   V#  V P	                  V4       Uu/ uF  qUV P                  WR4      bK  	  pp\        WfP                  R7      pWg,          pWc,          p	Ws8w  d!   W‰RV P                  ,
          ,          8”  d   TpYpP                  T&   T# u upi   \         d    Tp L$i ; i)zDPick the best plan, bounded by a bias toward the default fused path.ra   r„   r…   )Úkeyg      ð?)	Útrainingr<   rE   ÚgetrŒ   r—   ÚminrB   r+   )
rF   rŠ   rj   Údefault_planÚcachedr�   ÚtimingsÚ	best_planÚ	best_timeÚdefault_times
   &&&       r    Ú_select_planÚ"ParoQuantTritonLinear._select_plan¦   sð   € à)-°Ô)9‘~¸ˆØ�=�=ˆ= × F× FÐ FØÐà×!Ñ!×%Ñ% dÓ+ˆØÒØˆMð		%ØMQ×MbÑMbÐcgÔMhÓiÑMhÀT˜T×1Ñ1°$Ó@Ò@ÑMhˆGÐiÜ˜G¯©Ô5ˆIØÕ*ˆIØ"Õ0ˆLàÔ(¨YÈÈt×OtÑOtÕItÕ9uÔ-uØ(�	ð "+×Ñ˜ÑØÐùò jøô ô 	%Ø$ŠIð	%ús%   ÁC$ Á'CÂAC$ ÃC$ Ã$C4Ã3C4c               ó   € V ^8„  d   QhRR/# )r   r\   r]   r   )r   s   "r    r!   r"   ¾   s   € ÷ +ñ +˜ñ +r#   c                ó"  € VP                   RR V P                  3,           pV P                  V4      ^ 8X  d   V P                  V4      # VP	                  RVP                   R,          4      pVP	                  RVP                   R,          4      pV P                  V4      pV P                  V P                  W4      V4      pV P                  We4      pV P                  '       d   V P                  P                  W7R7      pVP	                  V4      # )zBRotate inputs, pick a Triton plan, and preserve adapter semantics.N)r\   rt   éÿÿÿÿ)re   Úout_featuresÚ
input_rowsÚempty_linear_outputÚreshapeÚ_rotate_inputsr¥   rf   r‡   ÚadapterÚapply)rF   r\   Úoriginal_shapeÚadapter_inputr^   rj   r�   rt   s   &&      r    ÚforwardÚParoQuantTritonLinear.forward¾   sÛ   € àŸ™  "˜¨×):Ñ):Ð(<Õ<ˆØ�?‰?˜1Ó Ô"à×+Ñ+¨AÓ.Ð.ØŸ	™	 " a§g¡g¨b¥kÓ2ˆØ—‘˜2˜qŸw™w r�{Ó+ˆØ×%Ñ% fÓ-ˆà× Ñ  ×!<Ñ!<¸QÓ!GÈÓQˆØ�n‰n˜TÓ+ˆà�<�<ˆ<Ø—,‘,×$Ñ$ }Ð$Ó>ˆCà�{‰{˜>Ó*Ð*r#   )rE   r<   r@   rB   r>   rD   )>Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r8   ÚSUPPORTS_BACKENDSr   ÚSUPPORTS_METHODSr   Ú	PAROQUANTÚSUPPORTS_FORMATSÚSUPPORTS_BITSÚSUPPORTS_GROUP_SIZEÚSUPPORTS_DESC_ACTÚSUPPORTS_SYMÚSUPPORTS_SHARDSÚSUPPORTS_TRAININGÚSUPPORTS_AUTO_PADDINGÚ!SUPPORTS_IN_FEATURES_DIVISIBLE_BYÚ"SUPPORTS_OUT_FEATURES_DIVISIBLE_BYr   ÚCUDAÚSUPPORTS_DEVICESr   ÚLINUXÚWIN32ÚSUPPORTS_PLATFORMÚSUPPORTS_PACK_DTYPESÚSUPPORTS_ADAPTERSÚSUPPORTS_DTYPESÚ
QUANT_TYPEÚosÚenvironr�   r;   ÚmaxÚintr=   r?   r�   rA   rC   Úclassmethodr3   r:   rL   rP   ÚstaticmethodrY   rf   ru   rz   r~   r‡   rŒ   r—   r¥   r³   Ú__static_attributes__Ú__classcell__)rI   s   @r    r   r      sô  ø† ÙJà ×1Ñ1Ð2ÐØ!×2Ñ2ÐØ×(Ñ(¨!Ð,ÐØ×,Ñ,€MØ$×8Ñ8ÐØ"×4Ñ4ÐØ×*Ñ*€LØ ×0Ñ0€OØ"×4Ñ4ÐØ&×<Ñ<ÐØ(2×(TÑ(TÐ%Ø)3×)VÑ)VÐ&ØŸ™�}ÐØ!Ÿ™¨¯©Ð8ÐØ%×:Ñ:ÐØ"×4Ñ4ÐØ ×0Ñ0€OØ'€JØ "§
¡
§¡Ð/TÐVYÓ ZÐ^aÑ aÐÙ'*¨1©c°"·*±*·.±.ÐAmÐorÓ2sÓ.tÓ'uÐ$Ù&)¨!©S°·±·±Ð@kÐmpÓ1qÓ-rÓ&sÐ#Ù'*¨3±°b·j±j·n±nÐEqÐsyÓ6zÓ0{Ó'|Ð$Ù'*¨1©c°"·*±*·.±.ÐAmÐorÓ2sÓ.tÓ'uÐ$àôó ðõ$	.õõð
 ô2ó ð2õ
õ	õõõCõ:õTõ÷0+ó +r#   r   )r¹   Ú
__future__r   rÐ   r“   Útypingr   r   r,   Úmodels._constr   r   Úquantizationr   Ú*quantization.paroquant.modules.triton.gemmr   r	   r
   Úutilsr   Úutils.backendr   Ú	paroquantr   r   Ú__all__r   r#   r    Ú<module>rá      sM   ðñ 6å "ã 	Û ß "ã ç -Ý "÷ñ õ
 &Ý $Ý !ôo+˜Jô o+ðd #Ð
#‚r#   