Ë
    �\;jGi  ã                   ó˜   — d dl Z d dlZej                  fd„Zdd„Z G d„ d«      Z G d„ d«      Z G d„ d	«      Zdd
„Z	dd„Z
d„ Z	 	 dd„Zy)é    Nc                 ó¤   — t        j                  | g«      j                  |«      }t        j                  |«      xs t        j                  |«      S ©N)ÚnpÚarrayÚastypeÚisinfÚisnan)ÚvalueÚdtyper   s      údG:\00. PROJECTS\API\Inventory\templateJSON\kerjaOCR\Lib\site-packages\paddle/amp/accuracy_compare.pyÚis_infiniter      s8   € ä�H‰H�e�WÓ×$Ñ$ UÓ+€EÜ�8‰8�E‹?Ò-œbŸh™h u›oÐ-ó    c                 ó„   — t        j                  t        j                  | g«      t        j                  |g«      ||¬«      S )N)ÚatolÚrtol)r   Úallcloser   )ÚactualÚexpectedr   r   s       r   Úis_allcloser      s2   € Ü�;‰;Ü
�‰�&�ÓœBŸH™H h ZÓ0°tÀ$ôð r   c                   ó$   — e Zd Zd„ Zd„ Zd„ Zd„ Zy)Ú
TensorInfoc                 óž   — d | _         d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        y r   )ÚdeviceÚop_typeÚtensor_namer   ÚnumelÚ	max_valueÚ	min_valueÚ
mean_valueÚhas_infÚhas_nanÚnum_zero©Úselfs    r   Ú__init__zTensorInfo.__init__#   sP   € ØˆŒØˆŒØˆÔØˆŒ
ØˆŒ
ØˆŒØˆŒØˆŒØˆŒØˆŒØˆ�r   c                 ó  — dj                  | j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                  | j                  | j                  «      S )Nz¢[TensorInfo] device={}, op_type={}, tensor_name={}, dtype={}, numel={}, num_inf={}, num_nan={}, num_zero={}, max_value={:.6f}, min_value={:.6f}, mean_value={:.6f})Úformatr   r   r   r   r   r    r!   r"   r   r   r   r#   s    r   Ú__str__zTensorInfo.__str__0   sm   € ð t÷  {ñ  {Ø�K‰KØ�L‰LØ×ÑØ�J‰JØ�J‰JØ�L‰LØ�L‰LØ�M‰MØ�N‰NØ�N‰NØ�O‰Oó
ð 	
r   c                 ó:   — | j                   dz   | j                  z   S )NÚ/)r   r   r#   s    r   ÚkeyzTensorInfo.key?   s   € ð �|‰|˜cÑ! D×$4Ñ$4Ñ4Ð4r   c                 ó¸  — 	 |j                  «       j                  d«      }|D �]�  }|j                  dd«      j                  dd«      j                  dd«      }|j                  d«      }|d   dk(  r|d	   | _        ŒZ|d   d
k(  r|d	   | _        Œm|d   dk(  r|d	   | _        Œ€|d   dk(  r|d	   | _        Œ“|d   dk(  rt        j                  |d	   «      | _	        Œ¹|d   dk(  rt        j                  |d	   «      | _        Œß|d   dk(  rt        j                  |d	   «      | _        �Œ|d   dk(  rt        j                  |d	   «      | _        �Œ-|d   dk(  rt        |d	   «      | _        �ŒJ|d   dk(  rt        |d	   «      | _        �Œg|d   dk(  s�Œqt        j                  |d	   «      | _        �Œ� 	 | S # t$        $ r}t'        d|› �«       Y d }~| S d }~ww xY w)NÚ Ú[Ú Ú]Ú,Ú=r   Úopé   r   Útensorr   r   ÚmaxÚminÚmeanÚnum_infÚnum_nanr"   z!! Error parsing )ÚstripÚsplitÚreplacer   r   r   r   r   Úint64r   Úfloat32r   r   r   Úintr    r!   r"   Ú	ExceptionÚprint)r$   ÚlineÚ
line_fragsÚfragÚword_strÚwordsÚes          r   Úinit_from_stringzTensorInfo.init_from_stringD   sÈ  € ð	.ØŸ™›×+Ñ+¨CÓ0ˆJÜ"�à—L‘L  bÓ)×1Ñ1°#°rÓ:×BÑBÀ3ÈÓKð ð !Ÿ™ sÓ+�Ø˜‘8˜tÒ#Ø#(¨¡8�D•LØ˜1‘X Ò)Ø"'¨¡(�D•KØ˜1‘X Ò)Ø',¨Q¡x�DÕ$Ø˜1‘X Ò(Ø!& q¡�D•JØ˜1‘X Ò(Ü!#§¡¨%°©(Ó!3�D•JØ˜1‘X Ò&Ü%'§Z¡Z°°a±Ó%9�D•NØ˜1‘X Ò&Ü%'§Z¡Z°°a±Ó%9�D–NØ˜1‘X Ò'Ü&(§j¡j°°q±Ó&:�D–OØ˜1‘X Ò*Ü#& u¨Q¡x£=�D–LØ˜1‘X Ò*Ü#& u¨Q¡x£=�D–LØ˜1‘X Ô+Ü$&§H¡H¨U°1©XÓ$6�D–Mñ5 #ð: ˆøô ò 	.ÜÐ% d VÐ,×-Ð-Øˆûð	.ús   ‚FF7 Æ F7 Æ7	GÇ GÇGN)Ú__name__Ú
__module__Ú__qualname__r%   r(   r+   rI   © r   r   r   r   "   s   „ òò
ò5ó
 r   r   c                   ó.   — e Zd Z	 dd„Zd„ Zd„ Zd„ Zd„ Zy)ÚMixedPrecisionTensorInfoc                 óÂ  — d| _         || _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _	        d | _
        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        d | _        |�¾|j*                  | _        |j,                  | _        |j.                  | _        |j0                  | _        |j2                  | _        |j4                  | _        |j6                  | _        |j8                  | _        d| j                  v r(||j4                  z  | _        ||j6                  z  | _	        |�ª|j*                  | _        |j,                  | _        |j.                  | _        |j0                  | _
        |j2                  | _        |j4                  | _        |j6                  | _        |j8                  | _        |j:                  | _        |j<                  | _        |�Î|�Ì|j*                  |j*                  k(  sJ ‚|j,                  |j,                  k(  sJ dj?                  ||«      «       ‚| jA                  | j                  | j                  «      | _        | jA                  | j                  | j
                  «      | _        | jA                  | j                  | j                  «      | _        | jC                  «        y )NTÚGRADz0Error:
	FP32 Tensor Info:{}
	FP16 Tensor Info:{})"Ú	is_normalÚfp32_idxÚfp32_tensor_nameÚ
fp32_dtypeÚfp32_max_valueÚfp32_min_valueÚfp32_mean_valueÚfp32_num_zeroÚscaled_fp32_max_valueÚscaled_fp32_min_valueÚfp16_tensor_nameÚ
fp16_dtypeÚfp16_max_valueÚfp16_min_valueÚfp16_mean_valueÚfp16_num_zeroÚfp16_has_infÚfp16_has_nanÚfp32_div_fp16_max_valueÚfp32_div_fp16_min_valueÚfp32_div_fp16_mean_valuer   r   r"   r   r   r   r   r   r    r!   r'   Ú_divÚ_check_normal)r$   Úfp32_tensor_infoÚfp16_tensor_inforS   Ú
grad_scales        r   r%   z!MixedPrecisionTensorInfo.__init__h   sÁ  € ð ˆŒØ ˆŒà $ˆÔØˆŒØ"ˆÔØ"ˆÔØ#ˆÔØ!ˆÔØ%)ˆÔ"Ø%)ˆÔ"à $ˆÔØˆŒØ"ˆÔØ"ˆÔØ#ˆÔØ!ˆÔØ ˆÔØ ˆÔà'+ˆÔ$Ø'+ˆÔ$Ø(,ˆÔ%àÐ'Ø+×3Ñ3ˆDŒLØ)×/Ñ/ˆDŒJØ!1×!:Ñ!:ˆDÔØ$4×$@Ñ$@ˆDÔ!Ø.×4Ñ4ˆDŒOØ"2×"<Ñ"<ˆDÔØ"2×"<Ñ"<ˆDÔØ#3×#>Ñ#>ˆDÔ Ø˜×.Ñ.Ñ.àÐ!1×!;Ñ!;Ñ;ð Ô*ð Ð!1×!;Ñ!;Ñ;ð Ô*ð Ð'Ø+×3Ñ3ˆDŒLØ)×/Ñ/ˆDŒJØ!1×!:Ñ!:ˆDÔØ$4×$@Ñ$@ˆDÔ!Ø.×4Ñ4ˆDŒOØ"2×"<Ñ"<ˆDÔØ"2×"<Ñ"<ˆDÔØ#3×#>Ñ#>ˆDÔ Ø 0× 8Ñ 8ˆDÔØ 0× 8Ñ 8ˆDÔàÐ'Ð,<Ð,Hà#×+Ñ+Ð/?×/GÑ/GÒGÐGÐGà ×&Ñ&Ð*:×*@Ñ*@Ò@ðàE×LÑLØ Ð"2óóØ@ð
 ,0¯9©9Ø×#Ñ# T×%8Ñ%8ó,ˆDÔ(ð ,0¯9©9Ø×#Ñ# T×%8Ñ%8ó,ˆDÔ(ð -1¯I©IØ×$Ñ$ d×&:Ñ&:ó-ˆDÔ)ð 	×ÑÕr   c           
      óô  — d„ }dj                  | j                  | j                  «      }|dj                  | j                  | j                   || j
                  «       || j                  «       || j                  «      «      z  }|dj                  | j                  | j                   || j                  «       || j                  «       || j                  «      | j                  | j                  «      z  }|S )Nc                 ó   — | �| d›S | S )Nú.6frM   )r
   s    r   Ú
_float_strz4MixedPrecisionTensorInfo.__str__.<locals>._float_str·   s   € Ø%*Ð%6�e˜C�[ÐA¸EÐAr   z/[MixedPrecisionTensorInfo] op_type={}, numel={}zL
  FP32: tensor_name={}, dtype={}, max_value={}, min_value={}, mean_value={}zd
  FP16: tensor_name={}, dtype={}, max_value={}, min_value={}, mean_value={}, has_inf={}, has_nan={})r'   r   r   rT   rU   rV   rW   rX   r\   r]   r^   r_   r`   rb   rc   )r$   ro   Ú	debug_strs      r   r(   z MixedPrecisionTensorInfo.__str__¶   sð   € ò	Bð F×LÑLØ�L‰L˜$Ÿ*™*ó
ˆ	ð 	Ðd×kÑkØ×!Ñ!Ø�O‰OÙ�t×*Ñ*Ó+Ù�t×*Ñ*Ó+Ù�t×+Ñ+Ó,ó
ñ 	
ˆ	ð 	Ð|÷  Dñ  DØ×!Ñ!Ø�O‰OÙ�t×*Ñ*Ó+Ù�t×*Ñ*Ó+Ù�t×+Ñ+Ó,Ø×ÑØ×Ñó
ñ 	
ˆ	ð Ðr   c                 ó$   — |�|�|dk7  r||z  S dS y )Nr   r4   rM   )r$   ÚaÚbs      r   rg   zMixedPrecisionTensorInfo._divÏ   s#   € Øˆ=˜Q˜]Ø šF�1�q‘5Ð)¨Ð)Ør   c                 óþ   — | j                   €| j                  S | j                  €%| j                   dz   t        | j                  «      z   S | j                  j	                  dd«      dz   t        | j                  «      z   S )NÚ#ú
.cast_fp16z/.cast_fp16/)rT   r\   ÚstrrS   r=   r#   s    r   Úget_tensor_namez(MixedPrecisionTensorInfo.get_tensor_nameÔ   s{   € Ø× Ñ Ð(Ø×(Ñ(Ð(Ø×"Ñ"Ð*Ø×(Ñ(¨3Ñ.´°T·]±]Ó1CÑCÐCð ×%Ñ%×-Ñ-¨l¸NÓKØñä�d—m‘mÓ$ñ%ðr   c                 óè  — | j                   �B| j                   t        j                  t        j                  «      j                  kD  rd| _        y | j                  | j                  | j                  | j                  | j                  | j                  g}|D ]  }|€Œt        |«      sŒd| _         y  | j                  �| j                  rd| _        y | j                  �| j                  rd| _        y | j                  �4| j                  �(t        | j                  | j                  «      sd| _        y | j                  �6| j                  �)t        | j                  | j                  «      sd| _        y y y y )NF)r   r   ÚiinfoÚint32r6   rR   rV   rW   rZ   r[   r^   r_   r   rb   rc   r   )r$   Ú
check_listr
   s      r   rh   z&MixedPrecisionTensorInfo._check_normalà   sX  € ð �:‰:Ð! d§j¡j´2·8±8¼B¿H¹HÓ3E×3IÑ3IÒ&IØ"ˆDŒNØð ×ÑØ×ÑØ×&Ñ&Ø×&Ñ&Ø×ÑØ×Ñð
ˆ
ó  ˆEØÑ ¤[°Õ%7Ø!&�”Ùð  ð
 ×ÑÐ(¨T×->Ò->Ø"ˆDŒNØØ×ÑÐ(¨T×->Ò->Ø"ˆDŒNØð ×&Ñ&Ð2Ø×#Ñ#Ð/Ü × 3Ñ 3°T×5OÑ5OÔPà"ˆDŒNØà×&Ñ&Ð2Ø×#Ñ#Ð/Ü × 3Ñ 3°T×5OÑ5OÔPà"ˆDŒNØð Qð 0ð 3r   N)r   g      ð?)rJ   rK   rL   r%   r(   rg   rx   rh   rM   r   r   rO   rO   g   s    „ àILóLò\ò2ò

ó-r   rO   c                   óP   — e Zd Zd„ Zd„ Zd„ Zd„ Z	 dd„Z	 dd„Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚExcelWriterc                 óî  — || _         || _        	 dd l}j                  |«      | _        | j                  j                  ddddddœ«      | _        | j                  j                  dd	d
œ«      | _	        | j                  j                  ddd
œ«      | _
        | j                  j                  ddd
œ«      | _        | j                  j                  ddd
œ«      | _        y # t        $ r t	        d«       Y Œßw xY w)Nr   zRimport xlsxwriter failed. please run 'pip install xlsxwriter==3.0.9' to install itTr4   Úblackz#6495EDÚcenter)ÚboldÚborderÚ
font_colorÚbg_colorÚalignz#F5F5F5)r‚   r…   ÚredÚyellowÚorange)Úlog_fp32_dirÚlog_fp16_dirÚ
xlsxwriterÚImportErrorrB   ÚWorkbookÚworkbookÚ
add_formatÚtitle_formatÚtensor_name_formatÚred_bg_cell_formatÚyellow_bg_cell_formatÚorange_bg_cell_format)r$   rŠ   r‹   Úoutput_pathÚxlws        r   r%   zExcelWriter.__init__  s÷   € Ø(ˆÔØ(ˆÔð	Û$ð Ÿ™ [Ó1ˆŒØ ŸM™M×4Ñ4àØØ%Ø%Ø!ñó
ˆÔð #'§-¡-×":Ñ":Ø yÑ1ó#
ˆÔð #'§-¡-×":Ñ":Ø uÑ-ó#
ˆÔð &*§]¡]×%=Ñ%=Ø xÑ0ó&
ˆÔ"ð &*§]¡]×%=Ñ%=Ø xÑ0ó&
ˆÕ"øô1 ò 	ÜØdöð	ús   �C ÃC4Ã3C4c                 óF   — | j                   j                  «        d | _         y r   )r�   Úcloser#   s    r   r™   zExcelWriter.close3  s   € Ø�‰×ÑÔØˆ�r   c                 óž   — |€|j                  ||d«       y |dk(  r|j                  |||| j                  «       y |j                  |||«       y )Nú--Úfp16)Úwriter”   ©r$   Ú	worksheetr
   ÚrowÚcols        r   Ú_write_dtypezExcelWriter._write_dtype7  sF   € Øˆ=Ø�O‰O˜C  dÕ+à˜ŠØ—‘  S¨%°×1KÑ1KÕLà—‘  S¨%Õ0r   c                 ó¸   — |j                  «       }|j                  �+|j                  r|j                  |||| j                  «       y |j                  |||«       y r   )rx   rT   r\   r�   r’   )r$   rŸ   Úmp_tensor_infor    r¡   r   s         r   Ú_write_tensor_namezExcelWriter._write_tensor_name@  sM   € Ø$×4Ñ4Ó6ˆà×+Ñ+Ð7Ø×/Ò/à�O‰O˜C  k°4×3JÑ3JÕKà�O‰O˜C  kÕ2r   c                 óú   — |€|j                  ||d«       y t        |«      dk  r|d›}n|d›}|r9t        |t        j                  «      r|j                  |||| j
                  «       y |j                  |||«       y )Nr›   gñhãˆµøä>z.6Ern   )r�   Úabsr   r   Úfloat16r“   ©r$   rŸ   r
   r    r¡   Úcheck_finiteÚ	value_strs          r   Ú_write_maxmin_valuezExcelWriter._write_maxmin_valueJ  so   € ð ˆ=Ø�O‰O˜C  dÕ+ä�5‹z˜DÒ Ø$ S˜k‘	à$ S˜k�	Ù¤¨E´2·:±:Ô >Ø—‘  S¨)°T×5LÑ5LÕMà—‘  S¨)Õ4r   c                 ó^   — |€|j                  ||d«       y |d›}|j                  |||«       y )Nr›   z>10d)r�   r©   s          r   Ú_write_tensor_num_zeroz"ExcelWriter._write_tensor_num_zeroY  s2   € ð ˆ=Ø�O‰O˜C  dÕ+à  ˜,ˆIØ�O‰O˜C  iÕ0r   c                 óž   — |€|j                  ||d«       y |dk(  r|j                  |||| j                  «       y |j                  |||«       y )Nr›   r4   )r�   r“   rž   s        r   Ú_write_infinite_statusz"ExcelWriter._write_infinite_statusb  sF   € Øˆ=Ø�O‰O˜C  dÕ+à˜ŠzØ—‘  S¨%°×1HÑ1HÕIà—‘  S¨%Õ0r   c                 óÊ   — dd„}|€|j                  ||d«       y |d›} ||d¬«      s	 |||«      r|j                  |||«       y |j                  |||| j                  «       y )Nr4   c                 ó&   — | |dz  kD  xr | |dz  k  S )Ngffffffî?gÍÌÌÌÌÌð?rM   )r
   Úscales     r   Ú	_in_rangez7ExcelWriter._write_fp32divfp16_value.<locals>._in_rangel  s   € Ø˜5 4™<Ñ'Ò@¨E°E¸D±LÑ,@Ð@r   r›   rn   )r³   )r4   )r�   r•   )r$   rŸ   r
   r    r¡   Ú
loss_scaler´   r«   s           r   Ú_write_fp32divfp16_valuez$ExcelWriter._write_fp32divfp16_valuek  sc   € ó	Að ˆ=Ø�O‰O˜C  dÕ+à  ˜+ˆIÙ˜ aÕ(©I°e¸ZÔ,HØ—‘  S¨)Õ4à—‘  S¨)°T×5OÑ5OÕPr   c                 óR  — ddddddddddddœ}g d¢}| j                   €R|j                  dd	| j                  «       |j                  d
d|› d�| j                  «       |j                  g d¢«       n¯| j                  €5|j                  dd|› d�| j                  «       |j                  g d¢«       nn|j                  dd	| j                  «       |j                  dd|› d�| j                  «       |j                  dd| j                  «       |j                  g d¢«       t        t        |«      «      D ]7  }t        t        d«      |z   «      }|j                  |dz   |z   |||      «       Œ9 t        t        |«      «      D ]#  }|j                  ||||   | j                  «       Œ% y )Né   é<   é
   é   é   )r   r   r   r"   Úinfiniter   r   r   r   r9   r:   )r   r   r   r½   zE1:H1Úfp32zI1:J1zfp32 (scale=Ú))r   r   r   r   r   r   zE1:J1zfp16 (scale=)r   r   r   r   r"   r9   r:   zI1:N1zO1:Q1zfp16 / fp32)r   r   r   r   r"   r   r   r   r   r"   r9   r:   r   r   r   ÚAÚ:)r‹   Úmerge_ranger‘   ÚextendrŠ   ÚrangeÚlenÚchrÚordÚ
set_columnr�   )r$   rŸ   rµ   r    Úcolumn_width_dictÚtitle_namesr¡   Úcol_chars           r   Ú_write_titleszExcelWriter._write_titlesx  sÄ  € àØØØØØØØØØØñ
Ðò FˆØ×ÑÐ$à×!Ñ! '¨6°4×3DÑ3DÔEØ×!Ñ!Ø˜<¨
 |°1Ð5°t×7HÑ7Hôð ×Ñòõ	ð ×ÑÐ&à×!Ñ!Ø˜<¨
 |°1Ð5°t×7HÑ7Hôð ×Ñòõ
ð ×!Ñ! '¨6°4×3DÑ3DÔEØ×!Ñ!Ø˜<¨
 |°1Ð5°t×7HÑ7Hôð ×!Ñ! '¨=¸$×:KÑ:KÔLØ×Ñòôô( œ˜[Ó)Ö*ˆCÜœ3˜s›8 c™>Ó*ˆHØ× Ñ Ø˜3‘ Ñ)Ð+<¸[ÈÑ=MÑ+Nõð +ô
 œ˜[Ó)Ö*ˆCØ�O‰O˜C  k°#Ñ&6¸×8IÑ8IÕJñ +r   c                 ó$  — | j                   €J ‚| j                   j                  |«      }d}| j                  |||«       |dz  }g }|D �]·  }|j                  s)|j                  |vr|j                  |j                  «       |r|j                  rŒH|j                  |d|j                  «       | j                  |||d«       |j                  t        j                  t        j                  «      j                  kD  r)|j                  |d|j                  | j                  «       n|j                  |d|j                  «       |j                  r|j                  |dd«       n|j                  |dd| j                  «       d}	| j                  �÷| j!                  ||j"                  ||	«       | j%                  ||j&                  ||	dz   «       | j%                  ||j(                  ||	dz   «       | j%                  ||j*                  ||	dz   «       | j-                  ||j.                  ||	dz   «       |	dz  }	| j0                  €D| j%                  ||j2                  ||	«       | j%                  ||j4                  ||	dz   «       |	dz  }	| j0                  �ë| j!                  ||j6                  ||	«       | j%                  ||j8                  ||	dz   «       | j%                  ||j:                  ||	dz   «       | j%                  ||j<                  ||	dz   «       | j-                  ||j.                  ||	dz   «       |	dz  }	| j?                  ||j@                  ||	«       | j?                  ||jB                  ||	dz   «       |	dz  }	| j                  �t| j0                  �h| jE                  ||jF                  ||	|«       | jE                  ||jH                  ||	dz   |«       | jE                  ||jJ                  ||	dz   |«       |	dz  }	|dz  }�Œº tM        d	|› �«       y )
Nr4   r   é   é   Ú0Ú1é   é   z&-- OP Types produce infinite outputs: )'r�   Úadd_worksheetrÌ   rR   r   Úappendr�   r¥   r   r   rz   r{   r6   Úbad_value_formatr“   rŠ   r¢   rU   r¬   rV   rW   rX   r®   rY   r‹   rZ   r[   r]   r^   r_   r`   r°   rb   rc   r¶   rd   re   rf   rB   )
r$   Úmp_tensor_info_listÚ	sheetnamerµ   Úskip_normal_tensorsrŸ   r    Úinfinite_op_typesÚtensor_infor¡   s
             r   rÔ   zExcelWriter.add_worksheetÊ  s  € ð �}‰}Ð(Ð(Ð(à—M‘M×/Ñ/°	Ó:ˆ	Øˆà×Ñ˜9 j°#Ô6Øˆq‰ˆàÐÜ.ˆKà×)Ò)Ø×'Ñ'Ð/@Ñ@à!×(Ñ(¨×)<Ñ)<Ô=á" {×'<Ò'<Øà�O‰O˜C  K×$7Ñ$7Ô8Ø×#Ñ# I¨{¸CÀÔCà× Ñ ¤2§8¡8¬B¯H©HÓ#5×#9Ñ#9Ò9Ø—‘Ø˜˜K×-Ñ-¨t×/DÑ/Dõð —‘  Q¨×(9Ñ(9Ô:à×$Ò$Ø—‘  Q¨Õ,à—‘  Q¨¨T×-DÑ-DÔEàˆCà× Ñ Ð,Ø×!Ñ! )¨[×-CÑ-CÀSÈ#ÔNØ×(Ñ(Ø˜{×9Ñ9¸3ÀÀaÁôð ×(Ñ(Ø˜{×9Ñ9¸3ÀÀaÁôð ×(Ñ(Ø˜{×:Ñ:¸CÀÀqÁôð ×+Ñ+Ø˜{×8Ñ8¸#¸sÀQ¹wôð �q‘�à×$Ñ$Ð,Ø×,Ñ,Ø! ;×#DÑ#DÀcÈ3ôð ×,Ñ,Ø!Ø#×9Ñ9ØØ˜a™ô	ð ˜1‘H�Cà× Ñ Ð,Ø×!Ñ! )¨[×-CÑ-CÀSÈ#ÔNØ×(Ñ(Ø˜{×9Ñ9¸3ÀÀaÁôð ×(Ñ(Ø˜{×9Ñ9¸3ÀÀaÁôð ×(Ñ(Ø˜{×:Ñ:¸CÀÀqÁôð ×+Ñ+Ø˜{×8Ñ8¸#¸sÀQ¹wôð �q‘�à×+Ñ+Ø˜{×7Ñ7¸¸côð ×+Ñ+Ø˜{×7Ñ7¸¸cÀA¹gôð �q‘�à× Ñ Ð,°×1BÑ1BÐ1NØ×-Ñ-ØØ×7Ñ7ØØØôð ×-Ñ-ØØ×7Ñ7ØØ˜!‘GØôð ×-Ñ-ØØ×8Ñ8ØØ˜!‘GØôð �q‘�à�1‰HŠCðO /ôR 	Ð6Ð7HÐ6IÐJÕKr   N)T)rJ   rK   rL   r%   r™   r¢   r¥   r¬   r®   r°   r¶   rÌ   rÔ   rM   r   r   r~   r~     sE   „ ò 
òDò1ò3ð 8<ó5ð  8<ó1ò1òQòPKóduLr   r~   c           	      óR  — g }t        t        | «      «      D ]�  }|dz  dk(  rt        d|d›dt        | «      d›d�d¬«       | |   }d	|v sŒ4t        «       }|j	                  |«       |j
                  �|j
                  d
k7  rd}|�|j                  |v sŒ}|j                  |«       Œ� |S )Nrº   r   z-- Processing z-8dz / z lineÚ©Úendz[PRECISION]r/   T)rÄ   rÅ   rB   r   rI   r   r   rÕ   )ÚlinesÚspecified_op_listÚtensor_info_listÚirC   rÛ   Úhas_tensor_names          r   Úparse_linesrå   B  s¾   € ØÐä”3�u“:ÖˆØˆr‰6�QŠ;ÜØ   3  s¬3¨u«:°cÐ*:¸%Ð@Øõð �Q‰xˆØ˜DÒ Ü$›,ˆKØ×(Ñ(¨Ô.à×'Ñ'Ð3Ø×+Ñ+¨rÒ1à"&�à!Ð)Ø×&Ñ&Ð*;Ò;à ×'Ñ'¨Õ4ð' ð* Ðr   c                 óè   — | �|€y | dz   |z   }d }d}	 t        |d«      5 }|j                  «       }t        ||«      }d d d «       ||fS # 1 sw Y   ŒxY w# t        $ r t	        d|d«       d |fcY S w xY w)Nr*   FÚrz	the file zis not found)ÚopenÚ	readlinesrå   ÚFileNotFoundErrorrB   )Úlog_dirÚfilenamerá   Úcomplete_filenamerâ   rä   Úfrà   s           r   Ú	parse_logrï   ]  s—   € Ø€˜(Ð*Øà #™¨Ñ0ÐØÐØ€Oð%ÜÐ# SÔ)¨QØ—K‘K“MˆEÜ*¨5Ð2CÓDÐ÷ *ð ˜_Ð,Ð,÷ *Ð)ûô ò %ÜˆkÐ,¨nÔ=Ø�_Ð$Ò$ð%ús'   “A ŸA¼A ÁAÁA ÁA1Á0A1c           	      ó�  — g }|��'i }i }| �E| D ]@  }|j                  «       }|j                  |d«      }|dz   ||<   |||dz   t        |«      z   <   ŒB i }	t        t	        |«      «      D ]Á  }
|
dz  dk(  r&t        dj                  |
t	        |«      «      d¬«       ||
   }|j                  «       j                  dd	«      j                  d
d	«      }|	j                  |d«      }|j                  |dz   t        |«      z   d «      }|�|dz   |	|<   t        ||||«      }|j                  |«       ŒÃ |S | �—i }t        t	        | «      «      D ]~  }
|
dz  dk(  r&t        dj                  |
t	        | «      «      d¬«       | |
   }|j                  «       }|j                  |d«      }|dz   ||<   t        |d ||«      }|j                  |«       Œ€ |S )Nr   r4   ru   rº   z.-- Processing {:-8d} / {:-8d} FP16 Tensor InforÝ   rÞ   rv   r/   z
.cast_fp32z.-- Processing {:-8d} / {:-8d} FP32 Tensor Info)
r+   Úgetrw   rÄ   rÅ   rB   r'   r=   rO   rÕ   )Úfp32_tensor_info_listÚfp16_tensor_info_listrk   r×   Úfp32_tensor_info_dictÚfp32_write_countrÛ   Útensor_info_keyÚcountÚfp32_read_countrã   rj   Úfp32_tensor_info_keyri   r¤   Ú
fp32_counts                   r   Úmerge_tensor_info_listrû   o  s-  € ð ÐØÑ(Ø "ÐØÐØ Ð,Û4�Ø"-§/¡/Ó"3�Ø(×,Ñ,¨_¸aÓ@�Ø49¸A±IÐ  Ñ1ð  ð &Ø# cÑ)¬C°«JÑ6òð	  5ð ˆÜ”sÐ0Ó1Ö2ˆAØ�2‰v˜Š{ÜØD×KÑKØœ3Ð4Ó5óð õ	ð  5°QÑ7Ðà ×$Ñ$Ó&ß‘˜ rÓ*ß‘˜ rÓ*ð !ð
 $×'Ñ'Ð(<¸aÓ@ˆEØ4×8Ñ8Ø$ sÑ*¬S°«ZÑ7¸ó Ðð  Ð+Ø8=À¹	�Ð 4Ñ5Ü5Ø Ð"2°E¸:óˆNð  ×&Ñ& ~Õ6ð/ 3ðX Ðð' 
Ð	*Øˆ
Ü”sÐ0Ó1Ö2ˆAØ�2‰v˜Š{ÜØD×KÑKØœ3Ð4Ó5óð õ	ð 0°Ñ2ˆKØ)Ÿo™oÓ/ˆOØ—N‘N ?°AÓ6ˆEØ*/°!©)ˆJ�Ñ'Ü5Ø˜T 5¨*óˆNð  ×&Ñ& ~Õ6ð 3ð" Ðr   c                 óD  — t        | ||«      }|}g }t        j                  | «      }|D ]  }	d|	v sŒ|j                  |	«       Œ t	        dj                  t        |«      | |«      «       t        |«      D ]�  }
t	        d| › d|
› �«       t        | |
d «      \  }}t	        d|› d|
› �«       t        ||
d «      \  }}t	        d|
› �«       t        |||«      }t	        d|
› �«       |j                  ||
|d«       Œƒ t	        d	|› �«       t	        d
«       |j                  «        y )NÚworker_z'-- There are {} workerlogs under {}: {}z&-- [Step 1/4] Parsing FP32 logs under r*   z&-- [Step 2/4] Parsing FP16 logs under z2-- [Step 3/4] Merge FP32 and FP16 tensor info for z?-- [Step 4/4] Add worksheet for mixed precision tensor info of Fz-- Write to r/   )r~   ÚosÚlistdirrÕ   rB   r'   rÅ   Úsortedrï   rû   rÔ   r™   )Ú	dump_pathÚanother_dump_pathÚoutput_filenamerµ   Údump_all_tensorsÚexcel_writerrk   Úworkerlog_filenamesÚ	filenamesÚnamerì   rò   Úfp32_has_tensor_nameró   Úfp16_has_tensor_namer×   s                   r   Úcompare_accuracyr  ¯  sc  € ô ˜yÐ*;¸_ÓM€LØ€JØÐÜ—
‘
˜9Ó%€IÛˆØ˜ÒØ×&Ñ& tÕ,ð ô 
Ø1×8Ñ8ÜÐ#Ó$ iÐ1Dó	
ôô Ð.Ö/ˆÜÐ6°y°kÀÀ8À*ÐMÔNÜ6?Ø�x ó7
Ñ3ÐÐ3ô 	Ø4Ð5FÐ4GÀqÈÈ
ÐSô	
ô 7@Ø˜x¨ó7
Ñ3ÐÐ3ô 	ÐBÀ8À*ÐMÔNÜ4Ø!Ð#8¸*ó
Ðô 	ØMÈhÈZÐXô	
ð 	×"Ñ"ØØØØõ		
ð' 0ô4 
ˆL˜Ð)Ð
*Ô+ä	ˆ"„IØ×ÑÕr   )ç{®Gáz„?r  r   )r4   F)rþ   Únumpyr   r¨   r   r   r   rO   r~   rå   rï   rû   r  rM   r   r   Ú<module>r     sf   ðó 
ã ð  ŸZ™Zó .ó÷Bñ B÷Jfñ f÷RoLñ oLód	ó6-ò$=ðH Øô1r   