
    Pih                        d dl Z d dlZd dlZd dlZd dlmZmZmZmZ d dl	m
Z
 d dlmZmZ d dlZd dlmZ d dlmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZmZ 	 d Z ddZ!d Z"ddZ#d Z$d Z%ddZ& G d de
j'                  Z( G d de
j'                  Z) G d de          Z* G d de
j'                  Z+ e
j,        e(            e
j,        e)            e
j,        e*           e-dk    r ej.                     dS dS )    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_capabilityc                      dd l  fd}|S )Nr   c                       fd}|S )Nc                  ^    t                      k     r j        d            | i |S )Nz Compute capability is less than )r   SkipTest)argskwargsmin_capability	test_funcunittests     i/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/torchao/testing/utils.pywrapperzHskip_if_compute_capability_less_than.<locals>.decorator.<locals>.wrapper=   sM    %''.88'h'G~GG   9d-f---     )r   r   r   r   s   ` r   	decoratorz7skip_if_compute_capability_less_than.<locals>.decorator<   s.    	. 	. 	. 	. 	. 	. 	. r   r   )r   r!   r   s   ` @r   $skip_if_compute_capability_less_thanr#   9   s3    OOO      r   c                 Z     ddl  fd}t                     r }d  ||          S |S )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     t          j                    fd            }|S )Nc                  x    t           j        j        !d}r|d z  }                    |            | i |S )NzSkipping the test in ROCm: )torchversionhipskip)r   r   skip_messagefuncmessagepytests      r   r   z0skip_if_rocm.<locals>.decorator.<locals>.wrapperR   sR    } ,: 3 NNN2LL)))4((((r   	functoolswraps)r-   r   r.   r/   s   ` r   r!   zskip_if_rocm.<locals>.decoratorQ   sC    				) 	) 	) 	) 	) 	) 
		) r   )r/   callable)r.   r!   r-   r/   s   `  @r   skip_if_rocmr4   I   s]     MMM
 
 
 
 
 
  yr   c                  V    	 dd l dn# t          $ r	 ddd lY nw xY wfd} | S )Nr   TFc                 N     t          j                    fd            }|S )Nc                      t           j                                        s*d}r                    |           n j        |            | i |S )NzNo XPU availabler(   xpuis_availabler+   )r   r   r,   r-   
has_pytestr/   r   s      r   r   z2skip_if_no_xpu.<locals>.decorator.<locals>.wrappero   sb    9))++ 01 0KK----!HM,///4((((r   r0   )r-   r   r;   r/   r   s   ` r   r!   z!skip_if_no_xpu.<locals>.decoratorn   sH    				) 	) 	) 	) 	) 	) 	) 
		) r   )r/   ImportErrorr   )r!   r;   r/   r   s    @@@r   skip_if_no_xpur=   e   sr    

   
       s    c                      	 ddl dn# t          $ r	 dddlY nw xY w fd}t                     r }d  ||          S |S )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     t          j                    fd            }|S )Nc                      t           j                                        r4d}r|d z  }r                    |           n j        |            | i |S )NzSkipping the test in XPUr'   r8   )r   r   r,   r-   r;   r.   r/   r   s      r   r   z/skip_if_xpu.<locals>.decorator.<locals>.wrapper   sz    y%%'' 09 3 NNN2L 0KK----!HM,///4((((r   r0   )r-   r   r;   r.   r/   r   s   ` r   r!   zskip_if_xpu.<locals>.decorator   sM    					) 		) 		) 		) 		) 		) 		) 		) 
			) r   )r/   r<   r   r3   )r.   r!   r-   r;   r/   r   s   `  @@@r   skip_if_xpurA   ~   s    

   
          ys      c                      dd l fd} | S )Nr   c                 J     t          j                    fd            }|S )Nc                  p    t           j                                        s j        d           | i |S )NzNo cuda available)r(   cudar:   r   )r   r   r   r   s     r   r   z3skip_if_no_cuda.<locals>.decorator.<locals>.wrapper   sB    :**,, ='h'(;<<<9d-f---r   r0   r   r   r   s   ` r   r!   z"skip_if_no_cuda.<locals>.decorator   s>    		#	#	. 	. 	. 	. 	. 
$	#	.
 r   r"   r!   r   s    @r   skip_if_no_cudarH      s-    OOO     r   c                      dd l fd} | S )Nr   c                 J     t          j                    fd            }|S )Nc                  J    	 dd l }n#   j        d          xY w | i |S )Nr   zNo gemlite available)gemliter   )r   r   rL   r   r   s      r   r   z6skip_if_no_gemlite.<locals>.decorator.<locals>.wrapper   sG    @@'h'(>???9d-f---s    r0   rF   s   ` r   r!   z%skip_if_no_gemlite.<locals>.decorator   s>    		#	#	. 	. 	. 	. 	. 
$	#	. r   r"   rG   s    @r   skip_if_no_gemliterM      s-    OOO	 	 	 	 	 r   c                    | j                                         D ]\  }}|                    d          rt          j        |          |fd            }t          j        |j                   |_         |$t          ||          rt          j	        |          }|o|
                    |          }|;||j        v r2|j        rt          j        d          nt          j	        }	 |	|          }t          || d| |           d S )Ntest_c                      ||           S Nr    )selfvalues     r   new_testzcopy_tests.<locals>.new_test   s    uT{{"r   zSkipped!_)__dict__items
startswithr1   r2   copydeepcopyhasattrr   expectedFailuregetsuffixesis_skipr+   setattr)
my_cls	other_clssuffixtest_failures
xfail_propnamerS   rT   tf	skip_funcs
             r   
copy_testsri      s+   ,,.. = =e??7## 	= _U##%* # # # $## !%en = =H%'%*D*D%#3H==:=#4#4T#:#:B~&BK"7"7 z2HM*---!1 
 %9X..I$11118<<<7= =r   c                   4   e Zd Zdgej                                        rdgng z   Zej        ej        ej	        gZ
eZeZej        dej        dZdZd Z ej        de           ej        de
          d	                         Z ej        d
e           ej        de          d                         Z ej        de           ej        de
          d                         Z ej        de           ej        de
          d                         ZdS )TorchAOBasicTestCasecpurE          mapping_type
block_sizetarget_dtype(   c                    t          j        dd          } | j        |fi | j                                        \  }}fd|D             }                                }                                }| j                            ||||          }| 	                    
                                |
                                           d S )N      c                 2    i | ]}|t          |          S r    )getattr).0rf   	lp_tensors     r   
<dictcomp>z?TorchAOBasicTestCase.test_flatten_unflatten.<locals>.<dictcomp>   s2     
 
 
/3D')T**
 
 
r   )r(   randn
FACTORY_FNr   __tensor_flatten__sizestrideTENSOR_SUBCLASS__tensor_unflatten__assertEqual
dequantize)	rR   	hp_tensortensor_data_name_dicttensor_attributestensor_data_dict
outer_sizeouter_stridereconstructedr{   s	           @r   test_flatten_unflattenz+TorchAOBasicTestCase.test_flatten_unflatten   s    K3''	#DOI====	3<3O3O3Q3Q00
 
 
 
7L
 
 
 ^^%%
 '')),AA/\
 
 	--//1I1I1K1KLLLLLr   devicedtypec                 \    t          j        dd||          } | j        |fi | j         d S )Nrv   rw   r   r   )r(   r}   r~   r   )rR   r   r   r   s       r   test_hp_tensor_device_dtypez0TorchAOBasicTestCase.test_hp_tensor_device_dtype  s>     K3vUCCC		11T[11111r   device1device2c                 T   t          j        dd|t           j                  } | j        |fi | j        }|                    |           t          j        dd|t           j                  } | j        |fi | j        }|                    |           t          j        dd|t           j                  } | j        |fi | j        }|                                 t          j        dd|t           j                  } | j        |fi | j        }|                                 dS )zNote: this should be parametrized with device1 and device2
        e.g. device1 = ["cpu", "cuda"], device2 = ["cpu", "cuda"]
        rv   rw   r   )r   N)r(   r}   bfloat16r~   r   torE   rl   )rR   r   r   r   r{   s        r   test_device1_to_device2z,TorchAOBasicTestCase.test_device1_to_device2  s    K3wenMMM	#DOI====	G$$$K3wenMMM	#DOI====	WK3wenMMM	#DOI====	K3wenMMM	#DOI====	r   c                     t          j        dd||          } | j        |fi | j        }|                                }|                     |j        d           d S )Nrv   rw   r   )rw   rv   )r(   r}   r~   r   tr   shape)rR   r   r   r   r{   s        r   test_transposez#TorchAOBasicTestCase.test_transpose  sb     K3vUCCC	#DOI====	KKMM	(33333r   c                    t          j        dd||          } | j        |fi | j        }t          j        dd||          }t           j        j                            ||          }t           j        j                            ||          }|                     t          j	        j
                            ||          | j                   d S )Nrv   rw   r   ro   )r(   r}   r~   r   nn
functionallinearassertGreatertorchaoquantizationutilscompute_errorLINEAR_MIN_SQNR)rR   r   r   r   r{   hp_act_tensorhp_reslp_ress           r   test_linearz TorchAOBasicTestCase.test_linear%  s     K3vUCCC	#DOI====	BF%HHH$++M9EE$++M9EE &44VVDD 	
 	
 	
 	
 	
r   N)__name__
__module____qualname__r(   rE   r:   COMMON_DEVICESfloat32float16r   COMMON_DTYPESr   r   r   r~   r   
ASYMMETRICuint8r   r   r   r   parametrizer   r   r   r   r    r   r   rk   rk      s       WEJ,C,C,E,E M2NN]EM5>BM+O)J#. F OM M M \h77\g}552 2 65 872 \i88\i88  98 98( \h77\g}554 4 65 874 \h77\g}55

 

 65 87

 

 

r   rk   c                   2   e Zd Zdgej                                        rdgng z   Zej        ej        ej	        gZ
eZeZej        dej        dZdZdZ ej        de           ej        de
          d	                         Z ej        de           ej        de
          d
                         Z ej        de           ej        de
          d                         Z ej        de           ej        de
          d                         ZdS )TorchAOCompileTestCaserl   rE   rm   rp   rt   2   r   r   c                    t          j        dd||          } | j        |fi | j        }d } ||          }t          j        |          } ||          }|                     t           ||          | j                             |                     |	                                |	                                           d S )Nrv   rw   r   c                     | S rQ   r    tensors    r   fzCTorchAOCompileTestCase.test_input_output_tensor_subclass.<locals>.fJ  s    Mr   )
r(   r}   r~   r   compile
assertTrue
isinstancer   r   r   rR   r   r   r   r{   r   refcompileds           r   !test_input_output_tensor_subclassz8TorchAOCompileTestCase.test_input_output_tensor_subclassD  s     K3vUCCC	#DOI====		 	 	 a	llM!1Y<<
11Y<<1EFFGGG))8+>+>+@+@AAAAAr   c                 D   t          j        dd||          } | j        |fi | j        }d } ||          }t          j        |          } ||          }|                     t           ||          | j                             |                     ||           d S )Nrv   rw   r   c                 *    |                                  S rQ   )r   r   s    r   r   z<TorchAOCompileTestCase.test_input_tensor_subclass.<locals>.fY  s    $$&&&r   )	r(   r}   r~   r   r   assertFalser   r   r   r   s           r   test_input_tensor_subclassz1TorchAOCompileTestCase.test_input_tensor_subclassS  s     K3vUCCC	#DOI====		' 	' 	' a	llM!1Y<<AAiLL$2FGGHHHh'''''r   c                     t          j        dd||          } fd} ||          }t          j        |          } ||          }                     t	           ||           j                             |t           j        k    rd                     t          j	        j
                            |                                |                                           j                   d S d S )Nrv   rw   r   c                 *     j         | fi j        S rQ   )r~   r   )r   rR   s    r   r   z=TorchAOCompileTestCase.test_output_tensor_subclass.<locals>.fg  s    "4?9<<<<<r   )r(   r}   r   r   r   r   r   r   r   r   r   r   r   COMPILE_MIN_SQNR)rR   r   r   r   r   r   r   s   `      r   test_output_tensor_subclassz2TorchAOCompileTestCase.test_output_tensor_subclassb  s     K3vUCCC		= 	= 	= 	= 	= a	llM!1Y<<
11Y<<1EFFGGGEN""$*88NN$$h&9&9&;&;  %	     #"r   c                    t          j        dd||          } | j        |fi | j        }t          j        dd||          }t           j        j                            ||          }t           j                            ddd||          }t           j                            |          |_	         t          j
        |          |          }|                     t          j        j                            ||          | j                   d S )Nrv   rw   r   ro   F)biasr   r   )r(   r}   r~   r   r   r   r   Linear	Parameterweightr   r   r   r   r   r   r   )	rR   r   r   r   r{   r   r   r   r   s	            r   test_linear_compilez*TorchAOCompileTestCase.test_linear_compilew  s     K3vUCCC	#DOI====	BF%HHH$++M9EEaeF%PP**955&v&&}55 &44VVDD 	
 	
 	
 	
 	
r   N)r   r   r   r(   rE   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   4  s       WEJ,C,C,E,E M2NN]EM5>BM+O)J#. F O\h77\g}55B B 65 87B \h77\g}55( ( 65 87( \h77\g}55  65 87& \h77\g}55
 
 65 87
 
 
r   r   c                      e Zd ZdZej        ej        ej        gZe	Z
 ee          Zi Zedej        j        dedej        j        fd            Zedej        j        dedej        j        fd            Zdej        j        dej        j        fdZ ej        de          e ej        ej                                         d	          d
                                     ZdS )TorchAOTensorParallelTestCasez%Basic test case for tensor subclassesmmeshreturnc                 f   | j         j        }|                    d          |                                z  }|                                }|||z  |dz   |z  ddf         }t	          j        ||t          d          g          }t          j        	                    |d          | j         _        | S )zH
        Shard linear layer of the model in column-wise fashion
        r   rn   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_shardz+TorchAOTensorParallelTestCase.colwise_shard  s     ho"''**diikk9""$$!$"5\8Q"QSTSTST"TU$[$q
CC(,,WE,JJr   c                 f   | j         j        }|                    d          |                                z  }|                                }|dd||z  |dz   |z  f         }t	          j        ||t          d          g          }t          j        	                    |d          | j         _        | S )zE
        Shard linear layer of the model in row-wise fashion
        rn   NFr   r   )r   r   r   n_local_colsr   r   r   s          r   rowwise_shardz+TorchAOTensorParallelTestCase.rowwise_shard  s     ho"''**diikk9""$$!!!!TL%8D1H;T%T"TU$[$q
CC(,,WE,JJr   c                 F    t          | | j        di | j                   |S )z$
        Quantize the model
        r    )r   QUANT_METHOD_FNQUANT_METHOD_KWARGS)rR   r   s     r   quantizez&TorchAOTensorParallelTestCase.quantize  s0     	!)T)EED,DEEFFFr   r   zNeed CUDA availablec                    d}t          j        d            G d dt           j        j                  }t          j        d| j        t           j                                        z             } |dd                              |                              |          } |dd                              |                              |          }dt          j	        d	d||
          z  } | ||                     | 
                    |          }| 
                    |          } | ||                     |                                 }	d|	_        |                     ||	          }
|                     ||	          }t          j        ||	t#                      g          } | |
|                     t          j        |
          } ||          }t          j        |          } ||           d S )NrE      c                   D     e Zd Zd fdZdej        dej        fdZ xZS )0TorchAOTensorParallelTestCase.test_tp.<locals>.Mr   Nc                      t                      j        di | t          j                            ||dd          | _        d S )NFrE   )r   r   r    )super__init__r(   r   r   r   )rR   in_featuresout_featuresr   	__class__s       r   r   z9TorchAOTensorParallelTestCase.test_tp.<locals>.M.__init__  sI      **6***#hooE& .  r   xc                 ,    |                      |          S rQ   )r   )rR   r   s     r   forwardz8TorchAOTensorParallelTestCase.test_tp.<locals>.M.forward  s    {{1~~%r   )r   N)r   r   r   r   r(   Tensorr   __classcell__)r   s   @r   Mr     sc             & &%, & & & & & & & &r   r   zcuda:      d   rw   r   )r(   manual_seedr   Moduler   r   rE   device_countr   r}   r   build_device_meshdevice_typer   r   r   r   r   r   )rR   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_tpz%TorchAOTensorParallelTestCase.test_tp  s    !	& 	& 	& 	& 	& 	& 	& 	& Mdi%*2I2I2K2K&KMMNN !D$--""6**--e44!D$--""6**--e44ek#tF%PPPP&&''' ==))==))-(()))%%''! $$Xt44$$Xt44  *=$NN&&'''mG,,{=))mG,,Dr   N)r   r   r   __doc__r(   r   r   r   r   r   r   staticmethodr   r   r   r   r   r   r   r   r   r   r   r	   r   skipIfrE   r:   r  r    r   r   r   r     sJ       //]EM5>BM+O"l#788O 
 ux    \   
 ux    \ %(/ eho     \g}55X_002224IJJ, , KJ Z 65, , ,r   r   c                   >    e Zd ZdefdZd ZdefdZdefdZd ZdS )TorchAOIntegrationTestCaseconfigc           
         t           j        }d}t           j                            ddd|          }t	          ||           t           j                            dd                              d                              t           j                  }t           j                            |j        dz   dt          j        dd||          z  z   d          |_        t	          ||           d}d	}d
D ]O}||z  }	|j        }
|
j	        }|
                    ||	|          }|j        d         }|j        }|
                    ||	|          }t          j        ||j        d                   rJ |                    |           t          j        |j        d         |j        d                   sJ t          |d          r!t          j        |j        |j                  sJ t          |d          r!t          j        |j        |j                  sJ t          |d          r!t          j        |j        |j                  sJ Qd S )NrE   r   r   g      ?   Fr   r   i   )r   rn   scale
zero_pointscale_and_zero)r(   r   r   r   r   r   r   r   r}   datanarrowqdataequalcopy_r[   r  r  r  )rR   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_vllmz?TorchAOIntegrationTestCase._test_slice_and_copy_similar_to_vllm  sM   
 HOOD$vUOCC!V (//$--0088;;ENKK++N%+dDuEEEEF  	 , 
 
 	'6"""

 	 	G*,IHEJ#**:y*MMJ$*1-K#NM)00Y
SSM {;0CA0FGGGGG]+++;z/2M4G4JKKKKKz7++ J{:#3]5HIIIIIz<00 T{:#8-:RSSSSSz#344 {-}/K    '	 	r   c                 v   t           j        }d}d }d}d}d}d}d}	t          |||	||          }
t          |||	||          }t          ||d|	z  ||          }t          j        |||||          }|
|g}|D ]} ||           t           j                            |j                            d	d                                          d
          |_        t           j                            |j	                            d	d                                          d
          |_	        t           j                            |j
                            d	d                                          d
          |_
         |||            ||          }|j        j        d         }t           j                            |j                            d	d                              d|                                          d
          |_        |j	        j        d         }t           j                            |j	                            d	d                              d|                                          d
          |_	        |j
        j        d         }t           j                            |j
                            d	d                              d|                                          d
          |_
        t           j                            |j                            d|df                              d          d
          |_        t           j                            |j	                            d|df                              d          d
          |_	        t           j                            |j
                            d|df                              d          d
          |_
        t           j                            |j                            d	d                                          d
          |_        t           j                            |j	                            d	d                                          d
          |_	        t           j                            |j
                            d	d                                          d
          |_
         ||          }|                     ||           |
                                |                                gdD ]vfdD             }t#          d	t%          |                    D ]H}|d         j        ||         _        t)          ||         d          r|d         j        ||         _        Iwdt,          dt           j        ffd}i }dD ] |          |<   t           j                            |j                            d	d          d
          |_        t           j                            |j	                            d	d          d
          |_	        t           j                            |j
                            d	d          d
          |_
        |                    |d            ||           dS )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)
        rE   c                 *   |                                  D ]}\  }}t          |t                    s|}dD ]]}t          ||          }t          t          |                   }t          |          } |||          }	t          |||	j                   ^~d S )Nw1w2w3)	named_modulesr   r   ry   r   typer   r`   r   )
modelr  rU   moduleexpert_moduleweight_namer   config_handler	dummy_mod	quant_mods
             r   _quantize_expertszRTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>._quantize_experts'  s    "0022 
J 
J	6!&*BCC  &#5 J JK$]K@@F%=d6ll%KN +F 3 3I .y& A AIM;	8HIIIIJ
J 
Jr   rv   r  @   rw      )r   r   rn   Fr   r   dimr+  c                      g | ]
}|         S r    r    )rz   stkeys     r   
<listcomp>zKTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.<listcomp>  s    5552r#w555r   r  rA  r   c                       fdD             } dk    rt          j        |d          S t          j        |d          S )Nc                      g | ]
}|         S r    r    )rz   srA  s     r   rB  z`TorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.process_key.<locals>.<listcomp>  s    333!qv333r   r-  r<  r=  r;  )r(   cat)rA  tensorsstate_dictss   ` r   process_keyzLTorchAOIntegrationTestCase._test_moe_weight_reshape_ops.<locals>.process_key  sR    3333{333G d{{yb1111yb1111r   T)assignN)r(   r   r   r}   r   r   r,  	transpose
contiguousr-  r.  r   reshape	unflattensqueezer   
state_dictrangelenr  r[   r  strr   load_state_dict)rR   r  r   r   r8  
batch_sizenum_experts	input_dimr>  
hidden_dimmoe1moe2moe_combinedinputmoesmoebeforenew_last_dimafterweightsirI  new_state_dictrA  rH  s                          @@r   _test_moe_weight_reshape_opsz7TorchAOIntegrationTestCase._test_moe_weight_reshape_ops  s    	J 	J 	J 
	
'S*eVTT'S*eVTT/a*neV
 
 J	3eFSSSd| <	, <	,CCJJJ X''  A&&11335 (  CF X''  A&&11335 (  CF X''  A&&11335 (  CF c6***SZZF 6<+LX''  A&&..r<@@KKMM# (  CF 6<+LX''  A&&..r<@@KKMM# (  CF 6<+LX''  A&&..r<@@KKMM# (  CF
 X''  ["$566>>1>EE# (  CF X''  ["$566>>1>EE# (  CF X''  ["$566>>1>EE# (  CF X''  A&&11335 (  CF X''  A&&11335 (  CF X''  A&&11335 (  CF CJJEVU++++(($//*;*;<% 	B 	BC5555555G1c'll++ B B#*1:#3
 71:|44 B,3AJ,AGAJ)B
	2S 	2U\ 	2 	2 	2 	2 	2 	2 % 	3 	3C"-+c"2"2N3(,,O%%a++5 - 
 
  (,,O%%a++5 - 
 
  (,,O%%a++5 - 
 
 	$$^D$AAAUr   c                    t           j        }t           j                            ddd|          }t	          ||           |j        }|                    ddd          }|j        D ]f}t          ||          }t          ||          }t          |j
                  t          |j
                  k    sJ d|j
         d|j
                     gd S )Nr   rE   r   rn   r   zshape mismatch: z vs )r(   r   r   r   r   r   r  tensor_data_namesry   rR  r   )	rR   r  r   r  orignewdata_attr_name	orig_attrnew_attrs	            r   _test_narrow_similar_to_vllmz7TorchAOIntegrationTestCase._test_narrow_similar_to_vllm  s     HOOD$vUOCC!Vxkk!Q%%!3 	 	Nn55IsN33Hy''3x~+>+>>>>H9?HHHH ?>>>	 	r   c           	      l   t           j        }t          j        d          5  t           j                            ddd|          }d d d            n# 1 swxY w Y   t           j                            t          j        dddd|                    |_        t          ||           |j        d         }d S )	Nmetar   rE   r   <   i   r   r   )	r(   r   r   r   r   r   r}   r   r   )rR   r  r   r  _w_slices        r   '_test_quantize_3d_param_similar_to_vllmzBTorchAOIntegrationTestCase._test_quantize_3d_param_similar_to_vllm  s    
 \&!! 	H 	Hd6GGA	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H8%%KD$vUCCC
 
 	!V8A;s   $AAAc                     |                     d|          }t          j        ||          }t          j                            |                                |                                dd           d S )Nr  r=  r   )atolrtol)chunkr(   rF  testingassert_closer   )rR   	ao_tensorr>  ao_tensor_chunkedao_tensor_unchunkeds        r   "_test_chunk_similar_to_vllm_llama4z=TorchAOIntegrationTestCase._test_chunk_similar_to_vllm_llama4  s|     &OOA3O77#i(9sCCC""  ""$7$B$B$D$D1ST 	# 	
 	
 	
 	
 	
r   N)	r   r   r   r
   r(  re  rm  rr  r|  r    r   r   r  r    s        /< / / / /bD D DL<    "l    
 
 
 
 
r   r  __main__rQ   )NN)/rY   r1   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#   r4   r=   rA   rH   rM   ri   TestCaserk   r   r   r  instantiate_parametrized_testsr   mainr    r   r   <module>r     s          K K K K K K K K K K K K 0 0 0 0 0 0       
  , , , , , , J J J J J J J J @ @ @ @ @ @ @ @ = = = = = =      I H H H H H       
2      8  2# # # #L    $= = = =>M
 M
 M
 M
 M
<0 M
 M
 M
`Q
 Q
 Q
 Q
 Q
\2 Q
 Q
 Q
ha a a a aO a a aH^
 ^
 ^
 ^
 ^
!6 ^
 ^
 ^
B , +,@ A A A + +,B C C C + +,I J J J zHMOOOOO r   