+
    "Ý³j¡V  ã                   ó
  € ^ RI HtHtHt ^ RIt^ RIt^RIHtH	t	 ^RI
HtHtHt ^RIHt ^RIHtHt ^RIHt ^RIHt ^R	IHtHtHt ^R
IHt ]! 4       tRtR R ltR R lt RR lt! ! R R]4      t" ! R R]"4      t#RR.t$R# )é    )ÚListÚOptionalÚTupleN)ÚAdapterÚLora)ÚCPUÚDEVICEÚPLATFORM)ÚGroupedQuantLinear)ÚFORMATÚMETHOD)ÚBACKEND)Úsetup_logger)Úqqq_gemmÚqqq_runtime_availableÚqqq_runtime_error)ÚIS_ROCMc                ó8   € V ^8„  d   QhR\         P                  /# ©é   Úreturn©ÚtorchÚTensor)Úformats   "Úa/home/luca/screen-checking/.venv/lib/python3.14/site-packages/gptqmodel/nn_modules/qlinear/qqq.pyÚ__annotate__r      s   € ÷ 3ñ 3¤5§<¡<ñ 3ó    c                 ó¶   € ^ .\        V 4      ,          p\        V 4       F  w  r#W!\        V4      &   K  	  \        P                  ! V\        P
                  R7      # )r   ©Údtype)ÚlenÚ	enumerateÚintr   ÚtensorÚlong)ÚvaluesÚinverseÚindexÚvalues   &   r   Ú_invert_permutationr+      sD   € Øˆc”C˜“KÕ€GÜ! &Ö)‰ˆØ#”�E“
Óñ *ä�<Š<˜¤u§z¡zÔ2Ð2r   c                óX   € V ^8„  d   QhR\         P                  R\         P                  /# )r   Úpackedr   r   )r   s   "r   r   r   $   s"   € ÷ ?ñ ?œ%Ÿ,™,ð ?¬5¯<©<ñ ?r   c                 óú  € V P                  \        P                  4      p\        P                  ! V^ 8  VR,           V4      p\        P                  ! \
        \        P                  V P                  R7      p\        P                  ! VP                  R4      V4      pV\        P                  ! V^4      ^,          ,
          pVP                  V P                  ^ ,          V P                  ^,          ^,          4      # )r   ©r!   Údevicel        éÿÿÿÿ)Útor   Úint64Úwherer%   Ú_INT4_DIVISORSr0   Úfloor_divideÚ	unsqueezeÚreshapeÚshape)r-   Ú
packed_i64Ú
packed_u32ÚdivisorsÚ	quotientsÚlaness   &     r   Ú_unpack_uint4r?   $   s¨   € Ø—‘œ5Ÿ;™;Ó'€JÜ—’˜Z¨!™^¨Z¸7Õ-CÀZÓP€JÜ�|Š|œN´%·+±+ÀfÇmÁmÔT€HÜ×"Ò" :×#7Ñ#7¸Ó#;¸XÓF€IØœ×*Ò*¨9°bÓ9¸BÕ>Õ>€EØ�=‰=˜Ÿ™ a�¨&¯,©,°q­/¸AÕ*=Ó>Ð>r   c                óz   € \        4       '       g   \        R\        4       ,           4      h\        WW#WEWgW‰W«4       R# )af  INT8xINT4 multiply based on Marlin kernel; can be used within `torch.compile`.
@A: `torch.int8` input matrix of shape `(m, k)` in standard row-major layout
@B: `torch.int32` weight matrix of original shape `(k, n)` in the specified format; see `Layer.pack()`
@C: `torch.int32` reduce buffer of shape `(max_par * 64, n)` in standard row-major layout
@D: `torch.float16` out matrix of shape `(m, n)` in standard row-major layout
@s1: `torch.float32` activation per-token quantization scales of shape `(m, 1)`
@s2: `torch.float32` weight per-channel quantization scales of shape `(1, n)`
@s3: `torch.float16` weight per-group quantization scales of shape `(m / groupsize, n)`, it should be empty when group_size != -1
@workspace: `torch.int32` tensor with at least `n / 128 * max_par` entries that are all zero
@thread_k: `k` size of a thread_tile in `B` (can usually be left as auto -1)
@thread_n: `n` size of a thread_tile in `B` (can usually be left as auto -1)
@sms: number of SMs to use for the kernel (can usually be left as auto -1)
@max_par: maximum number of batch 64 problems to solve in parallel for large input sizes
z9QQQ torch.ops kernels are not properly installed. Error: N)r   ÚModuleNotFoundErrorr   r   )ÚAÚBÚCÚDÚs1Ús2Ús3Ú	workspaceÚthread_kÚthread_nÚsmsÚmax_pars   &&&&&&&&&&&&r   ÚmulrN   -   s4   € ô" !×"Ò"Ü!Ð"]Ô`qÓ`sÕ"sÓtÐtÜˆQ�1˜ °ÀCÖQr   c                   ó>  a a€ ] tR t^Ct o]P
                  .t]P
                  .t]	P
                  ^d/t
^.tR^€.tRR.tR.tRtRtRt^@.t^@.t]P*                  ]P,                  .t]P2                  .t]P8                  .t].t]P@                  ]PB                  .t"Rt#Rt$. ROt%R]P8                  RR3V3R lV 3R lllt&R t'](V3R lR	 l4       t)](V3R
 lR l4       t*](V3R lV 3R ll4       t+V 3R lt,V3R lV 3R llt-RV3R lR llt.V3R lR lt/R t0Rt1Vt2V ;t3# )Ú	QQQLinearTFÚqqqNc                ój   <€ V ^8„  d   QhRS[ RS[ RS[RS[RS[ RS[ RS[RS[P                  R	S[R
S[/
# )r   ÚbitsÚ
group_sizeÚdesc_actÚsymÚin_featuresÚout_featuresÚbiasÚ
pack_dtypeÚadapterÚregister_buffers)r$   Úboolr   r!   r   )r   Ú__classdict__s   "€r   r   ÚQQQLinear.__annotate___   s}   ø€ ÷ ]ñ ]Ùð]áð]ñ ð]ñ ð	]ñ
 ð]ñ ð]ñ ð]ñ —K‘Kð]ñ ð]ñ ñ]r   c                ó$  <€ ^V n         ^V n        V'       d
   VR8X  d   Rp\        SV `  ! RRVRVRVRVRVRVRVR	VR
VP	                  R
\
        P                  4      RV	RR/VB  ^V P                  ,          ^,
          V n        V
'       EdO   V P                  R\        P                  ! V P                  ^,          V P                  ^,          ^,          3\        P                  R7      4       V P                  R\        P                  ! ^V P                  3\        P                  R7      4       V P                   V P                  8w  d_   V P                  R\        P                  ! V P                  V P                   ,          V P                  3\        P"                  R7      4       M6V P                  R\        P$                  ! . \        P"                  R7      4       V P                  R\        P&                  ! V P                  ^€,          ^,          \        P                  R7      RR7       V P                  R\        P&                  ! V P                  ^,          ^,          V P                  3\        P(                  R7      RR7       V'       dB   V P                  R\        P&                  ! V P                  \        P"                  R7      4       MRV n        V P-                  4       w  V n        V n        V n        V n        V n        V n        R# )é   FrS   rT   rV   rU   rW   rX   rY   rZ   Úbackendr[   r\   rC   r    Ú	s_channelÚs_grouprI   )Ú
persistentÚreduce_bufferNr1   © )ÚtilerM   ÚsuperÚ__init__Úpopr   ÚQQQrS   ÚmaxqÚregister_bufferr   ÚemptyrW   rX   Úint32Úfloat32rT   Úfloat16r%   Úzerosr$   rY   Ú
_get_permsÚ_permÚ_perm_iÚ_scale_permÚ_scale_perm_iÚ_scale_perm_singleÚ_scale_perm_single_i)ÚselfrS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   ÚkwargsÚ	__class__s   &&&&&&&&&&&,€r   rj   ÚQQQLinear.__init___   sµ  ø€ ð ˆŒ	ØˆŒ÷
 ˜
 bÔ(ð ˆHä‰Òñ 	Øð	à!ð	ð ð	ð ð		ð
 $ð	ð &ð	ð ð	ð "ð	ð —J‘J˜y¬'¯+©+Ó6ð	ð ð	ð #ð	ð ò	ð  ˜$Ÿ)™)•^ qÕ(ˆŒ	÷ ÐØ× Ñ ØÜ—’Ø×%Ñ%¨Õ+¨T×->Ñ->ÀÕ-CÀqÕ-HÐIÔQV×Q\ÑQ\ôôð × Ñ ØÜ—’Ø˜×)Ñ)Ð*ÜŸ-™-ôôð �‰ $×"2Ñ"2Ô2Ø×$Ñ$ØÜ—K’KØ×)Ñ)¨T¯_©_Õ<¸d×>OÑ>OÐPÜ#Ÿm™môõð ×$Ñ$ØÜ—L’L ¬5¯=©=Ô9ôð
 × Ñ ØÜ—’˜D×-Ñ-°Õ4°rÕ9ÄÇÁÔMØ ð !ô ð
 × Ñ ØÜ—’˜TŸ\™\¨BÕ.°Õ2°D×4EÑ4EÐFÌeÏiÉiÔXØ ð !ô ÷
 Ø×$Ñ$ V¬U¯[ª[¸$×:KÑ:KÔTY×TaÑTaÔ-bÕcà �”	ð �O‰OÓñ	
ØŒJØŒLØÔØÔØÔ#ØÖ%r   c           
     óÂ  € . p\        ^ 4       FÞ  p. pV^,          pR FŠ  p^V^,          ,          ^V^,          ,          ^,           ^V^,          ,          ^,           ^V^,          ,          ^,           3 F0  pVP                  ^V,          V,           ^V,          ,           4       K2  	  KŒ  	  \        ^4       F1  pTP                  V Uu. uF  qˆRV,          ,           NK  	  up4       K3  	  Kà  	  \        P                  ! V4      pV P
                  V P                  8X  d   \        P                  ! . RO4      p	M\        P                  ! . RO4      p	VP                  R4      RV	3,          P                  4       p\        P                  ! V4      p\        VP                  4       4      p
. p\        ^4       F:  pTP                  \        ^4       Uu. uF  qr^V,          ,           NK  	  up4       K<  	  \        V4      p. p\        ^4       F2  pTP                  R Uu. uF  p^V,          V,           NK  	  up4       K4  	  \        V4      pWW¼WÞ3# u upi u upi u upi )é    é   ºNNN)r   é   )é   r   é   rƒ   é   r   é   é   )r   r   r„   r†   rƒ   rˆ   r…   r‡   )r1   é   )r   rƒ   r‰   é	   ra   é   é   é   )ÚrangeÚappendÚextendÚnpÚarrayrT   rW   r8   Úravelr   Ú
from_numpyr+   Útolist)r{   ÚpermÚiÚperm1ÚcolÚblockÚrowÚjÚpÚ
interleaveÚperm_iÚ
scale_permÚscale_perm_iÚscale_perm_singleÚscale_perm_single_is   &              r   rt   ÚQQQLinear._get_permsÁ   sð  € ØˆÜ�r–ˆAØˆEØ�q•&ˆCÛ�à˜˜Q�•KØ˜˜Q�•K !•OØ˜˜Q�•K !•OØ˜˜Q�•K !•Oó	�Cð —L‘L  c¥¨C¥°!°eµ)Õ!;Ö<óñ  ô ˜1–X�Ø—‘±%Ó8±%¨Q  q¥Ÿ[˜[±%Ñ8Ö9ó ñ ô �xŠx˜‹~ˆØ�?‰?˜d×.Ñ.Ô.ÜŸšÒ":Ó;‰JäŸšÒ":Ó;ˆJØ�|‰|˜GÓ$ Q¨
 ]Õ3×9Ñ9Ó;ˆÜ×Ò Ó%ˆÜ$ T§[¡[£]Ó3ˆØˆ
Ü�q–ˆAØ×Ñ´%¸´(Ó;±(¨Q 1 q¥5Ÿy˜y±(Ñ;Ö<ñ ä*¨:Ó6ˆØÐÜ�q–ˆAØ×$Ñ$Ñ9UÓ%VÑ9U°A a¨!¥e¨a§i iÑ9UÑ%VÖWñ ä1Ð2CÓDÐØ˜ZÐ7HÐ]Ð]ùò% 9ùò <ùò &Ws   Ã	IÇI
ÈI
c                óF   <€ V ^8„  d   QhRS[ S[S[S[,          3,          /# r   ©r   r]   r   Ú	Exception)r   r^   s   "€r   r   r_   í   s#   ø€ ÷ ñ ™e¡D©(±9Õ*=Ð$=Õ>ñ r   c                óP   € \        4       '       g   R \        \        4       4      3# R# )F©TN)r   ÚImportErrorr   ©Úclss   &r   Úvalidate_onceÚQQQLinear.validate_onceì   s%   € ä$×&Ò&Øœ+Ô&7Ó&9Ó:Ð:Ð:ØÐr   c                óF   <€ V ^8„  d   QhRS[ S[S[S[,          3,          /# r   r¦   )r   r^   s   "€r   r   r_   ó   s#   ø€ ÷ 	%ñ 	%¡¡t©X±iÕ-@Ð'@Õ!Añ 	%r   c                ób  aa€ VP                  R 4      oVP                  R4      oS'       ds   S'       dk   \        ;QJ d*    VV3R lV P                   4       F  '       g   K   RM	  RM! VV3R lV P                   4       4      '       g   \        V  RS RS R24      hV P                  ! R/ VB # )	rW   rX   c              3   óh   <"  € T F'  w  rSV,          ^ 8H  ;'       d    SV,          ^ 8H  x € K)  	  R# 5i©r   Nrg   )Ú.0rJ   rK   rW   rX   s   &  €€r   Ú	<genexpr>Ú%QQQLinear.validate.<locals>.<genexpr>ö   s:   øé € ð 4
á.QÑ*˜ð ˜hÕ&¨!Ñ+×LÐL°¸xÕ0GÈ1Ñ0LÔLÛ.Qùs   ƒ2�2TFz not supported `infeatures`: z and `outfeatures`: Ú.rg   )ÚgetÚanyÚIN_OUTPUT_FEATURES_DIVISIBLE_BYÚ
ValueErrorÚ	_validate)r¬   ÚargsrW   rX   s   &,@@r   ÚvalidateÚQQQLinear.validateò   s•   ù€ à—h‘h˜}Ó-ˆØ—x‘x Ó/ˆßŸ<·³õ 4
à.1×.QÒ.Qó4
··²õ 4
à.1×.QÒ.Qó4
÷ 1
ò 1
ô  ˜uÐ$AÀ+ÀÐNbÐcoÐbpÐpqÐrÓsÐsà�}Š}Ñ$˜tÑ$Ð$r   c                óD   <€ V ^8„  d   QhRS[ S[P                  ,          /# )r   r0   )r	   r   r0   )r   r^   s   "€r   r   r_   ÿ   s    ø€ ÷ dñ d¡V©e¯l©lÕ%:ñ dr   c                ó˜  <€ \         SV `  V4       \        '       d   R # \        V\        P
                  4      '       d   VP                  MTR\        P                  39   dé   \        V\        P
                  4      '       d   V3Mu\        ;QJ d9    . R \        \        P                  P                  4       4       4       F  NK  	  5M2! R \        \        P                  P                  4       4       4       4      pV'       d;   \        ;QJ d    R V 4       F  '       g   K   RM	  RM! R V 4       4      '       d   \        R4      hR # R # )NÚcudac              3   óT   "  € T F  p\         P                  ! R V 24      x € K   	  R# 5i)zcuda:N)r   r0   )r³   r)   s   & r   r´   Ú,QQQLinear.validate_device.<locals>.<genexpr>
  s$   é € ÐgÑFf¸Uœ5Ÿ<š<¨%°¨w¨×8Ð8ÓFfùs   ‚&(c              3   ót   "  € T F.  p\         P                  P                  V4      ^ ,          ^8  x € K0  	  R# 5ir²   )r   rÁ   Úget_device_capability)r³   Útargets   & r   r´   rÃ     s-   é € Ð!hÑ`gÐV\¤%§*¡*×"BÑ"BÀ6Ó"JÈ1Õ"MÐPQÖ"QÓ`gùs   ‚68TFz6Marlin kernel only supports compute capability >= 8.0.)ri   Úvalidate_devicer   Ú
isinstancer   r0   Útyper	   ÚCUDAÚtuplerŽ   rÁ   Údevice_countr¸   ÚNotImplementedError)r¬   r0   Útargetsr}   s   && €r   rÇ   ÚQQQLinear.validate_deviceþ   sâ   ø€ ä‰Ñ Ô'÷ ‹7ÙÜ% f¬e¯l©l×;Ò;ˆF�KŠKÀÈVÔU[×U`ÑU`ÐLaÔaô ˜f¤e§l¡l×3Ò3ð ‘	ç”UÑgÄeÌEÏJÉJ×LcÑLcÓLeÔFfÓg—U‘UÑgÄeÌEÏJÉJ×LcÑLcÓLeÔFfÓgÓgð ÷
 Ÿc›cÑ!hÑ`gÓ!hŸcŸcšcÑ!hÑ`gÓ!h×hÒhÜ)Ð*bÓcÐcñ iñ br   c                óà   <€ \         SV `  4        V P                  P                  \        P
                  R 7      V n        V P                  P                  \        P                  R 7      V n        R# )r    N)ri   Ú	post_initrc   r2   r   rq   rd   rr   )r{   r}   s   &€r   rÑ   ÚQQQLinear.post_init  sE   ø€ Ü‰ÑÔàŸ™×*Ñ*´·±Ð*Ó?ˆŒØ—|‘|—‘¬U¯]©]�Ó;ˆŽr   c                ó    <€ V ^8„  d   QhRS[ /# r   )r   )r   r^   s   "€r   r   r_     s   ø€ ÷ ñ ™dñ r   c                ór  <€ \         SV `  4       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4      '       d*   V P                  e   VP	                  V P                  4       \        V R4      '       d*   V P                  e   VP	                  V P                  4       V# )rC   rc   rd   rI   rf   )	ri   Úlist_buffersÚhasattrrC   r�   rc   rd   rI   rf   )r{   Úbufr}   s   & €r   rÕ   ÚQQQLinear.list_buffers  s×   ø€ Ü‰gÑ"Ó$ˆÜ�4˜×Ò $§&¡&Ò"4Ø�J‰J�t—v‘vÔÜ�4˜×%Ò%¨$¯.©.Ò*DØ�J‰J�t—~‘~Ô&Ü�4˜×#Ò#¨¯©Ò(@Ø�J‰J�t—|‘|Ô$Ü�4˜×%Ò%¨$¯.©.Ò*DØ�J‰J�t—~‘~Ô&Ü�4˜×)Ò)¨d×.@Ñ.@Ò.LØ�J‰J�t×)Ñ)Ô*Øˆ
r   c                ób   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  /# )r   ÚlinearÚscales)r   ÚnnÚModuler   )r   r^   s   "€r   r   r_   #  s/   ø€ ÷ sbñ sb™5Ÿ8™8Ÿ?™?ð sb±E·L±Lñ sbr   c           
     óH  € V P                   V P                  8w  d   Vf   Q R4       hVP                  P                  \        P
                  8w  d8   \        P                  P                  RVP                  P                   R24       VP                  4       pV P                   V P                  8w  Ed   VP                  ^R4      P                  \        P                  R7      pWC,          P                  \        P
                  R7      pVP                  R\        V P                  4      34      RV P                  3,          P                  RV P                  34      P!                  4       pVP                  R\        V P"                  4      34      RV P"                  3,          P                  RV P                  34      P!                  4       pM¡RpV^^V P$                  ,
          ,          ,          P                  R\        V P"                  4      34      RV P"                  3,          P                  \        P                  R7      P                  RV P                  34      P!                  4       p\'        RV P                  4      p\'        RV P                  4      pWwV P(                  ,          ,          pWˆ^@,          ,          pV^ 8X  g   V^ 8X  d3   \+        R	V P(                   R
V P                   RV P                   24      h\        P,                  ! V P                  V P(                  ,          V P                  ^,          3\        P.                  \0        R7      p	VP                  P2                  p
V P4                  P                  V
P6                  R7      p\9        ^ V P                  V4       EF  p\'        WÇ,           V P                  4      pWÜ,
          pWàP(                  ,          ^ 8w  d   \+        R4      h\        P:                  ! VVV
P6                  \        P<                  R7      pV P                   V P                  8w  d6   \        P>                  ! WðP                   RR7      pVPA                  ^ V4      pMVPC                  VR4      p\9        ^ V P                  V4       EF
  p\'        VV,           V P                  4      pVV,
          pV^@,          ^ 8w  d   \+        R4      hV
VV1WÍ13,          PE                  ^ ^4      pVRVV13,          p\        PF                  ! VV,          4      P                  \        P.                  R7      pV P                   V P                  8w  dE   VPI                  V PJ                  ^,           ^,          4      PM                  ^ V PJ                  4       M'VPM                  V PJ                  ) V PJ                  4       VP                  WàP(                  ,          V P(                  VV P(                  ,          V P(                  4      PO                  ^ ^^^4      P                  WàP(                  ,          VV P(                  ,          4      pVP                  RVPQ                  4       4      PA                  ^V4      P                  WàP(                  ,          VV P(                  ,          4      p\        PR                  ! WàP(                  ,          V^,          3\        P.                  V
P6                  R7      p\9        ^4       F5  pVPU                  VRVR^13,          ^,          ^V,          ,          4       K7  	  V	WÀP(                  ,          WÐP(                  ,          1V^,          V^,          13,          PW                  VP                  \0        R7      4       EK  	  EK  	  V PY                  RV	4       V P                   V P                  8w  d&   V PY                  RV4       V PY                  RV4       MV PY                  RV4       VPZ                  ey   V PZ                  ei   V PY                  RVPZ                  P2                  P                  V PZ                  P6                  4      P                  \        P
                  4      4       R# R# R# )zBPack a fake-quantized linear layer into the Marlin representation.Nzs_extra is neededzThe dtype of weights is zà, while our w4a8 GEMM's output is torch.float16.
                If you can ensure your GEMM results don't overflow torch.float16, it will still function correctly.
                Otherwise, it will yield incorrect results.r    r‚   i   r�   z*QQQ pack requires dimensions divisible by z and 64, got in_features=z, out_features=r/   ©r0   z(QQQ pack input chunk is not tile aligned©r0   r!   Úfloor)Úrounding_modez0QQQ pack output chunk is not permutation alignedrC   rd   rc   rY   r1   ).rT   rW   Úweightr!   r   rr   ÚlogÚwarnÚonceÚtr8   r2   rq   r"   rw   rX   Ú
contiguousry   rS   Úminrh   rº   ro   rp   r   Údataru   r0   rŽ   Úaranger&   ÚdivÚindex_selectÚexpandÚ	transposeÚroundÚadd_rm   Úclamp_ÚpermuteÚnumelrs   Úbitwise_or_Úcopy_rn   rY   )r{   rÚ   rÛ   Ús_extraÚ
raw_scalesÚpacked_s_groupÚpacked_s_channelÚinput_chunk_sizeÚoutput_chunk_sizeÚpacked_weightrã   r–   Úinput_startÚ	input_endÚ
input_sizeÚinput_indicesÚgroup_indicesÚscale_chunkÚoutput_startÚ
output_endÚoutput_sizeÚweight_chunkÚscale_chunk_viewÚcodesÚtransformedÚpacked_chunkÚlanes   &&&&                       r   ÚpackÚQQQLinear.pack#  sÍ  € à�?‰?˜d×.Ñ.Ô.ØÒ&Ð;Ð(;Ó;Ð&Ø�=‰=×Ñ¤%§-¡-Ô/Ü�H‰H�M‰MØ,¨V¯]©]×-@Ñ-@Ð,Að B<ð ?ôð —X‘X“Zˆ
Ø�?‰?˜d×.Ñ.Õ.Ø—o‘o a¨Ó,×/Ñ/´e·m±mÐ/ÓDˆGØ(Õ2×6Ñ6¼U¿]¹]Ð6ÓKˆNØ+×3Ñ3Ø”S˜×)Ñ)Ó*Ð+óà�×!Ñ!Ð!õ#ç#*¡7¨B°×0AÑ0AÐ+BÓ#CÇJÁJÃLð ð  'Ÿ™Ø”S˜×0Ñ0Ó1Ð2ó à�×(Ñ(Ð(õ *ç*1©'°2°t×7HÑ7HÐ2IÓ*JÏ:É:Ë<ñ ð "ˆNà˜q Q¨¯©¥]Õ3Õ4ß‘˜"œc $×"9Ñ"9Ó:Ð;Ó<¸QÀ×@WÑ@WÐ=WõYç‘œ%Ÿ-™-�Ó(ß‘˜"˜d×/Ñ/Ð0Ó1ß‘“ð ô ˜t T×%5Ñ%5Ó6ÐÜ  T×%6Ñ%6Ó7ÐØ¨t¯y©yÕ8Õ8ÐØ°Õ3Õ3ÐØ˜qÔ Ð$5¸Ô$:ÜØ<¸T¿Y¹Y¸Kð H#Ø#'×#3Ñ#3Ð"4°OÀD×DUÑDUÐCVðXóð ô
 ŸšØ×Ñ §¡Õ*¨D×,=Ñ,=ÀÕ,AÐBÜ—+‘+Üô
ˆð
 —‘×#Ñ#ˆØ�z‰z�}‰} F§M¡Mˆ}Ó2ˆÜ   D×$4Ñ$4Ð6F×GˆKÜ˜KÕ:¸D×<LÑ<LÓMˆIØ"Õ0ˆJØŸI™IÕ%¨Ô*Ü Ð!KÓLÐLä!ŸLšLØØØ—}‘}Ü—j‘jô	ˆMð �‰ $×"2Ñ"2Ô2Ü %§	¢	¨-¿¹ÐX_Ô `�Ø(×5Ñ5°a¸ÓG‘à(×/Ñ/°
¸BÓ?�ä % a¨×):Ñ):Ð<M× N�Ü  Ð0AÕ!AÀ4×CTÑCTÓU�
Ø(¨<Õ7�Ø Õ# qÔ(Ü$Ð%WÓXÐXà% l°:Ð&=¸{Ð?TÐ&TÕU×_Ñ_Ð`aÐcdÓe�Ø#.¨q°,¸zÐ2IÐ/IÕ#JÐ ÜŸš LÐ3CÕ$CÓD×GÑGÌeÏkÉkÐGÓZ�Ø—?‘? d×&6Ñ&6Ô6Ø—J‘J §	¡	¨A¥°!Õ3Ó4×;Ñ;¸A¸t¿y¹yÕIà—L‘L $§)¡) ¨T¯Y©YÔ7à#Ÿm™mØ§)¡)Õ+Ø—I‘IØ 4§9¡9Õ,Ø—I‘Ió	÷
 ‘'˜!˜Q  1Ó%§g¡gØ§)¡)Õ+Ø $§)¡)Õ+ó'ð ð *×1Ñ1°"°d·j±j³lÓC×PÑPÐQRÐTXÓY×aÑaØ§)¡)Õ+Ø $§)¡)Õ+ó�ô  %Ÿ{š{Ø§9¡9Õ,¨k¸A­oÐ>ÜŸ+™+Ø!Ÿ=™=ô �ô
 " !žH�DØ ×,Ñ,Ø$ Q¨¨¨a¨ ZÕ0°3Õ6¸AÀ½HÕEöñ %ð
 Ø§9¡9Õ,¨Y¿)¹)Õ-CÐCØ  1Õ$ Z°!¥^Ð3ð5õ÷ ‘%˜Ÿ™¬s˜Ó3×4ôQ !Oñ% Hðx 	×Ñ˜S -Ô0Ø�?‰?˜d×.Ñ.Ô.Ø× Ñ  ¨NÔ;Ø× Ñ  Ð.>Õ?à× Ñ  Ð.>Ô?Ø�;‰;Ò" t§y¡yÒ'<Ø× Ñ  ¨¯©×)9Ñ)9×)<Ñ)<¸T¿Y¹Y×=MÑ=MÓ)N×)QÑ)QÔRW×R_ÑR_Ó)`Öañ (=Ñ"r   c                ó4   <€ V ^8„  d   QhRS[ P                  /# )r   Úxr   )r   r^   s   "€r   r   r_   ™  s   ø€ ÷ ñ ™uŸ|™|ñ r   c                ó6  € VP                  4       P                  RRR7      ^ ,          P                  R4      P                  \        P
                  4      pW,          P                  4       P                  R^4      P                  \        P                  4      pW3# )rƒ   T)ÚdimÚkeepdimg     À_@r1   é€ÿÿÿ)	ÚabsÚmaxrì   r2   r   rq   rð   ÚclampÚint8)r{   r  Úquant_scales   && r   Údynamic_quantÚQQQLinear.dynamic_quant™  sm   € Ø—e‘e“g—k‘k b°$�kÓ7¸Õ:×>Ñ>¸uÓE×HÑHÌÏÉÓWˆØ�_×#Ñ#Ó%×+Ñ+¨D°#Ó6×9Ñ9¼%¿*¹*ÓEˆØˆ~Ðr   c                óº  € V P                  V4      ^ 8X  d   V P                  V4      # VP                  pVP                  \        P                  8w  d!   VP                  \        P                  R7      pVP                  RR V P                  3,           pVP                  RVP                  R,          4      pV P                  V4      w  rE\        P                  ! VP                  ^ ,          V P                  VP                  VP                  R7      p\        VV P                  V P                  VVV P                  V P                   V P"                  V P$                  R7	       VP                  V4      pV P&                  e   VP)                  V P&                  4       V P*                  '       d   V P*                  P-                  WR7      pVP                  VR7      # )r   r    Nr/   )rM   ©r  Úoutr1   )Ú
input_rowsÚempty_linear_outputr!   r   rr   r2   r9   rX   r8   r  ro   r0   rN   rC   rf   rc   rd   rI   rM   rY   rñ   r[   Úapply)r{   rB   ÚA_dtypeÚ	out_shapeÚquant_ArF   rE   s   &&     r   ÚforwardÚQQQLinear.forwardž  s\  € ð �?‰?˜1Ó Ô"Ø×+Ñ+¨AÓ.Ð.à—'‘'ˆà�7‰7”e—m‘mÔ#Ø—‘œ5Ÿ=™=�Ó)ˆAà—G‘G˜C˜R�L D×$5Ñ$5Ð#7Õ7ˆ	Ø�I‰I�b˜!Ÿ'™' "�+Ó&ˆØ×(Ñ(¨Ó+‰ˆÜ�KŠK˜Ÿ™ �
 D×$5Ñ$5¸Q¿W¹WÈQÏXÉXÔVˆÜØØ�F‰FØ×ÑØØØ�N‰NØ�L‰LØ�N‰NØ—L‘Lõ
	
ð �I‰I�iÓ ˆà�9‰9Ò Ø�F‰F�4—9‘9Ôà�<�<ˆ<Ø—‘×"Ñ" QÐ"Ó.ˆAà�t‰t˜'ˆtÓ"Ð"r   )ru   rv   rw   rx   ry   rz   rY   rM   rm   rc   rd   rh   r1   ))é@   r�   )é€   r(  )r(  r'  )r'  r(  )N)4Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   rl   ÚSUPPORTS_BACKENDSr   ÚSUPPORTS_METHODSr   Ú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	   rÊ   ÚROCMÚSUPPORTS_DEVICESr
   ÚLINUXÚSUPPORTS_PLATFORMr   rp   ÚSUPPORTS_PACK_DTYPESr   ÚSUPPORTS_ADAPTERSrr   Úbfloat16ÚSUPPORTS_DTYPESÚREQUIRES_FORMAT_V2Ú
QUANT_TYPEr¹   rj   rt   Úclassmethodr­   r½   rÇ   rÑ   rÕ   r  r  r%  Ú__static_attributes__Ú__classdictcell__Ú__classcell__©r}   r^   s   @@r   rP   rP   C   sd  ù‡ € Ø Ÿ™˜ÐØŸ
™
�|ÐØŸ
™
 CÐ(ÐØ�C€MØ˜s˜)ÐØ˜u˜ÐØ�6€LØ€OØÐØ!ÐØ)+¨Ð%Ø*,¨Ð&àŸ™ V§[¡[Ð1ÐØ!Ÿ™Ð(ÐØ!ŸK™K˜=ÐØ˜Ðà—}‘} e§n¡nÐ5€OàÐð €Jâ&SÐ#ð Ø"'§+¡+ØØ!%÷]õ ]òD ^ðV ÷ó ðð
 ÷	%ó ð	%ð ÷dò dó ðdõ <÷ó ÷sbò sb÷lð ÷
$#ò $#r   rP   c                   óš  a a€ ] tR tRt o]P
                  .t]P                  .t	]
P                  ^Z/t^.tR^€.tRR.tR.tRtRtRt^@.t^@.t]P,                  .t]P,                  .t]P6                  .t].t]P>                  ]P@                  .t!Rt"Rt#V 3R lt$]%V3R lR l4       t&V3R lR	 lt'V3R
 lR lt(V3R lR lt)R t*Rt+Vt,V ;t-# )ÚQQQTorchLineariÅ  TFrQ   c                óh   <€ VP                  R \        P                  4       \        SV `  ! V/ VB  R# )rb   N)Ú
setdefaultr   Ú	QQQ_TORCHri   rj   )r{   r¼   r|   r}   s   &*,€r   rj   ÚQQQTorchLinear.__init__Û  s+   ø€ Ø×Ñ˜)¤W×%6Ñ%6Ô7Ü‰Ò˜$Ð) &Ô)r   c                óF   <€ V ^8„  d   QhRS[ S[S[S[,          3,          /# r   r¦   )r   r^   s   "€r   r   ÚQQQTorchLinear.__annotate__à  s#   ø€ ÷ ñ ™e¡D©(±9Õ*=Ð$=Õ>ñ r   c                ó   € R# )Tr©   rg   r«   s   &r   r­   ÚQQQTorchLinear.validate_onceß  s   € àÐr   c                ó4   <€ V ^8„  d   QhRS[ P                  /# r   r   )r   r^   s   "€r   r   rO  ã  s   ø€ ÷ 
ñ 
¡e§l¡lñ 
r   c                ó’  € \        V P                  4      pV P                  P                  VP                  R 7      pVP                  RV P                  P                  4       4      RV3,          P                  V P                  V P                  ,          V P                  V P                  ,          4      pVP                  V P                  V P                  ,          V P                  V P                  ,          V P                  V P                  4      P                  ^ ^^^4      P                  V P                  V P                  4      # ©rß   r‚   r1   )r?   rC   rv   r2   r0   r8   rô   rW   rh   rX   ró   )r{   ÚunpackedrŸ   s   &  r   Ú_unpack_weight_codesÚ#QQQTorchLinear._unpack_weight_codesã  sð   € Ü  §¡Ó(ˆØ—‘—‘¨¯©�Ó8ˆØ×#Ñ# B¨¯©×(:Ñ(:Ó(<Ó=¸aÀ¸iÕH×PÑPØ×Ñ §	¡	Õ)Ø×Ñ §	¡	Õ)ó
ˆð
 ×ÑØ× Ñ  D§I¡IÕ-Ø×!Ñ! T§Y¡YÕ.Ø—	‘	Ø—	‘	ó	÷ ‰W�Q˜˜1˜aÓ ß‰W�T×%Ñ% t×'8Ñ'8Ó9ð		
r   c                óh   <€ V ^8„  d   QhRS[ P                  RS[ P                  RS[ P                  /# )r   rÛ   Úinverse_permr   r   )r   r^   s   "€r   r   rO  õ  s6   ø€ ÷ _ñ _©¯©ð _ÁEÇLÁLð _ÑUZ×UaÑUañ _r   c                ó¾   € VP                  VP                  R 7      pVP                  RVP                  4       4      RV3,          P                  VP                  4      # rT  )r2   r0   r8   rô   r9   )r{   rÛ   rY  s   &&&r   Ú_unpermute_scalesÚ QQQTorchLinear._unpermute_scalesõ  sK   € Ø#—‘¨f¯m©m�Ó<ˆØ�~‰~˜b ,×"4Ñ"4Ó"6Ó7¸¸<¸ÕH×PÑPÐQW×Q]ÑQ]Ó^Ð^r   c                ó^   <€ V ^8„  d   QhRS[ S[P                  S[P                  3,          /# r   )rË   r   r   )r   r^   s   "€r   r   rO  ù  s&   ø€ ÷ !ñ !©e±E·L±LÁ%Ç,Á,Ð4NÕ.Oñ !r   c                óZ  € V P                  4       pV P                  V P                  V P                  4      P	                  \
        P                  4      pV P                  V P                  8w  dô   V P                  V P                  V P                  4      P	                  \
        P                  4      p\
        P                  ! \
        P                  ! V P                  \
        P                  VP                  R 7      V P                  4      pVP	                  \
        P                  4      R,
          W4,          ,          pVP                  4       P!                  R^4      pWR3# \
        P"                  ! V^8¬  V^,
          V4      pVP	                  \
        P                  4      R,          pWR3# )r/   g       @g      0@r  )rV  r[  rc   rz   r2   r   rq   rT   rW   rd   rx   r6   rë   r3   r0   rð   r  r4   )r{   r	  rc   rd   Ú	group_idxrã   Úsigneds   &      r   Ú_dequantize_weight_for_torchÚ+QQQTorchLinear._dequantize_weight_for_torchù  s3  € Ø×)Ñ)Ó+ˆØ×*Ñ*¨4¯>©>¸4×;TÑ;TÓU×XÑXÔY^×YfÑYfÓgˆ	à�?‰?˜d×.Ñ.Ô.Ø×,Ñ,¨T¯\©\¸4×;MÑ;MÓN×QÑQÔRW×R_ÑR_Ó`ˆGÜ×*Ò*Ü—’˜T×-Ñ-´U·[±[ÈÏÉÔVØ—‘óˆIð —h‘hœuŸ}™}Ó-°Õ3°wÕ7IÕIˆFØ—\‘\“^×)Ñ)¨$°Ó4ˆFð
 Ð Ð ô —[’[ ¨!¡¨U°R­Z¸Ó?ˆFØ—Y‘YœuŸ}™}Ó-°Õ4ˆFàÐ Ð r   c                óÊ  € V P                  V4      ^ 8X  d   V P                  V4      # VP                  pVP                  \        P                  8w  d!   VP                  \        P                  R7      pVP                  RR V P                  3,           pVP                  RVP                  R,          4      pV P                  V4      w  rEV P                  4       w  rg\        P                  ! VP                  \        P                  4      VP                  VP                  \        P                  R7      4      pW…,          pW‡P                  VP                  \        P                  R7      ,          pVP                  VP                  R7      P                  V4      p	V P                  e{   V P                  p
V
P                  V	P                  8w  g   V
P                  V	P                  8w  d(   V
P                  V	P                  V	P                  R7      p
V	P                  V
4       V P                   '       d   V P                   P#                  WR7      p	V	P                  VR7      # )r   r    Nrà   r  r1   )r  r   r!   r   rr   r2   r9   rX   r8   r  ra  Úmatmulrq   r0   rY   rñ   r[   r!  )r{   rB   r"  r#  r$  rF   rã   rc   ÚaccumrE   rY   s   &&         r   r%  ÚQQQTorchLinear.forward  s©  € Ø�?‰?˜1Ó Ô"Ø×+Ñ+¨AÓ.Ð.à—'‘'ˆØ�7‰7”e—m‘mÔ#Ø—‘œ5Ÿ=™=�Ó)ˆAà—G‘G˜C˜R�L D×$5Ñ$5Ð#7Õ7ˆ	Ø�I‰I�b˜!Ÿ'™' "�+Ó&ˆØ×(Ñ(¨Ó+‰ˆØ ×=Ñ=Ó?ÑˆÜ—’˜WŸZ™Z¬¯©Ó6¸¿	¹	ÈÏÉÔY^×YfÑYf¸	Ó8gÓhˆØ•
ˆØŸ™¨A¯H©H¼E¿M¹M˜ÓJÕJˆØ�H‰H˜1Ÿ7™7ˆHÓ#×+Ñ+¨IÓ6ˆà�9‰9Ò Ø—9‘9ˆDØ�{‰{˜aŸh™hÔ&¨$¯*©*¸¿¹Ô*?Ø—w‘w a§h¡h°a·g±g�wÓ>�Ø�F‰F�4ŒLà�<�<ˆ<Ø—‘×"Ñ" QÐ"Ó.ˆAà�t‰t˜'ˆtÓ"Ð"r   rg   r1   ).r)  r*  r+  r,  r   rL  r-  r   rl   r.  r   r/  r0  r1  r2  r3  r4  r5  r6  r7  r8  r	   ÚALLr:  r
   r<  r   rp   r=  r   r>  rr   r?  r@  rA  rB  rj   rC  r­   rV  r[  ra  r%  rD  rE  rF  rG  s   @@r   rI  rI  Å  sþ   ù‡ € Ø ×*Ñ*Ð+ÐØŸ
™
�|ÐØŸ
™
 BÐ'ÐØ�C€MØ˜s˜)ÐØ˜u˜ÐØ�6€LØ€OØÐØ!ÐØ)+¨Ð%Ø*,¨Ð&ØŸ
™
�|ÐØ!Ÿ™˜ÐØ!ŸK™K˜=ÐØ˜ÐØ—}‘} e§n¡nÐ5€OàÐØ€Jõ*ð ÷ó ð÷
ð 
÷$_ð _÷!ð !÷$#ò #r   rI  )rƒ   ra   r�   i   i   i   i   i   )r1   r1   r1   ra   )%Útypingr   r   r   Únumpyr‘   r   Úadapter.adapterr   r   Úmodels._constr   r	   r
   Únn_modules.qlinearr   Úquantizationr   r   Úutils.backendr   Úutils.loggerr   Ú	utils.qqqr   r   r   Ú
utils.rocmr   rä   r5   r+   r?   rN   rP   rI  Ú__all__rg   r   r   Ú<module>rs     s~   ð÷ )Ñ (ã Û ç ,ß 2Ñ 2Ý 4ß *Ý $Ý (ß KÑ KÝ !ñ ƒn€ð I€õ3õ?ôRô,#Ð"ô #ôD`#�Yô `#ðF Ð(Ð
)‚r   