+
    "Ý³j+   ã                   óÄ  € ^ RI t ^ RIt^ RIHt ^ RIHt ^ RIHt ^ RIHtH	t	 ^RI
HtHtHtHt ]P                  P                   t]P                  P"                  t]P                  P$                  t^ RIHt ]! ^R7      R	 4       t]! ^R7      R
 4       t ! R R]4      t]P1                  ]P2                  P4                  4      R 4       t]P1                  ]P8                  P4                  4      R 4       t]P1                  ]P:                  P<                  4      R 4       t]P1                  ]P>                  P4                  4      R 4       t]P@                  P4                  ]P@                  P4                  ]PB                  P4                  ]PB                  P4                  ]PD                  P4                  .t#]	! R4      '       d&   ]#PI                  ]PJ                  P4                  4       ]P1                  ]#4      R 4       t]P1                  ]PL                  P4                  4      R 4       t]P1                  ]PN                  P                  4      R 4       t]! ].4       R# )é    N)ÚTensor)Úadd_safe_globals)Úreturn_and_correct_aliasing)ÚTorchAOBaseTensorÚtorch_version_at_least)Úcreate_dynamic_mapÚdequant_with_qmapÚquantize_8bit_with_qmapÚscale_tensor)Ú	lru_cache)Úmaxsizec                  ó,   € \        \        R R7      4      # )T©Úsigned©Útupler   © ó    Ú\/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/optim/subclass_8bit.pyÚget_qmap_signedr      s   € äÔ#¨4Ô0Ó1Ð1r   c                  ó,   € \        \        R R7      4      # )Fr   r   r   r   r   Úget_qmap_unsignedr   #   s   € äÔ#¨5Ô1Ó2Ð2r   c                   ó¨   a € ] tR t^(t o . ROt]RV 3R lR ll4       tRV 3R lR lltR t]	RR l4       t
RR lt]	RV 3R	 lR
 ll4       tR tRtV tR# )ÚOptimState8bitNc                óZ   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[P                  R,          /# ©é   ÚcodesÚscaleÚqmapr   ÚdtypeN©r   ÚboolÚtorchr!   )ÚformatÚ__classdict__s   "€r   Ú__annotate__ÚOptimState8bit.__annotate__-   sF   ø€ ÷ 

ñ 

áð

ñ ð

ñ ð	

ñ
 ð

ñ �{‰{˜TÕ!ñ

r   c                ó\   € \         P                  ! WP                  VP                  VR 7      # ))Údevicer!   )r   Ú_make_wrapper_subclassÚshaper*   )Úclsr   r   r    r   r!   s   &&&&&&r   Ú__new__ÚOptimState8bit.__new__,   s&   € ô ×,Ò,Ø—‘ U§\¡\¸ô
ð 	
r   c                óZ   <€ V ^8„  d   QhRS[ RS[ RS[ RS[RS[P                  R,          /# r   r"   )r%   r&   s   "€r   r'   r(   9   sF   ø€ ÷ 9ñ 9áð9ñ ð9ñ ð	9ñ
 ð9ñ �{‰{˜TÕ!ñ9r   c                ó0  € VP                   \        P                  J g   Q hVP                  ^8X  g   Q hVP                   \        P                  J g   Q hWn        W n        W0n        W@n        VP                  4       VP                  4       ,          V n
        R# )a–  Create quantized 8-bit optimizer state as proposed in https://arxiv.org/abs/2110.02861

Args
    codes: quantized 8-bit data stored as uint8. Has the same shape as the original float tensor.
    scale: scale data for block-wise quantization.
    qmap: lookup table that maps between quantized value (code) and float value.
    signed: whether the tensor is signed or unsigned.

NOTE: To get block-wise scale, the original float tensor is first reshape to (-1, block_size).
Thus, the last dimension of the original float tensor is not necessarily divisible by block size.
Given `codes` and `scale`, `block_size` is calculated as `codes.numel() // scale.numel()`.
N)r!   r$   Úuint8ÚndimÚfloat32r   r   r    r   ÚnumelÚ
block_size)Úselfr   r   r    r   r!   s   &&&&&&r   Ú__init__ÚOptimState8bit.__init__9   sl   € ð( �{‰{œeŸk™kÓ)Ð)Ð)Ø�z‰z˜QŒÐˆØ�z‰zœUŸ]™]Ó*Ð*Ð*ØŒ
ØŒ
ØŒ	ØŒØŸ+™+›-¨5¯;©;«=Õ8ˆŽr   c                óJ   € V P                   V P                  V P                  .3# ©N)Útensor_attrsr   r!   ©r7   s   &r   Ú__tensor_flatten__Ú!OptimState8bit.__tensor_flatten__V   s    € Ø× Ñ  4§;¡;°·
±
Ð";Ð;Ð;r   c                ób   € T ! . V P                    Uu. uF  qQV,          NK  	  upOVO5!  # u upi r;   )r<   )r-   Útensor_data_dictÚtensor_attributesÚ
outer_sizeÚouter_strideÚnames   &&&&& r   Ú__tensor_unflatten__Ú#OptimState8bit.__tensor_unflatten__Y   sA   € ñ ð 
Ø14×1AÒ1AÓBÑ1A¨˜t×$Ð$Ñ1AÑBð
ØEVó
ð 	
ùÚBs   ’,
c                ó†   € \        V P                  V P                  V P                  4      pVe   VP	                  V4      pV# r;   )r	   r   r    r   Úto)r7   Úoutput_dtypeÚ
float_datas   && r   Ú
dequantizeÚOptimState8bit.dequantizea   s6   € Ü& t§z¡z°4·9±9¸d¿j¹jÓIˆ
ØÒ#Ø#Ÿ™ |Ó4ˆJØÐr   c          	      ó|   <€ V ^8„  d   QhRS[ RS[RS[P                  P                  RS[P
                  R,          /# )r   r   r6   r*   r!   N)r#   Úintr$   ÚtypesÚDevicer!   )r%   r&   s   "€r   r'   r(   h   sH   ø€ ÷ <ñ <ñ ð<ñ ð	<ñ
 —‘×"Ñ"ð<ñ �{‰{˜TÕ!ñ<r   c                óF  € \         P                  ! V\         P                  VR 7      p\         P                  ! VP                  4       V,          VR7      pV'       d   \	        4       M	\        4       p\         P                  ! V\         P                  VR 7      p	V ! WgW’VR7      # ))r!   r*   ©r*   ©r!   )r$   Úzerosr2   r5   r   r   Útensorr4   )
r-   r,   r   r6   r*   r!   r   r   Ú	qmap_listr    s
   &&&&&&    r   rU   ÚOptimState8bit.zerosg   sj   € ô —’˜E¬¯©¸VÔDˆÜ—’˜EŸK™K›M¨ZÕ7ÀÔGˆß)/”OÔ%Ô5FÓ5Hˆ	Ü�|Š|˜I¬U¯]©]À6ÔJˆÙ�5 °UÔ;Ð;r   c                óâ   € V P                   P                   R V P                   RV P                   R\	        V P
                  4       RV P                   RV P                   RV P                   R2# )z(signed=z, block_size=z, shape=z, dtype=z	, device=z, requires_grad=Ú))	Ú	__class__Ú__name__r   r6   r   r,   r!   r*   Úrequires_gradr=   s   &r   Ú__repr__ÚOptimState8bit.__repr__v   sn   € à�~‰~×&Ñ&Ð' x°·±¨}¸MÈ$Ï/É/ÐIZð [Ü˜4Ÿ:™:Ó&Ð' x°·
±
¨|¸9ÀTÇ[Á[ÀMð RØ!×/Ñ/Ð0°ð3ð	
r   )r6   r   r    r   r   )r   r   r    r;   )NN)Té   NN)r\   Ú
__module__Ú__qualname__Ú__firstlineno__r<   Ústaticmethodr.   r8   r>   ÚclassmethodrF   rL   rU   r^   Ú__static_attributes__Ú__classdictcell__)r&   s   @r   r   r   (   sn   ø‡ € Ú-€Lð ÷

ñ 

ó ð

÷9ò 9ò:<ð ó
ó ð
ôð ÷<ñ <ó ð<÷
ð 
r   r   c                 ó¼  € V^ ,          pV^,          p\        V\        4      '       d›   \        V\        4      '       d…   VP                  VP                  8X  d   VP                  VP                  8X  g   Q hVP                  P                  VP                  4       VP                  P                  VP                  4       V# \        V\        4      '       de   \        WTP                  4      w  rg\        WdP                  4      pVP                  P                  V4       VP                  P                  V4       V# VP                  VP                  4       4       V# ©r   )Ú
isinstancer   r   r6   r   Úcopy_r   r   r
   r    rL   )	ÚfuncrP   ÚargsÚkwargsÚdstÚsrcÚ
scaled_srcr   r   s	   &&&&     r   Ú_rr   ~   sð   € à
ˆq�'€CØ
ˆq�'€Cä�#”~×&Ò&¬:°c¼>×+JÒ+JØ�z‰z˜SŸZ™ZÔ'¨C¯N©N¸c¿n¹nÔ,LÐLÐLØ�	‰	�‰˜Ÿ	™	Ô"Ø�	‰	�‰˜Ÿ	™	Ô"ð €Jô 
�Cœ×	(Ò	(Ü(¨¯n©nÓ=Ñˆ
Ü'¨
·H±HÓ=ˆØ�	‰	�‰˜ÔØ�	‰	�‰˜Ôð
 €Jð 	�	‰	�#—.‘.Ó"Ô#à€Jr   c                 óŒ  € VP                  R V^ ,          P                  4      pVP                  RR4      p\        V^ ,          P                  P	                  VR7      V^ ,          P
                  P	                  VR7      V^ ,          P                  P	                  VR7      V^ ,          P                  VR7      p\        WW64      # )r!   r*   NrS   rT   )	Úgetr!   r   r   rI   r   r    r   r   )rl   rP   rm   rn   r!   r*   Úouts   &&&&   r   rr   rr   •   s›   € ð �J‰J�w  Q¥§¡Ó.€EØ�Z‰Z˜ $Ó'€FÜ
ØˆQ��‰×Ñ ÐÓ'ØˆQ��‰×Ñ ÐÓ'ØˆQ��‰�‰˜vˆÓ&ØˆQ��‰Øô€Cô ' t°6Ó?Ð?r   c                 óŠ   € V Uu. uF+  p\        V\        4      '       d   VP                  4       MTNK-  	  ppV ! V/ VB # u upi r;   )rj   r   rL   ©rl   rP   rm   rn   Úxs   &&&& r   rr   rr   ¤   sC   € áLPÓQÉDÀqœj¨¬N×;Ò;ˆA�L‰LŒNÀÒBÉD€DÐQÙ�Ð ˜Ñ Ð ùò Rs   …1A c                 ó”   € Vw  rE\        VP                  P                  V4      VP                  VP                  VP
                  4      # r;   )r   r   Úviewr   r    r   )rl   rP   rm   rn   rx   r,   s   &&&&  r   rr   rr   «   s3   € à�H€AÜ˜!Ÿ'™'Ÿ,™, uÓ-¨q¯w©w¸¿¹ÀÇÁÓIÐIr   z
2.11.0.devc                 ó:  € V^ ,          p\        V\        4      '       g   \        R\        V4       24      h\        V ! VP                  .VR,          O5/ VB V ! VP
                  .VR,          O5/ VB VP                  P                  4       VP                  4      # )r   z%expecting a OptimState8bit but found ºé   NN)	rj   r   Ú
ValueErrorÚtyper   r   r    Úcloner   rw   s   &&&& r   rr   rr   À   s†   € àˆQ�€AÜ�aœ×(Ò(ÜÐ@ÄÀaÃÀ	ÐJÓKÐKô ÙˆQ�W‰WÐ*�t˜B•xÒ* 6Ñ*ÙˆQ�W‰WÐ*�t˜B•xÒ* 6Ñ*Ø	�‰�‰‹Ø	�‰ó	ð r   c                 óè   € V^ ,          P                   P                  4       ;'       dK    V^ ,          P                  P                  4       ;'       d"    V^ ,          P                  P                  4       # ri   )r   Ú	is_pinnedr   r    )rl   rP   rm   rn   s   &&&&r   rr   rr   Ò   sY   € ð 	ˆQ��‰×ÑÓ!÷ 	%ð 	%Ø��G�M‰M×#Ñ#Ó%÷	%ð 	%à��G�L‰L×"Ñ"Ó$ðr   c                 óX  € VR ,          w  rErg\        V4      ^8”  d
   V^,          M^pV^ 8w  d   \        R4      hV^8w  d   \        R4      hVP                  p	\        P                  ! VP
                  R,          4      p
Wj,          V	,          ^ 8w  g   Wz,          V	,          ^ 8w  d#   \        RVP
                   RV	 RV RV R2	4      h\        VP                  Wg VP                  Wj,          V	,          Wz,          V	,           VP                  P                  4       VP                  4      # )	:Né   Nz+Only support aten.slice along the first dimz#Only support aten.slice with step=1r|   zInvalid start or end for shape=z and block_size=zD. Make sure start and end align with block boundary. Received start=z, end=Ú.)Úlenr~   r6   ÚmathÚprodr,   r   r   r   r    r€   r   )rl   rP   rm   rn   rx   ÚdimÚstartÚendÚstepr6   Ústrides   &&&&       r   rr   rr   Ü   s  € à˜b�Ñ€AˆEÜ˜$“i !”mˆ4�Ž7¨€Dð ˆa„xÜÐFÓGÐGØˆq„yÜÐ>Ó?Ð?à—‘€JÜ�YŠY�q—w‘w˜r•{Ó#€Fð 	�˜*Õ$¨Ô)¨c­l¸jÕ-HÈAÔ-MÜØ-¨a¯g©g¨YÐ6FÀzÀlð Sà#˜W F¨3¨%¨qð2ó
ð 	
ô Ø	�‰�ÐØ	�‰�• *Õ,¨s­|¸zÕ/IÐJØ	�‰�‰‹Ø	�‰ó	ð r   )(r‡   r$   r   Útorch.serializationr   Útorch.utils._python_dispatchr   Útorchao.utilsr   r   Úquant_utilsr   r	   r
   r   ÚopsÚatenÚc10d_functionalÚ_c10d_functionalÚ	functoolsr   r   r   r   Ú
implementsrk   Údefaultrr   Ú_to_copyÚlerpÚScalarrz   Úall_gather_into_tensorÚwait_tensorÚdetachÚ_optim_state_8bit_c10d_opsÚappendÚ_wrap_tensor_autogradr‚   Úslicer   r   r   Ú<module>r£      s:  ðó ã Ý Ý 0Ý Dç C÷ó ð ‡y�y‡~�~€Ø—)‘)×+Ñ+€Ø—9‘9×-Ñ-Ð õ  ñ �1Ôñ2ó ð2ñ �1Ôñ3ó ð3ôS
Ð&ô S
ðl ×Ñ˜4Ÿ:™:×-Ñ-Ó.ñó /ðð, ×Ñ˜4Ÿ=™=×0Ñ0Ó1ñ@ó 2ð@ð ×Ñ˜4Ÿ9™9×+Ñ+Ó,ñ!ó -ð!ð ×Ñ˜4Ÿ9™9×,Ñ,Ó-ñJó .ðJð ×*Ñ*×2Ñ2Ø×+Ñ+×3Ñ3Ø×Ñ×'Ñ'Ø× Ñ ×(Ñ(à‡K�K×ÑðÐ ñ ˜,×'Ò'Ø×%Ñ%Ð&6×&LÑ&L×&TÑ&TÔUð ×ÑÐ5Ó6ñó 7ðð" ×Ñ˜4Ÿ>™>×1Ñ1Ó2ñó 3ðð ×Ñ˜4Ÿ:™:×,Ñ,Ó-ñó .ðñ< �.Ð!Ö "r   