+
    "Ý³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	 ]P                  P                  t]P                  P                  t]P                  P                  t]P                  tR R lt ! R R	]4      t]P%                  ]P&                  P(                  4      R
 4       t]P%                  ]P,                  P(                  4      R 4       t]P%                  ]P.                  P0                  4      R 4       t]P%                  ]P2                  P(                  4      R 4       t]P4                  P(                  ]P4                  P(                  ]P6                  P(                  ]P6                  P(                  ]P8                  P(                  .t]	! R4      '       d&   ]P=                  ]P>                  P(                  4       ]P%                  ]4      R 4       t]P%                  ]P@                  P(                  4      R 4       t]P%                  ]PB                  P                  4      R 4       t]! ].4       R# )é    N)ÚTensor)Úadd_safe_globals)Úreturn_and_correct_aliasing)ÚTorchAOBaseTensorÚtorch_version_at_leastc                ó0   € V ^8„  d   QhR\         R\        /# )é   ÚinputÚ
block_size)r   Úint)Úformats   "Ú[/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/optim/subclass_fp8.pyÚ__annotate__r      s   € ÷ $ñ $œð $¬Cñ $ó    c                 óŠ  € V P                   pV P                  RV4      p V P                  4       P                  R4      P	                  R4      \
        P                  ! \        4      P                  ,          pWP                  R^4      ,          p V P                  \        4      P                  R4      pVP                  V4      V3# )é   gê-�™—q=éÿÿÿÿ)
ÚshapeÚviewÚabsÚamaxÚclipÚtorchÚfinfoÚDTYPEÚmaxÚto)r
   r   r   ÚscaleÚcodess   &&   r   Úquantize_fp8r       s�   € Ø�K‰K€EØ�J‰J�r˜:Ó&€EØ�I‰I‹K×Ñ˜RÓ ×%Ñ% eÓ,¬u¯{ª{¼5Ó/A×/EÑ/EÕE€EØ—J‘J˜r 1Ó%Õ%€EØ�H‰H”U‹O× Ñ  Ó$€EØ�:‰:�eÓ˜eÐ#Ð#r   c                   ó¨   a € ] tR t^"t o RR.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# )ÚOptimStateFp8r   r   Nc                óN   <€ V ^8„  d   QhRS[ RS[ RS[P                  R,          /# ©r	   r   r   ÚdtypeN©r   r   r%   )r   Ú__classdict__s   "€r   r   ÚOptimStateFp8.__annotate__'   s2   ø€ ÷ 
ñ 
áð
ñ ð
ñ �{‰{˜TÕ!ñ	
r   c                ó\   € \         P                  ! WP                  VP                  VR 7      # ))Údevicer%   )r   Ú_make_wrapper_subclassr   r*   )Úclsr   r   r%   s   &&&&r   Ú__new__ÚOptimStateFp8.__new__&   s&   € ô ×,Ò,Ø—‘ U§\¡\¸ô
ð 	
r   c                óN   <€ V ^8„  d   QhRS[ RS[ RS[P                  R,          /# r$   r&   )r   r'   s   "€r   r   r(   1   s+   ø€ ÷ 9ñ 9™fð 9©Vð 9¹E¿K¹KÈ$Õ<Nñ 9r   c                óÄ   € VP                   \        J g   Q hVP                  ^8X  g   Q hWn        W n        VP                  4       VP                  4       ,          V n        R# )aÓ  Create quantized FP8 optimizer state.

Args
    codes: quantized FP8 E4M3FN data. Has the same shape as the original float tensor.
    scale: scale data for block-wise quantization.

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   Úndimr   r   Únumelr   )Úselfr   r   r%   s   &&&&r   Ú__init__ÚOptimStateFp8.__init__1   sH   € ð �{‰{œeÓ#Ð#Ð#Ø�z‰z˜QŒÐˆØŒ
ØŒ
ØŸ+™+›-¨5¯;©;«=Õ8ˆŽr   c                ó4   € V P                   V P                  .3# ©N)Útensor_attrsr%   ©r3   s   &r   Ú__tensor_flatten__Ú OptimStateFp8.__tensor_flatten__B   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 r7   )r8   )r,   Útensor_data_dictÚtensor_attributesÚ
outer_sizeÚouter_strideÚnames   &&&&& r   Ú__tensor_unflatten__Ú"OptimStateFp8.__tensor_unflatten__E   sA   € ñ ð 
Ø14×1AÒ1AÓBÑ1A¨˜t×$Ð$Ñ1AÑBð
ØEVó
ð 	
ùÚBs   ’,
c                ó$  € V P                   P                  4       pVP                  RV P                  4      V P                  P                  R^4      ,          pVe   VP                  V4      pVP                  V P                   P                  4      # )r   r   )r   Úfloatr   r   r   r   r   )r3   Úoutput_dtypeÚ
float_datas   && r   Ú
dequantizeÚOptimStateFp8.dequantizeM   sj   € Ø—Z‘Z×%Ñ%Ó'ˆ
Ø—_‘_ R¨¯©Ó9¸D¿J¹J¿O¹OÈBÐPQÓ<RÕRˆ
àÒ#Ø#Ÿ™ |Ó4ˆJØ�‰˜tŸz™z×/Ñ/Ó0Ð0r   c                óv   <€ V ^8„  d   QhRS[ RS[P                  P                  RS[P                  R,          /# )r	   r   r*   r%   N)r   r   ÚtypesÚDevicer%   )r   r'   s   "€r   r   r(   V   s>   ø€ ÷ 	.ñ 	.ñ ð	.ñ —‘×"Ñ"ð		.ñ
 �{‰{˜TÕ!ñ	.r   c                óª   € \         P                  ! V\        VR 7      p\         P                  ! VP                  4       V,          VR7      pV ! WVVR7      # ))r%   r*   ©r*   ©r%   )r   Úzerosr   r2   )r,   r   r   r*   r%   r   r   s   &&&&&  r   rP   ÚOptimStateFp8.zerosU   s>   € ô —’˜E¬°vÔ>ˆÜ—’˜EŸK™K›M¨ZÕ7ÀÔGˆÙ�5 uÔ-Ð-r   c                óÈ   € V P                   P                   R V P                   R\        V P                  4       RV P
                   RV P                   RV P                   R2# )z(block_size=z, shape=z, dtype=z	, device=z, requires_grad=Ú))Ú	__class__Ú__name__r   Útupler   r%   r*   Úrequires_gradr9   s   &r   Ú__repr__ÚOptimStateFp8.__repr__a   sd   € à�~‰~×&Ñ&Ð' |°D·O±OÐ3Dð EÜ˜4Ÿ:™:Ó&Ð' x°·
±
¨|¸9ÀTÇ[Á[ÀMð RØ!×/Ñ/Ð0°ð3ð	
r   )r   r   r   r7   )NN)é   NN)rU   Ú
__module__Ú__qualname__Ú__firstlineno__r8   Ústaticmethodr-   r4   r:   ÚclassmethodrB   rH   rP   rX   Ú__static_attributes__Ú__classdictcell__)r'   s   @r   r"   r"   "   ss   ø‡ € Ø˜WÐ%€Lð ÷
ñ 
ó ð
÷9ò 9ò"/ð ó
ó ð
ô1ð ÷	.ñ 	.ó ð	.÷
ð 
r   r"   c                 ó\  € V^ ,          pV^,          p\        V\        4      '       d€   \        V\        4      '       dj   VP                  VP                  8X  g   Q hVP                  P	                  VP                  4       VP
                  P	                  VP
                  4       V# \        V\        4      '       dP   \        WTP                  4      w  rgVP                  P	                  V4       VP
                  P	                  V4       V# VP	                  VP                  4       4       V# ©r   )Ú
isinstancer"   r   r   Úcopy_r   r    rH   )ÚfuncrK   ÚargsÚkwargsÚdstÚsrcr   r   s   &&&&    r   Ú_rk   i   sÒ   € à
ˆq�'€CØ
ˆq�'€Cä�#”}×%Ò%¬*°S¼-×*HÒ*HØ�~‰~ §¡Ô/Ð/Ð/Ø�	‰	�‰˜Ÿ	™	Ô"Ø�	‰	�‰˜Ÿ	™	Ô"ð €Jô 
�Cœ×	'Ò	'Ü# C¯©Ó8‰ˆØ�	‰	�‰˜ÔØ�	‰	�‰˜Ôð
 €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R7      p\        WW64      # )r%   r*   NrN   rO   )Úgetr%   r"   r   r   r   r   )rf   rK   rg   rh   r%   r*   Úouts   &&&&   r   rk   rk   ~   sz   € ð �J‰J�w  Q¥§¡Ó.€EØ�Z‰Z˜ $Ó'€FÜ
ØˆQ��‰×Ñ ÐÓ'Øˆ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 r7   )rd   r"   rH   ©rf   rK   rg   rh   Úxs   &&&& r   rk   rk   ‹   sC   € áKOÓPÉ4Àaœj¨¬M×:Ò:ˆA�L‰LŒNÀÒAÉ4€DÐPÙ�Ð ˜Ñ Ð ùò Qs   …1A c                 óh   € Vw  rE\        VP                  P                  V4      VP                  4      # r7   )r"   r   r   r   )rf   rK   rg   rh   rq   r   s   &&&&  r   rk   rk   ’   s'   € à�H€AÜ˜Ÿ™Ÿ™ eÓ,¨a¯g©gÓ6Ð6r   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 4      # )r   z$expecting a OptimStateFp8 but found ºr   NN)rd   r"   Ú
ValueErrorÚtyper   r   rp   s   &&&& r   rk   rk   §   sr   € àˆQ�€AÜ�aœ×'Ò'ÜÐ?ÄÀQÃ¸yÐIÓJÐJô ÙˆQ�W‰WÐ*�t˜B•xÒ* 6Ñ*ÙˆQ�W‰WÐ*�t˜B•xÒ* 6Ñ*óð r   c                 ó–   € V^ ,          P                   P                  4       ;'       d"    V^ ,          P                  P                  4       # rc   )r   Ú	is_pinnedr   )rf   rK   rg   rh   s   &&&&r   rk   rk   ·   s2   € à��7�=‰=×"Ñ"Ó$×BÐB¨¨a­¯©×)@Ñ)@Ó)BÐBr   c                 ó  € 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	,           4      # )	:Né   Nz+Only support aten.slice along the first dimz#Only support aten.slice with step=1rt   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=Ú.)	Úlenru   r   ÚmathÚprodr   r"   r   r   )rf   rK   rg   rh   rq   ÚdimÚstartÚendÚstepr   Ústrides   &&&&       r   rk   rk   ½   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   ÚopsÚatenÚc10d_functionalÚ_c10d_functionalÚfloat8_e4m3fnr   r    r"   Ú
implementsre   Údefaultrk   Ú_to_copyÚlerpÚScalarr   Úall_gather_into_tensorÚwait_tensorÚdetachÚ_optim_state_fp8_c10d_opsÚappendÚ_wrap_tensor_autogradrx   Úslice© r   r   Ú<module>r™      s  ðó ã Ý Ý 0Ý Dç Cà‡y�y‡~�~€Ø—)‘)×+Ñ+€Ø—9‘9×-Ñ-Ð à×Ñ€õ$ôD
Ð%ô D
ðN ×Ñ˜$Ÿ*™*×,Ñ,Ó-ñó .ðð( ×Ñ˜$Ÿ-™-×/Ñ/Ó0ñ	@ó 1ð	@ð ×Ñ˜$Ÿ)™)×*Ñ*Ó+ñ!ó ,ð!ð ×Ñ˜$Ÿ)™)×+Ñ+Ó,ñ7ó -ð7ð ×*Ñ*×2Ñ2Ø×+Ñ+×3Ñ3Ø×Ñ×'Ñ'Ø× Ñ ×(Ñ(à‡K�K×ÑðÐ ñ ˜,×'Ò'Ø×$Ñ$Ð%5×%KÑ%K×%SÑ%SÔTð ×ÑÐ3Ó4ñ	ó 5ð	ð ×Ñ˜$Ÿ.™.×0Ñ0Ó1ñCó 2ðCð
 ×Ñ˜$Ÿ*™*×+Ñ+Ó,ñó -ðñ8 �-�Ö !r   