
    ig                     &   S SK r S SKrS SKrS SKrS SKJrJrJrJr  S SK	J
r
  S SKJrJr  S SKrS SKJr  S SKJrJr  S SKJrJr  S SKJr  S S	KJr  S S
KJr  S SKJrJrJ r    S r!SS jr"S r#SS jr$S r%SS jr& " S S\
RN                  5      r( " S S\
RN                  5      r) " S S\5      r* " S S\
RN                  5      r+\
RX                  " \(5        \
RX                  " \)5        \
RX                  " \*5        \-S:X  a  \R\                  " 5         gg)    N)
DeviceMeshDTensor	ReplicateShard)common_utils)DTensorTestBase
with_comms)AOBaseConfig)AffineQuantizedTensorto_affine_quantized_intx)Int8WeightOnlyConfig	quantize_)MappingType)_QUANTIZE_CONFIG_HANDLER)LlamaModelsLlama4Experts)DummyModuleget_compute_capabilityget_current_accelerator_devicec                     ^ ^ SS K mU U4S jnU$ )Nr   c                    >^  UU U4S jnU$ )Nc                  Z   > [        5       T:  a  TR                  " ST 35      eT" U 0 UD6$ )Nz Compute capability is less than )r   SkipTest)argskwargsmin_capability	test_funcunittests     T/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torchao/testing/utils.pywrapperHskip_if_compute_capability_less_than.<locals>.decorator.<locals>.wrapper>   s>    %'.8''6~6FG  d-f--     )r   r   r   r   s   ` r   	decorator7skip_if_compute_capability_less_than.<locals>.decorator=   s    	. r!   r   )r   r#   r   s   ` @r   $skip_if_compute_capability_less_thanr&   :   s     r!   c                 X   ^ ^ SSK mU U4S jn[        T 5      (       a  T nSm U" U5      $ U$ )zDecorator to skip tests on ROCm platform with custom message.

Args:
    message (str, optional): Additional information about why the test is skipped.
r   Nc                 L   >^  [         R                  " T 5      U UU4S j5       nU$ )Nc                     > [         R                  R                  b"  SnT(       a  UST 3-  nTR                  U5        T" U 0 UD6$ )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>.wrapperS   sG    }}  ,: b	N2LL)(((r!   	functoolswraps)r0   r   r1   r2   s   ` r   r#   skip_if_rocm.<locals>.decoratorR   s%    			) 
	) r!   )r2   callable)r1   r#   r0   r2   s   `  @r   skip_if_rocmr9   J   s4     
 r!   c                  V   ^^^  SS K mSmUUU4S jn U $ ! [         a	    SmSS Km Nf = f)Nr   TFc                 N   >^  [         R                  " T 5      U UUU4S j5       nU$ )Nc                     > [         R                  R                  5       (       d-  SnT(       a  TR                  U5        OTR                  " U5        T" U 0 UD6$ )NzNo XPU availabler+   xpuis_availabler.   )r   r   r/   r0   
has_pytestr2   r   s      r   r   2skip_if_no_xpu.<locals>.decorator.<locals>.wrapperp   sF    99))++1KK-MM,/(((r!   r4   )r0   r   r@   r2   r   s   ` r   r#   !skip_if_no_xpu.<locals>.decoratoro   s%    			) 
	) r!   )r2   ImportErrorr   )r#   r@   r2   r   s    @@@r   skip_if_no_xpurD   f   s6    

 #  
s    ((c                    ^ ^^^  SSK mSmUU UU4S jn[        T 5      (       a  T nSm U" U5      $ U$ ! [         a	    SmSSKm N9f = f)z
Decorator to skip tests on XPU platform with custom message.

Args:
    message (str, optional): Additional information about why the test is skipped.
r   NTFc                 P   >^  [         R                  " T 5      U UUUU4S j5       nU$ )Nc                     > [         R                  R                  5       (       a<  SnT(       a  UST 3-  nT(       a  TR                  U5        OTR                  " U5        T" U 0 UD6$ )NzSkipping the test in XPUr*   r=   )r   r   r/   r0   r@   r1   r2   r   s      r   r   /skip_if_xpu.<locals>.decorator.<locals>.wrapper   sY    yy%%''9 b	N2LKK-MM,/(((r!   r4   )r0   r   r@   r1   r2   r   s   ` r   r#   skip_if_xpu.<locals>.decorator   s*    				) 		) 
		) r!   )r2   rC   r   r8   )r1   r#   r0   r@   r2   r   s   `  @@@r   skip_if_xpurJ      sZ    

   1  
s   3 AAc                     ^ SS K mU4S jn U $ )Nr   c                 J   >^  [         R                  " T 5      U U4S j5       nU$ )Nc                  ~   > [         R                  R                  5       (       d  TR                  " S5      eT" U 0 UD6$ )Nz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!   r4   )r   r   r   s   ` r   r#   "skip_if_no_cuda.<locals>.decorator   s%    		#	. 
$	.
 r!   r%   )r#   r   s    @r   skip_if_no_cudarQ      s     r!   c                 P   U R                   R                  5        GH  u  pVUR                  S5      (       d  M  [        R                  " U5      U4S j5       n[
        R                  " UR                   5      Ul         Ub&  [        Xd5      (       a  [        R                  " U5      nU=(       a    UR                  U5      nUbN  X(R                  ;   a?  UR                  (       a  [        R                  " S5      O[        R                  n	U	" U5      n[        X SU 3U5        GM
     g )Ntest_c                     U" U 5      $ Nr"   )selfvalues     r   new_testcopy_tests.<locals>.new_test   s    T{"r!   zSkipped!_)__dict__items
startswithr5   r6   copydeepcopyhasattrr   expectedFailuregetsuffixesis_skipr.   setattr)
my_cls	other_clssuffixtest_failures
xfail_propnamerW   rX   tf	skip_funcs
             r   
copy_testsrn      s    ,,.??7## __U#%* # $# !%enn =H%'%*D*D#33H=:=#4#4T#:B~&KK"7 zz MM*-!11 
 %X.Iq18<7 /r!   c                   h   \ rS rSrS/\R
                  R                  5       (       a  S/O/ -   r\R                  \R                  \R                  /r\r\r\R"                  S\R$                  S.rSrS r\R.                  " S\5      \R.                  " S	\5      S
 5       5       r\R.                  " S\5      \R.                  " S\5      S 5       5       r\R.                  " S\5      \R.                  " S	\5      S 5       5       r\R.                  " S\5      \R.                  " S	\5      S 5       5       rSrg)TorchAOBasicTestCase   cpurN          mapping_type
block_sizetarget_dtype(   c                    [         R                  " SS5      nU R                  " U40 U R                  D6nUR	                  5       u  p4U Vs0 s H  oU[        X%5      _M     nnUR                  5       nUR                  5       nU R                  R                  XdXx5      n	U R                  UR                  5       U	R                  5       5        g s  snf )N      )r+   randn
FACTORY_FNr   __tensor_flatten__getattrsizestrideTENSOR_SUBCLASS__tensor_unflatten__assertEqual
dequantize)
rV   	hp_tensor	lp_tensortensor_data_name_dicttensor_attributesrk   tensor_data_dict
outer_sizeouter_stridereconstructeds
             r   test_flatten_unflatten+TorchAOBasicTestCase.test_flatten_unflatten   s    KK3'	OOI==	3<3O3O3Q07L
7Lt')**7L 	 
 ^^%
 ''),,AA
 	--/1I1I1KL
s   Cdevicedtypec                 j    [         R                  " SSXS9nU R                  " U40 U R                  D6  g )Nr|   r}   r   r   )r+   r~   r   r   )rV   r   r   r   s       r   test_hp_tensor_device_dtype0TorchAOBasicTestCase.test_hp_tensor_device_dtype   s+     KK3vC		1T[[1r!   device1device2c                    [         R                  " SSU[         R                  S9nU R                  " U40 U R                  D6nUR                  US9  [         R                  " SSU[         R                  S9nU R                  " U40 U R                  D6nUR                  U5        [         R                  " SSU[         R                  S9nU R                  " U40 U R                  D6nUR                  5         [         R                  " SSU[         R                  S9nU R                  " U40 U R                  D6nUR                  5         g)zuNote: this should be parametrized with device1 and device2
e.g. device1 = ["cpu", "cuda"], device2 = ["cpu", "cuda"]
r|   r}   r   )r   N)r+   r~   bfloat16r   r   torN   rr   )rV   r   r   r   r   s        r   test_device1_to_device2,TorchAOBasicTestCase.test_device1_to_device2   s     KK3wennM	OOI==	G$KK3wennM	OOI==	WKK3wennM	OOI==	KK3wennM	OOI==	r!   c                     [         R                  " SSXS9nU R                  " U40 U R                  D6nUR	                  5       nU R                  UR                  S5        g )Nr|   r}   r   )r}   r|   )r+   r~   r   r   tr   shape)rV   r   r   r   r   s        r   test_transpose#TorchAOBasicTestCase.test_transpose  sL     KK3vC	OOI==	KKM	(3r!   c                    [         R                  " SSXS9nU R                  " U40 U R                  D6n[         R                  " SSXS9n[         R                  R
                  R                  XS5      n[         R                  R
                  R                  XT5      nU R                  [        R                  R                  R                  Xg5      U R                  5        g )Nr|   r}   r   ru   )r+   r~   r   r   nn
functionallinearassertGreatertorchaoquantizationutilscompute_errorLINEAR_MIN_SQNR)rV   r   r   r   r   hp_act_tensorhp_reslp_ress           r   test_linear TorchAOBasicTestCase.test_linear  s     KK3vC	OOI==	BFH$$++ME$$++ME  &&44VD  	
r!   r"   N)__name__
__module____qualname____firstlineno__r+   rN   r?   COMMON_DEVICESfloat32float16r   COMMON_DTYPESr   r   r   r   r   
ASYMMETRICuint8r   r   r   r   parametrizer   r   r   r   __static_attributes__r"   r!   r   rp   rp      sE   WEJJ,C,C,E,E2NN]]EMM5>>BM+O)J#..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!   rp   c                   f   \ rS rSrS/\R
                  R                  5       (       a  S/O/ -   r\R                  \R                  \R                  /r\r\r\R"                  S\R$                  S.rSrSr\R.                  " S\5      \R.                  " S	\5      S
 5       5       r\R.                  " S\5      \R.                  " S	\5      S 5       5       r\R.                  " S\5      \R.                  " S	\5      S 5       5       r\R.                  " S\5      \R.                  " S	\5      S 5       5       rSrg)TorchAOCompileTestCasei$  rr   rN   rs   rv   rz   2   r   r   c                 n   [         R                  " SSXS9nU R                  " U40 U R                  D6nS nU" U5      n[         R                  " U5      nU" U5      nU R                  [        U" U5      U R                  5      5        U R                  UR                  5       UR                  5       5        g )Nr|   r}   r   c                     U $ rU   r"   tensors    r   fCTorchAOCompileTestCase.test_input_output_tensor_subclass.<locals>.f:  s    Mr!   )
r+   r~   r   r   compile
assertTrue
isinstancer   r   r   rV   r   r   r   r   r   refcompileds           r   !test_input_output_tensor_subclass8TorchAOCompileTestCase.test_input_output_tensor_subclass4  s     KK3vC	OOI==		 	lMM!Y<
1Y<1E1EFG)8+>+>+@Ar!   c                 4   [         R                  " SSXS9nU R                  " U40 U R                  D6nS nU" U5      n[         R                  " U5      nU" U5      nU R                  [        U" U5      U R                  5      5        U R                  Xg5        g )Nr|   r}   r   c                 "    U R                  5       $ rU   )r   r   s    r   r   <TorchAOCompileTestCase.test_input_tensor_subclass.<locals>.fI  s    $$&&r!   )	r+   r~   r   r   r   assertFalser   r   r   r   s           r   test_input_tensor_subclass1TorchAOCompileTestCase.test_input_tensor_subclassC  s     KK3vC	OOI==		' 	lMM!Y<AiL$2F2FGH'r!   c                   ^  [         R                  " SSXS9nU 4S jnU" U5      n[         R                  " U5      nU" U5      nT R                  [	        U" U5      T R
                  5      5        U[         R                  :w  aa  T R                  [        R                  R                  R                  UR                  5       UR                  5       5      T R                  5        g g )Nr|   r}   r   c                 >   > TR                   " U 40 TR                  D6$ rU   )r   r   )r   rV   s    r   r   =TorchAOCompileTestCase.test_output_tensor_subclass.<locals>.fW  s    ??9<<<r!   )r+   r~   r   r   r   r   r   r   r   r   r   r   r   COMPILE_MIN_SQNR)rV   r   r   r   r   r   r   s   `      r   test_output_tensor_subclass2TorchAOCompileTestCase.test_output_tensor_subclassR  s     KK3vC		= 	lMM!Y<
1Y<1E1EFGENN"$$**88NN$h&9&9&; %%	 #r!   c                 .   [         R                  " SSXS9nU R                  " U40 U R                  D6n[         R                  " SSXS9n[         R                  R
                  R                  XS5      n[         R                  R                  SSSXS9n[         R                  R                  U5      Ul	        [         R                  " U5      " U5      nU R                  [        R                  R                  R                  Xh5      U R                   5        g )Nr|   r}   r   ru   F)biasr   r   )r+   r~   r   r   r   r   r   Linear	Parameterweightr   r   r   r   r   r   r   )	rV   r   r   r   r   r   r   r   r   s	            r   test_linear_compile*TorchAOCompileTestCase.test_linear_compileg  s     KK3vC	OOI==	BFH$$++MEaeFP**95v&}5  &&44VD  	
r!   r"   N)r   r   r   r   r+   rN   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r"   r!   r   r   r   $  sE   WEJJ,C,C,E,E2NN]]EMM5>>BM+O)J#..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                   Z   \ rS rSrSr\R                  \R                  \R                  /r	\
r\" \5      r0 r\S\R                   R"                  S\S\R                   R"                  4S j5       r\S\R                   R"                  S\S\R                   R"                  4S j5       rS\R                   R"                  S\R                   R"                  4S jr\R.                  " S	\	5      \\R4                  " \R6                  R9                  5       (       + S
5      S 5       5       5       rSrg)TorchAOTensorParallelTestCaseix  z%Basic test case for tensor subclassesmmeshreturnc                 X   U R                   R                  nUR                  S5      UR                  5       -  nUR                  5       nX$U-  US-   U-  2SS24   n[        R
                  " XQ[        S5      /5      n[        R                  R                  USS9U R                   l        U $ )z8
Shard linear layer of the model in column-wise fashion
r   rt   NFrequires_grad
r   r   r   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     hhoo"''*diik9""$!"5\8Q"QST"TU$$[q
C((,,WE,Jr!   c                 X   U R                   R                  nUR                  S5      UR                  5       -  nUR                  5       nUSS2XC-  US-   U-  24   n[        R
                  " XQ[        S5      /5      n[        R                  R                  USS9U R                   l        U $ )z5
Shard linear layer of the model in row-wise fashion
rt   NFr   r   )r   r   r   n_local_colsr   r   r   s          r   rowwise_shard+TorchAOTensorParallelTestCase.rowwise_shard  s     hhoo"''*diik9""$!!T%8D1H;T%T"TU$$[q
C((,,WE,Jr!   c                 P    [        XR                  " S0 U R                  D65        U$ )z
Quantize the model
r"   )r   QUANT_METHOD_FNQUANT_METHOD_KWARGS)rV   r   s     r   quantize&TorchAOTensorParallelTestCase.quantize  s%     	!))ED,D,DEFr!   r   zNeed CUDA availablec                    Sn[         R                  " S5         " S S[         R                  R                  5      n[         R                  " SU R
                  [         R                  R                  5       -   35      nU" SS5      R                  U5      R                  U5      nU" SS5      R                  U5      R                  U5      nS[         R                  " S	SX!S
9-  nU" U" U5      5        U R                  U5      nU R                  U5      nU" U" U5      5        U R                  5       n	SU	l        U R                  Xy5      n
U R                  X5      n[        R                   " Xi[#        5       /5      nU" U
" U5      5        [         R$                  " U
5      nU" U5      n[         R$                  " U5      nU" U5        g )NrN      c                   f   ^  \ rS rSrSU 4S jjrS\R                  S\R                  4S jrSrU =r	$ )0TorchAOTensorParallelTestCase.test_tp.<locals>.Mi  r   c                 n   > [         TU ]  " S0 UD6  [        R                  R	                  XSSS9U l        g )NFrN   )r   r   r"   )super__init__r+   r   r   r   )rV   in_featuresout_featuresr   	__class__s       r   r  9TorchAOTensorParallelTestCase.test_tp.<locals>.M.__init__  s3     *6*#hhooE& . r!   xc                 $    U R                  U5      $ rU   r   )rV   r	  s     r   forward8TorchAOTensorParallelTestCase.test_tp.<locals>.M.forward  s    {{1~%r!   r  )r   N)
r   r   r   r   r  r+   Tensorr  r   __classcell__)r  s   @r   Mr    s(    & &%,, & &r!   r  zcuda:      d   r}   r   )r+   manual_seedr   Moduler   r   rN   device_countr   r~   r   build_device_meshdevice_typer   r   r   r   r   r   )rV   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    !	& 	& dii%**2I2I2K&K%LMN D$-""6*--e4D$-""6*--e4ekk#tFPP&' ==)==)-()%%'! $$X4$$X4  **=N&'mmG,=)mmG,Dr!   r"   N)r   r   r   r   __doc__r+   r   r   r   r   r   r   staticmethodr   r   r   r   r  r   r   r   r   r   r   r	   r   skipIfrN   r?   r$  r   r"   r!   r   r   r   x  s   /]]EMM5>>BM+O"#78O 
 uxx     
 uxx   %((// ehhoo  g}5__00224IJ, K  6,r!   r   c                   J    \ rS rSrS\4S jrS rS\4S jrS\4S jrS r	Sr
g	)
TorchAOIntegrationTestCasei  configc                 t   [         R                  n[         R                  R                  5       (       d   S5       e[	        5       n[         R
                  R                  SSX2S9n[        XA5        [         R
                  R                  SS5      R                  U5      R                  [         R                  5      n[         R
                  R                  UR                  S-   S[         R                  " SSX2S9-  -   SS9Ul
        [        XQ5        SnS	nS
 GH  nX-  n	UR                  n
U
R                  nUR                  XiU5      nUR                  S   nUR                  nUR                  XiU5      n[         R                  " XR                  S   5      (       a   eUR!                  U5        [         R                  " UR                  S   UR                  S   5      (       d   e[#        US5      (       a2  [         R                  " UR$                  UR$                  5      (       d   e[#        US5      (       a2  [         R                  " UR&                  UR&                  5      (       d   e[#        US5      (       d  GMl  [         R                  " UR(                  UR(                  5      (       a  GM   e   g )Nzno accelerator device foundr  r   g      ?   Fr   r   i   )r   rt   scale
zero_pointscale_and_zero)r+   r   acceleratorr?   r   r   r   r   r   r   r   r~   datanarrowqdataequalcopy_r`   r.  r/  r0  )rV   r+  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<   
   --//N1NN//1HHOOD$vOC! ((//$-008;;ENNK++NN%++dDEEF  	 , 
 	'"

G,IHHEJ#**:*MJ$**1-K#NNM)00
SM {{;0C0CA0FGGGG]+;;z//2M4G4G4JKKKKz7++{{:#3#3]5H5HIIIIz<00{{:#8#8-:R:RSSSSz#344{{--}/K/K   ' r!   c                   ^ [         R                  nSnS nSnSnSnSnSn	[        XhXU5      n
[        XhXU5      n[        XhSU	-  X#5      n[         R                  " XWXUS9nX/nU GH8  nU" U5        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul	        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul
        U" X5        U" U5      nUR                  R                  S   n[         R                  R                  UR                  R                  S	S5      R                  SU5      R                  5       S
S9Ul        UR                  R                  S   n[         R                  R                  UR                  R                  S	S5      R                  SU5      R                  5       S
S9Ul	        UR                  R                  S   n[         R                  R                  UR                  R                  S	S5      R                  SU5      R                  5       S
S9Ul
        [         R                  R                  UR                  R                  SUS45      R                  SS9S
S9Ul        [         R                  R                  UR                  R                  SUS45      R                  SS9S
S9Ul	        [         R                  R                  UR                  R                  SUS45      R                  SS9S
S9Ul
        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul	        [         R                  R                  UR                  R                  S	S5      R                  5       S
S9Ul
        U" U5      nU R                  UU5        GM;     U
R!                  5       UR!                  5       /mS Hx  nT Vs/ s H  nUU   PM
     nn[#        S	[%        U5      5       HG  nUS   R&                  UU   l        [)        UU   S5      (       d  M0  US   R*                  UU   l        MI     Mz     S[,        S[         R.                  4U4S jjn0 nS H  nU" U5      UU'   M     [         R                  R                  UR                  R                  S	S5      S
S9Ul        [         R                  R                  UR                  R                  S	S5      S
S9Ul	        [         R                  R                  UR                  R                  S	S5      S
S9Ul
        UR1                  USS9  U" U5        gs  snf )zThis 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)
rN   c                    U R                  5        Hm  u  p#[        U[        5      (       d  M  UnS HI  n[        XE5      n[        [        U5         n[        U5      nU" X5      n	[        XEU	R                  5        MK     Mo     g )Nw1w2w3)	named_modulesr   r   r   r   typer   re   r   )
modelr+  rZ   moduleexpert_moduleweight_namer   config_handler	dummy_mod	quant_mods
             r   _quantize_expertsRTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>._quantize_experts  ss    "002	!&*BCC &#5K$]@F%=d6l%KN +F 3I .y AIM	8H8HI $6 3r!   r|   r-  @   r}      )r   r   rt   Fr   r   dimrE  r/  keyr   c                    > T Vs/ s H  oU    PM	     nnU S:X  a  [         R                  " USS9$ [         R                  " USS9$ s  snf )NrG  rW  rX  rV  )r+   cat)rZ  stensorsstate_dictss      r   process_keyLTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.process_key{  sI    '23{!v{G3 d{yyb11yyb11 4s   AT)assignN)r+   r   r   r~   r   r   rF  	transpose
contiguousrG  rH  r   reshape	unflattensqueezer   
state_dictrangelenr.  r`   r/  strr  load_state_dict)rV   r+  r   r   rR  
batch_sizenum_experts	input_dimrY  
hidden_dimmoe1moe2moe_combinedinputmoesmoebeforenew_last_dimafterrZ  stweightsir`  new_state_dictr_  s                            @r   _test_moe_weight_reshape_ops7TorchAOIntegrationTestCase._test_moe_weight_reshape_ops  s    	J 
	
'*VT'*VT/a*ne
 J3FS|CJ XX''  A&1135 ( CF XX''  A&1135 ( CF XX''  A&1135 ( CF c*ZF 66<<+LXX''  A&..r<@KKM# ( CF 66<<+LXX''  A&..r<@KKM# ( CF 66<<+LXX''  A&..r<@KKM# ( CF
 XX''  ["$56>>1>E# ( CF XX''  ["$56>>1>E# ( CF XX''  ["$56>>1>E# ( CF XX''  A&1135 ( CF XX''  A&1135 ( CF XX''  A&1135 ( CF JEVU+y | ($//*;<%C)452r#wG51c'l+#*1:#3#3
 71:|44,3AJ,A,AGAJ) , &	2S 	2U\\ 	2 %C"-c"2N3 &  ((,,OO%%a+5 - 
  ((,,OO%%a+5 - 
  ((,,OO%%a+5 - 
 	$$^D$AU= 6s   Yc                    [         R                  n[         R                  R                  SSSUS9n[	        X15        UR
                  nUR                  SSS5      nUR                   Hf  n[        XF5      n[        XV5      n[        UR                  5      [        UR                  5      :X  a  MG   SUR                   SUR                   35       e   g )Nr  rN   r   rt   r   zshape mismatch: z vs )r+   r   r   r   r   r   r3  tensor_data_namesr   rj  r   )	rV   r+  r   r7  orignewdata_attr_name	orig_attrnew_attrs	            r   _test_narrow_similar_to_vllm7TorchAOIntegrationTestCase._test_narrow_similar_to_vllm  s     HHOOD$vUOC!xxkk!Q%!33N5Is3Hy'3x~~+>> "9??"347GH> 4r!   c           
      l   [         R                  n[         R                  " S5         [         R                  R	                  SSSUS9nS S S 5        [         R                  R                  [         R                  " SSSSUS95      Wl        [        X15        UR                  S   ng ! , (       d  f       Nc= f)	Nmetar  rN   r   <   i   r  r   )	r+   r   r   r   r   r   r~   r   r   )rV   r+  r   r7  _w_slices        r   '_test_quantize_3d_param_similar_to_vllmBTorchAOIntegrationTestCase._test_quantize_3d_param_similar_to_vllm  s    
 \\&!d6GA "88%%KKD$vUC
 	!88A; "!s   !B%%
B3c                     UR                  SUS9n[        R                  " X2S9n[        R                  R	                  UR                  5       UR                  5       SSS9  g )Nr-  rX  r   )atolrtol)chunkr+   r\  testingassert_closer   )rV   	ao_tensorrY  ao_tensor_chunkedao_tensor_unchunkeds        r   "_test_chunk_similar_to_vllm_llama4=TorchAOIntegrationTestCase._test_chunk_similar_to_vllm_llama4  s[     &OOA3O7#ii(9C""  "$7$B$B$D1ST 	# 	
r!   r"   N)r   r   r   r   r
   rA  r~  r  r  r  r   r"   r!   r   r*  r*    s3    0< 0dDL< "l 
r!   r*  __main__rU   )NN)/r^   r5   r   r+   torch.distributed._tensorr   r   r   r   torch.testing._internalr   :torch.testing._internal.distributed._tensor.common_dtensorr   r	   r   torchao.core.configr
   torchao.dtypesr   r   torchao.quantizationr   r   %torchao.quantization.quant_primitivesr   %torchao.quantization.transform_moduler   #torchao.testing.model_architecturesr   torchao.utilsr   r   r   r&   r9   rD   rJ   rQ   rn   TestCaserp   r   r   r*  instantiate_parametrized_testsr   mainr"   r!   r   <module>r     s        K K 0
  , J @ = I 2 82#L =>M
<00 M
`Q
\22 Q
haO aH_
!6!6 _
D  + +,@ A  + +,B C  + +,I J zMMO r!   