
    h7                         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Jr  S SK	r	\
\\4   rSrS rS\	R                  4S jrSS\	R                  S\\   4S	 jjr " S
 S5      rS rS r\S:X  a  \" 5         gg)    N)OrderedDict)pprint)Anytuning_resultsc                 \    [        U 5       H  u  pUR                  [        :X  d  M  Us  $    g)N)	enumeratekey_TUNING_RESULTS_KEY)metadata_propsidxprops      Z/var/www/fran/franai/venv/lib/python3.13/site-packages/onnxruntime/tools/offline_tuning.py_find_tuning_results_in_propsr      s*    ~.	88**J /     modelc                     [        U R                  5      nUS:  a  g U R                  U   n[        R                  " UR                  5      $ )Nr   )r   r   jsonloadsvalue)r   r   tuning_results_props      r   extractr      sC    
'(<(<
=C
Qw..s3::)//00r   c                    [        U R                  5      nU(       d  US::  d   S5       eUS:  a  U R                  R                  U5        U R                  R                  5       n[        Ul        [        R                  " U5      Ul        U $ )Nr   z<the supplied onnx file already have tuning results embedded!)	r   r   popaddr   r
   r   dumpsr   )r   r   	overwriter   entrys        r   embedr   #   sr    
'(<(<
=Cq`"`` 
ax  %  $$&E#EI**^,EKLr   c                   V    \ rS rSr " S S5      rS rS\\   4S jrS r	S\4S	 jr
S
rg)Merger0   c                   <    \ rS rSrS\S\\\4   4S jrS rS rSr	g)	Merger.EpAndValidators1   ep
validatorsc                     Xl         [        R                  " U5      U l        U[	        [        UR                  5       5      5      4U l        g N)r&   copydeepcopyr'   tuplesorteditemsr
   )selfr&   r'   s      r   __init__Merger.EpAndValidators.__init__2   s6    G"mmJ7DOE&)9)9);"<=>DHr   c                 ,    [        U R                  5      $ r)   )hashr
   r/   s    r   __hash__Merger.EpAndValidators.__hash__7   s    >!r   c                 t    U R                   UR                   :H  =(       a    U R                  UR                  :H  $ r)   )r&   r
   )r/   others     r   __eq__Merger.EpAndValidators.__eq__:   s'    77ehh&@488uyy+@@r   )r&   r
   r'   N)
__name__
__module____qualname____firstlineno__strdictr0   r5   r9   __static_attributes__ r   r   EpAndValidatorsr$   1   s(    	?s 	?S#X 	?
	"	Ar   rC   c                 "    [        5       U l        g r)   )r   ev_to_resultsr4   s    r   r0   Merger.__init__=   s    (]r   r   c                 8    U H  nU R                  U5        M     g r)   )
_merge_one)r/   r   trss      r   mergeMerger.merge@   s    !COOC  "r   c                    / nU R                   R                  5        Hd  u  p#0 nUR                  UR                  US.nUR                  5        H  u  u  pgnUR	                  U0 5      n	XU'   M      UR                  U5        Mf     U$ )N)r&   r'   results)rE   r.   r&   r'   
setdefaultappend)
r/   r   evflat_resultsrM   rI   op_sig
params_sig	kernel_id
kernel_maps
             r   
get_mergedMerger.get_mergedD   s     $ 2 2 8 8 :BGee mm"C
 4@3E3E3G/$i$//;
)2:& 4H !!#& !; r   rI   c                     [         R                  US   US   5      nU R                  R                  U0 5      nUS   R	                  5        H,  u  pEUR	                  5        H  u  pgXF4U;  d  M  XsXF4'   M     M.     g )Nr&   r'   rM   )r!   rC   rE   rN   r.   )r/   rI   rP   rQ   rR   rU   rS   rT   s           r   rH   Merger._merge_oneS   s{    ##CIs</@A))44R<"%i."6"6"8F)3)9)9);%
'|;9B&!56 *< #9r   )rE   N)r;   r<   r=   r>   rC   r0   listTuningResultsrJ   rV   rH   rA   rB   r   r   r!   r!   0   s7    
A 
A+!D$7 !Cm Cr   r!   c                     [         R                  " 5       n U R                  SSS9nUR                  SSS9nUR	                  S5        UR	                  S5        UR                  S	S
S9nUR	                  SSSSS9  UR	                  SSS9  UR	                  SSS9  UR	                  SSSS9  UR                  SSS9nUR	                  SSS9  UR	                  SSSS9  UR                  SSS9nUR	                  SSS9  U R                  5       n[        [        U5      5      S:X  a  U R                  5         [        S 5        U$ )!NzCommand to executecmd)helpdestr   z2Extract embedded tuning results from an onnx file.)r^   
input_onnxoutput_jsonr   z+Embed the tuning results into an onnx file.z--forcez-f
store_truez+Overwrite the tuning results if it existed.)actionr^   output_onnxzPath of the output onnx file.zPath of the input onnx file.
input_json+z5Path(s) of the tuning results file(s) to be embedded.)nargsr^   rJ   z4Merge multiple tuning results files as a single one.z'Path of the output tuning results file.z/Paths of the tuning results files to be merged.r   z Pretty print the tuning results.json_or_onnxz+A tuning results json file or an onnx file.r   r   )
argparseArgumentParseradd_subparsers
add_parseradd_argument
parse_argslenvars
print_helpexit)parsersub_parsersextract_parserembed_parsermerge_parserpprint_parserargss          r   rn   rn   \   sd   $$&F''-A'NK ++I<p+qN-.))'8e)fLilIvwm2QRl1OPl#<st))'8n)oLm2[\l#<mn**8:\*]M~4abD
4:!RKr   c                     [        5       n U R                  S:X  a  [        [        R                  " U R
                  5      5      nUcB  [        R                  R                  U R
                   S35        [        R                  " S5        [        R                  " U[        U R                  S5      5        g U R                  S:X  a  [        R                  " U R
                  5      n[        5       nU R                   Vs/ s H"  n[        R                   " [        U5      5      PM$     sn H  nUR#                  U5        M     [%        X#R'                  5       U R(                  5      n[        R*                  " X R,                  5        g U R                  S:X  a  [        5       nU R                   Vs/ s H"  n[        R                   " [        U5      5      PM$     sn H  nUR#                  U5        M     [        R                  " UR'                  5       [        U R                  S5      5        g U R                  S:X  a  S n [        R                   " [        U R.                  5      5      nUcq   [        R                  " U R.                  5      n[        U5      nUcB  [        R                  R                  U R
                   S35        [        R                  " S5        UcB  [        R                  R                  U R.                   S35        [        R                  " S5        [3        U5        g g s  snf s  snf ! [0         a     Nf = f! [0         a     Nxf = f)	Nr   z( does not have tuning results embedded!
r   wr   rJ   r   z1 is not a valid tuning results file or onnx file!)rn   r]   r   onnx
load_modelr`   sysstderrwriterr   r   dumpopenra   r!   re   loadrJ   r   rV   force
save_modelrd   rh   	Exceptionr   )ry   r   r   mergerfs        r   mainr   x   sj   <Dxx9 !AB!JJ00YZ[HHRL		.$t'7'7"=>	W	0;???K?atyya1?KNLL( Le..0$**=//0	W	;???K?atyya1?KNLL( L		&##%tD,<,<c'BC	X		!YYtD,=,='>?N
 !(9(9:!(!)JJ$$'88a%bcHHRL !JJ 1 122cdeHHRL~ 	E L L  		  s1   =)L..)L3?)L8 ,A0M 8
MM
MM__main__)F)ri   r*   r   r~   collectionsr   r   typingr   r|   r@   r?   r[   r   r   
ModelProtor   rZ   r   r!   rn   r   r;   rB   r   r   <module>r      s       
 #   S#X& 14?? 1
 
$}2E 
)C )CX8-` zF r   