ó
    Eñi/@  ã                   óX  • S SK r S SKrS SKrS SKJr  S SKJr  S SKJr  S SK	J
r
JrJr  S SKrS SKJr  S SKJr  SS	KJr  SS
KJrJr   " S S\5      r/ SQrS\S\4S jrS\S\4S jrS\4S jrS\S\\\
\
4      SS4S jr\ " S S5      5       rS\S\R@                  RB                  RD                  S\#S\$S\SS4S jr%\RL                  " 5       r'\' S3r(S\#S \$S!\$S\S"\SS4S# jr)S\S"\S$\ RT                  SS4S% jr+S"\SS4S& jr,\RZ                  R\                  S\S"\SS4S' j5       r/g)(é    N)Údefaultdict)Ú	dataclass)Ú
ModuleType)ÚAnyÚOptionalÚProtocol)Ú
DeviceType)Ú
OrderedSeté   )Úbenchmarker)Úcreate_bandwidth_info_strÚget_num_bytesc                   ó*   • \ rS rSrS\S\S\4S jrSrg)ÚBenchmarkCallableTypeé   ÚtimesÚrepeatÚreturnc                 ó   • g ©N© )Úselfr   r   s      Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/wrapper_benchmark.pyÚ__call__ÚBenchmarkCallableType.__call__   s   € ¸#ó    r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚintÚfloatr   Ú__static_attributes__r   r   r   r   r      s   † Ø=˜cÐ=¨3Ð=°5×=r   r   )ÚforeachÚpersistent_reductionÚ	pointwiseÚ	reductionÚ
split_scanÚtemplateÚsrc_coder   c                 óx   • [          Vs/ s H  nSU 3U ;   d  M  UPM     nn[        U5      S:X  a  US   $ gs  snf )zz
Similar to get_kernel_category but use the source code. Call this API
if we have not compile the src_code to module yet.
z@triton_heuristics.r   r   Úunknown)Ú_kernel_category_choicesÚlen)r*   ÚchÚchoicess      r   Ú"get_kernel_category_by_source_coder1      sP   € õ .óÚ-ˆrÐ3FÀrÀdÐ1KÈxÑ1W�Ñ-ð ð ô ˆ7ƒ|�qÓØ�q‰zÐàùòs   ‰7š7Ú
kernel_modc                 ó„   • [          Vs/ s H  oU R                  ;   d  M  UPM     nn[        U5      S:X  a  US   $ gs  snf )zö
Given the module defining a triton kernel, return the category of the kernel.
Category can be one of:
- pointwise
- reduction
- persistent_reduction

Currently we simply decide the category depending on what decorator is imported
by the kernel.
r   r   r,   )r-   Ú__dict__r.   )r2   r/   r0   s      r   Úget_kernel_categoryr5   -   sD   € õ 5ÓRÒ4�b¸j×>QÑ>QÑ8Q�rÑ4€GÐRÜ
ˆ7ƒ|�qÓØ�q‰zÐàùò	 Ss   ‰= =Úmodc                 óö   • SSK Jn  U R                  R                  5        VVs/ s H1  u  p#UR	                  S5      (       d  M  [        X15      (       d  M/  UPM3     nnn[        U5      S:X  d   eUS   $ s  snnf )Nr   )ÚCachingAutotunerÚtriton_r   )Ú)torch._inductor.runtime.triton_heuristicsr8   r4   ÚitemsÚ
startswithÚ
isinstancer.   )r6   r8   ÚkÚvÚ	cand_lists        r   Úget_triton_kernelrA   ?   sr   € ÝJð —L‘L×&Ñ&Ô(ôâ(‰DˆAØ�<‰<˜	×"ó 	
ä'1°!×'F÷ 	
Ù(ð ñ ô
 ˆy‹>˜QÓÐÐØ�Q‰<Ðùós   ¤A5ÁA5ÁA5Úbenchmark_nameÚbenchmark_all_configsc                 ó"  ^^^• SSK Jn  SnUR                   GH\  mTR                  n[	        TS5      (       a  [	        TS5      (       d  M4  [        T5      nUR                  R                  n[        T5      nTR                  5       m[        UR                  R                   Vs/ s H  nUR                  S5      (       d  M  UPM     sn5      n	UR                  R                  SS5      mTc  [!        TSU	06S	-  m SS
["        S[$        [&           S[$        [&           S[$        [&           S[(        S[(        4U4S jjjn
U S SUSS R+                  5        SUSS  3nU(       aŠ  [	        TS5      (       d   eTR-                  T5      n[/        U5        UR1                  5        HF  u  pÞ[/        SU
" XíR2                  UR4                  UR6                  5       SUR8                   35        MH     O~[:        R<                  " UU4S jUSS9n[        UR>                  5      S:X  d   S5       eUR>                  S   n[/        U
" UUR2                  UR4                  UR6                  U S3S95        US-  nGM_     US:X  a  [/        S5        ggs  snf ) a@  
An experimental API used only when config.benchmark_kernel is true.

Run the kernel benchmarks for all the kernels cached in PyCodeCache.
Used in the compiled modules.

Put this method here rather than codegen it for convenience since its implementation
does not change based on different graph modules being compiled.
r   )ÚPyCodeCacheÚget_argsÚcallÚ
in_out_ptrÚkernel_num_gbNÚnum_in_out_argsg    eÍÍAÚmsÚn_regsÚn_spillsÚsharedÚprefixr   c                 ó‚   >• [        S XU4 5       5      (       d  SUS SUS SUS S3nOSnTU S	-  -  n[        U TXdUS
9$ )Nc              3   ó(   #   • U  H  oS L v •  M
     g 7fr   r   )Ú.0Úxs     r   Ú	<genexpr>Ú>benchmark_all_kernels.<locals>.get_info_str.<locals>.<genexpr>u   s   é € ÐEÒ*D Q˜D•yÒ*Dùs   ‚ú  Ú3z regs  z	 spills  Ú8z shared memÚ g     @�@)rO   Úsuffix)Úanyr   )rK   rL   rM   rN   rO   Úkernel_detail_strÚgb_per_sÚnum_gbs          €r   Úget_info_strÚ+benchmark_all_kernels.<locals>.get_info_strn   sk   ø€ ô ÑE¨6¸VÑ*DÓE×EÑEà˜ ˜
 '¨(°1¨°Y¸vÀa¸jÈÐTñ "ð %'Ð!à  c¡Ñ*ˆHÜ,Ø�F˜HÐ<Mñð r   Ú20Ú é   é
   rC   rV   z @ c                  ó&   >• TR                  T 5      $ r   )rG   )Úargsr2   s   €€r   Ú<lambda>Ú'benchmark_all_kernels.<locals>.<lambda>Ž   s   ø€ ˜
Ÿ™¨Ô-r   é(   )ÚdeviceÚrepr   z.Autotuner should have selected the best config)rO   zpNo kernel with benchmark functionality found. Make sure you run inductor with config.benchmark_kernel being True)rY   ) Útorch._inductor.codecacherE   ÚmodulesÚkeyÚhasattrrA   Údevice_propsÚtyper5   rF   r.   ÚfnÚ	arg_namesr<   Úinductor_metaÚgetr   r"   r   r   ÚstrÚupperrC   Úprintr;   rL   rM   rN   Úconfigr   Ú	benchmarkÚ	launchers)rB   rC   rE   ÚnfoundÚ
kernel_keyÚtriton_kernelÚdevice_typeÚkernel_categoryÚarg_nameÚnum_in_out_ptrsr_   Úkernel_descÚbench_resultÚlauncherrK   rf   r2   r^   s                  @@@r   Úbenchmark_all_kernelsr†   K   s£  ú€ õ 6à€FØ!×)Õ)ˆ
Ø—^‘^ˆ
Ü�z :×.Ñ.´g¸jÈ&×6QÑ6QÙä)¨*Ó5ˆØ#×0Ñ0×5Ñ5ˆÜ-¨jÓ9ˆØ×"Ñ"Ó$ˆÜð !.× 0Ñ 0× :Ò :óâ :�HØ×&Ñ& |×4÷ Ù :ñó
ˆð ×,Ñ,×0Ñ0°À$ÓGˆØ‰>Ü" DÐJ¸/ÑJÈSÑPˆFð ñ	Üð	äœS‘Mð	ô œs‘mð	ô œS‘Mð		ô
 ð	ô ÷	ð 	ð( ˜bÐ!  ?°2°AÐ#6×#<Ñ#<Ó#>Ð"?¸qÀÈCÈRÀÐ@QÐRð 	ö !Ü˜:Ð'>×?Ñ?Ð?Ð?Ø%×;Ñ;¸DÓAˆLÜ�+ÔØ ,× 2Ñ 2Ö 4‘�ÜØ™ b¯/©/¸8×;LÑ;LÈhÏoÉoÓ^Ð_Ð_bÐck×crÑcrÐbsÐtöò !5ô
 ×&Ò&Ý-Ø"ØñˆBô
 �}×.Ñ.Ó/°1Ó4ð Ø@óÐ4ð %×.Ñ.¨qÑ1ˆHÜÙØØ—O‘OØ×%Ñ%Ø—O‘OØ)˜]¨!Ð,ñôð 	�!‰‹ñM *ðN �ƒ{ÜØ~õ	
ð ùò{s   Â%J
ÃJ
c                   ó>   • \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)ÚProfileEventé§   Úcategoryrn   Úself_device_time_msÚcountr   N)r   r   r   r    rv   Ú__annotations__r"   r#   r   r   r   rˆ   rˆ   §   s   ‡ àƒMØ	ƒHØÓð †Lr   rˆ   Ú
event_listÚwall_time_msÚnrunsÚdevice_namec                 ó  ^ ^^^^	^
^• S[         R                  R                  R                  S[        4U4S jjm
[        [        5      m	S[         R                  R                  R                  S[        SS4U	U
U4S jjnU HÐ  nUR                  (       a   S5       eUR                  [        R                  :X  a  M;  SnUR                  R                  S	5      (       ak  UR                  R                  S
5      (       a  SnOHUR                  R                  S5      (       a  SnO%UR                  R                  S5      (       a  SnOSnU" Xg5        MÒ     S[        S[        [           S[        4UU4S jjmSU	U UUU4S jjnU" 5         g)z0
Parse and generate a report for an event_list.
Úevr   c                 ó(   >• U R                   S-  T-  $ )zF
ev.self_device_time_total is in microsecond. Convert to millisecond.
éè  )Úself_device_time_total)r“   r�   s    €r   Úget_self_device_timeÚ6parse_profile_event_list.<locals>.get_self_device_time¼   s   ø€ ð ×(Ñ(¨4Ñ/°%Ñ7Ð7r   rŠ   Nc                 ó€   >• [        UU R                  T" U 5      U R                  T-  S9nTU   R                  U5        g )N)rŠ   rn   r‹   rŒ   )rˆ   rn   rŒ   Úappend)r“   rŠ   Ú
profile_evÚ
all_eventsr—   r�   s      €€€r   Ú	add_eventÚ+parse_profile_event_list.<locals>.add_eventÆ   sB   ø€ ô "ØØ—‘Ù 4°RÓ 8Ø—(‘(˜UÑ"ñ	
ˆ
ð 	�8Ñ×#Ñ# JÕ/r   z!Don't support the legacy profilerr,   r9   Ú
triton_poiÚtriton_pointwiseÚ
triton_redÚtriton_reductionÚ
triton_perÚtriton_persistent_reductionÚtriton_unknownÚprofile_eventsc           	      ó¼  >• T(       d  gSSK J n  UR                  S SS9  / nSn[        SU  S35        U H]  nXER                  -  nUR                  T-  S	-  S
 S3nUR	                  UR
                  S S UR                  UR                  U/5        M_     UR	                  SUSUT-  S	-  S
 S3/5        [        U" USSTR                  5        S3SS/S95        U$ )Nç        r   )Útabulatec                 ó   • U R                   $ r   )r‹   )r“   s    r   rg   ÚCparse_profile_event_list.<locals>.report_category.<locals>.<lambda>ë   s
   € ¨2×+AÒ+Ar   T)rn   Úreversez
  == z category kernels == éd   ú.2fÚ%éx   ÚTotalrY   ÚKernelzSelf z
 TIME (ms)ÚCountÚPercent)Úheaders)r©   Úsortrx   r‹   rš   rn   rŒ   rw   )	rŠ   r¦   r©   ÚrowsÚ
total_timer“   Úpercentr‘   r�   s	          €€r   Úreport_categoryÚ1parse_profile_event_list.<locals>.report_categoryå   s  ø€ ÞØå%à×ÑÑ AÈ4ÐÑPàˆØˆ
Ü�˜�zÐ!6Ð7Ô8Û ˆBØ×0Ñ0Ñ0ˆJØ×/Ñ/°,Ñ>ÀÑDÀSÐIÈÐKˆGØ�K‰K˜Ÿ™  ˜ r×'=Ñ'=¸r¿x¹xÈÐQÖRñ !ð 	�‰Ø�j "¨°lÑ)BÀSÑ)HÈÐ(MÈQÐ&OÐPô	
ô 	ÙØàØ˜K×-Ñ-Ó/Ð0°
Ð;ØØð	ñô
	
ð Ðr   c                  ó:  >• / SQn [        TR                  5       5      R                  [        U 5      5      (       d   [        TR                  5       5       5       e0 nSnU  H  nUT;   d  M  T" UTU   5      nXAU'   X$-  nM!     UT-  S-  S S3nT
(       a   [	        ST
R                  5        SU 35        O[	        S5        [	        S	TS
 S35        ST	 3nU  H'  nUR                  US5      T-  S-  S S3nUSU 3-  nM)     USU STS
 S3-  n[	        U5        g )N)r    r¢   r¤   r¥   r,   r¨   r­   r®   r¯   z
Percent of time when z
 is busy: zNo device detectedzTotal wall time ú.3fz mszOutput for tabulate: z, rK   )r
   ÚkeysÚissubsetÚlistrx   rw   ru   )Úcategory_listÚper_category_wall_timeÚtotal_device_msrŠ   Ú_timeÚdevice_busy_percentÚtabulate_liner¹   rœ   rB   r‘   rº   r�   s           €€€€€r   ÚreportÚ(parse_profile_event_list.<locals>.report  sn  ø€ ò
ˆô ˜*Ÿ/™/Ó+Ó,×5Ñ5´jÀÓ6O×PÑPð 	
Ü�J—O‘OÓ%Ó&Ð'ó	
ÐPð "$ÐØˆÛ%ˆHØ˜:Õ%Ù'¨°*¸XÑ2FÓG�Ø38 xÑ0ØÑ(’ñ	 &ð "1°<Ñ!?À#Ñ!EÀcÐ JÈ!ÐLÐÞÜØ)¨+×*;Ñ*;Ó*=Ð)>¸jÐI\ÐH]Ð^õô Ð&Ô'äÐ  ¨cÐ 2°#Ð6Ô7ð 0°Ð/?Ð@ˆÛ%ˆHà)×-Ñ-¨h¸Ó<¸|ÑKÈcÑQÐRUÐVÐVWÐXð ð ˜r ' ˜^Ñ+ŠMñ	 &ð
 	˜2Ð1Ð2°"°\À#Ð4FÀbÐIÑIˆäˆmÕr   )r   N)ÚtorchÚautogradÚprofiler_utilÚ	EventListr"   r   rÀ   rv   Ú	is_legacyr   r	   ÚCPUrn   r<   rˆ   )rB   rŽ   r�   r�   r‘   r�   r“   rŠ   rÇ   rœ   r—   rº   s   ` ```    @@@r   Úparse_profile_event_listrÏ   ±   sE  þ€ ð8Ü�N‰N×(Ñ(×2Ñ2ð8ä	÷8ô 1<¼DÓ0A€Jð
0Ü�N‰N×(Ñ(×2Ñ2ð
0äð
0ð 
÷
0ñ 
0ó ˆØ—<—<ÐDÐ!DÓDÐØ�>‰>œZŸ^™^Ó+áàˆØ�6‰6×Ñ˜Y×'Ñ'Ø�v‰v× Ñ  ×.Ñ.Ø-‘Ø—‘×"Ñ" <×0Ñ0Ø-‘Ø—‘×"Ñ" <×0Ñ0Ø8‘à+�á�"Öñ# ð&¤#ð ´t¼LÑ7Ið Ìe÷ ð ÷>*ó *ñX …Hr   z/compiled_module_profile.jsonr   r   Úbenchmark_compiled_module_fnc                 ó|  • [         R                  R                  SS9 nU" XS9  S S S 5        [        nWR	                  U5        [        SU S35        [        SU 35        UR                  SS9n[        UR                  SS	S
95        [        X7XU-  UR                  =(       d    S5        g ! , (       d  f       NŽ= f)NT)Úrecord_shapes©r   r   z4Profiling result for a compiled module of benchmark Ú:z+Chrome trace for the profile is written to )Úgroup_by_input_shaper–   rd   )Úsort_byÚ	row_limitrY   )
rÉ   ÚprofilerÚprofileÚPROFILE_PATHÚexport_chrome_tracerx   Úkey_averagesÚtablerÏ   Ú
use_device)r�   r   r   rB   rÐ   ÚpÚpathrŽ   s           r   Úperf_profilerá   7  s°   € ô 
�‰×	Ñ	¨dÐ	Ñ	3°qÙ$¨5Ò@÷ 
4ô €DØ×Ñ˜$ÔÜ	Ð@ÀÐ@PÐPQÐ
RÔSÜ	Ð7¸°vÐ
>Ô?Ø—‘°T�Ð:€JÜ	ˆ*×
Ñ
Ð#;ÀrÐ
Ð
JÔKÜØ L¸&±.À!Ç,Á,×BTÐRTõ÷ 
4Õ	3ús   žB-Â-
B;rf   c                 óx  • SS K nSS KnSS KnUR                  nUR                  nUR                  U5      nUR                  R                  U5      n	UR                  R                  UR                  R                  U5      5      S   n
[        R                  " 5       n[        R                  R                  5       R                  S5      nUR                  R                  USU S35      nSU	 SU
 S3nSS	S
SSSSSSSSSSU/nU(       a  UR!                  SSU 3/5        U(       a  UR!                  SU/5        OUR!                  SS/5        UR!                  SSU/5         UR#                  USS9  [%        SU  S35        [%        S U 35        g ! UR&                   a  n[%        S!U 35         S nAg S nAff = f)"Nr   z%Y%m%d_%H%M%SÚncu_output_z.ncu-repz import sys; sys.path.insert(0, 'z	'); from zO import benchmark_compiled_module; benchmark_compiled_module(times=1, repeat=1)Úncuz--target-processesÚallz--replay-modeÚkernelz--kernel-name-baseÚfunctionz--print-unitsÚbasez--import-sourceÚyesz--force-overwritez--exportz--kernel-namezregex:z	--metricsz--setÚfullÚpythonú-cT)Úcheckz%
NCU profiling results for benchmark rÔ   zNCU report has been written to z!NCU profiling failed with error: )ÚinspectÚosÚ
subprocessÚncu_kernel_regexÚncu_metricsÚgetfilerà   ÚdirnameÚsplitextÚbasenameÚtempfileÚ
gettempdirÚdatetimeÚnowÚstrftimeÚjoinÚextendÚrunrx   ÚCalledProcessError)rB   rÐ   rf   rî   rï   rð   Úkernel_regexÚmetricsÚmodule_fileÚ
module_dirÚmodule_nameÚncu_dirÚ	timestampÚ
ncu_outputÚ
python_cmdÚncu_cmdÚes                    r   Úncu_analyzerr  L  sÆ  € ó
 ÛÛà×(Ñ(€LØ×Ñ€Gà—/‘/Ð">Ó?€KØ—‘—‘ Ó-€JØ—'‘'×"Ñ" 2§7¡7×#3Ñ#3°KÓ#@ÓAÀ!ÑD€Kä×!Ò!Ó#€GÜ×!Ñ!×%Ñ%Ó'×0Ñ0°ÓA€IØ—‘—‘˜g¨°Y°K¸xÐ'HÓI€Jà,¨Z¨Lð 9Ø�ð ;ð	;ð ð 	ØØØØØØØØØØØØØð€Gö" Ø�‰˜¨6°,°Ð)@ÐAÔBæØ�‰˜ WÐ-Õ.à�‰˜ Ð(Ô)à‡N�NàØØð	
ôðØ�‰�w dˆÑ+ÜÐ6°~Ð6FÀaÐHÔIÜÐ/°
¨|Ð<Õ=øà×(Ñ(ó ÜÐ1°!°Ð5Ô6Üûðús   Å#-F ÆF9Æ!F4Æ4F9c                 ó–  • [         R                  R                  5       (       d   e[         R                  R                  R	                  SS9  U " SSS9  [
        R                  " 5        S3n[         R                  R                  R                  U5        [         R                  R                  R	                  S S9  [        SU 35        g )	Ni † )Úmax_entriesrd   r   rÓ   z/memory_snapshot.pickle)Úenabledz0The collect memory snapshot has been written to )	rÉ   ÚcudaÚis_availableÚmemoryÚ_record_memory_historyr÷   rø   Ú_dump_snapshotrx   )rÐ   Úsnapshot_paths     r   Úcollect_memory_snapshotr  �  sœ   € ô �:‰:×"Ñ"×$Ñ$Ð$Ð$ä	‡J�J×Ñ×,Ñ,¸Ð,Ñ@Ù  r°!Ò4Ü×*Ò*Ó,Ð-Ð-DÐE€MÜ	‡J�J×Ñ×$Ñ$ ]Ô3Ü	‡J�J×Ñ×,Ñ,°TÐ,Ñ:Ü	Ð<¸]¸OÐ
LÕMr   c                 ó`  • SSK nUR                  " 5       nUR                  SSSSS9  UR                  SS	SS
S9  UR                  SSSSS9  UR                  SSSS9  UR                  SSSS9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  S[        SSS9  UR                  5       nUR                  (       a  [        XR                  5        gUR                  nUR                  n[        R                  R                  5       (       a  [        R                  R                  5         U" XVS9S-  n[        R                  R                  5       (       a1  [        R                  R                  5       n[!        SUS-  S  S!35        [        R                  R                  5       (       a  UR"                  (       a  [%        U5        UR&                  (       a  [)        UUUU U5        UR*                  (       a  [-        U UUS"9  gg)#zE
This is the function called in __main__ block of a compiled module.
r   Nz--benchmark-kernelsz-kÚ
store_truez,Whether to benchmark each individual kernels)ÚactionÚhelpz--benchmark-all-configsrì   z8Whether to benchmark each individual config for a kernelz	--profilez-pz&Whether to profile the compiled modulez--cuda-memory-snapshotzÏ
            Whether to collect CUDA memory snapshot. Refer to
            "https://pytorch.org/blog/understanding-gpu-memory-1/
            for details about how to visualize the collected snapshot
        z--ncuzWhether to run ncu analysisz--ncu-kernel-regexz�Filter kernels profiled by NCU using a regex (e.g., '^triton_.*'). Maps to '--kernel-name regex:<regex>'. If None, NCU will profile all kernels.)rq   Údefaultr  z--ncu-metricszxComma-separated list of NCU metrics to collect (e.g., 'dram__bytes.sum.per_second'). If None, NCU will use '--set full'.z--timesrd   z/Number of times to run each benchmark iterationz--repeatz+Number of repetitions of each benchmark runrÓ   r•   zPeak GPU memory usage g    €„.Ar½   z MB)rf   )ÚargparseÚArgumentParserÚadd_argumentrv   r!   Ú
parse_argsÚbenchmark_kernelsr†   rC   r   r   rÉ   r  r  Úreset_peak_memory_statsÚmax_memory_allocatedrx   Úcuda_memory_snapshotr  rÙ   rá   rä   r  )	rB   rÐ   r  Úparserrf   r   r   r�   Úpeak_mems	            r   Úcompiled_module_mainr%  Ÿ  sG  € ó à×$Ò$Ó&€FØ
×ÑØØØØ;ð	 ñ ð ×ÑØ!ØØØGð	 ñ ð ×ÑØØØØ5ð	 ñ ð ×ÑØ Øðð ñ ð ×ÑØØØ*ð ñ ð
 ×ÑØÜØð5ð ñ 	ð ×ÑØÜØð2ð ñ ð ×ÑØÜØØ>ð	 ñ ð ×ÑØÜØØ:ð	 ñ ð ×ÑÓ€Dà××Ü˜n×.HÑ.HÕIà—
‘
ˆØ—‘ˆä�:‰:×"Ñ"×$Ñ$Ü�J‰J×.Ñ.Ô0Ù3¸%ÑOÐRVÑVˆä�:‰:×"Ñ"×$Ñ$Ü—z‘z×6Ñ6Ó8ˆHÜÐ*¨8°c©>¸#Ð*>¸cÐBÔCä�:‰:×"Ñ"×$Ñ$¨×)B×)BÜ#Ð$@ÔAà�<�<ÜØØØØØ,ôð �8�8ÜØØ,Øóð r   )0r  rù   r÷   Úcollectionsr   Údataclassesr   Útypesr   Útypingr   r   r   rÉ   Útorch.autogradr	   Útorch.utils._ordered_setr
   Úruntime.benchmarkingr   Úruntime.runtime_utilsr   r   r   r-   rv   r1   r5   rA   Údictr†   rˆ   rÊ   rË   rÌ   r"   r!   rÏ   rø   ÚPROFILE_DIRrÚ   rá   Ú	Namespacer  r  ÚcompilerÚdisabler%  r   r   r   Ú<module>r3     sñ  ðÛ Û Û Ý #Ý !Ý ß *Ñ *ã Ý %Ý /å -ß Kô>˜Hô >òÐ ð°ð ¸ô ð Jð °3ô ð$	˜:ô 	ðY
ØðY
Ø08¸¸cÀ3¸h¹Ñ0HðY
à	ôY
ðx ÷ð ó ððØðà—‘×,Ñ,×6Ñ6ðð ðð ð	ð
 ðð 
ôðD ×!Ò!Ó#€Ø�Ð;Ð<€ðØðàðð ðð ð	ð
 #8ðð 
ôð*AØðAà"7ðAð ×
Ñ
ðAð 
ô	AðH
NØ"7ð
Nà	ô
Nð ‡�×ÑðiØðiØ7Lðià	óió ñir   