+
    ‹°³jéG  ã                   ó>  € ^ RI t ^ RIHt ^ RIt^ RIt ^ RIt^ RIH	t	 ^ RIt^ RIHt ^ RIHt ^ RIHt R tR	 R
 ltR R ltR tR t]! RRR.4      t]! RR^RRRRRR/4      t]! R]P4                  P7                  4        U Uu/ uF  w  rRT  2TbK  	  upp 4      t]! RR^RRRRR R/4      t]! R!]P4                  P7                  4        U Uu/ uF  w  rRT  2TbK  	  upp 4      t]! R"R#^R$R%R&R'/4      t/ ]P4                  PA                  4        U u/ uF  p T ]bK  	  up Ct!R(^R)R%R*R'/t"]!PG                  ]"PA                  4        U u/ uF  p T ]! R+]"4      bK  	  up 4       ] FR  t$R+]$ 2t%R,]$ R-2^R.]$ R-2R%R/]$ R-2R'/t&]!PG                  ]&PA                  4        U u/ uF  q ]! ]%]&4      bK  	  up 4       KT  	  R0 t'R1 t(R;R2 lt)R3 t*R<R4 lt+R5 t,R=R6 lt-R7 t.R8 t/R9 t0]1R:8X  d
   ]0! 4        R# R#   ]
 d
    ]
! R4      hi ; iu upp i u upp i u up i u up i u up i )>é    N)Ú
namedtuple)ÚNegationQueryzPFailed to import hatchet. `pip install llnl-hatchet` to get the correct version.)ÚCOMPUTE_METADATA_SCOPE_NAME)ÚFLOPS_WIDTHS)Úspecsc                 óš  € . p\        V \        4      '       g   V .p V '       d‰   V  F‚  pVP                  4       pW,            Fc  pWQ9   d   R MRpVP                  R4      ^ ,          P	                  4       P                  4       pWEV39   g   KK  VP                  WV,           4        K€  	  K„  	  \        V4      ^ 8X  d   \        RX R24      hV# )ú (inc)Ú Ú(zMetric z< is not found. Use the --list flag to list available metrics)Ú
isinstanceÚlistÚlowerÚsplitÚstripÚappendÚlenÚRuntimeError)ÚmetricsÚinclusive_metricsÚexclusive_metricsÚretÚmetricÚ
raw_metricÚsuffixÚraw_metric_no_units   &&&     ÚW/home/luca/screen-checking/.venv/lib/python3.14/site-packages/triton/profiler/viewer.pyÚmatch_available_metricsr      s½   € Ø
€CÜ�gœt×$Ò$Ø�)ˆßÛˆFØ—\‘\“^ˆFØ/×CÐC�
Ø%/Ô%D™È"�Ø%/×%5Ñ%5°cÓ%:¸1Õ%=×%CÑ%CÓ%E×%KÑ%KÓ%MÐ"ØÐ*<Ð=Ö=Ø—J‘J˜zÕ2Ô3Úó Dñ ô ˆ3ƒx�1„}Ü˜W V HÐ,hÐiÓjÐjØ€Jó    c                ó$   € V ^8„  d   QhR\         /# )é   Údatabase)Újson)Úformats   "r   Ú__annotate__r$   #   s   € ÷ ñ œDñ r   c                 óh   a€ V3R  lo. pV  F"  pS! V4      pVf   K  VP                  V4       K$  	  V# )c                 óÌ  <€ R V 9  d   V # V R ,          R,          \         8X  g-   V R ,          R,          P                  \          R24      '       d   R# \        V R,          4      ^ 8X  d   \        V R,          4      ^ 8X  d   R# V P                  R. 4      p. pV F"  pS! V4      pVf   K  VP	                  V4       K$  	  \        V4      ^ 8”  g   \        V4      ^ 8X  d   W R&   V # R# )ÚframeÚnameÚ:Nr   Úchildren)r   Ú
startswithr   Úgetr   )Únoder*   Únew_childrenÚchildÚ	new_childÚremove_frame_helpers   &    €r   r1   Ú*remove_frames.<locals>.remove_frame_helper)   sÚ   ø€ Ø˜$ÔØˆKØ��=˜Õ Ô$?Ô?À4ÈÅ=ÐQWÕCX×CcÑCcÜ.Ð/¨qÐ1÷D3ò D3áÜˆt�I�Ó 1Ô$¬¨T°*Õ-=Ó)>À!Ô)CÙØ—8‘8˜J¨Ó+ˆØˆÛˆEÙ+¨EÓ2ˆIØÔ$Ø×#Ñ# IÖ.ñ ô ˆ|Ó˜qÔ ¤C¨£M°QÔ$6Ø+�ÑØˆKÙr   )r   )r!   Únew_databaser-   Únew_noder1   s   &   @r   Úremove_framesr5   #   s?   ø€ õð& €LÛˆÙ& tÓ,ˆØÔØ×Ñ Ö)ñ ð Ðr   c                óš   € V ^8„  d   QhR\         \        P                  \        \        ,          \        \        ,          \
        3,          /# )r    Úreturn)ÚtupleÚhtÚ
GraphFramer   ÚstrÚdict)r#   s   "r   r$   r$   D   s0   € ÷ Añ A¤¤r§}¡}´d¼3µiÄÄcÅÌDÐ'PÕ!Qñ Ar   c                 ó(  € \        V 4      p \        V 4      ^8  d   / MV P                  ^4      p\        P                  P                  V 4      pVP                  4       pVP                  P                   Uu. uF  qDV9  g   K  VNK  	  ppW#WQ3# u upi )r    )	r5   r   Úpopr9   r:   Úfrom_literalÚshow_metric_columnsÚ	dataframeÚcolumns)r!   Údevice_infoÚgfr   r   r   s   &     r   Úget_raw_metricsrE   D   s„   € Ü˜XÓ&€HÜ˜H›¨Ô)‘"¨x¯|©|¸A«€KÜ	�‰×	#Ñ	# HÓ	-€BØ×.Ñ.Ó0ÐØ.0¯l©l×.BÒ.BÓfÑ.B FÐTeÑFeŸ˜Ñ.BÐÐfØÐ"3Ð@Ð@ùò gs   Á6BÂBc           
      ó"  € \         P                  ! R V P                  R.R7      pV Fä  pW,           FÕ  pW,          V,          R,          pW,          V,          R,          pW,          V,          R,          p\         F†  pV R,          V8H  p	W	,          p
RV 2V
P                  9  d   K-  \
        P                  ! W5W†V4      pVP                  V	R3;;,          V
RV 2,          P                  ^ 4      V,          ,          uu&   Kˆ  	  K×  	  Kæ  	  V# )ç        Úmin_time©ÚindexrB   ÚarchÚnum_smsÚ
clock_rateÚ	device_idÚflops)	ÚpdÚ	DataFramerJ   r   rB   r   Ú	max_flopsÚlocÚfillna)ÚdfrC   Úmin_time_flopsÚdevice_typeÚdevice_indexrK   rL   rM   ÚwidthÚidxÚdevice_framesrR   s   &&          r   Úget_min_time_flopsr\   M   sñ   € Ü—\’\ #¨R¯X©XÀ
¸|ÔL€NÛ"ˆØ'×4Ð4ˆLØÕ+¨LÕ9¸&ÕAˆDØ!Õ.¨|Õ<¸YÕGˆGØ$Õ1°,Õ?ÀÕMˆJß%�Ø˜•o¨Ñ5�Ø "¥�Ø˜5˜'�?¨-×*?Ñ*?Ô?ÙÜ!ŸOšO¨K¸uÈzÓZ�	Ø×"Ñ" 3¨
 ?×3°}ÀuÈUÈGÀ_Õ7U×7\Ñ7\Ð]^Ó7_ÐbkÕ7kÕkÕ3ó &ó	 5ñ #ð Ðr   c                 ó‚  € \         P                  ! R V P                  R.R7      pV F”  pW,           F…  pV R,          V8H  pW,          pW,          V,          pVR,          pVR,          p	\        P                  ! W7R,          W˜4      p
VP
                  VR3;;,          VR,          V
,          ,          uu&   K‡  	  K–  	  V# )rG   rH   rI   rN   Úmemory_clock_rateÚ	bus_widthrK   Úbytes)rP   rQ   rJ   r   Úmax_bpsrS   )rU   rC   Úmin_time_bytesrW   rX   rZ   r[   Údevicer^   r_   Úpeak_bandwidths   &&         r   Úget_min_time_bytesre   ^   s¬   € Ü—\’\ #¨R¯X©XÀ
¸|ÔL€NÛ"ˆØ'×4Ð4ˆLØ�[•/ \Ñ1ˆCØ�GˆMØ Õ-¨lÕ;ˆFØ &Ð':Õ ;ÐØ˜{Õ+ˆIÜ"Ÿ]š]¨;¸v½È	ÓeˆNØ×Ñ˜s J˜×/°=ÀÕ3IÈNÕ3ZÕZÕ/ó 5ñ #ð Ðr   Ú
FactorDictr(   ÚfactorÚtimeztime/sztime/msgü©ñÒMbP?ztime/usg�íµ ÷Æ°>ztime/nsg•Ö&è.>Úavg_timeÚavg_Úcpu_timez
cpu_time/szcpu_time/mszcpu_time/uszcpu_time/nsÚavg_cpu_timer`   zbyte/szgbyte/sg    eÍÍAztbyte/sg   ¢”mBzflop/szgflop/sztflop/srO   Úflopz/sÚgflopÚtflopc                 ób	  aa€ . pVV3R  lpV EFD  pVR8X  dÚ   \        V P                  V4      p\        V P                  V4      p	V! V P                  R\        4      p
V P                  R,          P	                  4       pV	R,          P                  VR,          \        4      V
,          V P                  R&   \        P                  V P                  P                  VR3&   VP                  R4       Kä  V\        9   dž   \        V,          pVP                  pVP                  p\        VSS4      ^ ,          pV P                  V,          V! V P                  R\        4      ,          Wç,          ,          V P                  V R2&   VP                  V R24       EKŒ  V\        P                  9   gA   V\        P                  9   g,   V\         P                  9   g   V\"        P                  9   Ed@   V\        P                  9   ;'       g    V\"        P                  9   pV\         P                  9   ;'       g    V\"        P                  9   pV'       d   V'       d   \"        M\        MV'       d   \         M\        pV'       d   RMRpVP                  R,           VP%                  R4      ^,          ,           pV! V P                  VV4      pV'       d   VV P                  R,          ,          pVVP                  V,          ,          V P                  V R2&   VP                  V R24       EK   VP%                  R4      pV^ ,          p\'        V4      ^8”  dÖ   V^,          pVR	8w  d   \)        R
V 24      h\        VSS4      ^ ,          pV P                  V,          pRpRV9   d(   RpV P                  V,          P*                  ^ ,          pM!V P                  V,          P-                  4       pVV,          R,          V P                  VV,           &   VP                  VV,           4       EK  \        VSS4      ^ ,          pVP                  V4       EKG  	  V FR  pVP/                  R4      '       d   V P0                  P                  V4       K7  V P2                  P                  V4       KT  	  V# )c                 óø   <€ \        VSS4      ^ ,          pVP                  R,           VP                  R4      ^,          P                  R4      ^ ,          ,           pW,          VP                  V,          ,          # )r   Ú/r   Ú))r   r(   r   rg   )rU   r   Úfactor_dictÚtime_metric_nameÚ	time_unitr   r   s   &&&  €€r   Úget_time_secondsÚ(derive_metrics.<locals>.get_time_seconds‰   sk   ø€ Ü2°6Ð;LÐN_Ó`ÐabÕcÐØ×$Ñ$ sÕ*Ð-=×-CÑ-CÀCÓ-HÈÕ-K×-QÑ-QÐRUÓ-VÐWXÕ-YÕYˆ	ØÕ# k×&8Ñ&8¸Õ&CÕCÐCr   Úutilrh   rN   rH   r	   rk   rr   zcount (inc)Ú%zUnsupported unit r
   ú(inc)g      Y@)re   rA   r\   Útime_factor_dictÚisnaÚcombineÚmaxÚnpÚnanrS   r   Úderivable_metricsr(   rg   r   Úcpu_time_factor_dictÚavg_time_factor_dictÚavg_cpu_time_factor_dictr   r   Ú
ValueErrorÚilocÚsumÚendswithÚinc_metricsÚexc_metrics)rD   r   r   r   rC   Úderived_metricsrw   r   rb   rV   Útime_secÚinternal_frame_indicesÚderivable_metricÚmetric_nameÚmetric_factor_dictÚmatched_metric_nameÚis_cpuÚis_avgrt   Úmetric_time_unitÚ
time_valueÚmetric_name_and_unitÚmetric_unitÚsingle_framer   ÚtotalÚderived_metrics   &&ff&                      r   Úderive_metricsrœ   †   sä  ù€ Ø€OöDô
 ˆØ�VÔÜ/°·±¸kÓJˆNÜ/°·±¸kÓJˆNÙ'¨¯©°fÔ>NÓOˆHØ%'§\¡\°+Õ%>×%CÑ%CÓ%EÐ"Ø#1°*Õ#=×#EÑ#EÀnÐU_ÕF`ÔbeÓ#fÐiqÕ#qˆB�L‰L˜Ñ Ü?A¿v¹vˆB�L‰L×ÑÐ3°VÐ;Ñ<Ø×"Ñ" 6Ö*ØÔ(Ô(Ü0°Õ8ÐØ*×/Ñ/ˆKØ!1×!8Ñ!8ÐÜ"9¸+ÐGXÐZkÓ"lÐmnÕ"oÐØ/1¯|©|Ð<OÕ/PÙ0@ÀÇÁÈvÔWgÓ0hõ0jà/AÕ/Iõ0JˆB�L‰L˜F˜8 6Ð*Ñ+ð ×"Ñ" f X¨VÐ#4×5ØÔ(×/Ñ/Ô/°6Ô=Q×=XÑ=XÔ3XØÔ/×6Ñ6Ô6¸&ÔD\×DcÑDcÕ:cØÔ3×:Ñ:Ñ:×gÐg¸fÔH`×HgÑHgÑ>gˆFØÔ3×:Ñ:Ñ:×gÐg¸fÔH`×HgÑHgÑ>gˆFç]c¿Õ4ÕDXß4:Õ0Ô@Pð ç(.™*°FˆKØ*×/Ñ/°#Õ5¸¿¹ÀSÓ8IÈ!Õ8LÕLÐá)¨"¯,©,¸À[ÓQˆJßØ'¨"¯,©,°}Õ*EÕE�
à.8¸;×;MÑ;MÐN^Õ;_Õ._ˆB�L‰L˜F˜8 6Ð*Ñ+Ø×"Ñ" f X¨VÐ#4×5à#)§<¡<°Ó#4Ð Ø.¨qÕ1ˆKÜÐ'Ó(¨1Ô,Ø2°1Õ5�Ø #Ô%Ü$Ð'8¸¸Ð%FÓGÐGÜ&=¸kÐK\Ð^oÓ&pÐqrÕ&sÐ#Ø!Ÿ|™|Ð,?Õ@�Ø�ØÐ1Ô1Ø%�FØŸL™LÐ)<Õ=×BÑBÀ1ÕE‘EàŸL™LÐ)<Õ=×AÑAÓC�EØ1=ÀÕ1EÈÕ0N�—‘˜V f�_Ñ-Ø×&Ñ& v°¥×7ä&=¸kÐK\Ð^oÓ&pÐqrÕ&sÐ#Ø×&Ñ&Ð':×;ñk óp *ˆØ×"Ñ" 7×+Ò+Ø�N‰N×!Ñ! .Ö1à�N‰N×!Ñ! .Ö1ñ	 *ð Ðr   c                 óX  € VR 8X  d3   V P                   R,          P                  R 4      V P                   R&   V # VR8X  d3   V P                   R,          P                  R 4      V P                   R&   V # VR8X  d1   V P                   R,          P                  R 4      V P                   R&   V # )Úfile_function_liner(   c                 ó2   € V P                  R 4      R,          # )rr   éÿÿÿÿ©r   ©Úxs   &r   Ú<lambda>Úformat_frames.<locals>.<lambda>Ñ   ó   € ÀAÇGÁGÈCÃLÐQSÖDTr   Úfunction_linec                 ó2   € V P                  R 4      R,          # )r)   r    r¡   r¢   s   &r   r¤   r¥   Ó   r¦   r   Úfile_functionc                 óÀ   € V P                  R 4      R,          P                  R4      ^ ,           RV P                  R4      R,          P                  R4      ^ ,           2# )rr   r)   Ú@r    r¡   r¢   s   &r   r¤   r¥   Ö   sM   € ˜Ÿ™ › bÕ)×/Ñ/°Ó4°QÕ7Ð8¸¸!¿'¹'À#»,ÀrÕ:J×:PÑ:PÐQTÓ:UÐVWÕ:XÐ9YÑZr   )rA   Úapply)rD   r#   s   &&r   Úformat_framesr­   Ï   sž   € ØÐ%Ô%Ø!Ÿ|™|¨FÕ3×9Ñ9Ñ:TÓUˆ�‰�VÑð €Ið 
�?Ô	"Ø!Ÿ|™|¨FÕ3×9Ñ9Ñ:TÓUˆ�‰�VÑð €Ið 
�?Ô	"Ø!Ÿ|™|¨FÕ3×9Ñ9ÙZó \ˆ�‰�VÑà€Ir   c                 óè   € V'       d   R V R2pV P                  VRR7      p V'       d%   RV R2p\        V4      pV P                  VRR7      p V'       d   RVRV 2/.pV P                  VRR7      p V # )z1
MATCH ("*")->(".", p)->("*")
WHERE p."name" =~ "z"
T)Úsquashz*
MATCH (".", p)->("*")
WHERE p."name" =~ "Ú*z>= )Úfilterr   )rD   ÚincludeÚexcludeÚ	thresholdr   ÚqueryÚinclusion_querys   &&&&&  r   Úfilter_framesr·   Ú   s–   € ßðà�9ð ðˆð �Y‰Y�u TˆYÓ*ˆßðà�9ð ðˆô ˜oÓ.ˆØ�Y‰Y�u TˆYÓ*ˆßØ�v  Y KÐ0Ð1Ð2ˆØ�Y‰Y�u TˆYÓ*ˆØ€Ir   c                 ó¦   € R V9   dJ   V P                   R ,          P                  p\        P                  ! V4      pV^ 8  d   \	        R4       R# R# R# )zbytes (inc)zZWarning: Negative byte values detected, this is usually the result of a datatype overflow
N)rA   Úvaluesr€   ÚnanminÚprint)rD   r   Úbyte_valuesÚmin_byte_values   &&  r   Úemit_warningsr¾   î   sG   € Ø˜ÔØ—l‘l =Õ1×8Ñ8ˆÜŸš ;Ó/ˆØ˜AÔÜÐoÖpñ ñ  r   c           	      óx  € \        W4      p \        V P                  VR VRR7      4       V'       dþ   \        RV^ ,          ,           4       V P                  P	                  V^ ,          .RR7      p\        ^\        V4      4       F¦  p\        VP                  V,          R,          4      ^d8”  d)   VP                  V,          R,          R,          R,           MVP                  V,          R,          p\        RP                  WuP                  V,          V^ ,          ,          4      4       K¨  	  \        W4       R	# )
TF)Úmetric_columnÚexpand_nameÚdepthÚrender_headerzSorted kernels by metric )ÚbyÚ	ascendingr(   :Néd   Nz...z{:105} {:.4}N)
r­   r»   ÚtreerA   Úsort_valuesÚranger   r‡   r#   r¾   )rD   r   rÂ   r#   Úprint_sortedÚ	sorted_dfÚrowÚkernel_names   &&&&&   r   Ú
print_treerÎ   ö   sô   € Ü	�rÓ	"€BÜ	ˆ"�'‰' °TÀÐV[ˆ'Ó
\Ô]çÜÐ)¨G°A­JÕ6Ô7Ø—L‘L×,Ñ,°¸µ°ÈÐ,ÓNˆ	Ü˜œC 	›NÖ+ˆCä$'¨	¯©°sÕ(;¸FÕ(CÓ$DÀsÔ$Jð %Ÿ>™>¨#Õ.¨vÕ6°tÕ<Ø ö!ØPY×P^ÑP^Ð_bÕPcÐdjÕPkð ä�.×'Ñ'¨·^±^ÀCÕ5HÈÐQRÍÕ5TÓUÖVñ ,ô �"Ör   c                 ó  € \        V R 4      ;_uu_ 4       p\        P                  ! V4      p\        V4      w  r4rV\	        WE,           4      ^ 8”  g   Q R4       hVP                  4        W4WV3uuRRR4       #   + '       g   i     R# ; i)Úrz"No metrics found in the input fileN)Úopenr"   ÚloadrE   r   Úupdate_inclusive_columns)ÚfilenameÚfr!   rD   r   r   rC   s   &      r   ÚreadrÖ     sp   € Ü	ˆh˜×	Ô	 Ü—9’9˜Q“<ˆÜ@OÐPXÓ@YÑ=ˆÐ0ÜÐ$Õ8Ó9¸AÔ=ÐcÐ?cÓcÐ=Ø
×#Ñ#Ô%ØÐ&7ÐD÷ 
×	×	Ó	ús   •AA5Á5B	c                 óf   € \        V4      w  rVrx\        WPWgV4      p \        WRW4V ^ ,          4      pWP3# )r   )rÖ   rœ   r·   )	r   rÔ   r²   r³   r´   rD   r   r   rC   s	   &&&&&    r   ÚparserØ     s;   € Ü<@À»NÑ9€BÐ,Ü˜RÐ*;ÐP[Ó\€Gä	�r G¸À½
Ó	C€BØˆ;Ðr   c                 ó*  € \        W2WEV4      w  rxV U	u. uF  q™P                  R 4      '       g   K  V	NK  	  p
p	V U	u. uF  q™P                  R 4      '       d   K  V	NK  	  pp	W n        W°n        W§n        W·n        V P	                  V4      # u up	i u up	i )r{   )rØ   r‰   rŠ   r‹   Úsub)rD   rŒ   Ú	diff_filer   r²   r³   r´   Úgf2Ú_r   Úderived_inc_metricsÚderived_exc_metricss   &&&&&&&     r   Úapply_diff_profilerà     s   € ä�7 w¸ÓC�F€Cá0?Ó\± fÇ?Á?ÐSZ×C[Ÿ6˜6±ÐÐ\Ù0?Ó`± fÇÁÐW^×G_Ÿ6˜6±ÐÐ`à(„NØ(„NØ)„OØ)„OØ�6‰6�#‹;Ðùò ]ùÚ`s   ”B±B½BÁBc                 ó(  € \        V R 4      ;_uu_ 4       p\        P                  ! V4      p\        V4      w  r4rS\	        R4       V'       dL   V FE  pVP                  R4      ^ ,          P                  4       P                  4       p\	        RV 24       KG  	  \	        R4       V'       dL   V FE  pVP                  R4      ^ ,          P                  4       P                  4       p\	        RV 24       KG  	  RRR4       R#   + '       g   i     R# ; i)rÐ   zAvailable inclusive metrics:r   z- zAvailable exclusive metrics:N)rÑ   r"   rÒ   rE   r»   r   r   r   )Ú	file_namerÕ   r!   rÝ   r   r   r   r   s   &       r   Úshow_metricsrã   #  sÝ   € Ü	ˆi˜×	Ô	 Ü—9’9˜Q“<ˆÜ5DÀXÓ5NÑ2ˆÐ/ÜÐ,Ô-ßÛ/�
Ø%/×%5Ñ%5°cÓ%:¸1Õ%=×%CÑ%CÓ%E×%KÑ%KÓ%MÐ"Ü˜Ð-Ð.Ð/Ö0ñ 0ô 	Ð,Ô-ßÛ/�
Ø%/×%5Ñ%5°cÓ%:¸1Õ%=×%CÑ%CÓ%E×%KÑ%KÓ%MÐ"Ü˜Ð-Ð.Ð/Ö0ñ 0÷ 
×	×	Ò	ús   •C!D Ä D	c            	      ón  € \         P                  ! R \         P                  R7      p V P                  RRRRR7       V P                  RR\        R	R
R7       V P                  RR\        R	RR7       V P                  RR\        R	RR7       V P                  RR\
        R	RR7       V P                  RR\        ^dRR7       V P                  RR\        . R'ORRR7       V P                  RRRRR 7       V P                  R!R"\        R	R#R7       V P                  4       w  r\        V4      ^8X  g   Q R$4       hV^ ,          pVP                  '       d   VP                  P                  R%4      MR	pVP                  pVP                  pVP                  pVP                  pVP                  p	VP                   p
VP"                  pV'       d   V'       d   \%        R&4      hVP&                  '       d   \)        V4       R	# V'       d5   \+        WCWVV4      w  rÍV
'       d   \-        WÍW¤WVV4      p\/        WÍW‰V4       R	# R	# )(z,Performance data viewer for proton profiles.)ÚdescriptionÚformatter_classz-lz--listÚ
store_truea-  List available metrics. Metric names are case insensitive and ignore units.
Derived metrics can be created when source metrics are available.
- time/s, time/ms, time/us, time/ns: time
- avg_time/s, avg_time/ms, avg_time/us, avg_time/ns: time / count
- flop[<8/16/32/64>]/s, gflop[<8/16/32/64>]/s, tflop[<8/16/32/64>]/s: flops / time
- byte/s, gbyte/s, tbyte/s: bytes / time
- util: max(sum(flops<width>) / peak_flops<width>_time, sum(bytes) / peak_bandwidth_time)
- <metric>/%%: frame(metric) / sum(metric). Only available for inclusive metrics (e.g. time)
)ÚactionÚhelpz-mz	--metricsNzÐAt maximum two metrics can be specified, separated by comma.
There are two modes:
1) Choose the output metric to display. It's case insensitive and ignore units.
2) Derive a new metric from existing metrics.
)ÚtypeÚdefaultré   z-iz	--includea  Find frames that match the given regular expression and return all nodes in the paths that pass through the matching frames.
For example, the following command will display all paths that contain frames that contains "test":
```
proton-viewer -i ".*test.*" path/to/file.json
```
z-ez	--excludezæExclude frames that match the given regular expression and their children.
For example, the following command will exclude all paths starting from frames that contains "test":
```
proton-viewer -e ".*test.*" path/to/file.json
```
z-tz--thresholdzrExclude frames(kernels) whose metrics are below the given threshold. This filter only applies on the first metric.z-dz--depthz The depth of the tree to displayz-fz--formatÚfulla!  Formatting the frame name.
- full: include the path, file name, function name and line number.
- file_function_line: include the file name, function name and line number.
- function_line: include the function name and line number.
- file_function: include the file name and function name.
)rê   Úchoicesrë   ré   z--print-sortedFz6Sort output by metric value instead of chronologically)rè   rë   ré   z--diff-profilez-diffzŒCompare two profiles. When used as 'proton-viewer -m time -diff file1.log file2.log', computes the difference: file2['time'] - file1['time']zMust specify a file to readÚ,z'Cannot specify both include and exclude)rì   rž   r§   r©   )ÚargparseÚArgumentParserÚRawTextHelpFormatterÚadd_argumentr;   ÚfloatÚintÚparse_known_argsr   r   r   r²   r³   r´   rÂ   r#   Údiff_profilerÊ   r†   r   rã   rØ   rà   rÎ   )Ú	argparserÚargsÚtarget_argsrâ   r   r²   r³   r´   rÂ   r#   ÚdiffrÊ   rD   rŒ   s                 r   Úmainrû   3  s]  € Ü×'Ò'ØBÜ ×5Ñ5ô€Ið ×ÑØØØðð	 ô ð ×ÑØØÜØðð ô 
ð ×ÑØØÜØð	ð ô ð ×ÑØØÜØðð ô ð ×ÑØØÜØà|ð ô ð ×ÑØØÜØØ/ð ô ð ×ÑØØÜÚPØðð ô ð ×ÑØØØØEð	 ô ð ×ÑØØÜØðAð ô ð "×2Ñ2Ó4Ñ€DÜˆ{Ó˜qÔ Ð?Ð"?Ó?Ð à˜A•€IØ)-¯¯¨ˆd�l‰l× Ñ  Ô%¸4€GØ�l‰l€GØ�l‰l€GØ—‘€IØ�J‰J€EØ�[‰[€FØ×Ñ€DØ×$Ñ$€Lß—7ÜÐBÓCÐCØ‡y‡y€yÜ�YÖß	Ü# G¸È)ÓTÑˆßÜ# B¸ÈÐZcÓdˆBÜ�2¨°|ÖDñ	 
r   Ú__main__)NNNN)rÆ   NF)NNN)2rï   Úcollectionsr   r"   ÚpandasrP   Úhatchetr9   Úhatchet.queryr   ÚImportErrorÚnumpyr€   Útriton.profiler.stater   Útriton.profiler.metricr   Útriton.profilerr   r   r5   rE   r\   re   rf   r|   rg   Úitemsr„   rƒ   r…   Úbytes_factor_dictÚkeysr‚   Údefault_flop_factor_dictÚupdaterY   Úfactor_namert   rœ   r­   r·   r¾   rÎ   rÖ   rØ   rà   rã   rû   Ú__name__)ÚkeyÚvalues   00r   Ú<module>r     sÐ  ðÛ Ý "Û Û ðjÛÝ+ó Ý =Ý /Ý !òõ$õBAòò"ñ ˜ v¨xÐ&8Ó9€
Ù˜f x°°I¸tÀYÐPTÐV_ÐaeÐ&fÓgÐ Ù! *ÐUe×UlÑUl×UrÑUrÔUtÔ.uÑUtÁzÀs°°c°U¨|¸UÒ/BÑUtÒ.uÓvÐ Ù! *Ø#/°°MÀ4ÈÐX\Ð^kÐmqÐ"rótÐ á% nà9M×9TÑ9T×9ZÑ9ZÔ9\ô'^Ù9\©:¨3ð *.¨c¨U |°UÒ':Ù9\ò'^ó_Ð ñ ˜w¨°1°iÀÀiÐQUÐ(VÓWÐ ðà#×*Ñ*×/Ñ/Ô1ó3Ù1ˆ3ð ÐÒÙ1ñ3ðÐ ð % a¨°C¸ÀDÐIÐ Ø × Ñ à(×-Ñ-Ô/ó1Ù/ˆð 	‰*�WÐ6Ó
7Ò7Ù/ñ1ô2ó €EØ˜%˜�/€KØ˜%˜ Ð# Q¨%°¨w°bÐ(9¸3À%ÈÀwÈbÐ@QÐSWÐX€KØ×ÑÐS^×ScÑScÔSeÓfÑSeÈC¡:¨k¸;Ó#GÒGÑSeÑfÖgñ òFòRôò(qôòEôòò1ò vEðr ˆzÔÙ†Fñ øðG ô jÙ
ÐhÓ
iÐiðjüóJ /vùó'^ùò
3ùò1ùò
 gs)   ”
G1 ÂHÃH
ÄHÅ	HÆH
Ç1H