§
    kŠtj7  ã                   óø   — 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 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¦   «          dS dS )é    N)ÚOrderedDict)Úpprint)ÚAnyÚtuning_resultsc                 óX   — t          | ¦  «        D ]\  }}|j        t          k    r|c S ŒdS )Néÿÿÿÿ)Ú	enumerateÚkeyÚ_TUNING_RESULTS_KEY)Úmetadata_propsÚidxÚprops      ú^/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/onnxruntime/tools/offline_tuning.pyÚ_find_tuning_results_in_propsr      s>   € Ý˜~Ñ.Ô.ð ð ‰	ˆˆTØŒ8Õ*Ò*Ð*ØˆJˆJˆJð +àˆ2ó    Úmodelc                 ó†   — t          | j        ¦  «        }|dk     rd S | j        |         }t          j        |j        ¦  «        S )Nr   )r   r   ÚjsonÚloadsÚvalue)r   r   Útuning_results_props      r   Úextractr      sB   € Ý
'¨Ô(<Ñ
=Ô
=€CØ
ˆQ‚w€wØˆtàÔ.¨sÔ3ÐÝŒ:Ð)Ô/Ñ0Ô0Ð0r   Fc                 ó  — t          | j        ¦  «        }|s|dk    s
J d¦   «         ‚|dk    r| 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   #   s}   € Ý
'¨Ô(<Ñ
=Ô
=€CØÐ`˜˜qš˜˜Ð"`™œÐ à
ˆa‚x€xØÔ× Ò  Ñ%Ô%Ð%àÔ ×$Ò$Ñ&Ô&€EÝ#€E„IÝ”*˜^Ñ,Ô,€E„KØ€Lr   c                   óX   — e Zd Z G d„ d¦  «        Zd„ Zdee         fd„Zd„ Zdefd„Z	d	S )
ÚMergerc                   ó:   — e Zd Zdedeeef         fd„Zd„ Zd„ ZdS )úMerger.EpAndValidatorsÚepÚ
validatorsc                 ó°   — || _         t          j        |¦  «        | _        |t	          t          |                     ¦   «         ¦  «        ¦  «        f| _        d S ©N)r$   ÚcopyÚdeepcopyr%   ÚtupleÚsortedÚitemsr
   )Úselfr$   r%   s      r   Ú__init__zMerger.EpAndValidators.__init__2   sF   € ØˆDŒGÝ"œm¨JÑ7Ô7ˆDŒOØ�E¥&¨×)9Ò)9Ñ);Ô);Ñ"<Ô"<Ñ=Ô=Ð>ˆDŒHˆHˆHr   c                 ó*   — t          | j        ¦  «        S r'   )Úhashr
   ©r-   s    r   Ú__hash__zMerger.EpAndValidators.__hash__7   s   € Ý˜œ‘>”>Ð!r   c                 óB   — | j         |j         k    o| j        |j        k    S r'   )r$   r
   )r-   Úothers     r   Ú__eq__zMerger.EpAndValidators.__eq__:   s   € Ø”7˜eœhÒ&Ð@¨4¬8°u´yÒ+@Ð@r   N)Ú__name__Ú
__module__Ú__qualname__ÚstrÚdictr.   r2   r5   © r   r   ÚEpAndValidatorsr#   1   sa   € € € € € ð	?˜sð 	?°°S¸#°X´ð 	?ð 	?ð 	?ð 	?ð
	"ð 	"ð 	"ð	Að 	Að 	Að 	Að 	Ar   r<   c                 ó,   — t          ¦   «         | _        d S r'   )r   Úev_to_resultsr1   s    r   r.   zMerger.__init__=   s   € Ý(™]œ]ˆÔÐÐr   r   c                 ó:   — |D ]}|                       |¦  «         Œd S r'   )Ú
_merge_one)r-   r   Útrss      r   ÚmergezMerger.merge@   s0   € Ø!ð 	!ð 	!ˆCØ�OŠO˜CÑ Ô Ð Ð ð	!ð 	!r   c                 ó  — g }| j                              ¦   «         D ]d\  }}i }|j        |j        |dœ}|                     ¦   «         D ]#\  \  }}}|                     |i ¦  «        }	||	|<   Œ$|                     |¦  «         Œe|S )N)r$   r%   Úresults)r>   r,   r$   r%   Ú
setdefaultÚappend)
r-   r   ÚevÚflat_resultsrD   rA   Úop_sigÚ
params_sigÚ	kernel_idÚ
kernel_maps
             r   Ú
get_mergedzMerger.get_mergedD   s¯   € ØˆØ $Ô 2× 8Ò 8Ñ :Ô :ð 
	'ð 
	'ÑˆB�ØˆGà”eØ œmØ"ðð ˆCð
 4@×3EÒ3EÑ3GÔ3Gð 3ð 3Ñ/Ñ$�˜ iØ$×/Ò/°¸Ñ;Ô;�
Ø)2�
˜:Ñ&Ð&Ø×!Ò! #Ñ&Ô&Ð&Ð&ØÐr   rA   c                 ó  — t                                |d         |d         ¦  «        }| j                             |i ¦  «        }|d                              ¦   «         D ],\  }}|                     ¦   «         D ]\  }}||f|vr||||f<   ŒŒ-d S )Nr$   r%   rD   )r!   r<   r>   rE   r,   )r-   rA   rG   rH   rI   rL   rJ   rK   s           r   r@   zMerger._merge_oneS   s²   € Ý×#Ò# C¨¤I¨s°<Ô/@ÑAÔAˆØÔ)×4Ò4°R¸Ñ<Ô<ˆØ"% i¤.×"6Ò"6Ñ"8Ô"8ð 	Cð 	CÑˆF�JØ)3×)9Ò)9Ñ);Ô);ð Cð CÑ%�
˜IØ˜JÐ'¨|Ð;Ð;Ø9B�L &¨*Ð!5Ñ6øðCð	Cð 	Cr   N)
r6   r7   r8   r<   r.   ÚlistÚTuningResultsrB   rM   r@   r;   r   r   r!   r!   0   s¤   € € € € € ð
Að 
Að 
Að 
Að 
Añ 
Aô 
Að 
Að+ð +ð +ð! D¨Ô$7ð !ð !ð !ð !ðð ð ðC˜mð Cð Cð Cð Cð Cð Cr   r!   c                  ó^  — t          j        ¦   «         } |                      dd¬¦  «        }|                     dd¬¦  «        }|                     d¦  «         |                     d¦  «         |                     d	d
¬¦  «        }|                     dddd¬¦  «         |                     dd¬¦  «         |                     dd¬¦  «         |                     ddd¬¦  «         |                     dd¬¦  «        }|                     dd¬¦  «         |                     ddd¬¦  «         |                     dd¬¦  «        }|                     dd¬¦  «         |                      ¦   «         }t          t          |¦  «        ¦  «        dk    r#|                      ¦   «          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   rB   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   \   s½  € ÝÔ$Ñ&Ô&€FØ×'Ò'Ð-AÈÐ'ÑNÔN€Kà ×+Ò+¨IÐ<pÐ+ÑqÔq€NØ×Ò Ñ-Ô-Ð-Ø×Ò Ñ.Ô.Ð.à×)Ò)¨'Ð8eÐ)ÑfÔf€LØ×Ò˜i¨°lÐIvÐÑwÔwÐwØ×Ò˜mÐ2QÐÑRÔRÐRØ×Ò˜lÐ1OÐÑPÔPÐPØ×Ò˜l°#Ð<sÐÑtÔtÐtà×)Ò)¨'Ð8nÐ)ÑoÔo€LØ×Ò˜mÐ2[ÐÑ\Ô\Ð\Ø×Ò˜l°#Ð<mÐÑnÔnÐnà×*Ò*¨8Ð:\Ð*Ñ]Ô]€MØ×Ò˜~Ð4aÐÑbÔbÐbà×ÒÑÔ€DÝ
�4�‰:Œ:�„˜!ÒÐØ×ÒÑÔÐÝˆR‰ŒˆØ€Kr   c                  ó¦  — t          ¦   «         } | j        dk    r�t          t          j        | j        ¦  «        ¦  «        }|€;t          j                             | j        › d�¦  «         t          j	        d¦  «         t          j        |t          | j        d¦  «        ¦  «         d S | j        dk    r”t          j        | j        ¦  «        }t          ¦   «         }d„ | j        D ¦   «         D ]}|                     |¦  «         Œt#          ||                     ¦   «         | j        ¦  «        }t          j        || j        ¦  «         d S | j        dk    rst          ¦   «         }d„ | j        D ¦   «         D ]}|                     |¦  «         Œt          j        |                     ¦   «         t          | j        d¦  «        ¦  «         d S | j        d	k    �rd }	 t          j        t          | j        ¦  «        ¦  «        }n# t0          $ r Y nw xY w|€w	 t          j        | j        ¦  «        }t          |¦  «        }|€;t          j                             | j        › d�¦  «         t          j	        d¦  «         n# t0          $ r Y nw xY w|€;t          j                             | j        › d
�¦  «         t          j	        d¦  «         t3          |¦  «         d S d S )Nr   z( does not have tuning results embedded!
r   Úwr   c                 óP   — g | ]#}t          j        t          |¦  «        ¦  «        ‘Œ$S r;   ©r   ÚloadÚopen©Ú.0Úfs     r   ú
<listcomp>zmain.<locals>.<listcomp>ƒ   ó(   € ÐKÐKÐK°a�tœy­¨a©¬Ñ1Ô1ÐKÐKÐKr   rB   c                 óP   — g | ]#}t          j        t          |¦  «        ¦  «        ‘Œ$S r;   rr   ru   s     r   rx   zmain.<locals>.<listcomp>‰   ry   r   r   z1 is not a valid tuning results file or onnx file!)rc   rR   r   ÚonnxÚ
load_modelrU   ÚsysÚstderrÚwriterg   r   Údumprt   rV   r!   rZ   rB   r   rM   ÚforceÚ
save_modelrY   rs   r]   Ú	Exceptionr   )rn   r   r   Úmergers       r   Úmainr…   x   s¾  € Ý‰<Œ<€DØ„x�9ÒÐÝ ¥¤°´Ñ!AÔ!AÑBÔBˆØÐ!ÝŒJ×Ò ¤ÐZÐZÐZÑ[Ô[Ð[ÝŒH�R‰LŒLˆLÝŒ	�.¥$ tÔ'7¸Ñ"=Ô"=Ñ>Ô>Ð>Ð>Ð>Ø	Œ�WÒ	Ð	Ý” ¤Ñ0Ô0ˆÝ‘”ˆØKÐK¸4¼?ÐKÑKÔKð 	)ð 	)ˆNØ�LŠL˜Ñ(Ô(Ð(Ð(Ý�e˜V×.Ò.Ñ0Ô0°$´*Ñ=Ô=ˆÝŒ˜˜tÔ/Ñ0Ô0Ð0Ð0Ð0Ø	Œ�WÒ	Ð	Ý‘”ˆØKÐK¸4¼?ÐKÑKÔKð 	)ð 	)ˆNØ�LŠL˜Ñ(Ô(Ð(Ð(ÝŒ	�&×#Ò#Ñ%Ô%¥t¨DÔ,<¸cÑ'BÔ'BÑCÔCÐCÐCÐCØ	Œ�XÒ	Ñ	Øˆð	Ý!œY¥t¨DÔ,=Ñ'>Ô'>Ñ?Ô?ˆNˆNøÝð 	ð 	ð 	àˆDð	øøøð Ð!ðÝœ¨Ô(9Ñ:Ô:�Ý!(¨¡¤�Ø!Ð)Ý”J×$Ò$¨¬Ð%bÐ%bÐ%bÑcÔcÐcÝ”H˜R‘L”L�LøøÝð ð ð Ø�ðøøøð Ð!ÝŒJ×Ò Ô 1ÐdÐdÐdÑeÔeÐeÝŒH�R‰LŒLˆLåˆ~ÑÔÐÐÐð 	ˆs%   Ç&G: Ç:
HÈHÈA%I3 É3
J É?J Ú__main__)F)r^   r(   r   r}   Úcollectionsr   r   Útypingr   r{   r:   r9   rP   r   r   Ú
ModelProtor   rO   r   r!   rc   r…   r6   r;   r   r   ú<module>rŠ      sK  ðð €€€Ø €€€Ø €€€Ø 
€
€
€
Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€à�S˜#�X”€à&Ð ðð ð ð1�4”?ð 1ð 1ð 1ð 1ð
ð 
�”ð 
°$°}Ô2Eð 
ð 
ð 
ð 
ð)Cð )Cð )Cð )Cð )Cñ )Cô )Cð )CðXð ð ð8-ð -ð -ð` ˆzÒÐØ€D�F„F€F€F€Fð Ðr   