
    i/                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJr  S SKr1 SkrS SKJr  S SKJr  S SKJrJr  S SKJr  S S	KJrJrJrJrJrJrJr  S S
K J!r!  S SK"J#r$  SSS.r%S\RL                  RN                  S\(4S jr)S\*S\+4S jr,   S%S\RZ                  R\                  S\S\S\*S\*S\+S\/S-  S\S-  S\(S\*S-  S\4S jjr0S\4S jr1S  r2S!\ Rf                  S\4S" jr4S# r5\6S$:X  a  \5" 5         gg)&    N)	timedelta)Any>   aten::medianaten::median.dimaten::_embedding_bagaten::round.decimalsaten::adaptive_max_pool2daten::_adaptive_avg_pool2d)ErrorStatistics)	StageType)discover_tests
TestFilter)TestFlow)begin_test_sessioncomplete_test_session	count_opsget_active_test_session
RunSummaryTestCaseSummary
TestResult)EdgeProgramManager)opsz%executorch.backends.test.suite.modelsz(executorch.backends.test.suite.operators)models	operatorsprogramreturnc                 B   U R                   R                   H  nUR                  S:X  d  M  UR                  [        R
                  R                  R                  R                  :X  d  MS  UR                  S   R                  S   R                  5       nUS:  d  M    g   g)Ncall_functionr   val   TF)graphnodesoptargetexir_opsedgeatenconvolutiondefaultargsmetadim)r   nodein_ranks      d/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/executorch/backends/test/suite/runner.py_graph_has_unsupported_patternsr0   2   sv     ##GG&x}}11==EEEiil''.224G{ $     test_base_namec                 $   [        5       nUb  UR                  O[        R                  " SS5      n[        R
                  " 5       nU R                  S5      nUR                  U5        [        R                  UR                  5       S5      S-  U-   $ )Nr    zutf-8little)r   seedrandomrandinthashlibmd5encodeupdateint
from_bytesdigest)r2   test_sessionrun_seedhasherdatas        r/   _get_test_seedrD   D   s|    
 +,L # 	^^A{+  [[]F  )D
MM$NN6==?H5CxOOr1   modelinputsflow	test_namesubtest_indexparamsdynamic_shapesgenerate_random_test_inputsartifact_dirc
           	      `  ^^^^^^^ / m0 m[         R                  " [        T5      5         SS[        S[        S-  S[
        4UUUUUUU4S jjjn
 U " U6    TR                  X5      nTR                  (       al  [        R                  " 5       n UR                  TR                  (       a  TR                  5       OS5        [        R                  " 5       U-
  n[        US9TS'    UR                  UR!                  ["        R$                  US95        [        R                  " 5       n UR'                  S	S
9  [        R                  " 5       U-
  n[        US9TS'   UR+                  5       n[-        SUR.                  R0                  05      n[-        UR2                  5      nUU-
  nUTS'   UTS'   [5        S UR6                  UR8                     R:                  R<                  R>                   5       5      n[5        S URA                  5        5       5      =(       d    [C        UR.                  R0                  5      nU(       a  U
" [        R                  5      $ U(       d  TRD                  (       Gd8   URG                  5         TRH                  (       a,  URK                  5         [M        UR+                  5       5      TS'   SnU	(       a   TRO                  S5      nTS:  a  U ST 3OUn URQ                  U(       a  SOUU4S jSSU	US9  U	(       a  U(       a  TRH                  (       a  [X        RZ                  " [\        5      n [^        R`                  Rc                  U	U S35      nUR6                  ["        Rd                     Rg                  U5        URi                  SU 35        OOU
" [        Rl                  5      $ U
" [        Rn                  5      $ ! [         a!  nU
" [        R                  U5      s SnA$ SnAff = f! [         a!  nU
" [        R                  U5      s SnA$ SnAff = f! [         aE  n[        R                  " 5       U-
  n[        US9TS'   U
" [        R                  U5      s SnA$ SnAff = f! [         a!  nU
" [        R                  U5      s SnA$ SnAff = f! [         aE  n[        R                  " 5       U-
  n[        US9TS'   U
" [        R(                  U5      s SnA$ SnAff = f! [         a!  nU
" [        R                  U5      s SnA$ SnAff = f! [R         a!  nU
" [        RT                  U5      s SnA$ SnAf[         a!  nU
" [        RV                  U5      s SnA$ SnAff = f! [         a    URk                  SU 3S	S9   GNf = f)zg
Top-level test run function for a model, input set, and tester. Handles test execution
and reporting.
Nresulterrorr   c                 V   > [        STR                  TTTR                  TTU UTS.	TD6$ )N)	backend	base_namerI   rG   namerJ   rO   rP   tensor_error_statistics )r   rR   rT   )	rO   rP   error_statisticsextra_statsrG   rJ   rI   r2   rH   s	     r/   build_resultrun_test.<locals>.build_resultn   sD      
LL$'$4
 
 	
r1   )secondsquantize_time)rK   T)generate_etrecord
lower_timeforwarddelegated_op_countsundelegated_op_countsc              3      #    U  H>  nUR                   S :X  d  M  UR                  [        R                  R                  :H  v   M@     g7f)r   N)r#   r$   torch_higher_order_opsexecutorch_call_delegate).0ns     r/   	<genexpr>run_test.<locals>.<genexpr>   s;      CA44?" 	EE++DDDCs
   A.Ac              3   2   #    U  H  o[         ;   v   M     g 7fN)UNSUPPORTED_PORTABLE_OPS)rf   r#   s     r/   rh   ri      s      1M2&&1Ms   pte_size_bytestest_r   _c                 &   > TR                  U 5      $ rk   )append)statsrW   s    r/   <lambda>run_test.<locals>.<lambda>   s    2B2I2I%2Pr1   g?g{Gz?)rF   statistics_callbackatolrtolrM   artifact_namez.ptezSaved golden .pte to zFailed to save .pte for )exc_infork   )8rc   manual_seedrD   r   	Exceptionr   SKIPPEDtester_factoryUNKNOWN_FAILquantizetimeperf_counterquantize_stage_factoryr   QUANTIZE_FAILexport_get_default_stager   EXPORTto_edge_transform_and_lower
LOWER_FAILget_artifactr   	_etrecordedge_dialect_program_edge_programsanystagescurgraph_moduler!   r"   keysr0   is_delegatedto_executorchsupports_serialize	serializelenremoveprefixrun_method_and_compare_outputsAssertionErrorOUTPUT_MISMATCH_FAILPTE_RUN_FAILlogging	getLogger__name__ospathjoin	SERIALIZEdump_artifactinfowarningSUCCESS_UNDELEGATEDSUCCESS)rE   rF   rG   rH   r2   rI   rJ   rK   rL   rM   rY   etester
start_timeelapsedlower_start_timeedge_manageredge_op_countsra   r`   r   has_unsupported_opsrx   baseloggerpte_pathrW   rX   s     `````                   @@r/   run_testr   W   s   " /1K	n^45 7;

#,t#3
	
 
"3v8$$U3 }}&&(
		=OO151L1L++-RV '')J6G+4W+EK(3%%i&6&6~%V	
 ((*6**T*B##%(88$-g$>L! (.':':'<L	<+A+A+V+VWXN%l&A&AB(+@@)<K%&+@K'( vzz*77==CC L  1F1K1K1M  V	()?)?)T)T	U 
 J..// 4,,,		<  "&&  "03F4G4G4I0J,- !..w7D9F9JtfAm_5PTM
	<11:t$P)+ 2  Md.E.E&&x0F77<<t6LMi112@@J3H:>? J::;;
**++g  3J..223
  8J33Q778  	='')J6G+4W+EK(
 8 8!<<	=  3J..223  6##%(88$-g$>L!J111556N  	<  
 7 7;;	<,  	D
 ? ?CC 	<
 7 7;;	<  .}o>  s   O P AP5 '-R *3R5 6AT -!T5 A#V 
P#O?9P?P
P2P-'P2-P25
R?:Q?9R?R
R2R-'R2-R25
T?:S?9T?T
T2T-'T2-T25
V	?UV	V	(V>V	V	V-,V-summaryc                    [        5         [        S5        [        5         [        U R                  S SU R                   35        [        U R                  S SU R                   35        [        U R                  S SU R                   35        [        5         [        S5        [        U R
                  R                  [        R                  S5      S S35        [        U R
                  R                  [        R                  S5      S S	35        [        5         [        S
5        [        U R
                  R                  [        R                  S5      S S35        [        U R
                  R                  [        R                  S5      S S35        [        U R
                  R                  [        R                  S5      S S35        [        U R
                  R                  [        R                  S5      S S35        [        U R
                  R                  [        R                  S5      S S35        [        5         g )NzTest Session Summary:z>5z
 Passed / z
 Failed / z Skipped / z	[Success]r   z
 Delegatedz Undelegatedz	[Failure]z Quantization Failz Lowering Failz PTE Load Failz PTE Run Failz Output Mismatch Fail)printtotal_passednum_test_casestotal_failedtotal_skippedaggregated_resultsgetr   r   r   r   r   PTE_LOAD_FAILr   r   )r   s    r/   print_summaryr      s   	G	
!"	G	W!!"%Z0F0F/G
HI	W!!"%Z0F0F/G
HI	W""2&k'2H2H1I
JK	G	+	W''++J,>,>B2Fj
QR	%%))**H*H!LR
PP\] 
G	+	%%))**B*BAFr
JJ\] 
%%))**?*?CB
G~V 
%%))**B*BAFr
J.Y 
%%))**A*A1Eb
IW 
%%))**I*I1Mb
QQfg 
Gr1   c                  V   [         R                  " SSS9n U R                  SSS[        R	                  5       S/S9  U R                  S	S
SSS9  U R                  SSSSS9  U R                  SSSSS9  U R                  SSSSSS9  U R                  SSS[
        S9  U R                  5       $ )NzExecuTorch Backend Test SuitezRun ExecuTorch backend tests.)progdescriptionsuite*zThe test suite to run.r   )nargshelpchoicesr)   z-bz	--backendz The backend or backends to test.)r   r   z-lz--flowzThe flow or flows to test.z-fz--filter?z+A regular expression filter for test names.z-rz--reportz2A file to write the test report to, in CSV format.zbackend_test_report.csv)r   r   r)   z--seedz4The numeric seed value to use for random generation.)r   r   type)argparseArgumentParseradd_argumentNAMED_SUITESr   r=   
parse_args)parsers    r/   r   r     s    $$,3F %!!#   k+M   hc8TU
j*W   A)   C	   r1   r*   c                     [        U R                  b  [        U R                  5      OS U R                  b  [        U R                  5      OS U R                  b"  [
        R                  " U R                  5      S9$ S S9$ )N)backendsflows
name_regex)r   rR   setrG   filterrecompile)r*   s    r/   build_test_filterr   ?  sf    &*ll&>T\\"D $		 5c$))n4.2kk.E2::dkk*  LP r1   c                     [        5       n U R                  =(       d    [        R                  " SS5      n[	        SU S35        [        U R                  US9  [        U R                  5      S:  a  [        S5      e[        U R                  S      n[        R                  " U5      n[        U 5      n[        X45      n[        R                   " SS	9R#                  U5        [%        5       n['        U5        g )
Nr   r4   zRunning with seed .)r6      zTODO Support multiple suites.   )	verbosity)r   r6   r7   r8   r   r   reportr   r   NotImplementedErrorr   	importlibimport_moduler   r   unittestTextTestRunnerrunr   r   )r*   r6   	test_path	test_roottest_filterr   r   s          r/   runner_mainr   G  s    <D996q+6D	tfA
&'t{{.
4::!"ABBTZZ]+I''	2I#D)K92Ea(,,U3#%G'r1   __main__)NTN)7r   r9   r   r   r   r7   r   r   r   datetimer   typingr   rc   rl   1executorch.backends.test.harness.error_statisticsr   'executorch.backends.test.harness.stagesr   (executorch.backends.test.suite.discoveryr   r   #executorch.backends.test.suite.flowr   (executorch.backends.test.suite.reportingr   r   r   r   r   r   r   executorch.exirr   executorch.exir.dialects._opsr   r%   r   r   ExportedProgramboolr0   strr=   rD   nnModuledictr   r   r   	Namespacer   r   r   rV   r1   r/   <module>r      sy       	  	       N = O 8   / 9
 6;U\\-I-I d $P3 P3 P6 "&(,#],88??],], ], 	],
 ], ], 4K], $J], "&], *], ],@": "J FH.. : , zM r1   