
    ͑id                         S SK r S SKr\R                  4S jrSS jr " S S5      r " S S5      r " S S	5      rSS
 jr	SS jr
S r  SS jrg)    Nc                     [         R                  " U /5      R                  U5      n[         R                  " U5      =(       d    [         R                  " U5      $ N)nparrayastypeisinfisnan)valuedtyper   s      [/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/amp/accuracy_compare.pyis_infiniter      s8    HHeW$$U+E88E?-bhhuo-    c                     [         R                  " [         R                  " U /5      [         R                  " U/5      X#S9$ )N)atolrtol)r   allcloser   )actualexpectedr   r   s       r   is_allcloser      s0    ;;
&BHHhZ0t r   c                   ,    \ rS rSrS rS rS rS rSrg)
TensorInfo"   c                     S U l         S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l	        S U l
        g r   )deviceop_typetensor_namer   numel	max_value	min_value
mean_valuehas_infhas_nannum_zeroselfs    r   __init__TensorInfo.__init__#   sP    

r   c                 *   SU R                    SU R                   SU R                   SU R                   SU R                   SU R
                   SU R                   SU R                   S	U R                  S
 SU R                  S
 SU R                  S
 3$ )Nz[TensorInfo] device=z
, op_type=z, tensor_name=, dtype=, numel=z
, num_inf=z
, num_nan=z, num_zero=, max_value=.6f, min_value=, mean_value=)r   r   r   r   r   r!   r"   r#   r   r   r    r$   s    r   __str__TensorInfo.__str__0   sJ   %dkk]*T\\N.Y]YiYiXjjrsws}s}r~  G  HL  HR  HR  GS  S]  ^b  ^j  ^j  ]k  ku  vz  vB  vB  uC  CN  OS  O\  O\  N]  ]i  jn  jx  jx  y|  i}  }I  JN  JX  JX  Y\  I]  ]j  ko  kz  kz  {~  j  @  	@r   c                 :    U R                   S-   U R                  -   $ )N/)r   r   r$   s    r   keyTensorInfo.key3   s     ||c!D$4$444r   c                     UR                  5       R                  S5      nU GH  nUR                  SS5      R                  SS5      R                  SS5      nUR                  S5      nUS   S:X  a  US	   U l        M\  US   S
:X  a  US	   U l        Mq  US   S:X  a  US	   U l        M  US   S:X  a  US	   U l        M  US   S:X  a   [        R                  " US	   5      U l	        M  US   S:X  a   [        R                  " US	   5      U l        M  US   S:X  a!  [        R                  " US	   5      U l        GM  US   S:X  a!  [        R                  " US	   5      U l        GMA  US   S:X  a  [        US	   5      U l        GM`  US   S:X  a  [        US	   5      U l        GM  US   S:X  d  GM  [        R                  " US	   5      U l        GM     U $ ! [$         a  n['        SU 35         S nAU $ S nAff = f)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_stringTensorInfo.init_from_string8   s   	.++C0J"LLb)11#r:BB3K  !s+8t##(8DL1X)"'(DK1X)',QxD$1X(!&qDJ1X(!#%(!3DJ1X&%'ZZa%9DN1X&%'ZZa%9DN1X'&(jjq&:DO1X*#&uQx=DL1X*#&uQx=DL1X+$&HHU1X$6DM5 #:   	.%dV,--	.s   F'G .#G 
G6G11G6)r   r   r!   r"   r   r    r   r#   r   r   r   N)	__name__
__module____qualname____firstlineno__r&   r/   r3   rR   __static_attributes__ r   r   r   r   "   s    @5
 r   r   c                   8    \ rS rSr S	S jrS rS rS rS rSr	g)
MixedPrecisionTensorInfo[   c                    SU l         X0l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l	        S U l
        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        S U l        Ub  UR*                  U l        UR,                  U l        UR.                  U l        UR0                  U l        UR2                  U l        UR4                  U l        UR6                  U l        UR8                  U l        SU R                  ;   a&  XAR4                  -  U l        XAR6                  -  U l	        Ub  UR*                  U l        UR,                  U l        UR.                  U l        UR0                  U l
        UR2                  U l        UR4                  U l        UR6                  U l        UR8                  U l        UR:                  U l        UR<                  U l        Ub  Ub  UR*                  UR*                  :X  d   eUR,                  UR,                  :X  d   SU SU 35       eU R?                  U R                  U R                  5      U l        U R?                  U R                  U R
                  5      U l        U R?                  U R                  U R                  5      U l        U RA                  5         g )NTGRADzError:
	FP32 Tensor Info:z
	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"   _div_check_normal)r%   fp32_tensor_infofp16_tensor_infor`   
grad_scales        r   r&   !MixedPrecisionTensorInfo.__init__\   s      $""#!%)"%)" $""#!  '+$'+$(,%'+33DL)//DJ!1!:!:D$4$@$@D!.44DO"2"<"<D"2"<"<D#3#>#>D ...!;!;; * !;!;; * '+33DL)//DJ!1!:!:D$4$@$@D!.44DO"2"<"<D"2"<"<D#3#>#>D  0 8 8D 0 8 8D',<,H#++/?/G/GGGG#))-=-C-CC -.>-??TUeTfgC ,099##T%8%8,D( ,099##T%8%8,D( -1II$$d&:&:-D) 	r   c                    S nSU R                    SU R                   3nUSU R                   SU R                   SU" U R                  5       SU" U R
                  5       SU" U R                  5       3
-  nUS	U R                   SU R                   SU" U R                  5       SU" U R                  5       SU" U R                  5       S
U R                   SU R                   3-  nU$ )Nc                     U b  U S $ U $ )Nr,   rY   )r
   s    r   
_float_str4MixedPrecisionTensorInfo.__str__.<locals>._float_str   s    %*%6eC[AEAr   z#[MixedPrecisionTensorInfo] op_type=r*   z
  FP32: tensor_name=r)   r+   r-   r.   z
  FP16: tensor_name=z
, has_inf=z
, has_nan=)r   r   ra   rb   rc   rd   re   ri   rj   rk   rl   rm   ro   rp   )r%   r|   	debug_strs      r   r/    MixedPrecisionTensorInfo.__str__   s   	B :$,,xPTPZPZ|\	-d.C.C-DHT__L]]ijtuy  vI  vI  kJ  jK  KW  Xb  cg  cv  cv  Xw  Wx  xE  FP  QU  Qe  Qe  Ff  Eg  h  	h	-d.C.C-DHT__L]]ijtuy  vI  vI  kJ  jK  KW  Xb  cg  cv  cv  Xw  Wx  xE  FP  QU  Qe  Qe  Ff  Eg  gq  rv  rC  rC  qD  DN  OS  O`  O`  Na  b  	b	r   c                 (    Ub  Ub  US:w  a  X-  $ S$ g )Nr   r=   rY   )r%   abs      r   rt   MixedPrecisionTensorInfo._div   s!    =Q]F15))r   c                    U R                   c  U R                  $ U R                  c%  U R                   S-   [        U R                  5      -   $ U R                  R	                  SS5      S-   [        U R                  5      -   $ )N#
.cast_fp16z/.cast_fp16/)ra   ri   strr`   rF   r$   s    r   get_tensor_name(MixedPrecisionTensorInfo.get_tensor_name   s{      ((((""*((3.T]]1CCC %%--lNKdmm$%r   c                 4   U R                   bD  U R                   [        R                  " [        R                  5      R                  :  a  SU l        g U R                  U R                  U R                  U R                  U R                  U R                  /nU H!  nUc  M  [        U5      (       d  M  SU l          g    U R                  b  U R                  (       a  SU l        g U R                  b  U R                  (       a  SU l        g U R                  b:  U R                  b-  [        U R                  U R                  5      (       d  SU l        g U R                  b<  U R                  b.  [        U R                  U R                  5      (       d  SU l        g g g g )NF)r   r   iinfoint32r?   r_   rc   rd   rg   rh   rk   rl   r   ro   rp   r   )r%   
check_listr
   s      r   ru   &MixedPrecisionTensorInfo._check_normal   sa    ::!djj288BHH3E3I3I&I"DN &&&&

  E [%7%7!&  
 (T->->"DN(T->->"DN &&2##/ 3 3T5O5OPP"DN&&2##/ 3 3T5O5OPP"DN Q 0 3r   )rj   ro   rp   rk   rm   rl   rn   ri   rq   rs   rr   rb   r`   rc   re   rd   rf   ra   r_   r   r   rg   rh   N)r   g      ?)
rT   rU   rV   rW   r&   r/   rt   r   ru   rX   rY   r   r   r[   r[   [   s     ILJX

-r   r[   c                   \    \ rS rSrS rS rS rS r SS jr SS jr	S r
S	 rS
 rS rSrg)ExcelWriter   c                    Xl         X l         SS KnWR                  U5      U l        U R                  R                  SSSSSS.5      U l        U R                  R                  SS	S
.5      U l	        U R                  R                  SSS
.5      U l
        U R                  R                  SSS
.5      U l        U R                  R                  SSS
.5      U l        g ! [         a    [	        S5         Nf = f)Nr   zRimport xlsxwriter failed. please run 'pip install xlsxwriter==3.0.9' to install itTr=   blackz#6495EDcenter)boldborder
font_colorbg_coloralignz#F5F5F5)r   r   redyelloworange)log_fp32_dirlog_fp16_dir
xlsxwriterImportErrorrK   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&   ExcelWriter.__init__   s    ((	$ [1 MM44%%!
 #'--":":y1#
 #'--":":u-#
 &*]]%=%=x0&
" &*]]%=%=x0&
"1  	d	s   C C32C3c                 F    U R                   R                  5         S U l         g r   )r   closer$   s    r   r   ExcelWriter.close  s    r   c                     Uc  UR                  X4S5        g US:X  a  UR                  X4X R                  5        g UR                  X4U5        g )N--fp16)writer   r%   	worksheetr
   rowcols        r   _write_dtypeExcelWriter._write_dtype  s>    =OOCd+%1K1KL%0r   c                     UR                  5       nUR                  b.  UR                  (       a  UR                  X4XPR                  5        g UR                  X4U5        g r   )r   ra   ri   r   r   )r%   r   mp_tensor_infor   r   r   s         r   _write_tensor_nameExcelWriter._write_tensor_name"  sG    $446++7//OOCk3J3JKOOCk2r   c                 
   Uc  UR                  X4S5        g [        U5      S:  a  US nOUS nU(       a<  [        U[        R                  5      (       a  UR                  X4X`R
                  5        g UR                  X4U5        g )Nr   gh㈵>z.6Er,   )r   absr   r   float16r   r%   r   r
   r   r   check_finite	value_strs          r   _write_maxmin_valueExcelWriter._write_maxmin_value,  sj     =OOCd+5zD $Sk	$Sk	E2:: > >)5L5LM)4r   c                 \    Uc  UR                  X4S5        g US nUR                  X4U5        g )Nr   z>10d)r   r   s          r   _write_tensor_num_zero"ExcelWriter._write_tensor_num_zero;  s.     =OOCd+ ,IOOCi0r   c                     Uc  UR                  X4S5        g US:X  a  UR                  X4X R                  5        g UR                  X4U5        g )Nr   r=   )r   r   r   s        r   _write_infinite_status"ExcelWriter._write_infinite_statusD  s>    =OOCd+z%1H1HI%0r   c                     SS jnUc  UR                  X4S5        g US nU" USS9(       d  U" X%5      (       a  UR                  X4U5        g UR                  X4XpR                  5        g )Nr=   c                 ,    XS-  :  =(       a    XS-  :  $ )Ngffffff?g?rY   )r
   scales     r   	_in_range7ExcelWriter._write_fp32divfp16_value.<locals>._in_rangeN  s    4<'@EDL,@@r   r   r,   )r   )r=   )r   r   )r%   r   r
   r   r   
loss_scaler   r   s           r   _write_fp32divfp16_value$ExcelWriter._write_fp32divfp16_valueM  s\    	A =OOCd+ +Ia(Ie,H,H)4)5O5OPr   c                 X   SSSSSSSSSSSS.n/ SQnU R                   cR  UR                  SS	U R                  5        UR                  S
SU S3U R                  5        UR                  / SQ5        OU R                  c5  UR                  SSU S3U R                  5        UR                  / SQ5        OnUR                  SS	U R                  5        UR                  SSU S3U R                  5        UR                  SSU R                  5        UR                  / SQ5        [        [        U5      5       H7  n[        [        S5      U-   5      nUR                  US-   U-   XEU      5        M9     [        [        U5      5       H"  nUR                  X6XV   U R                  5        M$     g )N   <   
         )r   r   r   r#   infiniter   r   r   r    rB   rC   )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#   rB   rC   zI1:N1zO1:Q1zfp16 / fp32)r   r   r   r    r#   r   r   r   r    r#   rB   rC   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_titlesExcelWriter._write_titlesZ  s   
 F$!!'643D3DE!!<
|15t7H7H 	 &!!<
|15t7H7H 
 !!'643D3DE!!<
|15t7H7H !!'=$:K:KL( [)*C3s8c>*H  3)+<=M+N +
 [)*COOCk&68I8IJ +r   c                 .   U R                   c   eU R                   R                  U5      nSnU R                  XSU5        US-  n/ nU GH  nUR                  (       d+  UR                  U;  a  UR                  UR                  5        U(       a  UR                  (       a  MZ  UR                  USUR                  5        U R                  XXUS5        UR                  [        R                  " [        R                  5      R                  :  a)  UR                  USUR                  U R                  5        OUR                  USUR                  5        UR                  (       a  UR                  USS5        OUR                  USSU R                  5        Sn	U R                  b  U R!                  XXR"                  Xi5        U R%                  XXR&                  XiS-   5        U R%                  XXR(                  XiS-   5        U R%                  XXR*                  XiS-   5        U R-                  XXR.                  XiS-   5        U	S-  n	U R0                  cB  U R%                  XXR2                  Xi5        U R%                  UUR4                  UU	S-   5        U	S-  n	U R0                  b  U R!                  XXR6                  Xi5        U R%                  XXR8                  XiS-   5        U R%                  XXR:                  XiS-   5        U R%                  XXR<                  XiS-   5        U R-                  XXR.                  XiS-   5        U	S-  n	U R?                  XXR@                  Xi5        U R?                  XXRB                  XiS-   5        U	S-  n	U R                  bu  U R0                  bh  U RE                  UURF                  UU	U5        U RE                  UURH                  UU	S-   U5        U RE                  UURJ                  UU	S-   U5        U	S-  n	US-  nGM     [M        S	U 35        g )
Nr=   r         01      z&-- OP Types produce infinite outputs: )'r   add_worksheetr   r_   r   appendr   r   r   r   r   r   r?   bad_value_formatr   r   r   rb   r   rc   rd   re   r   rf   r   rg   rh   rj   rk   rl   rm   r   ro   rp   r   rq   rr   rs   rK   )
r%   mp_tensor_info_list	sheetnamer   skip_normal_tensorsr   r   infinite_op_typestensor_infor   s
             r   r   ExcelWriter.add_worksheet  s    }}(((MM//	:	9#6q.K))''/@@!(()<)<="{'<'<OOCK$7$78##ICC  288BHH#5#9#99K--t/D/D Q(9(9:$$Q,QT-D-DEC  ,!!)-C-CSN((993a ((993a ((::Cq ++88#Qw q$$,,,!#D#Dc ,,!#99a	 1HC  ,!!)-C-CSN((993a ((993a ((::Cq ++88#Qw q++77 ++77Ag q  ,1B1B1N--77 --77!G --88!G q1HCO /R 	67H6IJKr   )r   r   r   r   r   r   r   r   N)T)rT   rU   rV   rW   r&   r   r   r   r   r   r   r   r   r   rX   rY   r   r   r   r      sE     
D13 8<5  8<11QPKduLr   r   c           	      b   / n[        [        U 5      5       H  nUS-  S:X  a  [        SUS S[        U 5      S S3SS9  X   nS	U;   d  M4  [        5       nUR	                  U5        UR
                  b  UR
                  S
:w  a  SnUb  UR                  U;   d  M  UR                  U5        M     U$ )Nr   r   -- Processing -8d / z lineendz[PRECISION]r8   T)r   r   rK   r   rR   r   r   r   )linesspecified_op_listtensor_info_listirL   r   has_tensor_names          r   parse_linesr  $  s    3u:r6Q; 3s3u:c*:%@ xD $,K((.''3++r1"&!)&&*;; ''4' * r   c                     U b  Uc  g U S-   U-   nS nSn [        US5       nUR                  5       n[        Xr5      nS S S 5        XE4$ ! , (       d  f       XE4$ = f! [         a    [	        SUS5        S U4s $ f = f)Nr2   Frz	the file zis not found)open	readlinesr  FileNotFoundErrorrK   )log_dirfilenamer  complete_filenamer  r  fr  s           r   	parse_logr  ?  s    (*#0O%#S)QKKME*5D * ,, *) ,,  %k,n=_$$%s-   A AA 
AA A A98A9c           	      n   / nUGb  0 n0 nU bE  U  H?  nUR                  5       nUR                  US5      nUS-   XW'   UXGS-   [        U5      -   '   MA     0 n	[        [	        U5      5       H  n
U
S-  S:X  a  [        SU
S S[	        U5      S S3S	S
9  X   nUR                  5       R                  SS5      R                  SS5      nU	R                  US5      nUR                  US-   [        U5      -   S 5      nUb  US-   X'   [        XX5      nUR                  U5        M     U$ U b  0 n[        [	        U 5      5       Hs  n
U
S-  S:X  a  [        SU
S S[	        U 5      S S3S	S
9  X
   nUR                  5       nUR                  US5      nUS-   X'   [        US X5      nUR                  U5        Mu     U$ )Nr   r=   r   r   r   r   r   z FP16 Tensor Infor   r   r   r8   z
.cast_fp32z FP32 Tensor Info)	r3   getr   r   r   rK   rF   r[   r   )fp32_tensor_info_listfp16_tensor_info_listrx   r   fp32_tensor_info_dictfp32_write_countr   tensor_info_keycountfp32_read_countr  rw   fp32_tensor_info_keyrv   r   
fp32_counts                   r   merge_tensor_info_listr  Q  s    ( " ,4"-//"3(,,_a@49AI 1 &&;c%j&HI	  5 s012A2v{$QsG3s3H/I#.NN_`  57 $$&r*r* !
 $''(<a@E488$s*SZ7   +8=	55 EN  &&~6+ 3P # 
	*
s012A2v{$QsG3s3H/I#.NN_` 02K)oo/ONN?A6E*/!)J'5T5N  &&~6 3 r   c                 6   [        XU5      nUn/ n[        R                  " U 5      nU H  n	SU	;   d  M  UR                  U	5        M     [	        S[        U5       SU  SU 35        [        U5       H}  n
[	        SU  SU
 35        [        X
S 5      u  p[	        SU SU
 35        [        XS 5      u  p[	        SU
 35        [        XU5      n[	        S	U
 35        UR                  UU
US
5        M     [	        SU 35        [	        5         UR                  5         g )Nworker_z-- There are z workerlogs under z: z&-- [Step 1/4] Parsing FP32 logs under r2   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   oslistdirr   rK   r   sortedr  r  r   r   )	dump_pathanother_dump_pathoutput_filenamer   dump_all_tensorsexcel_writerrx   workerlog_filenames	filenamesnamer  r  fp32_has_tensor_namer  fp16_has_tensor_namer   s                   r   compare_accuracyr,    sU    y_MLJ

9%I&&t,  

/011CI;bQdPef ./6yk8*MN6?7
3 	45F4Gq
S	
 7@7
3 	B8*MN4!*
 	MhZX	
 	""		
' 04 
L)
*+	Gr   ){Gz?r-  r   )r=   F)r  numpyr   r   r   r   r   r[   r   r  r  r  r,  rY   r   r   <module>r/     sd    
   ZZ .6 6rT TnoL oLd	6-$9@ /r   