
    gC                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlZe	eef   ZdZd Zdej                   fdZddej                   de
e   fd	Z G d
 d      Zd Zd Zedk(  r e        yy)    N)OrderedDict)pprint)AnyDictListtuning_resultsc                 X    t        |       D ]  \  }}|j                  t        k(  s|c S  y)N)	enumeratekey_TUNING_RESULTS_KEY)metadata_propsidxprops      U/var/www/openai/venv/lib/python3.12/site-packages/onnxruntime/tools/offline_tuning.py_find_tuning_results_in_propsr      s,    ~.	T88**J /     modelc                     t        | j                        }|dk  ry | j                  |   }t        j                  |j                        S )Nr   )r   r   jsonloadsvalue)r   r   tuning_results_props      r   extractr      sC    
'(<(<
=C
Qw..s3::)//00r   c                 
   t        | j                        }|s|dk  sJ d       |dk\  r| j                  j                  |       | j                  j                         }t        |_        t        j                  |      |_        | S )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                   J    e Zd Z G d d      Zd Zdee   fdZd ZdefdZ	y	)
Mergerc                   2    e Zd Zdedeeef   fdZd Zd Zy)Merger.EpAndValidatorsep
validatorsc                     || _         t        j                  |      | _        |t	        t        |j                                     f| _        y N)r&   copydeepcopyr'   tuplesorteditemsr   )selfr&   r'   s      r   __init__zMerger.EpAndValidators.__init__2   s8    DG"mmJ7DOE&)9)9);"<=>DHr   c                 ,    t        | j                        S r)   )hashr   r/   s    r   __hash__zMerger.EpAndValidators.__hash__7   s    >!r   c                 j    | j                   |j                   k(  xr | j                  |j                  k(  S r)   )r&   r   )r/   others     r   __eq__zMerger.EpAndValidators.__eq__:   s'    77ehh&@488uyy+@@r   N)__name__
__module____qualname__strr   r0   r4   r7    r   r   EpAndValidatorsr%   1   s(    	?s 	?S#X 	?
	"	Ar   r=   c                 "    t               | _        y r)   )r   ev_to_resultsr3   s    r   r0   zMerger.__init__=   s    (]r   r   c                 4    |D ]  }| j                  |        y r)   )
_merge_one)r/   r   trss      r   mergezMerger.merge@   s    !COOC  "r   c                    g }| j                   j                         D ]d  \  }}i }|j                  |j                  |d}|j                         D ]  \  \  }}}|j	                  |i       }	||	|<   ! |j                  |       f |S )N)r&   r'   results)r?   r.   r&   r'   
setdefaultappend)
r/   r   evflat_resultsrE   rB   op_sig
params_sig	kernel_id
kernel_maps
             r   
get_mergedzMerger.get_mergedD   s     $ 2 2 8 8 :BGee mm"C
 4@3E3E3G/$i$//;
)2
:& 4H !!#& !; r   rB   c                     t         j                  |d   |d         }| j                  j                  |i       }|d   j	                         D ]+  \  }}|j	                         D ]  \  }}||f|vs||||f<    - y )Nr&   r'   rE   )r#   r=   r?   rF   r.   )r/   rB   rH   rI   rJ   rM   rK   rL   s           r   rA   zMerger._merge_oneS   s    ##CIs</@A))44R<"%i."6"6"8FJ)3)9)9);%
IJ'|;9BL&*!56 *< #9r   N)
r8   r9   r:   r=   r0   r   TuningResultsrC   rN   rA   r<   r   r   r#   r#   0   s7    
A 
A+!D$7 !Cm Cr   r#   c                     t        j                         } | j                  dd      }|j                  dd      }|j	                  d       |j	                  d       |j                  d	d
      }|j	                  dddd       |j	                  dd       |j	                  dd       |j	                  ddd       |j                  dd      }|j	                  dd       |j	                  ddd       |j                  dd      }|j	                  dd       | j                         }t        t        |            dk(  r| j                          t        d        |S )!NzCommand to executecmd)helpdestr   z2Extract embedded tuning results from an onnx file.)rS   
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.)actionrS   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.)nargsrS   rC   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   rc   rc   \   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                  t   t               } | j                  dk(  rt        t        j                  | j
                              }|At        j                  j                  | j
                   d       t        j                  d       t        j                  |t        | j                  d             y | j                  dk(  rt        j                  | j
                        }t               }| j                  D cg c]   }t        j                   t        |            " c}D ]  }|j#                  |        t%        ||j'                         | j(                        }t        j*                  || j,                         y | j                  dk(  rt               }| j                  D cg c]   }t        j                   t        |            " c}D ]  }|j#                  |        t        j                  |j'                         t        | j                  d             y | j                  dk(  rd }	 t        j                   t        | j.                              }|n	 t        j                  | j.                        }t        |      }|At        j                  j                  | j
                   d       t        j                  d       |At        j                  j                  | j.                   d       t        j                  d       t3        |       y y c c}w c c}w # t0        $ r Y w xY w# t0        $ r Y tw xY w)	Nr   z( does not have tuning results embedded!
r
   wr!   rC   r   z1 is not a valid tuning results file or onnx file!)rc   rR   r   onnx
load_modelrU   sysstderrwriterg   r   dumpopenrV   r#   rZ   loadrC   r!   rN   force
save_modelrY   r]   	Exceptionr   )rn   r   r   mergerfs        r   mainr~   x   sn   <Dxx9 !AB!JJ00YZ[HHRL		.$t'7'7"=>	W	0;???K?atyya1?KNLL( LeV..0$**=t//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   6%L!%L*(L A-L+ 	L('L(+	L76L7__main__)F)r^   r*   r   rs   collectionsr   r   typingr   r   r   rq   r;   rP   r   r   
ModelProtor   r!   r#   rc   r~   r8   r<   r   r   <module>r      s       
 #  " " S#X& 14?? 1
 
$}2E 
)C )CX8-` zF r   