+
    "Ý³jžf  ã                   ó  € ^ RI t ^ RIt^ RIt^ RIt^ RIHtHtHtHt ^ RI	H
t
 ^ RIHtHt ^ RIt^ RIHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHtHtHt  R
 tRR ltR tRR lt R t!RR lt" ! R R]
PF                  4      t$ ! R R]
PF                  4      t% ! R R]4      t& ! R R]
PF                  4      t']
PP                  ! ]$4       ]
PP                  ! ]%4       ]
PP                  ! ]&4       ])R8X  d   ]PT                  ! 4        R# R# )é    N)Ú
DeviceMeshÚDTensorÚ	ReplicateÚShard)Úcommon_utils)ÚDTensorTestBaseÚ
with_comms©ÚAOBaseConfig)Ú
Int8TensorÚInt8WeightOnlyConfigÚ	quantize_)Ú_QUANTIZE_CONFIG_HANDLER)ÚLlamaModelsLlama4Experts)ÚDummyModuleÚget_compute_capabilityÚget_current_accelerator_devicec                 ó    a a€ ^ RI oV V3R lpV# )r   Nc                 ó   <a € VV V3R  lpV# )c                  ó\   <€ \        4       S8  d   SP                  ! R S 24      hS! V / VB # )z Compute capability is less than )r   ÚSkipTest)ÚargsÚkwargsÚmin_capabilityÚ	test_funcÚunittests   *,€€€ÚV/home/luca/screen-checking/.venv/lib/python3.14/site-packages/torchao/testing/utils.pyÚwrapperÚHskip_if_compute_capability_less_than.<locals>.decorator.<locals>.wrapper<   s>   ø€ Ü%Ó'¨.Ô8Ø×'Ò'Ø6°~Ð6FÐGóð ñ ˜dÐ- fÑ-Ð-ó    © )r   r   r   r   s   f €€r   Ú	decoratorÚ7skip_if_compute_capability_less_than.<locals>.decorator;   s   ù€ ÷	.ð ˆr    ©r   )r   r"   r   s   f @r   Ú$skip_if_compute_capability_less_thanr%   8   s   ù€ Ûöð Ðr    c                óZ   a a€ ^ RI oV V3R lp\        S 4      '       d   S pRo V! V4      # V# )z˜Decorator to skip tests on ROCm platform with custom message.

Args:
    message (str, optional): Additional information about why the test is skipped.
Nc                 óL   <a € \         P                  ! S 4      V VV3R  l4       pV# )c                  óš   <€ \         P                  P                  e(   RpS'       d   VRS 2,          pSP                  V4       S! V / VB # )NzSkipping the test in ROCmú: )ÚtorchÚversionÚhipÚskip)r   r   Úskip_messageÚfuncÚmessageÚpytests   *, €€€r   r   Ú0skip_if_rocm.<locals>.decorator.<locals>.wrapperQ   sG   ø€ ä�}‰}× Ñ Ò,Ø:�ßØ  b¨¨	 NÕ2�LØ—‘˜LÔ)Ù˜Ð( Ñ(Ð(r    ©Ú	functoolsÚwraps)r/   r   r0   r1   s   f €€r   r"   Úskip_if_rocm.<locals>.decoratorP   s%   ù€ Ü	�Š˜Ó	ö	)ó 
ð	)ð ˆr    )r1   Úcallable)r0   r"   r/   r1   s   f  @r   Úskip_if_rocmr8   H   s4   ù€ ó ö
ô �×ÒØˆØˆÙ˜‹ÐØÐr    c                  óX   aaa€  ^ RI oRoVVV3R lp V #   \         d
    Ro^ RIo Li ; i)r   NTFc                 óN   <a € \         P                  ! S 4      V VVV3R  l4       pV# )c                  ó¸   <€ \         P                  P                  4       '       g/   R pS'       d   SP                  V4       MSP                  ! V4       S! V / VB # )zNo XPU available©r*   ÚxpuÚis_availabler-   )r   r   r.   r/   Ú
has_pytestr1   r   s   *, €€€€r   r   Ú2skip_if_no_xpu.<locals>.decorator.<locals>.wrappern   sF   ø€ ä—9‘9×)Ñ)×+Ò+Ø1�ßØ—K‘K Õ-à—M’M ,Ô/Ù˜Ð( Ñ(Ð(r    r3   )r/   r   r?   r1   r   s   f €€€r   r"   Ú!skip_if_no_xpu.<locals>.decoratorm   s%   ù€ Ü	�Š˜Ó	÷	)ó 
ð	)ð ˆr    )r1   ÚImportErrorr   )r"   r?   r1   r   s    @@@r   Úskip_if_no_xpurC   d   s6   ú€ ðÛàˆ
÷
ð Ðøô# ô Øˆ
Ýðús   … •)¨)c                ó–   a aaa€  ^ RI oRoVV VV3R lp\        S 4      '       d   S pRo V! V4      # V#   \         d
    Ro^ RIo L;i ; i)z˜
Decorator to skip tests on XPU platform with custom message.

Args:
    message (str, optional): Additional information about why the test is skipped.
NTFc                 óP   <a € \         P                  ! S 4      V VVVV3R  l4       pV# )c                  óà   <€ \         P                  P                  4       '       dC   R pS'       d   VRS 2,          pS'       d   SP                  V4       MSP                  ! V4       S! V / VB # )zSkipping the test in XPUr)   r<   )r   r   r.   r/   r?   r0   r1   r   s   *, €€€€€r   r   Ú/skip_if_xpu.<locals>.decorator.<locals>.wrapper�   sY   ø€ ä�y‰y×%Ñ%×'Ò'Ø9�ßØ  b¨¨	 NÕ2�LßØ—K‘K Õ-à—M’M ,Ô/Ù˜Ð( Ñ(Ð(r    r3   )r/   r   r?   r0   r1   r   s   f €€€€r   r"   Úskip_if_xpu.<locals>.decoratorŒ   s*   ù€ Ü	�Š˜Ó	÷		)ð 		)ó 
ð		)ð ˆr    )r1   rB   r   r7   )r0   r"   r/   r?   r1   r   s   f  @@@r   Úskip_if_xpurI   }   sZ   û€ ðÛàˆ
÷
ð ô  �×ÒØˆØˆÙ˜‹ÐØÐøô1 ô Øˆ
Ýðús   †4 ´AÁAc                  ó   a€ ^ RI oV3R lp V # )r   Nc                 óJ   <a € \         P                  ! S 4      V V3R  l4       pV# )c                  ó€   <€ \         P                  P                  4       '       g   SP                  ! R 4      hS! V / VB # )zNo cuda available)r*   Úcudar>   r   )r   r   r   r   s   *,€€r   r   Ú3skip_if_no_cuda.<locals>.decorator.<locals>.wrapper§   s8   ø€ ä—:‘:×*Ñ*×,Ò,Ø×'Ò'Ð(;Ó<Ð<Ù˜dÐ- fÑ-Ð-r    r3   )r   r   r   s   f €r   r"   Ú"skip_if_no_cuda.<locals>.decorator¦   s%   ù€ Ü	�Š˜Ó	#õ	.ó 
$ð	.ð
 ˆr    r$   )r"   r   s    @r   Úskip_if_no_cudarP   £   s   ø€ Ûõð Ðr    c                 ó`  € V P                   P                  4        EF  w  rVVP                  R 4      '       g   K  \        P                  ! V4      V3R l4       p\
        P                  ! VP                   4      Vn         Ve(   \        Wd4      '       d   \        P                  ! V4      pT;'       d    VP                  V4      pVeQ   W(P                  9   dA   VP                  '       d   \        P                  ! R4      M\        P                  p	V	! V4      p\        W RV 2V4       EK  	  R# )Útest_c                 ó   € V! V 4      # ©Nr!   )ÚselfÚvalues   &&r   Únew_testÚcopy_tests.<locals>.new_test¼   s   € á˜T“{Ð"r    NzSkipped!Ú_)Ú__dict__ÚitemsÚ
startswithr4   r5   ÚcopyÚdeepcopyÚhasattrr   ÚexpectedFailureÚgetÚsuffixesÚis_skipr-   Úsetattr)
Úmy_clsÚ	other_clsÚsuffixÚtest_failuresÚ
xfail_propÚnamerV   rW   ÚtfÚ	skip_funcs
   &&&&&     r   Ú
copy_testsrm   ³   sï   € Ø—‘×,Ñ,×.‰ˆØ�?‰?˜7×#Ô#ô �_Š_˜UÓ#Ø%*ó #ó $ð#ô !%§¢¨e¯n©nÓ =ˆHÔàÒ%¬'°%×*DÒ*DÜ#×3Ò3°HÓ=�à×:Ð: =×#4Ñ#4°TÓ#:ˆBØŠ~ &¯K©KÔ"7ð —z—z�zô —M’M *Ô-ä!×1Ñ1ð ñ
 % XÓ.�ä�I  q¨¨Ð1°8×<ó7 /r    c                   ó¢  a € ] tR t^Òt o R.]P
                  P                  4       '       d   R.M. ,           t]P                  ]P                  ]P                  .t]t]! ]P                  4      tR]P$                  P'                  4       /t^(tR t]P0                  ! R]4      ]P0                  ! R]4      R 4       4       t]P0                  ! R]4      ]P0                  ! R	]4      R
 4       4       t]P0                  ! R]4      ]P0                  ! R]4      R 4       4       t]P0                  ! R]4      ]P0                  ! R]4      R 4       4       tRtV tR# )ÚTorchAOBasicTestCaseÚcpurM   Úgranularityc                ó¤  € \         P                  ! ^^€4      pV P                  ! V3/ V P                  B pVP	                  4       w  r4V Uu/ uF  qU\        W%4      bK  	  ppVP                  4       pVP                  4       pV P                  P                  WdWx4      p	V P                  VP                  4       V	P                  4       4       R# u upi )é   N)r*   ÚrandnÚ
FACTORY_FNr   Ú__tensor_flatten__ÚgetattrÚsizeÚstrideÚTENSOR_SUBCLASSÚ__tensor_unflatten__ÚassertEqualÚ
dequantize)
rU   Ú	hp_tensorÚ	lp_tensorÚtensor_data_name_dictÚtensor_attributesrj   Útensor_data_dictÚ
outer_sizeÚouter_strideÚreconstructeds
   &         r   Útest_flatten_unflattenÚ+TorchAOBasicTestCase.test_flatten_unflattenß   sÀ   € Ü—K’K  3Ó'ˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø3<×3OÑ3OÓ3QÑ0Ðá7Ló
Ù7L¨t”'˜)Ó*Ò*Ñ7Lð 	ð 
ð —^‘^Ó%ˆ
Ø ×'Ñ'Ó)ˆØ×,Ñ,×AÑAØ°ó
ˆð 	×Ñ˜×-Ñ-Ó/°×1IÑ1IÓ1KÖLùò
s   ÁCÚdeviceÚdtypec                ór   € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B  R# ©rs   ©rˆ   r‰   N)r*   rt   ru   r   )rU   rˆ   r‰   r~   s   &&& r   Útest_hp_tensor_device_dtypeÚ0TorchAOBasicTestCase.test_hp_tensor_device_dtypeí   s+   € ô —K’K  3¨vÔCˆ	Ø�Š˜	Ñ1 T§[¡[Ô1r    Údevice1Údevice2c                ó´  € \         P                  ! ^^€V\         P                  R7      pV P                  ! V3/ V P                  B pVP                  VR7       \         P                  ! ^^€V\         P                  R7      pV P                  ! V3/ V P                  B pVP                  V4       \         P                  ! ^^€V\         P                  R7      pV P                  ! V3/ V P                  B pVP                  4        \         P                  ! ^^€V\         P                  R7      pV P                  ! V3/ V P                  B pVP                  4        R# )zuNote: this should be parametrized with device1 and device2
e.g. device1 = ["cpu", "cuda"], device2 = ["cpu", "cuda"]
rŒ   )rˆ   N)r*   rt   Úbfloat16ru   r   ÚtorM   rp   )rU   r�   r�   r~   r   s   &&&  r   Útest_device1_to_device2Ú,TorchAOBasicTestCase.test_device1_to_device2ó   sí   € ô —K’K  3¨w¼e¿n¹nÔMˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø�‰˜GˆÔ$ä—K’K  3¨w¼e¿n¹nÔMˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø�‰�WÔä—K’K  3¨w¼e¿n¹nÔMˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø�‰Ôä—K’K  3¨w¼e¿n¹nÔMˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø�‰Žr    c                óÊ   € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B pVP	                  4       pV P                  VP                  R4       R# )rs   rŒ   N)é€   rs   )r*   rt   ru   r   Útr|   Úshape)rU   rˆ   r‰   r~   r   s   &&&  r   Útest_transposeÚ#TorchAOBasicTestCase.test_transpose	  sL   € ô —K’K  3¨vÔCˆ	Ø—O’O IÑ=°·±Ñ=ˆ	Ø—K‘K“Mˆ	Ø×Ñ˜Ÿ™¨(Ö3r    c                óÎ  € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B p\         P                  ! ^ ^€WR7      p\         P                  P
                  P                  WS4      p\         P                  P
                  P                  WT4      pV P                  \        P                  P                  P                  Wg4      V P                  4       R# r‹   )r*   rt   ru   r   ÚnnÚ
functionalÚlinearÚassertGreaterÚtorchaoÚquantizationÚutilsÚcompute_errorÚLINEAR_MIN_SQNR)rU   rˆ   r‰   r~   r   Úhp_act_tensorÚhp_resÚlp_ress   &&&     r   Útest_linearÚ TorchAOBasicTestCase.test_linear  s¤   € ô —K’K  3¨vÔCˆ	Ø—O’O IÑ=°·±Ñ=ˆ	äŸš B¨°FÔHˆÜ—‘×$Ñ$×+Ñ+¨MÓEˆÜ—‘×$Ñ$×+Ñ+¨MÓEˆØ×ÑÜ× Ñ ×&Ñ&×4Ñ4°VÓDØ× Ñ ö	
r    r!   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r*   rM   r>   ÚCOMMON_DEVICESÚfloat32Úfloat16r’   ÚCOMMON_DTYPESr   rz   ÚstaticmethodÚfrom_hpru   r¡   r¢   ÚPerRowr   r¥   r†   r   Úparametrizer�   r”   rš   r©   Ú__static_attributes__Ú__classdictcell__©Ú__classdict__s   @r   ro   ro   Ò   sT  ø‡ € Ø�W¨E¯J©J×,CÑ,C×,EÒ,E ¡È2ÕN€NØ—]‘] E§M¡M°5·>±>ÐB€Mà €OÙ˜j×0Ñ0Ó1€Jà�w×+Ñ+×2Ñ2Ó4ð€Fð
 €OòMð ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñ2ó 6ó 8ð2ð ×Ò˜i¨Ó8Ø×Ò˜i¨Ó8ñó 9ó 9ðð( ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñ4ó 6ó 8ð4ð ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñ

ó 6ó 8ö

r    ro   c                   ó   a € ] tR tRt o R.]P
                  P                  4       '       d   R.M. ,           t]P                  ]P                  ]P                  .t]t]! ]P                  4      tR]P$                  P'                  4       /t^(t^2t]P0                  ! R]4      ]P0                  ! R]4      R 4       4       t]P0                  ! R]4      ]P0                  ! R]4      R 4       4       t]P0                  ! R]4      ]P0                  ! R]4      R	 4       4       t]P0                  ! R]4      ]P0                  ! R]4      R
 4       4       tRtV tR# )ÚTorchAOCompileTestCasei   rp   rM   rq   rˆ   r‰   c                óv  € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B pR pV! V4      p\         P                  ! V4      pV! V4      pV P                  \        V! V4      V P                  4      4       V P                  VP                  4       VP                  4       4       R# )rs   rŒ   c                 ó   € V # rT   r!   ©Útensors   &r   ÚfÚCTorchAOCompileTestCase.test_input_output_tensor_subclass.<locals>.f4  s   € ØˆMr    N)
r*   rt   ru   r   ÚcompileÚ
assertTrueÚ
isinstancerz   r|   r}   ©rU   rˆ   r‰   r~   r   rÁ   ÚrefÚcompileds   &&&     r   Ú!test_input_output_tensor_subclassÚ8TorchAOCompileTestCase.test_input_output_tensor_subclass.  s‘   € ô —K’K  3¨vÔCˆ	Ø—O’O IÑ=°·±Ñ=ˆ	ò	ñ �	‹lˆÜ�MŠM˜!ÓˆÙ�Y“<ˆØ�‰œ
¡1 Y£<°×1EÑ1EÓFÔGØ×Ñ˜Ÿ™Ó)¨8×+>Ñ+>Ó+@ÖAr    c                ó<  € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B pR pV! V4      p\         P                  ! V4      pV! V4      pV P                  \        V! V4      V P                  4      4       V P                  Wg4       R# )rs   rŒ   c                 ó"   € V P                  4       # rT   )r}   r¿   s   &r   rÁ   Ú<TorchAOCompileTestCase.test_input_tensor_subclass.<locals>.fC  s   € Ø×$Ñ$Ó&Ð&r    N)	r*   rt   ru   r   rÃ   ÚassertFalserÅ   rz   r|   rÆ   s   &&&     r   Útest_input_tensor_subclassÚ1TorchAOCompileTestCase.test_input_tensor_subclass=  s�   € ô —K’K  3¨vÔCˆ	Ø—O’O IÑ=°·±Ñ=ˆ	ò	'ñ �	‹lˆÜ�MŠM˜!ÓˆÙ�Y“<ˆØ×Ñœ¡A i£L°$×2FÑ2FÓGÔHØ×Ñ˜Ö'r    c                óÖ  a € \         P                  ! ^^€WR7      pV 3R lpV! V4      p\         P                  ! V4      pV! V4      pS P                  \	        V! V4      S P
                  4      4       V\         P                  8w  dc   S P                  \        P                  P                  P                  VP                  4       VP                  4       4      S P                  4       R# R# )rs   rŒ   c                 ó>   <€ SP                   ! V 3/ SP                  B # rT   )ru   r   )r~   rU   s   &€r   rÁ   Ú=TorchAOCompileTestCase.test_output_tensor_subclass.<locals>.fQ  s   ø€ Ø—?’? 9Ñ<°·±Ñ<Ð<r    N)r*   rt   rÃ   rÄ   rÅ   rz   r’   r    r¡   r¢   r£   r¤   r}   ÚCOMPILE_MIN_SQNR)rU   rˆ   r‰   r~   rÁ   rÇ   rÈ   s   f&&    r   Útest_output_tensor_subclassÚ2TorchAOCompileTestCase.test_output_tensor_subclassL  s´   ø€ ô —K’K  3¨vÔCˆ	õ	=ñ �	‹lˆÜ�MŠM˜!ÓˆÙ�Y“<ˆØ�‰œ
¡1 Y£<°×1EÑ1EÓFÔGà”E—N‘NÔ"Ø×ÑÜ×$Ñ$×*Ñ*×8Ñ8Ø—N‘NÓ$ h×&9Ñ&9Ó&;óð ×%Ñ%ö	ñ #r    c                óB  € \         P                  ! ^^€WR7      pV P                  ! V3/ V P                  B p\         P                  ! ^ ^€WR7      p\         P                  P
                  P                  WS4      p\         P                  P                  ^€^RWR7      p\         P                  P                  V4      Vn	        \         P                  ! V4      ! V4      pV P                  \        P                  P                  P                  Wh4      V P                   4       R# )rs   rŒ   F)Úbiasrˆ   r‰   N)r*   rt   ru   r   r�   rž   rŸ   ÚLinearÚ	ParameterÚweightrÃ   r    r¡   r¢   r£   r¤   r¥   )	rU   rˆ   r‰   r~   r   r¦   r§   rŸ   r¨   s	   &&&      r   Útest_linear_compileÚ*TorchAOCompileTestCase.test_linear_compilea  sÍ   € ô —K’K  3¨vÔCˆ	Ø—O’O IÑ=°·±Ñ=ˆ	äŸš B¨°FÔHˆÜ—‘×$Ñ$×+Ñ+¨MÓEˆÜ—‘—‘  a¨e¸F�ÓPˆÜŸ™×*Ñ*¨9Ó5ˆŒÜ—’˜vÔ& }Ó5ˆØ×ÑÜ× Ñ ×&Ñ&×4Ñ4°VÓDØ× Ñ ö	
r    r!   N)r«   r¬   r­   r®   r*   rM   r>   r¯   r°   r±   r’   r²   r   rz   r³   r´   ru   r¡   r¢   rµ   r   r¥   rÔ   r   r¶   rÉ   rÏ   rÕ   rÜ   r·   r¸   r¹   s   @r   r¼   r¼      sT  ø‡ € Ø�W¨E¯J©J×,CÑ,C×,EÒ,E ¡È2ÕN€NØ—]‘] E§M¡M°5·>±>ÐB€Mà €OÙ˜j×0Ñ0Ó1€Jà�w×+Ñ+×2Ñ2Ó4ð€Fð
 €OØÐà×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñBó 6ó 8ðBð ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñ(ó 6ó 8ð(ð ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñó 6ó 8ðð& ×Ò˜h¨Ó7Ø×Ò˜g }Ó5ñ
ó 6ó 8ö
r    r¼   c                   ón  a € ] tR tRt o Rt]P                  ]P                  ]P                  .t	]
t]! ]4      t/ t]V 3R lR l4       t]V 3R lR l4       tV 3R lR lt]P(                  ! R	]	4      ]]P.                  ! ]P0                  P3                  4       '       * R
4      R 4       4       4       tRtV tR# )ÚTorchAOTensorParallelTestCaseir  z%Basic test case for tensor subclassesc                ó|   <€ V ^8„  d   QhRS[ P                  P                  RS[RS[ P                  P                  /# ©é   ÚmÚmeshÚreturn©r*   r�   ÚModuler   )Úformatrº   s   "€r   Ú__annotate__Ú*TorchAOTensorParallelTestCase.__annotate__|  ó2   ø€ ÷ ñ ™Ÿ™Ÿ™ð ±
ð ¹u¿x¹x¿¹ñ r    c                ó‚  € V P                   P                  pVP                  ^ 4      VP                  4       ,          pVP                  4       pW$V,          V^,           V,          1R3,          p\        P
                  ! WQ\        ^ 4      .4      p\        P                  P                  VRR7      V P                   n        V # )z8
Shard linear layer of the model in column-wise fashion
ºNNNF©Úrequires_grad©
rŸ   rÛ   rx   Úget_local_rankr   Ú
from_localr   r*   r�   rÚ   )rã   rä   Úorig_weightÚn_local_rowsÚrankÚlocal_shardÚdtensors   &&     r   Úcolwise_shardÚ+TorchAOTensorParallelTestCase.colwise_shard{  s—   € ð —h‘h—o‘oˆØ"×'Ñ'¨Ó*¨d¯i©i«kÕ9ˆØ×"Ñ"Ó$ˆØ!¨Õ"5¸À½À\Õ8QÐ"QÐSTÐ"TÕUˆä×$Ò$ [¼¸q»¸
ÓCˆäŸ(™(×,Ñ,¨WÀEÐ,ÓJˆ�‰ŒØˆr    c                ó|   <€ V ^8„  d   QhRS[ P                  P                  RS[RS[ P                  P                  /# rá   ræ   )rè   rº   s   "€r   ré   rê   �  rë   r    c                ó‚  € V P                   P                  pVP                  ^4      VP                  4       ,          pVP                  4       pVRWC,          V^,           V,          13,          p\        P
                  ! WQ\        ^4      .4      p\        P                  P                  VRR7      V P                   n        V # )z5
Shard linear layer of the model in row-wise fashion
rí   Frî   rð   )rã   rä   ró   Ún_local_colsrõ   rö   r÷   s   &&     r   Úrowwise_shardÚ+TorchAOTensorParallelTestCase.rowwise_shardŒ  s–   € ð —h‘h—o‘oˆØ"×'Ñ'¨Ó*¨d¯i©i«kÕ9ˆØ×"Ñ"Ó$ˆØ! ! TÕ%8¸DÀ1½HÈÕ;TÐ%TÐ"TÕUˆä×$Ò$ [¼¸q»¸
ÓCˆäŸ(™(×,Ñ,¨WÀEÐ,ÓJˆ�‰ŒØˆr    c                óv   <€ V ^8„  d   QhRS[ P                  P                  RS[ P                  P                  /# )râ   rã   rå   )r*   r�   rç   )rè   rº   s   "€r   ré   rê   �  s+   ø€ ÷ ñ ™%Ÿ(™(Ÿ/™/ð ©e¯h©h¯o©oñ r    c                óP   € \        WP                  ! R/ V P                  B 4       V# )z
Quantize the model
r!   )r   ÚQUANT_METHOD_FNÚQUANT_METHOD_KWARGS)rU   rã   s   &&r   ÚquantizeÚ&TorchAOTensorParallelTestCase.quantize�  s%   € ô 	�!×)Ò)ÑE¨D×,DÑ,DÑEÔFØˆr    r‰   zNeed CUDA availablec                ó¦  € R p\         P                  ! ^4        ! R R\         P                  P                  4      p\         P                  ! RV P
                  \         P                  P                  4       ,           24      pV! RR4      P                  V4      P                  V4      pV! RR4      P                  V4      P                  V4      p^d\         P                  ! ^€RW!R7      ,          pV! V! V4      4       V P                  V4      pV P                  V4      pV! V! V4      4       V P                  4       p	R V	n        V P                  Wy4      p
V P                  W‰4      p\        P                   ! Wi\#        4       .4      pV! V
! V4      4       \         P$                  ! V
4      pV! V4      p\         P$                  ! V4      pV! V4       R# )rM   c                   óP   a a€ ] tR tRt oV3R lV 3R lltV3R lR ltRtVtV ;t# )Ú0TorchAOTensorParallelTestCase.test_tp.<locals>.Mi¬  c                ó   <€ V ^8„  d   QhRR/# )râ   rå   Nr!   )rè   rº   s   "€r   ré   Ú=TorchAOTensorParallelTestCase.test_tp.<locals>.M.__annotate__­  s   ø€ ÷ ñ Àtñ r    c                óv   <€ \         SV `  ! R/ VB  \        P                  P	                  WR RR7      V n        R# )FrM   )rØ   rˆ   Nr!   )ÚsuperÚ__init__r*   r�   rÙ   rŸ   )rU   Úin_featuresÚout_featuresr   Ú	__class__s   &&&,€r   r  Ú9TorchAOTensorParallelTestCase.test_tp.<locals>.M.__init__­  s3   ø€ Ü‘Ò Ñ* 6Ò*Ü#Ÿh™hŸo™oØ°EÀ&ð .ó �–r    c                óN   <€ V ^8„  d   QhRS[ P                  RS[ P                  /# )râ   Úxrå   )r*   ÚTensor)rè   rº   s   "€r   ré   r	  ³  s#   ø€ ÷ &ñ &¡§¡ð &±%·,±,ñ &r    c                ó$   € V P                  V4      # rT   ©rŸ   )rU   r  s   &&r   ÚforwardÚ8TorchAOTensorParallelTestCase.test_tp.<locals>.M.forward³  s   € Ø—{‘{ 1“~Ð%r    r  )	r«   r¬   r­   r®   r  r  r·   r¸   Ú__classcell__)r  rº   s   @@r   ÚMr  ¬  s   ù‡ € ÷ó ÷&÷ &ð &r    r  zcuda:é   é   rŒ   N)r*   Úmanual_seedr�   rç   rˆ   rõ   rM   Údevice_countr“   rt   r  Úbuild_device_meshÚdevice_typerø   rý   r   rò   r   rÃ   )rU   r‰   rˆ   r  Úproj_upÚproj_dnÚexample_inputÚup_quantÚdn_quanträ   Úup_distÚdn_distÚinput_dtensorÚup_compiledÚy_upÚdn_compileds   &&              r   Útest_tpÚ%TorchAOTensorParallelTestCase.test_tp¤  sw  € ð ˆä×Ò˜!Ôô	&”—‘—‘ô 	&ô —’  d§i¡i´%·*±*×2IÑ2IÓ2KÕ&KÐ%LÐMÓNˆñ �D˜$“-×"Ñ" 6Ó*×-Ñ-¨eÓ4ˆÙ�D˜$“-×"Ñ" 6Ó*×-Ñ-¨eÓ4ˆØœeŸkšk¨#¨t¸FÔPÕPˆÙ‘˜Ó&Ô'ð —=‘= Ó)ˆØ—=‘= Ó)ˆÙ‘˜-Ó(Ô)à×%Ñ%Ó'ˆØ!ˆÔð ×$Ñ$ XÓ4ˆØ×$Ñ$ XÓ4ˆô  ×*Ò*¨=ÄÃÀÓNˆá‘˜Ó&Ô'ä—m’m GÓ,ˆÙ˜=Ó)ˆÜ—m’m GÓ,ˆÙ�DÖr    r!   N)r«   r¬   r­   r®   Ú__doc__r*   r°   r±   r’   r²   r   rz   r³   r   r  r  rø   rý   r  r   r¶   r	   r   ÚskipIfrM   r>   r+  r·   r¸   r¹   s   @r   rß   rß   r  s´   ø‡ € Ù/à—]‘] E§M¡M°5·>±>ÐB€Mà €OÙ"Ð#7Ó8€OØÐà÷ó ðð  ÷ó ð÷ ð ð ×Ò˜g }Ó5ØØ‡_‚_˜Ÿ™×0Ñ0Ó2Ô2Ð4IÓJñ,ó Kó ó 6ö,r    rß   c                   ób   a € ] tR tRt o V 3R lR ltR tV 3R lR ltV 3R lR ltR	 tR
t	V t
R# )ÚTorchAOIntegrationTestCaseiÖ  c                ó    <€ V ^8„  d   QhRS[ /# ©râ   Úconfigr
   )rè   rº   s   "€r   ré   Ú'TorchAOIntegrationTestCase.__annotate__×  s   ø€ ÷ 0ñ 0¹<ñ 0r    c                óÚ  € \         P                  p\         P                  P                  4       '       g   Q R 4       h\	        4       p\         P
                  P                  RRW2R7      p\        WA4       \         P
                  P                  RR4      P                  V4      P                  \         P                  4      p\         P
                  P                  VP                  R,           ^\         P                  ! RRW2R7      ,          ,           RR7      Vn
        \        WQ4       ^ pRpR EFº  pW‡,          p	VP                  p
V
P                  pVP                  WiV4      pVP                  ^ ,          pVP                  pVP                  WiV4      p\         P                  ! WÍP                  ^ ,          4      '       d   Q hVP!                  V4       \         P                  ! VP                  ^ ,          VP                  ^ ,          4      '       g   Q h\#        VR4      '       d4   \         P                  ! VP$                  VP$                  4      '       g   Q h\#        VR4      '       d4   \         P                  ! VP&                  VP&                  4      '       g   Q h\#        VR	4      '       g   EK‡  \         P                  ! VP(                  VP(                  4      '       d   EK»  Q h	  R
# )zno accelerator device foundr  rŒ   g      ð?Frî   i   ÚscaleÚ
zero_pointÚscale_and_zeroN)r   é   )r*   r’   Úacceleratorr>   r   r�   rÙ   r   r“   rÚ   rÛ   rt   ÚdataÚnarrowÚqdataÚequalÚcopy_r_   r6  r7  r8  )rU   r3  r‰   rˆ   ÚlÚdummy_lÚ
output_dimÚ
shard_sizeÚtp_rankÚ	start_idxÚparamÚ
param_dataÚorig_valuesÚloaded_weights   &&            r   Ú$_test_slice_and_copy_similar_to_vllmÚ?TorchAOIntegrationTestCase._test_slice_and_copy_similar_to_vllm×  s<  € ô
 —‘ˆÜ× Ñ ×-Ñ-×/Ò/ÐNÐ1NÓNÐ/Ü/Ó1ˆÜ�H‰H�O‰O˜D $¨vˆOÓCˆÜ�!Ôô —(‘(—/‘/ $¨Ó-×0Ñ0°Ó8×;Ñ;¼E¿N¹NÓKˆäŸ™×+Ñ+Ø�N‰NØõà”%—+’+˜d D°ÔEÕEõFð  ð	 ,ó 
ˆŒô 	�'Ô"àˆ
Øˆ
ÜˆGØÕ,ˆIØ—H‘HˆEØŸ™ˆJØ#×*Ñ*¨:À*ÓMˆJØ$×*Ñ*¨1Õ-ˆKØ#ŸN™NˆMØ)×0Ñ0°È
ÓSˆMô —{’{ ;×0CÑ0CÀAÕ0F×GÒGÐGÐGØ×Ñ˜]Ô+ä—;’;˜z×/Ñ/°Õ2°M×4GÑ4GÈÕ4J×KÒKÐKÐKÜ�z 7×+Ò+Ü—{’{ :×#3Ñ#3°]×5HÑ5H×IÒIÐIÐIÜ�z <×0Ò0Ü—{’{ :×#8Ñ#8¸-×:RÑ:R×SÒSÐSÐSÜ�zÐ#3×4Õ4Ü—{’{Ø×-Ñ-¨}×/KÑ/K÷õ ð ð ó' r    c                ó4  a€ \         P                  pRpR p^p^p^@p^€pRp	\        WhW’V4      p
\        WhW’V4      p\        Wh^V	,          W#4      p\         P                  ! WWW‚VR7      pW«.pV EFq  pV! V4       \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn        \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn	        \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn
        V! Wñ4       V! V4      pVP                  P                  R,          p\         P                  P                  VP                  P                  ^^4      P                  RV4      P                  4       RR7      Vn        VP                  P                  R,          p\         P                  P                  VP                  P                  ^^4      P                  RV4      P                  4       RR7      Vn	        VP                  P                  R,          p\         P                  P                  VP                  P                  ^^4      P                  RV4      P                  4       RR7      Vn
        \         P                  P                  VP                  P                  ^ VR34      P                  ^ R7      RR7      Vn        \         P                  P                  VP                  P                  ^ VR34      P                  ^ R7      RR7      Vn	        \         P                  P                  VP                  P                  ^ VR34      P                  ^ R7      RR7      Vn
        \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn        \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn	        \         P                  P                  VP                  P                  ^^4      P                  4       RR7      Vn
        V! V4      pV P                  VV4       EKt  	  V
P!                  4       VP!                  4       .oR F�  pS Uu. uF  pVV,          NK  	  pp\#        ^\%        V4      4       F\  pV^ ,          P&                  VV,          n        \)        VV,          R4      '       g   K=  V^ ,          P*                  VV,          n        K^  	  K’  	  R	 V3R
 llp/ pR F  pV! V4      VV&   K  	  \         P                  P                  VP                  P                  ^^4      RR7      Vn        \         P                  P                  VP                  P                  ^^4      RR7      Vn	        \         P                  P                  VP                  P                  ^^4      RR7      Vn
        VP-                  VRR7       V! V4       R# u upi )z´This is testing the op call sequence in saving and loading quantization
checkpoints in llama-models for llama4
(https://github.com/meta-llama/llama-models/tree/main/models/llama4)
rM   c                 ó  € V P                  4        Fr  w  r#\        V\        4      '       g   K  TpR FM  p\        WE4      p\        \        V4      ,          p\        V4      pV! W�4      p	\        WEV	P                  4       KO  	  Kt  	  R# )Úw1N©rN  Úw2Úw3)	Únamed_modulesrÅ   r   rw   r   Útyper   rd   rÛ   )
Úmodelr3  rY   ÚmoduleÚexpert_moduleÚweight_namerÛ   Úconfig_handlerÚ	dummy_modÚ	quant_mods
   &&        r   Ú_quantize_expertsÚRTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>._quantize_experts  ss   € Ø"×0Ñ0Ö2‘	�Ü! &Ô*B×CÒCÙà &�Û#5�KÜ$ ]Ó@�FÜ%=¼dÀ6»lÕ%K�NÜ +¨FÓ 3�IÙ .¨yÓ A�IÜ˜M¸	×8HÑ8HÖIó $6ó 3r    é   )r‰   rˆ   Frî   ©Údimr7  c                óD   € V ^8„  d   QhR\         R\        P                  /# )râ   Úkeyrå   )Ústrr*   r  )rè   s   "r   ré   ÚMTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.__annotate__u  s   € ÷ 	2ñ 	2œSð 	2¤U§\¡\ñ 	2r    c                 óª   <€ S Uu. uF  qV ,          NK  	  ppV R 8X  d   \         P                  ! VRR7      # \         P                  ! VRR7      # u upi )rP  r^  éÿÿÿÿéþÿÿÿ)r*   Úcat)ra  ÚsÚtensorsÚstate_dictss   &  €r   Úprocess_keyÚLTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.process_keyu  sK   ø€ Ù'2Ó3¡{ !˜—v�v¡{ˆGÐ3ð �dŒ{Ü—y’y ¨bÔ1Ð1ä—y’y ¨bÔ1Ð1ùò 4s   †AT)ÚassignNrf  re  rO  )r*   r’   r   rt   r�   rÚ   rN  Ú	transposeÚ
contiguousrP  rQ  r™   ÚreshapeÚ	unflattenÚsqueezer|   Ú
state_dictÚrangeÚlenr6  r_   r7  Úload_state_dict)rU   r3  r‰   rˆ   r[  Ú
batch_sizeÚnum_expertsÚ	input_dimr_  Ú
hidden_dimÚmoe1Úmoe2Úmoe_combinedÚinputÚmoesÚmoeÚbeforeÚnew_last_dimÚafterra  ÚstÚweightsÚirk  Únew_state_dictrj  s   &&                       @r   Ú_test_moe_weight_reshape_opsÚ7TorchAOIntegrationTestCase._test_moe_weight_reshape_ops	  s‡  ø€ ô —‘ˆØˆò	Jð ˆ
ØˆØˆ	ØˆØˆ
ä'¨¸*ÈVÓTˆÜ'¨¸*ÈVÓTˆÜ/Ø˜a *�n¨eó
ˆô —’˜J°3ÈFÔSˆàˆ|ˆäˆCÙ�ŒJô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFñ ˜cÔ*á˜“ZˆFð Ÿ6™6Ÿ<™<¨Õ+ˆLÜ—X‘X×'Ñ'Ø—‘× Ñ   AÓ&×.Ñ.¨r°<Ó@×KÑKÓMØ#ð (ó ˆCŒFð Ÿ6™6Ÿ<™<¨Õ+ˆLÜ—X‘X×'Ñ'Ø—‘× Ñ   AÓ&×.Ñ.¨r°<Ó@×KÑKÓMØ#ð (ó ˆCŒFð Ÿ6™6Ÿ<™<¨Õ+ˆLÜ—X‘X×'Ñ'Ø—‘× Ñ   AÓ&×.Ñ.¨r°<Ó@×KÑKÓMØ#ð (ó ˆCŒFô
 —X‘X×'Ñ'Ø—‘× Ñ   [°"Ð$5Ó6×>Ñ>À1Ð>ÓEØ#ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   [°"Ð$5Ó6×>Ñ>À1Ð>ÓEØ#ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   [°"Ð$5Ó6×>Ñ>À1Ð>ÓEØ#ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFô —X‘X×'Ñ'Ø—‘× Ñ   AÓ&×1Ñ1Ó3À5ð (ó ˆCŒFñ ˜“JˆEØ×Ñ˜V U×+ñy ð| —‘Ó(¨$¯/©/Ó*;Ð<ˆã%ˆCÙ)4Ó5© 2�r˜#—w�w©ˆGÐ5Ü˜1œc '›lÖ+�Ø#*¨1¥:×#3Ñ#3�˜•
Ô Ü˜7 1�: |×4Ô4Ø,3°A­J×,AÑ,A�G˜A•JÖ)ó ,ñ &÷	2ð 	2ð ˆÛ%ˆCÙ"-¨cÓ"2ˆN˜3Óñ &ô  Ÿ(™(×,Ñ,Ø�O‰O×%Ñ% a¨Ó+¸5ð -ó 
ˆŒô  Ÿ(™(×,Ñ,Ø�O‰O×%Ñ% a¨Ó+¸5ð -ó 
ˆŒô  Ÿ(™(×,Ñ,Ø�O‰O×%Ñ% a¨Ó+¸5ð -ó 
ˆŒð 	×$Ñ$ ^¸DÐ$ÔAá�UÖùò= 6s   ÔZc                ó    <€ V ^8„  d   QhRS[ /# r2  r
   )rè   rº   s   "€r   ré   r4  �  s   ø€ ÷ ñ ±<ñ r    c                ó®  € \         P                  p\         P                  P                  R R RVR7      p\	        W14       VP
                  pVP                  ^^ R 4      pVP                   Fg  p\        WF4      p\        WV4      p\        VP                  4      \        VP                  4      8X  d   KH  Q RVP                   RVP                   24       h	  R# )r  rM   rŒ   zshape mismatch: z vs N)r*   r’   r�   rÙ   r   rÛ   r<  Útensor_data_namesrw   ru  r™   )	rU   r3  r‰   r@  ÚorigÚnewÚdata_attr_nameÚ	orig_attrÚnew_attrs	   &&       r   Ú_test_narrow_similar_to_vllmÚ7TorchAOIntegrationTestCase._test_narrow_similar_to_vllm�  s¯   € ô —‘ˆÜ�H‰H�O‰O˜D $¨v¸UˆOÓCˆÜ�!Ôà�x‰xˆØ�k‰k˜!˜Q Ó%ˆà!×3Ô3ˆNÜ Ó5ˆIÜ˜sÓ3ˆHÜ�y—‘Ó'¬3¨x¯~©~Ó+>Ö>ð Ø" 9§?¡?Ð"3°4¸¿¹Ð7GÐHóÐ>ó 4r    c                ó    <€ V ^8„  d   QhRS[ /# r2  r
   )rè   rº   s   "€r   ré   r4     s   ø€ ÷ ñ ¹lñ r    c           
     ó–  € \         P                  p\         P                  ! R 4      ;_uu_ 4        \         P                  P	                  RRRVR7      pRRR4       \         P                  P                  \         P                  ! ^<RRRVR7      4      Xn        \        W14       VP                  ^ ,          pR#   + '       g   i     Lm; i)Úmetar  rM   rŒ   Ni   r  )	r*   r’   rˆ   r�   rÙ   rÚ   rt   rÛ   r   )rU   r3  r‰   r@  Ú_w_slices   &&   r   Ú'_test_quantize_3d_param_similar_to_vllmÚBTorchAOIntegrationTestCase._test_quantize_3d_param_similar_to_vllm   s…   € ô
 —‘ˆÜ�\Š\˜&×!Õ!Ü—‘—‘  d°6À�ÓGˆA÷ "ä—8‘8×%Ñ%Ü�KŠK˜˜D $¨v¸UÔCó
ˆŒô 	�!ÔØ—8‘8˜A•;Š÷ "×!ús   ¯$B8Â8C	c                óØ   € VP                  ^VR7      p\        P                  ! W2R7      p\        P                  P	                  VP                  4       VP                  4       ^ ^ R7       R# )râ   r^  )ÚatolÚrtolN)Úchunkr*   rg  ÚtestingÚassert_closer}   )rU   Ú	ao_tensorr_  Úao_tensor_chunkedÚao_tensor_unchunkeds   &&&  r   Ú"_test_chunk_similar_to_vllm_llama4Ú=TorchAOIntegrationTestCase._test_chunk_similar_to_vllm_llama4®  s[   € ð &ŸO™O¨A°3˜OÓ7ÐÜ#ŸišiÐ(9ÔCÐÜ�‰×"Ñ"Ø× Ñ Ó"Ð$7×$BÑ$BÓ$DÈ1ÐSTð 	#ö 	
r    r!   N)r«   r¬   r­   r®   rJ  rˆ  r’  r˜  r£  r·   r¸   r¹   s   @r   r0  r0  Ö  s5   ø‡ € ÷0ð 0òdD÷Lð ÷"ð ÷
ð 
r    r0  Ú__main__rT   )NN)+r]   r4   r   r*   Útorch.distributed._tensorr   r   r   r   Útorch.testing._internalr   Ú:torch.testing._internal.distributed._tensor.common_dtensorr   r	   r¡   Útorchao.core.configr   Útorchao.quantizationr   r   r   Ú%torchao.quantization.transform_moduler   Ú#torchao.testing.model_architecturesr   Útorchao.utilsr   r   r   r%   r8   rC   rI   rP   rm   ÚTestCasero   r¼   rß   r0  Úinstantiate_parametrized_testsr«   Úmainr!   r    r   Ú<module>r±     sý   ðó Û Û ã ß KÓ KÝ 0÷ó
 Ý ,ß LÑ Lõõ I÷ñ ðò2ô ò8ô2#òLô =ô>K
˜<×0Ñ0ô K
ô\O
˜\×2Ñ2ô O
ôda Oô aôH_
 ×!6Ñ!6ô _
ðD × +Ò +Ð,@Ô AØ × +Ò +Ð,BÔ CØ × +Ò +Ð,IÔ Jð ˆzÔØ‡M‚M†Oñ r    