+
    ÆÜ³j—  ã                   óž  € ^ RI t ^ RIHt ^ RIt^ RIt^ RIHt ^RIH	t	H
t
HtHt ^ t^t^t^t^t^tR]R]R]R]R]R	]R
]R]/t]P(                  R R l4       t]P(                  R R l4       t]P(                  R R l4       t]P(                  R R l4       tRR]R]/R	R]R]/RR]R]/RR]R]/RR]R]/RR]R]/RR]R]/R
R]R]//tR&R R llt]P6                  R R l4       t]P6                  R R l4       tR R ltR R lt]P(                  R  R! l4       t ]P(                  R" R# l4       t!R] R] R] R] R]!R	]!R
] R]!/t"R'R$ R% llt#]#t#R# )(é    N)ÚOptional)Údequant_8bit_blockwiseÚ"dequant_8bit_blockwise_kernel_utilÚ#quantize_8bit_blockwise_kernel_utilÚquantize_blockwise_tritonÚmomentumÚlarsÚrmspropÚadagradÚadamÚlambÚlionÚademamixc                ó  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  /# )	é   Úbeta1Úbeta2ÚepsÚweight_decayÚgnorm_scaleÚOPTIMIZER_IDÚ
BLOCK_SIZEÚN_PER_TH©ÚtlÚ	constexpr)Úformats   "Úk/home/luca/screen-checking/.venv/lib/python3.14/site-packages/bitsandbytes/backends/triton/kernels_optim.pyÚ__annotate__r   &   s|   € ÷ 3)ñ 3)ô �<‰<ð3)ô �<‰<ð3)ô 
�‰ð3)ô —,‘,ð3)ô —‘ð3)ô  —,‘,ð!3)ô" —‘ð#3)ô$ �l‰lñ%3)ó    c                óf  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! V V,           VRR7      p\         P                  ! VV,           VRR7      p\         P                  ! VV,           VRR7      pVV,          pRRV
,
          ,          pRRV,
          ,          pV^8X  d„   VV,          RV,
          V,          ,           pVV,          RV,
          V,          V,          ,           pVV,          pVV,          pV\         P                  ! V4      V,           ,          pVV,          pM	V^8X  d   Tp\         P
                  ! \         P                  ! VXR4      4      p\         P                  ! VV4       R# )zBPreprocessing optimizer, computing update norm (2-state optimizer)©Úaxisç        ©ÚmaskÚotherç      ð?N)r   Ú
program_idÚarangeÚloadÚsqrtÚsumÚwhereÚ
atomic_add)Úg_ptrÚp_ptrÚ
state1_ptrÚ
state2_ptrÚ	unorm_ptrr   r   r   r   ÚstepÚ
beta1_stepÚ
beta2_stepÚlrr   Ú
n_elementsr   r   r   ÚpidÚblock_start_idxÚoffsetsr&   Úg_valsÚs1_valsÚs2_valsÚcorrection1Úcorrection2Úupdate_valsÚupdate_normÚ
total_norms   &&&&&&&&&&&&&&&&&&            r   Ú$_optimizer_precondition_2state_32bitrE   %   sW  € ô, �-Š-˜QÔ
€CØ˜H•n€OØ 
Õ*¬R¯YªY°q¸*ÀxÕ:OÓ-PÕP€GØ�ZÑ€Dä�WŠW�U˜W•_¨4°sÔ;€FÜ�gŠg�j 7Õ*°¸SÔA€GÜ�gŠg�j 7Õ*°¸SÔA€Gà˜6Õ!€Fà˜˜zÕ)Õ*€KØ˜˜zÕ)Õ*€Kà�qÔØ˜E•/ S¨5¥[°FÕ$:Õ:ˆØ˜E•/ S¨5¥[°FÕ$:¸VÕ$CÕCˆà˜KÕ'ˆØ˜KÕ'ˆà¤§¢¨Ó!1°CÕ!7Õ8ˆà! KÕ/‰à	˜Ô	Øˆä—’œŸš  {°CÓ8Ó9€Jä‡M‚M�)˜ZÖ(r    c                óø   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  /# )r   r   r   r   r   r   r   r   r   )r   s   "r   r   r   ]   sn   € ÷ 7)ñ 7)ô �<‰<ð7)ô �<‰<ð7)ô 
�‰ð7)ô —‘ð7)ô  —,‘,ð!7)ô" —‘ð#7)ô$ �l‰lñ%7)r    c                óÜ  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! V V,           VRR7      p\         P                  ! VV,           VRR7      pVV,          pV^ 8X  dB   V	^8X  d!   VP	                  \         P
                  4      pMVV,          V,           pVV,          pMÆV^8X  d"   VV,          RV,
          V,          ,           pTpMžV^8X  dT   VV,          RV,
          V,          V,          ,           pV\         P                  ! V4      V,           ,          pVV,          pMDV^8X  d>   VVV,          ,           pV\         P                  ! V4      V,           ,          pVV,          p\         P                  ! \         P                  ! VXR4      4      p\         P                  ! VV4       R# )zBPreprocessing optimizer, computing update norm (1-state optimizer)r"   r$   r%   r(   N)
r   r)   r*   r+   ÚtoÚfloat32r,   r-   r.   r/   )r0   r1   r2   r3   r4   r   r   r   r   r5   r6   r7   r8   r   r9   r   r   r   r:   r;   r<   r&   r=   r>   rC   rB   rD   s   &&&&&&&&&&&&&&&&&&         r   Ú$_optimizer_precondition_1state_32bitrJ   \   s  € ô, �-Š-˜QÔ
€CØ˜H•n€OØ 
Õ*¬R¯YªY°q¸*ÀxÕ:OÓ-PÕP€GØ�ZÑ€Dä�WŠW�U˜W•_¨4°sÔ;€FÜ�gŠg�j 7Õ*°¸SÔA€Gà˜6Õ!€Fà�qÔØ�1Œ9à—i‘i¤§
¡
Ó+‰Gà •o¨Õ.ˆGØ Õ'‰à	˜Ô	Ø˜E•/ S¨5¥[°FÕ$:Õ:ˆØ‰à	˜Ô	Ø˜E•/ S¨5¥[°FÕ$:¸VÕ$CÕCˆØ¤§¢¨Ó 0°3Õ 6Õ7ˆØ! KÕ/‰à	˜Ô	Ø˜F V�OÕ+ˆØ¤§¢¨Ó 0°3Õ 6Õ7ˆØ! KÕ/ˆä—’œŸš  {°CÓ8Ó9€Jä‡M‚M�)˜ZÖ(r    c                ó8  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R	\         P                  /	# ©
r   Ú	max_unormr   r   r   r   r   r   r   r   r   )r   s   "r   r   r   ˜   s    € ÷ QHñ QHô �|‰|ðQHô �<‰<ðQHô �<‰<ðQHô 
�‰ðQHô —,‘,ðQHô$ —‘ð%QHô* —,‘,ð+QHô, —‘ð-QHô. �l‰lñ/QHr    c                ó  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! V V,           VRR7      P	                  \         P
                  4      p\         P                  ! VV,           VRR7      P	                  \         P
                  4      p\         P                  ! VV,           VRR7      p\         P                  ! VV,           VRR7      pV^8X  d(   \         P                  ! VV,           V,           VRR7      pVV,          pRp VR8”  dG   \         P                  ! \         P                  ! V4      4      p!V!WV,          8”  d   WV,          V!,          p V^8X  dÜ   VV,          RV,
          V,          ,           pVV,          RV,
          V,          V,          ,           pRV,
          p"\         P                  ! RV,
          4      p#V) V#,          V",          p$VR8”  d   VRVV,          ,
          ,          pV V$,          V\         P                  ! V4      VV#,          ,           ,          ,          p%VV%,           pMþV^8X  dø   VV,          RV,
          V,          ,           pXV	,          RV	,
          V,          ,           pVV,          RV,
          V,          V,          ,           pRV,
          p"\         P                  ! RV,
          4      p#VR8”  d   VRVV,          ,
          ,          pVV",          V
V,          ,           p&\         P                  ! V4      V#,          V,           p'VVV&V',          ,          ,
          p\         P                  ! VV,           VVR7       \         P                  ! VV,           VVR7       \         P                  ! VV,           VVR7       V^8X  d*   \         P                  ! VV,           V,           XVR7       R# R# )z2-state optimizer kernelr"   r$   r%   r(   ©r&   N)r   r)   r*   r+   rH   rI   r,   Ústore)(r0   r1   r2   r3   r4   rM   Ú
param_normr   r   Úbeta3Úalphar   r   r5   r6   r7   r8   r   Ú
skip_zerosr9   r   r   r   r:   r;   r<   r&   r=   Úp_valsr>   r?   Ús3_valsÚupdate_scaleÚcurrent_unormr@   rA   Ú	step_sizeÚ
update_valÚmixed_momentumÚadaptive_terms(   &&&&&&&&&&&&&&&&&&&&&&&                 r   Ú,_optimizer_update_2state_32bit_triton_kernelr]   —   s  € ô6 �-Š-˜QÔ
€CØ˜H•n€OØ 
Õ*¬R¯YªY°q¸*ÀxÕ:OÓ-PÕP€GØ�ZÑ€Dä�WŠW�U˜W•_¨4°sÔ;×>Ñ>¼r¿z¹zÓJ€FÜ�WŠW�U˜W•_¨4°sÔ;×>Ñ>¼r¿z¹zÓJ€FÜ�gŠg�j 7Õ*°¸SÔA€GÜ�gŠg�j 7Õ*°¸SÔA€Gà�qÔÜ—'’'˜* zÕ1°GÕ;À$ÈcÔRˆà˜6Õ!€Fà€LØ�3„ÜŸš¤§¢¨	Ó 2Ó3ˆØ˜9Õ1Ô1Ø%Õ2°mÕCˆLà�qÔØ˜E•/ S¨5¥[°FÕ$:Õ:ˆØ˜E•/ S¨5¥[°FÕ$:¸VÕ$CÕCˆà˜JÕ&ˆÜ—g’g˜c JÕ.Ó/ˆØ�C˜+Õ%¨Õ3ˆ	à˜#ÔØ˜s R¨,Õ%6Õ6Õ7ˆFà! IÕ-°¼B¿GºGÀGÓ<LÈsÐU`ÕO`Õ<`Õ1aÕbˆ
Ø˜*Õ$‰à	˜Ô	Ø˜E•/ S¨5¥[°FÕ$:Õ:ˆØ˜E•/ S¨5¥[°FÕ$:Õ:ˆØ˜E•/ S¨5¥[°FÕ$:¸VÕ$CÕCˆà˜JÕ&ˆÜ—g’g˜c JÕ.Ó/ˆà˜#ÔØ˜s R¨,Õ%6Õ6Õ7ˆFà! KÕ/°E¸GµOÕDˆÜŸš Ó)¨KÕ7¸3Õ>ˆØ˜" °Õ >Õ?Õ?ˆä‡H‚HˆU�W�_˜f¨4Õ0Ü‡H‚HˆZ˜'Õ! 7°Õ6Ü‡H‚HˆZ˜'Õ! 7°Õ6à�qÔÜ
�Š�˜jÕ(¨7Õ2°GÀ$×Gñ r    c                ó8  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R	\         P                  /	# rL   r   )r   s   "r   r   r   í   s•   € ÷ T7ñ T7ô �|‰|ðT7ô �<‰<ðT7ô �<‰<ðT7ô 
�‰ðT7ô —,‘,ðT7ô$ —‘ð%T7ô* —,‘,ð+T7ô, —‘ð-T7ô. �l‰lñ/T7r    c           
     óž  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! V V,           VRR7      P	                  \         P
                  4      p\         P                  ! VV,           VRR7      P	                  \         P
                  4      p\         P                  ! VV,           VRR7      pVV,          pV^8w  d   VR8”  d   VVV,          ,           pRpVR8”  dU   \         P                  ! \         P                  ! V4      4      pVWV,          V,           8”  d   WV,          V,           V,          pV^ 8X  d7   V^8X  d   TpMVV,          V,           pVV) V,          ,          p VV ,           pEM`V^8X  d§   VR8”  d   VRVV,          ,
          ,          pVV,          RV,
          V,          ,           p!VV,          \         P                  ! V!^ 8„  R\         P                  ! V!^ 8  RR4      4      ,          p VV ,
          pVV,          RV,
          V,          ,           pM³V^8X  db   VV,          RV,
          V,          V,          ,           pVV,          V,          \         P                  ! V4      V,           ,          p VV ,
          pMKV^8X  dE   VVV,          ,           pVV,          \         P                  ! V4      V,           ,          p VV ,
          p\         P                  ! VV,           VVR7       \         P                  ! VV,           VVR7       R# )z1-state optimizer kernelr"   r$   r%   r(   rO   Nç      ð¿)	r   r)   r*   r+   rH   rI   r,   r.   rP   )"r0   r1   r2   r3   r4   rM   rQ   r   r   rR   rS   r   r   r5   r6   r7   r8   r   rT   r9   r   r   r   r:   r;   r<   r&   r=   rU   r>   rW   rX   rZ   Úmomentum_updates"   &&&&&&&&&&&&&&&&&&&&&&&           r   Ú,_optimizer_update_1state_32bit_triton_kernelrb   ì   sš  € ô6 �-Š-˜QÔ
€CØ˜H•n€OØ 
Õ*¬R¯YªY°q¸*ÀxÕ:OÓ-PÕP€GØ�ZÑ€Dä�WŠW�U˜W•_¨4°sÔ;×>Ñ>¼r¿z¹zÓJ€FÜ�WŠW�U˜W•_¨4°sÔ;×>Ñ>¼r¿z¹zÓJ€FÜ�gŠg�j 7Õ*°¸SÔA€Gà˜6Õ!€Fð
 �qÔ˜\¨CÔ/Ø˜& <Õ/Õ/ˆà€LØ�3„ÜŸš¤§¢¨	Ó 2Ó3ˆØ˜9Õ1°CÕ7Ô7Ø%Õ2°SÕ8¸MÕIˆLà�qÔØ�1Œ9Ø‰Gà •o¨Õ.ˆGà! b S¨7¥]Õ3ˆ
Ø˜*Õ$Šà	˜Ô	ð ˜#ÔØ˜s R¨,Õ%6Õ6Õ7ˆFà! E�/¨S°5­[¸FÕ,BÕBˆØ! BÕ&¬¯ª°/ÀAÑ2EÀsÌBÏHÊHÐUdÐghÑUhÐjnÐpsÓLtÓ)uÕuˆ
Ø˜*Õ$ˆà˜E•/ S¨5¥[°FÕ$:Õ:‰à	˜Ô	Ø˜E•/ S¨5¥[°FÕ$:¸VÕ$CÕCˆà! BÕ&¨Õ/´2·7²7¸7Ó3CÀcÕ3IÕJˆ
Ø˜*Õ$‰à	˜Ô	Ø˜F V�OÕ+ˆà˜&•[¤B§G¢G¨GÓ$4°sÕ$:Õ;ˆ
Ø˜*Õ$ˆä‡H‚HˆU�W�_˜f¨4Õ0Ü‡H‚HˆZ˜'Õ! 7°×6r    Ú
preprocessÚupdatec          $      óx  € V ^8„  d   QhR\         R\        P                  R\        P                  R\        P                  R\        \        P                  ,          R\        \        P                  ,          R\        R\        R	\        R
\        R\        R\        R\        R\        R\
        R\        R\        RR/# )r   Úoptimizer_nameÚgÚpÚstate1Ústate2Ú	unorm_vecrM   rQ   r   r   rR   rS   r   r   r5   r8   r   ÚreturnN©ÚstrÚtorchÚTensorr   ÚfloatÚint)r   s   "r   r   r   h  sî   € ÷ L
ñ L
ÜðL
ä‡|�|ðL
ô ‡|�|ðL
ô �L‰Lð	L
ô
 ”U—\‘\Õ"ðL
ô œŸ™Õ%ðL
ô ðL
ô ðL
ô ðL
ô ðL
ô ðL
ô ðL
ô 
ðL
ô ðL
ô ðL
ô  	ð!L
ô" ð#L
ð& 
ñ'L
r    c                ó  € V'       d   \        R4      hRp^p\        P                  ! VP                  4       VV,          4      3p\        V ,          p\
        V ,          R,          p\
        V ,          R,          pWŽ,          pWž,          pV R8X  d�   VV,          ! VVVVVVVVV	V
VVVVVVVVVVP                  4       VVV^R7       VR8”  dC   VP                  4        VV,          ! VVVVVVV	VVVVVVVVP                  4       VVV^R7       R# R# VR8”  dA   VP                  4        VV,          ! VVVVVVV	VVVVVVVVP                  4       VVV^R7       VV,          ! VVVVVVVVV	V
VVVVVVVVVVP                  4       VVV^R7       R# )	z(
32-bit optimizer implemented by Triton
ú&skip_zeros is not supported on XPU yeté   rc   rd   r   )Ú	num_warpsr$   N)ÚNotImplementedErrorÚtritonÚcdivÚnumelÚname2optimizer_idÚname2optimizer_32bit_fnÚzero_)rf   rg   rh   ri   rj   rk   rM   rQ   r   r   rR   rS   r   r   r5   r8   r   rT   r   r   ÚgridÚoptimizer_idÚfn_preprocessÚ	fn_updater6   r7   s   &&&&&&&&&&&&&&&&&&        r   Úoptimizer_update_32bit_implr‚   h  sô  € ÷. Ü!Ð"JÓKÐKà€JØ€HÜ�KŠK˜Ÿ™›	 :°Õ#8Ó9Ð;€DÜ$ ^Õ4€LÜ+¨NÕ;¸LÕI€MÜ'¨Õ7¸ÕA€Ið •€JØ•€Jà˜ÔØ�$ŽØØØØØØØØØØØØØØØØØØØØ�G‰G‹IØØØØõ1	
ð6 �sŒ?Ø�O‰OÔØ˜$ÖØØØØØØØØØØØØØØØ—‘“	ØØØØ÷'ñ ð2 �sŒ?Ø�O‰OÔØ˜$ÖØØØØØØØØØØØØØØØ—‘“	ØØØØõ'ð, 	�$ŽØØØØØØØØØØØØØØØØØØØØ�G‰G‹IØØØØ÷1	
r    c                óÄ   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        R\         P                  R\         P                  /# )r   ÚAÚabsmaxÚcodeÚ	blocksizeÚdtyperl   )ro   rp   rr   rˆ   )r   s   "r   r   r   ý  sX   € ÷ *ñ *Ü‡|�|ð*ä�L‰Lð*ô �,‰,ð*ô ð	*ô
 �;‰;ð*ô ‡\�\ñ*r    c                ó²  € V P                  4       ^ 8X  d   \        P                  ! WR7      # V P                  4       pVP                  4       pVP	                  V P
                  4      VP                  4       ,          P	                  V4      p\        P                  ! Wc,          4      pWƒ,          V,
          p	V	^ 8”  d-   \        P                  P                  P                  V^ V	34      pVP                  Wƒ4      p
W¡P                  ^4      P	                  V4      ,          pVP                  4       pV	^ 8”  d   VRV	)  pVP                  V P                  4      # )zF
Pure PyTorch reference implementation for block-wise dequantization.
©rˆ   N)rz   ro   Ú
empty_likeÚflattenrH   ÚdeviceÚlongÚmathÚceilÚnnÚ
functionalÚpadÚreshapeÚ	unsqueezeÚshape)r„   r…   r†   r‡   rˆ   ÚA_flatÚnum_elementsÚdequantized_flatÚ
num_blocksÚpad_lenÚdequantized_blocksÚrescaled_blocksÚrescaled_flats   &&&&&        r   Ú_dequantize_blockwise_pytorchrŸ   ü  s  € ð 	‡w�wƒy�A„~Ü×Ò Ô/Ð/à�Y‰Y‹[€FØ—<‘<“>€Là—w‘w˜qŸx™xÓ(¨¯©«Õ7×:Ñ:¸5ÓAÐä—’˜<Õ3Ó4€JØÕ$ |Õ3€GØ�„{Ü Ÿ8™8×.Ñ.×2Ñ2Ð3CÀaÈÀ\ÓRÐà)×1Ñ1°*ÓHÐà(×+;Ñ+;¸AÓ+>×+AÑ+AÀ%Ó+HÕH€Oà#×+Ñ+Ó-€MØ�„{Ø% i¨ xÐ0ˆà× Ñ  §¡Ó)Ð)r    c          
      óº   € V ^8„  d   QhR\         P                  R\         P                  R\        R\        \         P                  \         P                  3,          /# )r   r„   r†   r‡   rl   )ro   rp   rr   Útuple)r   s   "r   r   r      sJ   € ÷ #=ñ #=Ü‡|�|ð#=ä
�,‰,ð#=ô ð#=ô Œ5�<‰<œŸ™Ð%Õ&ñ	#=r    c                ó  € V P                  4       ^ 8X  dX   \        P                  ! V \        P                  R7      \        P                  ! ^ \        P
                  V P                  R7      3# V P                  4       pVP                  4       p\        P                  ! WB,          4      pWR,          V,
          pV^ 8”  d-   \        P                  P                  P                  V^ V34      pVP                  WR4      p\        P                  ! \        P                  ! V4      ^RR7      ^ ,          pRWˆ^ 8H  &   Wx,          p	\        P                  ! V	P!                  ^4      VP#                  V P                  4      ,
          4      p
\        P$                  ! V
^R7      P#                  \        P                  4      pVP                  4       pV^ 8”  d   VRV)  pVP                  V P&                  4      VP                  4       3# )zD
Pure PyTorch reference implementation for block-wise quantization.
rŠ   )rˆ   r�   T)ÚdimÚkeepdimr(   )r£   N)rz   ro   r‹   Úuint8ÚemptyrI   r�   rŒ   r�   r�   r‘   r’   r“   r”   ÚmaxÚabsr•   rH   Úargminr–   )r„   r†   r‡   r—   r˜   rš   r›   ÚA_blocksr…   Úscaled_blocksÚdiffÚquantized_indicesÚquantized_flats   &&&          r   Ú_quantize_blockwise_pytorchr¯     ss  € ð 	‡w�wƒy�A„~Ü×Ò ¬¯©Ô5´u·{²{À1ÌEÏMÉMÐbc×bjÑbjÔ7kÐkÐkà�Y‰Y‹[€FØ—<‘<“>€Lä—’˜<Õ3Ó4€JàÕ$ |Õ3€GØ�„{Ü—‘×$Ñ$×(Ñ(¨°!°W°Ó>ˆà�~‰~˜jÓ4€Hä�YŠY”u—y’y Ó*°¸4Ô@ÀÕC€FØ€F�Q‰;ÑàÕ%€Mô �9Š9�]×,Ñ,¨QÓ/°$·'±'¸!¿(¹(Ó2CÕCÓD€DÜŸš T¨qÔ1×4Ñ4´U·[±[ÓAÐà&×.Ñ.Ó0€NØ�„{Ø'¨	¨'¨Ð2ˆà×!Ñ! !§'¡'Ó*¨F¯N©NÓ,<Ð<Ð<r    c          (      óâ  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        \         P                  ,          R\        R\        R\        R\        R	\        R
\        R\        R\         P                  R\        \         P                  ,          R\         P                  R\        \         P                  ,          R\        R\        R\
        R\        RR/# ©r   rh   rg   ri   rj   r   r   rR   rS   r   r5   r8   Úqmap1Úqmap2Úabsmax1Úabsmax2r   r   rT   rf   rl   N©ro   rp   r   rq   rr   Úboolrn   )r   s   "r   r   r   G  ó  € ÷ J+ñ J+Ü‡|�|ðJ+ä‡|�|ðJ+ô �L‰LðJ+ô ”U—\‘\Õ"ð	J+ô
 ðJ+ô ðJ+ô ðJ+ô ðJ+ô 
ðJ+ô ðJ+ô 	ðJ+ô �<‰<ðJ+ô ”E—L‘LÕ!ðJ+ô �\‰\ðJ+ô ”e—l‘lÕ#ðJ+ô  ð!J+ô" ð#J+ô$ ð%J+ô* ð+J+ð, 
ñ-J+r    c          	     ó¸  € V'       d   \        R4      hRp\        P                  ! 4       ;_uu_ 4        VR8X  d�   VP                  ^8X  dp   \	        V^ ,          V^ ,          VV\        P
                  4      p\	        V^,          V^,          VV\        P
                  4      p\        P                  ! VV.4      pM\	        W-VV\        P
                  4      pRpVe   \	        W>VV\        P
                  4      pVP                  4       V,          pV P                  P                  4       pVR8X  dï   VP                  V4      P                  VRV,
          R7       VP                  V4      P                  VVRV,
          R7       RWI,          ,
          pRWY,          ,
          pVP                  4       \        P                  ! V4      ,          P                  V4      pVR	8”  d   VP                  RW¯,          ,
          4       VP                  VVV
) V,          R7       EMTVR8X  EdP   V^ ,          V^,          ppTpVP                  V4      P                  VRV,
          R7       VP                  V4      P                  VRV,
          R7       VP                  V4      P                  VVRV,
          R7       RWI,          ,
          p\        P                  ! RWY,          ,
          4      pVV,          VV,          ,           VP                  4       V,          V,           ,          p VR	8”  d   VP                  RW¯,          ,
          4       VP                  V V
) R7       \        P                  ! VV.4      pEMýVR
8X  dc   VP                  VVR7       V	^8X  d   VP                  V4       M VP                  V4      P                  V4       VP                  VV
) R7       EM”VR8X  dr   VP                  VVR7       VP                  V4      P                  VVRV,
          R7       VP                  VVP                  4       P                  V4      V
) R7       EMVR8X  d¦   VR	8”  d   VP                  RW¯,          ,
          4       \        P                   ! VP#                  V4      VP#                  RV,
          4      ,           4      p!VP                  V!V
) R7       VP                  V4      P                  VRV,
          R7       MpVR8X  d[   VP                  VVR7       VP                  VVRR7       VP                  VVP                  4       P                  V4      V
) R7       M\%        RV R24      hV P                  P                  V4       VR8X  dÂ   \'        V^ ,          VV4      w  p"p#\'        V^,          VV4      w  p$p%V^ ,          P                  V"4       V^,          P                  V$4       V^ ,          P                  V#4       V^,          P                  V%4       \'        VVV4      w  p&p'VP                  V&4       VP                  V'4       Mh\'        VVV4      w  p(p)VP                  V(4       VP                  V)4       Ve3   \'        VVV4      w  p&p'VP                  V&4       VP                  V'4       RRR4       R#   + '       g   i     R# ; i)ú�
Pure PyTorch implementation of the 8-bit block-wise optimizer update step.
This version ensures high-precision updates for float16 parameters.
z'skip_zeros is not supported on XPU yet.ru   r   Nr   r(   ©rS   ©Úvaluer$   r   r
   r   r   ú+Pure PyTorch implementation for optimizer 'ú' is not available.)Ú
ValueErrorro   Úno_gradÚndimrŸ   rI   Ústackrq   ÚdataÚmul_Úadd_Úaddcmul_r,   r�   Úaddcdiv_Úcopy_ÚsignÚmulrw   r¯   )*rh   rg   ri   rj   r   r   rR   rS   r   r5   r8   r²   r³   r´   rµ   r   r   rT   rf   r‡   Ú	s1_1_fp32Ú	s1_2_fp32Ústate1_fp32Ústate2_fp32ÚgradÚp_fp32Úbias_correction1Úbias_correction2ÚdenomÚm1_fp32Úm2_fp32Únu_fp32rd   Ú
update_dirÚnew_m1_8bitÚnew_absmax_m1Únew_m2_8bitÚnew_absmax_m2Únew_state2_8bitÚnew_absmax2Únew_state1_8bitÚnew_absmax1s*   &&&&&&&&&&&&&&&&&&$                       r   Ú'optimizer_update_8bit_blockwise_pytorchrá   G  s›  € ÷6 ÜÐBÓCÐCà€Iä	�Š��à˜ZÔ'¨G¯L©L¸AÔ,=ä5°f¸QµiÀÈÅÈUÐT]Ô_d×_lÑ_lÓmˆIÜ5°f¸QµiÀÈÅÈUÐT]Ô_d×_lÑ_lÓmˆIÜŸ+š+ y°)Ð&<Ó=‰Kä7¸ÈÐPYÔ[`×[hÑ[hÓiˆKàˆØÒÜ7¸ÈÐPYÔ[`×[hÑ[hÓiˆKà�w‰w‹y˜;Õ&ˆð —‘—‘“ˆà˜VÔ#Ø×Ñ˜UÓ#×(Ñ(¨°S¸5µ[Ð(ÔAØ×Ñ˜UÓ#×,Ñ,¨T°4¸sÀU½{Ð,ÔKà" U¥[Õ0ÐØ" U¥[Õ0Ðà ×%Ñ%Ó'¬$¯)ª)Ð4DÓ*EÕE×KÑKÈCÓPˆEà˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4Ø�O‰O˜K¨°r°cÐ<LÕ6LˆOÖMà˜zÕ)Ø*¨1�~¨{¸1­~�WˆGØ!ˆGà�L‰L˜Ó×$Ñ$ T°°uµÐ$Ô=Ø�L‰L˜Ó×$Ñ$ T°°uµÐ$Ô=Ø�L‰L˜Ó×(Ñ(¨¨t¸3À½;Ð(ÔGà" U¥[Õ0ÐÜ#Ÿyšy¨¨u­{Õ):Ó;ÐàÐ 0Õ0°5¸7µ?ÕBÀwÇ|Á|Ã~ÐXhÕGhÐknÕGnÕoˆFà˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4à�K‰K˜ r cˆKÔ*ÜŸ+š+ w°Ð&8Ó9ŠKà˜zÔ)Ø�I‰I�f LˆIÔ1Ø�qŒyØ×!Ñ! $Õ'à× Ñ  Ó'×,Ñ,¨TÔ2Ø�K‰K˜¨B¨3ˆKÖ/à˜yÔ(Ø�I‰I�f LˆIÔ1Ø×Ñ˜UÓ#×,Ñ,¨T°4¸sÀU½{Ð,ÔKØ�O‰O˜D +×"2Ñ"2Ó"4×"9Ñ"9¸#Ó">ÀrÀcˆOÖJà˜vÔ%Ø˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4äŸš K§O¡O°EÓ$:¸T¿X¹XÀcÈEÅkÓ=RÕ$RÓSˆJØ�K‰K˜
¨2¨#ˆKÔ.à×Ñ˜UÓ#×(Ñ(¨°S¸5µ[Ð(ÕAà˜yÔ(Ø�I‰I�f LˆIÔ1Ø× Ñ   t°3Ð Ô7Ø�O‰O˜D +×"2Ñ"2Ó"4×"9Ñ"9¸#Ó">ÀrÀcˆOÕJô &Ø=¸nÐ=MÐM`Ðaóð ð
 	
�‰�‰�VÔð ˜ZÔ'Ü)DÀ[ÐQRÅ^ÐUZÐ\eÓ)fÑ&ˆK˜Ü)DÀ[ÐQRÅ^ÐUZÐ\eÓ)fÑ&ˆK˜Ø�1�I�O‰O˜KÔ(Ø�1�I�O‰O˜KÔ(Ø�A�J×Ñ˜]Ô+Ø�A�J×Ñ˜]Ô+ä+FÀ{ÐTYÐ[dÓ+eÑ(ˆO˜[Ø�L‰L˜Ô)Ø�M‰M˜+Õ&ä+FÀ{ÐTYÐ[dÓ+eÑ(ˆO˜[Ø�L‰L˜Ô)Ø�M‰M˜+Ô&àÒ&Ü/JÈ;ÐX]Ð_hÓ/iÑ,� Ø—‘˜_Ô-Ø—‘˜kÔ*÷U 
��Šús   ³Z[Û[	c          (      óâ  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\        \         P                  ,          R\        R\        R\        R\        R	\        R
\        R\        R\         P                  R\        \         P                  ,          R\         P                  R\        \         P                  ,          R\        R\        R\
        R\        RR/# r±   r¶   )r   s   "r   r   r   Ú  r¸   r    c          
     óæ  € V'       d   \         P                  ! V4      '       g   R# RpVP                  4       V,          p\         P                  ! 4       ;_uu_ 4        V P                  P                  4       pVR8X  dƒ   VP
                  ^8X  dr   \        V^ ,          V^ ,          VV\         P                  R7      p\        V^,          V^,          VV\         P                  R7      p\         P                  ! VV.4      pM\        W-VV\         P                  R7      pRpVe   \        W>VV\         P                  R7      pVR8X  dï   VR8”  d   VP                  RW¯,          ,
          4       VP                  V4      P                  VRV,
          R7       VP                  V4      P                  VVRV,
          R	7       RWI,          ,
          pRWY,          ,
          pVP                  4       \        P                  ! V4      ,          P                  V4      pVP                  VVV
) V,          R	7       EMTVR8X  EdP   V^ ,          V^,          ppTpVP                  V4      P                  VRV,
          R7       VP                  V4      P                  VRV,
          R7       VP                  V4      P                  VVRV,
          R	7       RWI,          ,
          p\        P                  ! RWY,          ,
          4      pVV,          VV,          ,           VP                  4       V,          V,           ,          p VR8”  d   VP                  RW¯,          ,
          4       VP                  V V
) R7       \         P                  ! VV.4      pEMýVR
8X  dc   VP                  VVR7       V	^8X  d   VP                  V4       M VP                  V4      P                  V4       VP                  VV
) R7       EM”VR8X  dr   VP                  VVR7       VP                  V4      P                  VVRV,
          R	7       VP                  VVP                  4       P                  V4      V
) R	7       EMVR8X  d¦   VR8”  d   VP                  RW¯,          ,
          4       \         P                   ! VP#                  V4      VP#                  RV,
          4      ,           4      p!VP                  V!V
) R7       VP                  V4      P                  VRV,
          R7       MpVR8X  d[   VP                  VVR7       VP                  VVRR	7       VP                  VVP                  4       P                  V4      V
) R	7       M\%        RV R24      hV P                  P                  V4       VR8X  dÂ   \'        V^ ,          VV4      w  p"p#\'        V^,          VV4      w  p$p%V^ ,          P                  V"4       V^,          P                  V$4       V^ ,          P                  V#4       V^,          P                  V%4       \'        VVV4      w  p&p'VP                  V&4       VP                  V'4       Mh\'        VVV4      w  p(p)VP                  V(4       VP                  V)4       Ve3   \'        VVV4      w  p&p'VP                  V&4       VP                  V'4       RRR4       R#   + '       g   i     R# ; i)rº   Nru   r   rŠ   r   r$   r(   r»   r¼   r   r
   r   r   r¾   r¿   )ro   Úanyrq   rÁ   rÄ   rÂ   r   rI   rÃ   rÅ   rÆ   rÇ   r,   r�   rÈ   rÉ   rÊ   rË   rw   r   )*rh   rg   ri   rj   r   r   rR   rS   r   r5   r8   r²   r³   r´   rµ   r   r   rT   rf   r‡   rÐ   rÑ   rÌ   rÍ   rÎ   rÏ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rd   rØ   rÙ   rÚ   rÛ   rÜ   rÝ   rÞ   rß   rà   s*   &&&&&&&&&&&&&&&&&&$                       r   Ú,optimizer_update_8bit_blockwise_triton_quantrå   Ú  sš  € ÷6 œ%Ÿ)š) AŸ,š,Ùà€IØ�7‰7‹9�{Õ"€Dä	�Š��à—‘—‘“ˆð ˜ZÔ'¨G¯L©L¸AÔ,=ä.¨v°a­y¸'À!½*ÀeÈYÔ^c×^kÑ^kÔlˆIÜ.¨v°a­y¸'À!½*ÀeÈYÔ^c×^kÑ^kÔlˆIÜŸ+š+ y°)Ð&<Ó=‰Kä0°À%ÈÔZ_×ZgÑZgÔhˆKàˆØÒÜ0°À%ÈÔZ_×ZgÑZgÔhˆKð ˜VÔ#Ø˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4à×Ñ˜UÓ#×(Ñ(¨°S¸5µ[Ð(ÔAØ×Ñ˜UÓ#×,Ñ,¨T°4¸sÀU½{Ð,ÔKà" U¥[Õ0ÐØ" U¥[Õ0Ðà ×%Ñ%Ó'¬$¯)ª)Ð4DÓ*EÕE×KÑKÈCÓPˆEØ�O‰O˜K¨°r°cÐ<LÕ6LˆOÖMà˜zÕ)Ø*¨1�~¨{¸1­~�WˆGØ!ˆGà�L‰L˜Ó×$Ñ$ T°°uµÐ$Ô=Ø�L‰L˜Ó×$Ñ$ T°°uµÐ$Ô=Ø�L‰L˜Ó×(Ñ(¨¨t¸3À½;Ð(ÔGà" U¥[Õ0ÐÜ#Ÿyšy¨¨u­{Õ):Ó;ÐàÐ 0Õ0°5¸7µ?ÕBÀwÇ|Á|Ã~ÐXhÕGhÐknÕGnÕoˆFà˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4à�K‰K˜ r cˆKÔ*ÜŸ+š+ w°Ð&8Ó9ŠKà˜zÔ)Ø�I‰I�f LˆIÔ1Ø�qŒyØ×!Ñ! $Õ'à× Ñ  Ó'×,Ñ,¨TÔ2Ø�K‰K˜¨B¨3ˆKÖ/à˜yÔ(Ø�I‰I�f LˆIÔ1Ø×Ñ˜UÓ#×,Ñ,¨T°4¸sÀU½{Ð,ÔKØ�O‰O˜D +×"2Ñ"2Ó"4×"9Ñ"9¸#Ó">ÀrÀcˆOÖJà˜vÔ%Ø˜cÔ!Ø—‘˜C "Õ"3Õ3Ô4äŸš K§O¡O°EÓ$:¸T¿X¹XÀcÈEÅkÓ=RÕ$RÓSˆJØ�K‰K˜
¨2¨#ˆKÔ.à×Ñ˜UÓ#×(Ñ(¨°S¸5µ[Ð(ÕAà˜yÔ(Ø�I‰I�f LˆIÔ1Ø× Ñ   t°3Ð Ô7Ø�O‰O˜D +×"2Ñ"2Ó"4×"9Ñ"9¸#Ó">ÀrÀcˆOÕJô &Ø=¸nÐ=MÐM`Ðaóð ð
 	
�‰�‰�VÔð ˜ZÔ'Ü)BÀ;ÈqÅ>ÐSXÐZcÓ)dÑ&ˆK˜Ü)BÀ;ÈqÅ>ÐSXÐZcÓ)dÑ&ˆK˜Ø�1�I�O‰O˜KÔ(Ø�1�I�O‰O˜KÔ(Ø�A�J×Ñ˜]Ô+Ø�A�J×Ñ˜]Ô+ä+DÀ[ÐRWÐYbÓ+cÑ(ˆO˜[Ø�L‰L˜Ô)Ø�M‰M˜+Õ&ä+DÀ[ÐRWÐYbÓ+cÑ(ˆO˜[Ø�L‰L˜Ô)Ø�M‰M˜+Ô&àÒ&Ü/HÈÐV[Ð]fÓ/gÑ,� Ø—‘˜_Ô-Ø—‘˜kÔ*÷S 
��Šús   ÁY8[Û[0	c                óØ   € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  /# )r   r   r   r   ÚBLOCK_SIZE_Nr   r   r   )r   s   "r   r   r   m  sp   € ÷ ORñ ORô �<‰<ðORô �<‰<ðORô 
�‰ðORô. —,‘,ð/ORô0 �l‰lð1ORô2 —,‘,ñ3ORr    c           	     óf  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! VV,           VRR7      P	                  \         P
                  4      V,          p\         P                  ! V V,           VRR7      P	                  \         P
                  4      p\        VVWßVV4      pVR8”  d    V^8X  d   VRVV,          ,
          ,          pMVR8”  d   VVV,          ,          pV^ 8X  d-   V	^8X  d   TpMVV,          V,           pVVV,          ,          pEM0V^8X  dY   VV,          RV,
          V,          V,          ,           pVVV\         P                  ! V4      V,           ,          ,          ,          pMÑV^8X  dD   VVV,          ,          pVVV\         P                  ! V4      V,           ,          ,          ,          pM‡V^8X  d�   VV,          RV,
          V,          ,           p\         P                  ! VR8„  R\         P                  ! VR8  RR4      4      pVVV,          ,          pVV,          RV,
          V,          ,           p\         P                  ! V V,           VP	                  V P                  P                  4      VR7       \        VVRVV4      w  p p!\         P                  ! VV,           V VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           V!4       R# )	zm
Triton kernel for 8-bit optimizers that use one momentum state.
Supports: Momentum, RMSprop, Adagrad, Lion.
r"   r$   r%   r(   rO   ru   Nr`   )r   r)   r*   r+   rH   rI   r   r,   r.   rP   rˆ   Ú
element_tyr   )"r1   r0   r2   r3   r   r   rR   rS   r   r5   r6   r7   r8   Ú	qmap1_ptrÚ	qmap2_ptrÚabsmax1_ptrÚabsmax2_ptrr   r   r9   rç   r   r   r:   r;   r<   r&   rg   rh   Ús1Úvalrd   Ús1_codesrà   s"   &&&&&&&&&&&&&&&&&&&&&&&           r   Ú5_optimizer_update_1state_8bit_blockwise_triton_kernelrñ   l  s|  € ôB �-Š-˜QÔ
€CØ˜H•n€OØ Õ,¬r¯yªy¸¸LÈ8Õ<SÓ/TÕT€GØ�ZÑ€Dô 	�Š�˜• d°#Ô6×9Ñ9¼"¿*¹*ÓEÈÕS€AÜ
�Š�˜• d°#Ô6×9Ñ9¼"¿*¹*ÓE€AÜ	+¨J¸ÀÐY]Ð_kÓ	l€Bð �cÔ˜l¨aÔ/Ø	ˆS�2˜Õ$Õ$Õ$‰à	˜Ô	Ø	ˆQ�ÕÕˆð �qÔØ�1Œ9Ø‰Bà�e•˜a•ˆBØ	ˆR�"�W�Šð 
˜Ô	Ø�%�Z˜3 �;¨!Õ+¨aÕ/Õ/ˆØ	ˆR�1œŸš › cÕ)Õ*Õ+Õ+‰ð 
˜Ô	Ø
ˆa�!�e�ˆØ	ˆR�1œŸš › cÕ)Õ*Õ+Õ+‰ð 
˜Ô	Ø�5�j˜C %�K¨1Õ,Õ,ˆÜ—’˜# ™) S¬"¯(ª(°3¸±9¸dÀCÓ*HÓIˆØ	ˆR�&�[ÕˆØ�%�Z˜3 �;¨!Õ+Õ+ˆô ‡H‚HˆU�W�_˜aŸd™d 5§;¡;×#9Ñ#9Ó:ÀÕFÜ?ÀÀIÈsÐT`ÐbjÓkÑ€HˆkÜ‡H‚HˆZ˜'Õ! 8°$Õ7Ü‡H‚Hˆ[˜?Õ*¬R¯YªY°q¸(Ó-CÕCÀ[ÖQr    c                ó  € V ^8„  d   QhR\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  R\         P                  /# )	r   r   r   r   r   r   rç   r   r   r   )r   s   "r   r   r   À  s�   € ÷ |Xñ |Xô �<‰<ð|Xô �<‰<ð|Xô 
�‰ð|Xô* —,‘,ð+|Xô, —‘ð-|Xô2 —,‘,ð3|Xô4 �l‰lð5|Xô6 —,‘,ñ7|Xr    c                ó‚  € \         P                  ! ^ R7      pVV,          pVV,          \         P                  ! ^ VV,          4      ,           pVV8  p\         P                  ! VV,           VRR7      P	                  \         P
                  4      V,          p\         P                  ! V V,           VRR7      P	                  \         P
                  4      pV^8X  Ed   \        VVWßVV4      p\        VVVVVV4      pVV,          RV,
          V,          ,           pVV,          RV,
          V,          V,          ,           pRV
,
          pRV,
          p VR8”  d   VRVV,          ,
          ,          p\         P                  ! V4      \         P                  ! V 4      ,          V,           p!VVV,          VV!,          ,          ,          p\         P                  ! V V,           VP	                  V P                  P                  4      VR7       \        VVRVV4      w  p"p#\         P                  ! VV,           V"VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           V#4       \        VVRVV4      w  p$p%\         P                  ! VV,           V$VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           V%4       R# V^8X  EdØ   \        VVWßVV4      p&\        VV,           VVVVV,          ,           VV4      p'\        VVVVVV4      p(V&V,          RV,
          V,          ,           p&V'V,          RV,
          V,          ,           p'V(V,          RV,
          V,          V,          ,           p(RV
,
          p\         P                  ! RV,
          4      p V&V,          VV',          ,           \         P                  ! V(4      V ,          V,           ,          p)VR8”  d   VRVV,          ,
          ,          pVVV),          ,          p\         P                  ! V V,           VP	                  V P                  P                  4      VR7       \        V&VRVV4      w  p*p+\         P                  ! VV,           V*VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           V+4       \        V'VRVV4      w  p,p-\         P                  ! VV,           V,           V,VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           VV,          ,           V-4       \        V(VRVV4      w  p.p/\         P                  ! VV,           V.VR7       \         P                  ! VV,           \         P                  ! ^ V4      ,           V/4       R# R# )z\
Triton kernel for 8-bit optimizers that use two momentum states.
Supports: Adam, AdEMAMix.
r"   r$   r%   r(   rO   ru   N)r   r)   r*   r+   rH   rI   r   r,   rP   rˆ   ré   r   )0r1   r0   r2   r3   r   r   rR   rS   r   r5   r6   r7   r8   rê   rë   rì   rí   r   r   r9   rç   r   r   r:   r;   r<   r&   rg   rh   rî   Ús2rÒ   rÓ   rÔ   rð   rà   Ús2_codesrÞ   Úm1Úm2Únurd   Úm1_codesrÚ   Úm2_codesrÜ   Únu_codesÚnew_absmax_nus0   &&&&&&&&&&&&&&&&&&&&&&&                         r   Ú5_optimizer_update_2state_8bit_blockwise_triton_kernelrý   ¿  s�  € ôF �-Š-˜QÔ
€CØ˜H•n€OØ Õ,¬r¯yªy¸¸LÈ8Õ<SÓ/TÕT€GØ�ZÑ€Dô 	�Š�˜• d°#Ô6×9Ñ9¼"¿*¹*ÓEÈÕS€AÜ
�Š�˜• d°#Ô6×9Ñ9¼"¿*¹*ÓE€Að �qÕÜ/°
¸GÀYÐ]aÐcoÓpˆÜ/°
¸GÀYÐP[Ð]aÐcoÓpˆà�%�Z˜3 �;¨!Õ+Õ+ˆØ�%�Z˜3 �;¨!Õ+¨aÕ/Õ/ˆð  Õ+ÐØ Õ+Ðà˜#ÔØ��r˜LÕ(Õ(Õ(ˆAä—’˜“œbŸgšgÐ&6Ó7Õ7¸#Õ=ˆØ	ˆbÐ#Õ#¨¨U­
Õ3Õ3ˆô 	�Š�˜• !§$¡$ u§{¡{×'=Ñ'=Ó">ÀTÕJô !DÀBÈ	ÐSVÐXdÐfnÓ oÑˆ�+Ü
�Š�˜gÕ% x°dÕ;Ü
�Š�˜Õ.´·²¸1¸hÓ1GÕGÈÔUä CÀBÈ	ÐSVÐXdÐfnÓ oÑˆ�+Ü
�Š�˜gÕ% x°dÕ;Ü
�Š�˜Õ.´·²¸1¸hÓ1GÕGÈÖUà	˜Õ	ä/°
¸GÀYÐ]aÐcoÓpˆÜ/Ø˜Õ#ØØØ˜*¨Õ4Õ4ØØó
ˆô 0°
¸GÀYÐP[Ð]aÐcoÓpˆà�%�Z˜3 �;¨!Õ+Õ+ˆØ�%�Z˜3 �;¨!Õ+Õ+ˆØ�%�Z˜3 �;¨!Õ+¨aÕ/Õ/ˆð  Õ+ÐÜŸ7š7 3¨Õ#3Ó4ÐàÐ'Õ'¨%°"­*Õ4¼¿ºÀ»ÐGWÕ9WÐZ]Õ9]Õ^ˆà˜#ÔØ��r˜LÕ(Õ(Õ(ˆAà	ˆR�&�[Õˆô 	�Š�˜• !§$¡$ u§{¡{×'=Ñ'=Ó">ÀTÕJô #FÀbÈ)ÐUXÐZfÐhpÓ"qÑˆ�-Ü
�Š�˜gÕ% x°dÕ;Ü
�Š�˜Õ.´·²¸1¸hÓ1GÕGÈÔWä"EÀbÈ)ÐUXÐZfÐhpÓ"qÑˆ�-Ü
�Š�˜jÕ(¨7Õ2°HÀ4ÕHÜ
�ŠØ˜/Õ)¬B¯IªI°a¸Ó,BÕBÀZÐS_ÕE_Õ_Øô	
ô
 #FÀbÈ)ÐUXÐZfÐhpÓ"qÑˆ�-Ü
�Š�˜gÕ% x°dÕ;Ü
�Š�˜Õ.´·²¸1¸hÓ1GÕGÈÖWña 
r    c          &      óÖ  € V ^8„  d   QhR\         R\        P                  R\        P                  R\        P                  R\        \        P                  ,          R\        R\        R\        R	\        R
\        R\
        R\        R\        P                  R\        \        P                  ,          R\        P                  R\        \        P                  ,          R\        R\        RR/# )r   rf   rg   rh   ri   rj   r   r   rR   rS   r   r5   r8   r²   r³   r´   rµ   r   r   rl   Nrm   )r   s   "r   r   r   K  s
  € ÷ Gñ GÜðGä‡|�|ðGô ‡|�|ðGô �L‰Lð	Gô
 ”U—\‘\Õ"ðGô ðGô ðGô ðGô ðGô 
ðGô ðGô 	ðGô �<‰<ðGô ”E—L‘LÕ!ðGô �\‰\ðGô  ”e—l‘lÕ#ð!Gô" ð#Gô$ ð%Gð( 
ñ)Gr    c                 ón  € V'       d   \        R 4      hV R8X  d‹   VP                  4       ^8  g   VP                  ^ ,          ^8w  d   \        RVP                   24      hVP                  4       ^8  g   VP                  ^ ,          ^8w  d   \        RVP                   24      hRp^p\        P
                  ! VP                  4       VV,          4      3p\        V ,          p\        V ,          pWZ,          pWj,          pVV,          ! VVVVVVVVV	V
VVVVVVVVVVP                  4       VVV^R7       R# )rt   r   zIFor ademamix, state1 must be a stacked tensor of shape (2, ...), but got zJFor ademamix, absmax1 must be a stacked tensor of shape (2, ...), but got ru   )rç   r   r   rv   N)	rw   r£   r–   rÀ   rx   ry   rz   Úname2optimizer_fnr{   )rf   rg   rh   ri   rj   r   r   rR   rS   r   r5   r8   r²   r³   r´   rµ   r   r   rT   r   r   r~   Úfnr   r6   r7   s   &&&&&&&&&&&&&&&&&&&       r   Ú$optimizer_update_8bit_blockwise_implr  K  s>  € ÷* Ü!Ð"JÓKÐKà˜Ô#à�:‰:‹<˜!Ô˜vŸ|™|¨A�°!Ô3ÜØ[Ð\b×\hÑ\hÐ[iÐjóð ð �;‰;‹=˜1Ô §¡¨aÕ 0°AÔ 5ÜØ\Ð]d×]jÑ]jÐ\kÐlóð ð €JØ€HÜ�KŠK˜Ÿ™›	 :°Õ#8Ó9Ð;€DÜ	˜>Õ	*€BÜ$ ^Õ4€Lð •€JØ•€Jà€t†HØ	Ø	ØØØØØØØØØØØ
ØØØØØØØ	�‰‹	ØØØ!Ø÷1r    )r(   F)r$   r(   F)$r�   Útypingr   ro   rx   Útriton.languageÚlanguager   Úkernels_8bit_quantr   r   r   r   ÚMOMENTUMÚRMSPROPÚADAGRADÚADAMÚLIONÚADEMAMIXr{   ÚjitrE   rJ   r]   rb   r|   r‚   ÚcompilerŸ   r¯   rá   rå   rñ   rý   r   r  © r    r   Ú<module>r     s^  ðÛ Ý ã ã Ý ÷ó ð €Ø
€Ø
€Ø€à€Ø€ð �Ø
ˆHØˆwØˆwØ
ˆDØ
ˆDØ
ˆDØ�ð	Ð ð ‡�ô3)ó ð3)ðl ‡�ô7)ó ð7)ðt ‡�ôQHó ðQHðh ‡�ôT7ó ðT7ðp ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð ØÐ:ØÐ>ðð;!Ð ÷HL
ðh ‡�ô*ó ð*ðD ‡�ô#=ó ð#=õNJ+õfJ+ðd ‡�ôORó ðORðd ‡�ô|Xó ð|Xð@ ÐEØ
ÐAØÐDØÐDØ
ÐAØ
ÐAØ
ÐAØÐEð	Ð ÷Gð\ (LÒ $r    