Ë
    [^(hž„  ã                   óî  — d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	Z	d dl
Z	d dlZ	d dlZ	d dlZ	d dlZ	d dlZd dlZd dlmZ d dlmZmZmZmZmZmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dl m!Z! d dl"m#Z# d dl$Z%d dl&Z&d dl Z d dl'Z'd dl(Z(d dl)Z)d dl*Z*d dl+Z+d dl,Z,d dl-m.Z. d dl/m0Z0m1Z1 e	jd                  jg                  «       Z4e4xr e	jd                  jk                  «       dkD  Z6e4Z7e	jd                  jg                  «       r{e	jp                  jr                  see	jt                  jw                  «       Z< e=e	jd                  jk                  «       «      D ](  Z>e	jd                  j                  e>«      d    Z@e@dk  sŒ'dZ7Œ* d„ ZAd„ ZBd„ ZCd„ ZD G d„ d«      ZEdZF G d„ de«      ZG G d„ d«      ZHed„ «       ZIed„ «       ZJed2d „«       ZKd!„ ZLd"„ ZMd#„ ZNd$„ ZOd%„ ZPd&„ ZQd'„ ZRd(„ ZSd)„ ZTd*„ ZUd+„ ZVd,„ ZW G d-„ d.«      ZXd/„ ZYd0„ ZZd1„ Z[y)3é    ©ÚVariable©Ú_nested_map)ÚBroadcastingList2ÚBroadcastingList3)ÚOperatorExportTypesN)Ú	FileCheck)Ú
IS_WINDOWSÚfreeze_rng_stateÚ)enable_profiling_mode_for_profiling_testsÚProfilingModeÚTEST_BAILOUTSÚis_iterable_of_tensors)ÚJitCommonTestCase)Úenable_profiling_mode)Úcontextmanager)Úreduce)ÚStringIO)Údefaultdict)ÚLoader)ÚAnyÚUnioné   é   Fc                 ó   — t        | ||«       y ©N)Úexec)ÚcodeÚglobÚlocs      ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/testing/_internal/jit_utils.pyÚexecWrapperr#   7   s   € Üˆˆt�SÕó    c                 ó(   —  t        d„ | «      |«      S )Nc                 ó6   — t        | t        j                  «      S r   )Ú
isinstanceÚtorchÚTensor©Úts    r"   ú<lambda>zdo_input_map.<locals>.<lambda>;   s   € ¤¨A¬u¯|©|Ó!<€ r$   r   )ÚfnÚinputs     r"   Údo_input_mapr/   :   s   € ØAŒ;Ñ<¸bÓAÀ%ÓHÐHr$   c                  ó  — t         j                  j                  «        t         j                  j                  j                  «       t         j                  j                  _        t         j                  j                  j                  «        y r   )	r(   Ú_CÚ_jit_clear_class_registryÚjitÚ
_recursiveÚConcreteTypeStoreÚconcrete_type_storeÚ_stateÚ_clear_class_state© r$   r"   Úclear_class_registryr:   =   sM   € Ü	‡H�H×&Ñ&Ô(Ü/4¯y©y×/CÑ/C×/UÑ/UÓ/W„E‡I�I×ÑÔ,Ü	‡I�I×Ñ×'Ñ'Õ)r$   c                 óŽ   — t        | j                  j                  «       «      }t        |«      }|dk7  rt	        d|› �«      ‚|d   S )Nr   zOThis test assumes this GraphExecutor should only have one execution plan, got: r   )ÚlistÚexecution_plansÚvaluesÚlenÚRuntimeError)Úgraph_executor_stater=   Ú	num_planss      r"   Úget_execution_planrC   B   sX   € ÜÐ/×?Ñ?×FÑFÓHÓI€OÜ�OÓ$€IØ�A‚~Üð AØAJÀðMó Nð 	Nà˜1ÑÐr$   c                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)Ú&_AssertRaisesRegexWithHighlightContextz~
    A context manager that is useful for checking that error messages highlight
    the correct part of the source code.
    c                 ó<   — || _         || _        || _        || _        y r   )Ú	test_caseÚexception_typeÚregexÚ	highlight)ÚselfrG   Ú	exceptionrI   rJ   s        r"   Ú__init__z/_AssertRaisesRegexWithHighlightContext.__init__P   s   € Ø"ˆŒØ'ˆÔØˆŒ
Ø"ˆ�r$   c                 ó   — | S r   r9   ©rK   s    r"   Ú	__enter__z0_AssertRaisesRegexWithHighlightContext.__enter__V   s   € Øˆr$   c                 ó&  — | j                   j                  | j                  | j                  «      5  |r|‚	 d d d «       | j                  r;t        «       j                  | j                  «      j                  t        |«      «       y# 1 sw Y   ŒQxY w©NT)	rG   ÚassertRaisesRegexrH   rI   rJ   r
   Úcheck_source_highlightedÚrunÚstr)rK   ÚtypeÚvalueÚ	tracebacks       r"   Ú__exit__z/_AssertRaisesRegexWithHighlightContext.__exit__Y   sq   € Ø�^‰^×-Ñ-¨d×.AÑ.AÀ4Ç:Á:ÓNñ 	ÙØ�ð ÷	ð �>Š>Ü‹K×0Ñ0°·±Ó@×DÑDÄSÈÃZÔPà÷	ð 	ús   ±BÂBN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rM   rP   rZ   r9   r$   r"   rE   rE   J   s   „ ñò
#òór$   rE   zprim::TensorExprGroupc                   ó,  ‡ — e Zd ZdZdZ G d„ de«      Z G d„ de«      Zd„ Zd„ Z	ˆ fd	„Z
ˆ fd
„Zd d„Zd„ Zd„ Zd„ Zd„ Zd!d„Zd"d„Zd"d„Zd„ Zd„ Zd„ Zd„ Zd„ Zddddej4                  fd„Zd„ Zdddddej4                  ddfd„Z	 	 	 	 d#d„Zd„ Zˆ xZ S )$ÚJitTestCaseTFc                   ó   — e Zd ZdZd„ Zd„ Zy)úJitTestCase.capture_stdoutz>
        Replace sys.stdout with a temporary StringIO
        c                 óx   — t         j                  | _        t        «       | _        | j                  t         _        | S r   )ÚsysÚstdoutÚ
sys_stdoutr   ÚstringiorO   s    r"   rP   z$JitTestCase.capture_stdout.__enter__m   ó&   € Ü!Ÿj™jˆDŒOÜ$›JˆDŒMØŸ™ŒCŒJØˆKr$   c                 ó–   — | j                  t        | j                  j                  «       «      «       | `| j                  t
        _        y r   )ÚappendrV   rg   Úgetvaluerf   rd   re   ©rK   Úargss     r"   rZ   z#JitTestCase.capture_stdout.__exit__s   ó0   € Ø�K‰Kœ˜DŸM™M×2Ñ2Ó4Ó5Ô6Ø�ØŸ™ŒC�Jr$   N©r[   r\   r]   r^   rP   rZ   r9   r$   r"   Úcapture_stdoutrb   i   ó   „ ñ	ò	ó	)r$   rp   c                   ó   — e Zd ZdZd„ Zd„ Zy)úJitTestCase.capture_stderrz>
        Replace sys.stderr with a temporary StringIO
        c                 óx   — t         j                  | _        t        «       | _        | j                  t         _        | S r   )rd   ÚstderrÚ
sys_stderrr   rg   rO   s    r"   rP   z$JitTestCase.capture_stderr.__enter__|   rh   r$   c                 ó–   — | j                  t        | j                  j                  «       «      «       | `| j                  t
        _        y r   )rj   rV   rg   rk   rv   rd   ru   rl   s     r"   rZ   z#JitTestCase.capture_stderr.__exit__‚   rn   r$   Nro   r9   r$   r"   Úcapture_stderrrs   x   rq   r$   rx   c                 ól   — t         j                  j                  | j                  | j                  «       y r   )r(   r1   Ú_jit_set_emit_hooksÚemitModuleHookÚemitFunctionHookrO   s    r"   ÚsetHookszJitTestCase.setHooks‡   s"   € Ü�‰×$Ñ$ T×%8Ñ%8¸$×:OÑ:OÕPr$   c                 óD   — t         j                  j                  d d «       y r   )r(   r1   rz   rO   s    r"   Ú
clearHookszJitTestCase.clearHooksŠ   s   € Ü�‰×$Ñ$ T¨4Õ0r$   c                 óÈ   •— t         ‰| �  «        t        j                  s3t        j
                  j                  j                  «        dt        _        | j                  «        y rR   )	ÚsuperÚsetUpr`   Ú_restored_warningsr(   r3   ÚTracerWarningÚignore_lib_warningsr}   ©rK   Ú	__class__s    €r"   r‚   zJitTestCase.setUp�   s>   ø€ Ü‰‰Œô ×-Ò-Ü�I‰I×#Ñ#×7Ñ7Ô9Ø-1ŒKÔ*Ø�‰�r$   c                 óV   •— t         ‰| �  «        | j                  «        t        «        y r   )r�   ÚtearDownr   r:   r†   s    €r"   r‰   zJitTestCase.tearDown—   s    ø€ Ü‰ÑÔð 	�‰ÔÜÕr$   c                 ó¶  ‡‡— ˆfd„Šdt         dddddht        |«      z  Št        t        «      } ‰|t         |«       | j	                  t        |«      dk(  d	|› �«       t        t        |j                  «       «      «      \  }}| j	                  t        |«      dk(  d	|› �«       | j	                  t        ˆfd
„|j                  «       D «       «      d	|› �«       y )Nc                 ó   •— | j                  «       D �]i  }|j                  «       |k(  r||    j                  |«       Œ,|j                  «       dk(  r ‰|j                  d«      ||«       ŒY|j                  «       dk(  rß|j	                  «       j                  «       j                  «       j                  «       dk(  sz|j	                  «       j                  «       j                  «       j                  «       dk(  s=|j	                  «       j                  «       j                  «       j                  «       dk(  r( ‰|j                  «       j                  «       ||«       �ŒK|j                  «       D ]  } ‰|||«       Œ �Œl y )Nzprim::DifferentiableGraphÚSubgraphúprim::Ifz	aten::allúprim::TypeCheckúprim::RequiresGradCheck)ÚnodesÚkindrj   ÚgÚinputsÚ__next__ÚnodeÚblocks)Úblockr‘   Úaccr•   Úinner_blockÚ!get_nodes_and_parents_recursivelys        €r"   rš   zEJitTestCase.assertAllFused.<locals>.get_nodes_and_parents_recursively¢   s*  ø€ ØŸ™›ó R�Ø—9‘9“; $Ò&Ø˜‘J×%Ñ% dÕ+Ø—Y‘Y“[Ð$?Ò?Ù5°d·f±f¸ZÓ6HÈ$ÐPSÕTØ—Y‘Y“[ JÒ.°D·K±K³M×4JÑ4JÓ4L×4QÑ4QÓ4S×4XÑ4XÓ4ZÐ^iÒ4iØ48·K±K³M×4JÑ4JÓ4L×4QÑ4QÓ4S×4XÑ4XÓ4ZÐ^oÒ4oØ48·K±K³M×4JÑ4JÓ4L×4QÑ4QÓ4S×4XÑ4XÓ4ZÐ^wÒ4wÙ5°d·k±k³m×6LÑ6LÓ6NÐPTÐVYÖZà'+§{¡{£}ò R˜Ù9¸+ÀtÈSÕQòRñRr$   zprim::Constantzprim::BailoutTemplatezprim::TupleConstructr�   rŽ   r�   r   zgot c              3   óB   •K  — | ]  }|j                  «       ‰v –— Œ y ­wr   )r‘   )Ú.0r•   Úallowed_nodess     €r"   ú	<genexpr>z-JitTestCase.assertAllFused.<locals>.<genexpr>¹   s   øè ø€ ÒS¸T˜DŸI™I›K¨=Ô8ÑSùs   ƒ)ÚFUSION_GROUPÚsetr   r<   Ú
assertTruer?   ÚnextÚiterÚitemsÚallr�   )rK   ÚgraphÚ
except_forÚfusion_groupsÚfusion_nodesr�   rš   s        @@r"   ÚassertAllFusedzJitTestCase.assertAllFusedž   sÑ   ù€ ô	Rð *¬<Ð9PØ/°Ð=NÐPiðkÜmpÐq{Óm|ñ}ˆô EPÔPTÓDUˆÙ)¨%´¸}ÔMØ�‰œ˜MÓ*¨aÑ/°4¸°w°Ô@Ü $¤T¨-×*=Ñ*=Ó*?Ó%@Ó AÑˆ�à�‰œ˜LÓ)¨QÑ.°$°u°g°Ô?Ø�‰œÓSÀUÇ[Á[Ã]ÔSÓSØ˜u˜g˜õ	(r$   c                 ó8   — t        |«      }d}|D ]  }||v sŒ y y)N)z Could not export Python functionzclosures are not exportableTF)rV   )rK   ÚeÚseÚallowedÚas        r"   Ú_isHookExceptionOkzJitTestCase._isHookExceptionOk¼   s0   € Ü�‹Vˆð2ˆàò 	ˆAØ�BŠwÙð	ð r$   c                 ó\  ‡ — ˆ fd„}t         j                  j                  «       5  	 t        |j                  «      dk(  r
	 d d d «       y t        |t         j                  j                  «      r&t        |j                  «       «      dk(  r
	 d d d «       y t        j                  «       }t         j                  j                  ||«       |j                  «       } ||«      \  }}t        j                  |«      }t         j                  j!                  |«      }	t        j                  «       }
t         j                  j                  |	|
«       |
j#                  d«        ||
«      \  }}t%        ||«      D ]  \  }}‰ j'                  ||«       Œ t        |t         j                  j                  «      r9‰ j)                  t         j                  j+                  ||	j,                  «      «       d d d «       y # t        $ r$}‰ j                  |«      s‚ Y d }~d d d «       y d }~ww xY w# 1 sw Y   y xY w)Nc                 ó–  •‡— t        j                  | «      Š‰	j                  t        t	        ‰j                  «       «      «      t        ‰j                  «       «      «       t        t        d„ ‰j                  «       «      «      }t        d„ |«      }ˆfd„|D «       }d„ |D «       }t        d„ |«      }ˆfd„|D «       }d„ |D «       }||fS )Nc                 ó$   — | j                  d«      S )Nzarchive/code/)Ú
startswith©Úxs    r"   r,   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Ë   s   € ¨!¯,©,°Ó*G€ r$   c                 ó$   — | j                  d«      S )Nz.py©Úendswithrµ   s    r"   r,   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Í   s   € ¨a¯j©j¸Ó.?€ r$   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   ©Úopen©rœ   ÚfÚarchives     €r"   rž   zLJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<genexpr>Î   s   øè ø€ Ò I°Q §¡¨a§Ñ Iùó   ƒc              3   ó€   K  — | ]1  }d j                  |D �cg c]  }|j                  «       ‘Œ c}«      –— Œ3 yc c}w ­w)Ú N)ÚjoinÚdecode)rœ   ÚfileÚlines      r"   rž   zLJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<genexpr>Ï   s-   è ø€ ÒbÈ˜"Ÿ'™'¸TÖ"B°T 4§;¡;¥=Ò"B×CÑbùÒ"Bùs   ‚>–9
­>c                 ó$   — | j                  d«      S )Nz
.debug_pklr¸   )r¾   s    r"   r,   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Ò   s   € ¨q¯z©z¸,Ó/G€ r$   c              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wr   r»   r½   s     €r"   rž   zLJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<genexpr>Ó   s   øè ø€ Ò!K°a '§,¡,¨q§/Ñ!KùrÀ   c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­wr   )ÚpickleÚload)rœ   r¾   s     r"   rž   zLJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<genexpr>Ô   s   è ø€ ÒF¨aœ6Ÿ;™; qŸ>ÑFùs   ‚!)ÚzipfileÚZipFileÚassertEqualr?   r    Únamelistr<   Úfilter)
ÚbufferÚfilesÚcode_files_strÚcode_files_streamÚ
code_filesÚdebug_files_strÚdebug_files_streamÚdebug_filesr¿   rK   s
           @€r"   Úextract_filesz9JitTestCase._compared_saved_loaded.<locals>.extract_filesÆ   s°   ù€ ä—o‘o fÓ-ˆGà×ÑœS¤ W×%5Ñ%5Ó%7Ó!8Ó9¼3¸w×?OÑ?OÓ?QÓ;RÔSÜœÑ GÈ×IYÑIYÓI[Ó\Ó]ˆEä#Ñ$?ÀÓGˆNÛ I¸.Ô IÐÙbÐPaÔbˆJô %Ñ%GÈÓOˆOÛ!K¸?Ô!KÐÙFÐ3EÔFˆKØ˜{Ð*Ð*r$   r   )r(   Ú_jit_internalÚ_disable_emit_hooksr?   r   r'   r1   ÚScriptModuleÚ_method_namesÚioÚBytesIOr3   Úsaverk   r@   r°   rË   ÚseekÚzipÚassertMultiLineEqualr¡   Ú_ivalue_tags_matchÚ_c)rK   ÚmrÙ   rÑ   Úbuffer_copyrÕ   Ú_debug_filesr¬   Úbuffer2ÚimportedÚsaved_module_buffer_2Úcode_files_2Ú_debug_files_2r¯   Úbs   `              r"   Ú_compared_saved_loadedz"JitTestCase._compared_saved_loadedÅ   sÉ  ø€ ô	+ô$ × Ñ ×4Ñ4Ó6ñ (	Mðä�q—v‘v“; !Ò#Ø÷	(	Mð (	Mô
 ˜a¤§¡×!6Ñ!6Ô7Ü˜1Ÿ?™?Ó,Ó-°Ò2Ø÷(	Mð (	Mô Ÿ™›�Ü—	‘	—‘˜q &Ô)ð %Ÿo™oÓ/�á+8¸Ó+@Ñ(�
˜Lô —j‘j Ó-ˆGÜ—y‘y—~‘~ gÓ.ˆHô %'§J¡J£LÐ!Ü�I‰I�N‰N˜8Ð%:Ô;à!×&Ñ& qÔ)Ù+8Ð9NÓ+OÑ(ˆL˜.ä˜J¨Ó5ò 0‘��1Ø×)Ñ)¨!¨QÕ/ð0ô ˜!œUŸX™X×2Ñ2Ô3Ø—‘¤§¡× ;Ñ ;¸A¸x¿{¹{Ó KÔL÷Q(	Mð (	Møô&  ò Ø×.Ñ.¨qÔ1Øã÷/(	Mð (	Mûð&ú÷'(	Mð (	MúsC   ¥H"§G2Á	A G2ÂAG2Ã"DH"Ç2	HÇ;HÈH"ÈHÈH"È"H+c                 ób   — |j                   dk(  sd|j                   v ry | j                  |«       y )Nz<lambda>zaten::)Únamerï   )rK   Úfuncs     r"   r|   zJitTestCase.emitFunctionHook  s*   € à�9‰9˜
Ò" h°$·)±)Ñ&;ØØ×#Ñ# DÕ)r$   c                 ó&   — | j                  |«       y r   )rï   )rK   Úmodules     r"   r{   zJitTestCase.emitModuleHook	  s   € Ø×#Ñ# FÕ+r$   Nc                 óÊ  — t        j                  «       }|j                  d„ «       t        j                  j                  ||«       |j                  d„ «       |j                  d«       t        j                  j                  ||¬«      }|j                  d„ «       |s|S t        j                  d¬«      }	 |j                  «        |j                  |j                  «       t        j                  j                  |j                  |¬«      }t        j                  |j                  «       |j                  d„ «       |S # t        j                  |j                  «       w xY w)	Nc                 ó\   — | j                   j                  d«      r| j                  «       S d S )NÚ_pack)rå   Ú_has_methodr÷   ©Úss    r"   r,   z<JitTestCase.getExportImportCopyWithPacking.<locals>.<lambda>  s!   €  q§t¡t×'7Ñ'7¸Ô'@˜!Ÿ'™'›)€ Àd€ r$   c                 ó\   — | j                   j                  d«      r| j                  «       S d S ©NÚ_unpack©rå   rø   rý   rù   s    r"   r,   z<JitTestCase.getExportImportCopyWithPacking.<locals>.<lambda>  s!   € ¨¯©×)9Ñ)9¸)Ô)D˜!Ÿ)™)›+€ È$€ r$   r   )Úmap_locationc                 ó\   — | j                   j                  d«      r| j                  «       S d S rü   rþ   rù   s    r"   r,   z<JitTestCase.getExportImportCopyWithPacking.<locals>.<lambda>  s"   € °·±×0@Ñ0@ÀÔ0K §¡£€ ÐQU€ r$   F)Údeletec                 ó\   — | j                   j                  d«      r| j                  «       S d S rü   rþ   rù   s    r"   r,   z<JitTestCase.getExportImportCopyWithPacking.<locals>.<lambda>$  s!   € ¨a¯d©d×.>Ñ.>¸yÔ.I˜qŸy™y›{€ Èt€ r$   )rÞ   rß   Úapplyr(   r3   rà   rá   rË   ÚtempfileÚNamedTemporaryFileÚcloserñ   ÚosÚunlink)rK   ræ   Úalso_test_filerÿ   rÑ   rê   r¾   Úresults           r"   ÚgetExportImportCopyWithPackingz*JitTestCase.getExportImportCopyWithPacking  sï   € Ü—‘“ˆØ	�‰ÑJÔKÜ�	‰	�‰�q˜&Ô!Ø	�‰ÑNÔOØ�‰�AŒÜ—9‘9—>‘> &°|�>ÓDˆØ�‰ÑUÔVáØˆOô
 ×'Ñ'¨uÔ5ˆð	Ø�G‰GŒIØ�M‰M˜!Ÿ&™&Ô!Ü—Y‘Y—^‘^ A§F¡F¸�^ÓFˆFä�I‰I�a—f‘fÔà�‰ÑSÔTØˆøô �I‰I�a—f‘fÕús   Â8AE Å!E"c                 óî   ‡‡— |rFt        |«      }|j                  ‰«      |j                  d‰› �«      z
  }| j                  |dkD  «       y ˆˆfd„Š ‰|«      }| j                  t        |«      dkD  «       y )Núwith r   c                 ó¾   •— g }| j                  «       D ]F  }|j                  «       ‰k(  r|j                  |«       |j                  «       D ]  } | ‰| «      z  }Œ ŒH |S r   ©r�   r‘   rj   r–   ©r—   Úoutr•   r‘   r�   s      €€r"   r�   z.JitTestCase.assertGraphContains.<locals>.nodes/  óa   ø€ ØˆCØŸ™›ò (�Ø—9‘9“; $Ò&Ø—J‘J˜tÔ$Ø!Ÿ[™[›]ò (�EØ™5 ›<Ñ'‘Cñ(ð(ð
 ˆJr$   )rV   Úcountr¡   r?   )rK   r¦   r‘   Úconsider_subgraphsÚstrgraphr  Ú	out_nodesr�   s     `    @r"   ÚassertGraphContainszJitTestCase.assertGraphContains'  si   ù€ áÜ˜5“zˆHØ—N‘N 4Ó(¨8¯>©>¸EÀ$À¸.Ó+IÑIˆEØ�O‰O˜E A™IÔ&Øõ	ñ ˜%“Lˆ	Ø�‰œ˜I›¨Ñ*Õ+r$   c                 óÔ   ‡‡	— d„ }|r>t        |«      }|j                  ‰«      |j                  d‰› �«      z
  } ||‰|||«       y ˆˆ	fd„Š	 ‰	|«      } ||‰t        |«      ||«       y )Nc                 óL   — ||k(  ry |rdnd}t        | › d|› d|› d|› d|› �	«      ‚)NÚ	includingÚ	excludingz
Error: graph contains ú z nodes (z subgraphs) but expected )ÚAssertionError)r¦   r‘   ÚactualÚexpectedr  Úsubgraphs         r"   Úperform_assertz>JitTestCase.assertGraphContainsExactly.<locals>.perform_assert<  sI   € Ø˜Ò!ØÙ&8‘{¸kˆHÜ Ø�'Ð1°&°¸¸4¸&ÀÈÈ
ÐRkÐltÐkuÐvóxð xr$   r  c                 ó¾   •— g }| j                  «       D ]F  }|j                  «       ‰k(  r|j                  |«       |j                  «       D ]  } | ‰| «      z  }Œ ŒH |S r   r  r  s      €€r"   r�   z5JitTestCase.assertGraphContainsExactly.<locals>.nodesJ  r  r$   )rV   r  r?   )
rK   r¦   r‘   Únum_kind_nodesr  r!  r  r  r  r�   s
     `      @r"   ÚassertGraphContainsExactlyz&JitTestCase.assertGraphContainsExactly;  sv   ù€ ò	xñ Ü˜5“zˆHØ—N‘N 4Ó(¨8¯>©>¸EÀ$À¸.Ó+IÑIˆEÙ˜5 $¨¨~Ø-ô/àõ	ñ ˜%“Lˆ	Ù�u˜d¤C¨	£N°NØ)õ	+r$   c                 óŽ   — t         j                  j                  |t        j                  ¬«      } | j
                  |g|¢­i |¤Ž y )N)Úoperator_export_type)r(   ÚonnxÚ_optimize_tracer	   ÚONNXÚassertExpectedGraph)rK   r’   rm   Úkwargss       r"   ÚassertExpectedONNXGraphz#JitTestCase.assertExpectedONNXGraphW  s<   € Ü�J‰J×&Ñ& qÔ?R×?WÑ?WÐ&ÓXˆØ ˆ× Ñ  Ð4 TÒ4¨VÓ4r$   c                 óæ  — t        |t        j                  j                  «      r|}n|j	                  «       }t        j                  j                  |«       t        j                  j                  |«       t        j                  j                  |«       t        j                  j                  |«      }t        j                  j                  |«        | j                  t        |«      g|¢­i |¤Ž y r   )
r'   r(   r1   ÚGraphr¦   Ú_jit_pass_lintÚ_jit_pass_dceÚ_jit_pass_canonicalizeÚassertExpectedrV   )rK   Útracerm   r+  r¦   s        r"   r*  zJitTestCase.assertExpectedGraph[  sž   € Ü�eœUŸX™XŸ^™^Ô,Ø‰Eà—K‘K“MˆEä�‰×Ñ Ô&Ü�‰×Ñ˜uÔ%Ü�‰×Ñ Ô&Ü—‘×/Ñ/°Ó6ˆÜ�‰×Ñ Ô&Øˆ×ÑœC ›JÐ8¨Ò8°Ó8r$   c                 óŒ  — t        |t        j                  j                  «      r|}d}nd}|j	                  «       }t        j                  j                  |«        t        t        j                  d|z   «      |«      }|�t        |t        «      s|}t        j                  j                  |«       |r|j                  |«       |S )NFTÚ
_jit_pass_)	r'   r(   r1   r.  r¦   r/  ÚgetattrÚboolÚ	set_graph)rK   rñ   r3  r¦   r8  r
  s         r"   Úrun_passzJitTestCase.run_passh  s–   € Ü�eœUŸX™XŸ^™^Ô,ØˆEØ‰IàˆIØ—K‘K“MˆEä�‰×Ñ Ô&Ø7”œŸ™ <°$Ñ#6Ó7¸Ó>ˆØÐ¤j°¼Ô&>ØˆEÜ�‰×Ñ Ô&áØ�O‰O˜EÔ"Øˆr$   c                 ó  — t        j                  «       }|st        d«      ‚d}||dz   k  r'|j                  }|st        d«      ‚|dz  }||dz   k  rŒ'i }|j	                  |j
                  «       |j	                  |j                  «       |S )Nzfailed to inspect framer   r   zfailed to get frame)ÚinspectÚcurrentframer@   Úf_backÚupdateÚf_localsÚ	f_globals)rK   Ú	frames_upÚframeÚiÚdefined_varss        r"   Úget_frame_varszJitTestCase.get_frame_varsz  s�   € Ü×$Ñ$Ó&ˆÙÜÐ8Ó9Ð9ØˆØ�)˜a‘-ÒØ—L‘LˆEÙÜ"Ð#8Ó9Ð9Ø�‰FˆAð	 �)˜a‘-Óð
 (*ˆØ×Ñ˜EŸN™NÔ+Ø×Ñ˜EŸO™OÔ,ØÐr$   c                 ó   — t        | |||«      S r   )rE   )rK   rL   rI   rJ   s       r"   ÚassertRaisesRegexWithHighlightz*JitTestCase.assertRaisesRegexWithHighlight‰  s   € Ü5°d¸IÀuÈiÓXÐXr$   r   c
                 óx  — t        «       5  | j                  ||«      5  t        |t        «      r8| j	                  |«      }
i }t        ||
|¬«       |
j                  |«       |
|   }n|} ||Ž  ddd«       | j                  ||«      5  t        |t        «      r.t        j                  j                  ||¬«      }t        ||«      }n_t        j                  t        j                  |«      «      }t        j                  j                  ||¬«      }t        ||j                  «      } ||Ž  ddd«       t        |t        «      s?| j                  ||«      5  t        j                  j!                  «      } ||Ž  ddd«       ddd«       y# 1 sw Y   �ŒxY w# 1 sw Y   ŒnxY w# 1 sw Y   Œ+xY w# 1 sw Y   yxY w)zõ
        Checks that a given function will throw the correct exception,
        when executed with normal python, the string frontend, and the
        AST frontend. Logic taken from `checkScript` (see comments there
        for details)
        ©r    r!   N©Ú
_frames_up)r   rS   r'   rV   rE  r#   r>  r(   r3   ÚCompilationUnitr6  ÚtextwrapÚdedentr;  Ú	getsourcer[   Úscript)rK   rP  r“   rL   rI   rñ   ÚoutputsÚcapture_outputrA  Ú	profilingrB  Ú
the_localsÚ	python_fnÚcuÚstring_frontendÚsourceÚges                    r"   ÚcheckScriptRaisesRegexz"JitTestCase.checkScriptRaisesRegexŒ  s‚  € ô 7Ó8ñ 	 à×'Ñ'¨	°5Ó9ñ #Ü˜f¤cÔ*Ø ×/Ñ/°	Ó:�EØ13�JÜ ¨U¸
ÕCØ—L‘L Ô,à % d¡‘Ià &�Iá˜6Ñ"÷#ð ×'Ñ'¨	°5Ó9ñ 	)Ü˜f¤cÔ*ÜŸ™×2Ñ2°6ÀiÐ2ÓP�BÜ&-¨b°$Ó&7‘Oä%Ÿ_™_¬W×->Ñ->¸vÓ-FÓG�FÜŸ™×2Ñ2°6ÀiÐ2ÓP�BÜ&-¨b°&·/±/Ó&B�Oá Ñ(÷	)ô ˜f¤cÔ*Ø×+Ñ+¨I°uÓ=ñ  ÜŸ™×)Ñ)¨)Ó4�BÙ˜‘K÷ ÷;	 ð 	 ÷#ñ #ú÷	)ð 	)ú÷ ð  ú÷;	 ð 	 úsT   ‹F0žAFÁ.F0ÂB#FÄ+*F0Å%F$Å:F0ÆF	ÆF0ÆF!	ÆF0Æ$F-	Æ)F0Æ0F9c                 óô   — |j                  «       }t        |«      }|j                  j                  «       }t	        d|«      D ]4  }|j                  j                  |«        ||Ž }| j                  ||«       Œ6 y ©Nr   )Úget_debug_staterC   r   Únum_bailoutsÚrangeÚrequest_bailoutrÎ   )	rK   Úmodelr“   r  ÚstateÚplanr^  rC  Úbailout_outputss	            r"   ÚcheckBailoutszJitTestCase.checkBailouts¶  sm   € Ø×%Ñ%Ó'ˆÜ! %Ó(ˆØ—y‘y×-Ñ-Ó/ˆÜ�q˜,Ó'ò 	8ˆAØ�I‰I×%Ñ% aÔ(Ù# V˜nˆOØ×Ñ˜_¨hÕ7ñ	8r$   rò   c                 óì  — t         j                  j                  |«      5  t        «       5  t	        d„ |D «       «      }t        |t        «      ret         j                  j                  ||¬«      }| j                  |«      }i }t        |||¬«       |j                  |«       ||   }t        ||«      }nnt        j                  t        j                  |«      «      }| j!                  |||j"                  ||||d¬«       t         j                  j%                  |d¬«      }|}|rt'        d„ |«      }n|}|rŒ| j)                  «       5 } ||Ž }ddd«       | j)                  «       5   ||Ž }ddd«       | j)                  «       5   ||Ž }ddd«       t*        s| j-                  d	   d
¬«       | j/                  |	|
¬«       n1 ||Ž }|s|r ||Ž } ||Ž }t0        r| j3                  |||«        ||Ž }| j/                  ||	|
¬«       | j/                  |||	|
¬«       |cddd«       cddd«       S # 1 sw Y   ŒæxY w# 1 sw Y   ŒÔxY w# 1 sw Y   ŒÂxY w# 1 sw Y   nxY w	 ddd«       y# 1 sw Y   yxY w)z|
        Checks that a given script generates the same output as the Python
        version using the given inputs.
        c              3   ól   K  — | ],  }t        |t        j                  «      xr |j                  –— Œ. y ­wr   )r'   r(   r)   Úrequires_grad)rœ   r¶   s     r"   rž   z*JitTestCase.checkScript.<locals>.<genexpr>Ð  s(   è ø€ Ò(iÐ]^¬°A´u·|±|Ó)DÒ)XÈÏÉÓ)XÑ(iùs   ‚24rJ  rI  é   )ÚoptimizeÚinputs_requires_gradrR  rS  rA  r   c                 ó>   — | j                  «       j                  «       S r   )ÚdetachÚrequires_grad_r*   s    r"   r,   z)JitTestCase.checkScript.<locals>.<lambda>ó  s   € ¸a¿h¹h»j×>WÑ>WÓ>Y€ r$   Nr   re   )Úsubname©ÚatolÚrtol)r(   r3   Úoptimized_executionr   Úanyr'   rV   rL  rE  r#   r>  r6  rM  rN  r;  rO  ÚcheckScriptr[   rP  r/   rp   r   r2  rÎ   r   re  )rK   rP  r“   rñ   rj  rk  rR  rA  rS  rq  rr  Úextra_profile_runsrV  rB  rT  rU  Úscripted_fnrX  Úrecording_inputsÚscript_stdoutÚscript_outputsÚopt_script_outputsÚpython_outputss                          r"   ru  zJitTestCase.checkScript¿  sž  € ô �Y‰Y×*Ñ*¨8Ó4ñ ?	#Ü:Ó<ñ >#Ü%(Ñ(iÐbhÔ(iÓ%iÐ"Ü˜f¤cÔ*ô Ÿ™×2Ñ2°6ÀiÐ2ÓP�Bð
 !×/Ñ/°	Ó:�EØ13�JÜ ¨U¸
ÕCØ—L‘L Ô,à % d¡�IÜ")¨"¨dÓ"3‘Kô &Ÿ_™_¬W×->Ñ->¸vÓ-FÓG�FØ×$Ñ$ØØØŸ™Ø!)Ø-AØ'5Ø"+Ø"#ð %ô %ô #(§)¡)×"2Ñ"2°6ÀaÐ"2Ó"H�KØ &�Iá'Ü'3Ñ4YÐ[aÓ'bÑ$à'-Ð$á!Ø×,Ñ,Ó.ð H°-Ù)4Ð6FÐ)G˜÷Hà×,Ñ,Ó.ñ LÙ-8Ð:JÐ-KÐ*÷Là×,Ñ,Ó.ñ <Ù)2°FÐ);˜÷<å%Ø×+Ñ+¨M¸!Ñ,<ÀhÐ+ÔOØ×$Ñ$ ^Ð5GÈdÐY]Ð$Õ^ñ &1Ð2BÐ%C�NÙ+Ñ/AÙ-8Ð:JÐ-KÐ*á)4Ð6FÐ)GÐ&Ý$Ø×*Ñ*¨;¸Ð@RÔSÙ%.°Ð%7�NØ× Ñ  °ÀdÐQUÐ ÔVØ× Ñ  Ð1CÈ$ÐUYÐ ÔZØ"÷}>#ð >#÷?	#ñ ?	#÷THð Hú÷Lð Lú÷<ð <ú÷[>#ð >#úð >#÷?	#÷ ?	#ñ ?	#úsl    I*«DIÅH0ÅIÅ#H<Å)IÆIÆBIÈ	I*È0H9È5IÈ<IÉIÉIÉIÉI	ÉI*É*I3c                 ó   ‡‡— ˆfd„}|€|}ˆfd„}|}|rt        d„ |«      Š |‰«      }n|Št        j                  j                  ||||
d¬«      }|	r| j	                  |«      }|rt        |j                  «        ||Ž } ||Ž }| j                  ||«        |‰Ž }|r(t        j                  j                   ||«      |¬«      } |‰Ž }|r(t        j                  j                   ||«      |¬«      }| j                  ||«       |r| j                  ||¬«        |‰Ž } ||«      }|r#t        j                  j                  |d|¬	«      }|r- |«      |z  }t        j                  j                  ||¬«      }|rt        d
„ |«      Š |‰«      } |‰Ž } ||«      }|r#t        j                  j                  |d|¬	«      }|r- |«      |z  }t        j                  j                  ||¬«      }| j                  ||«       |rC| j                  ||¬«       t        «      D ]  \  }}|€|€Œ| j                  ||dd¬«       Œ! |S )Nc                 óJ   •— ‰�| d ‰  } t        d„ t        | «      D «       «      S )Nc              3   óz   K  — | ]3  \  }}|€Œ	t        j                  |dz   «      |j                  «       z  –— Œ5 y ­w)Nri  )ÚmathÚlogÚsum)rœ   rC  Úvs      r"   rž   z9JitTestCase.checkTrace.<locals>.allSum.<locals>.<genexpr>  s/   è ø€ Ò\±T°Q¸ÈaÉm”t—x‘x  A¡“¨¯©«Õ0Ñ\ùs   ‚
;�.;)r‚  Ú	enumerate)ÚvsÚdrops    €r"   ÚallSumz&JitTestCase.checkTrace.<locals>.allSum  s/   ø€ ð ÐØ˜˜$˜�Z�ô Ñ\¼YÀr»]Ô\Ó\Ð\r$   c                 ó8   •‡— ˆfd„Št         ‰‰d„ g «      «      S )Nc                 óÀ   •‡ ‡— t        ‰ t        j                  «      r ‰‰ |«       |S t        ‰ t        «      rt	        ˆˆ ˆfd„‰ |«       |S t	        ˆˆfd„‰ |«       |S )Nc                 ó   •—  ‰‰|   ‰| «      S r   r9   )r˜   Úkeyr-   r.   Úinput_reduces     €€€r"   r,   zVJitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.input_reduce.<locals>.<lambda>%  s   ø€ ©L¸¸s¹ÀRÈÓ,M€ r$   c                 ó   •—  ‰|‰| «      S r   r9   )r˜   Úvalr-   rŒ  s     €€r"   r,   zVJitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.input_reduce.<locals>.<lambda>'  s   ø€ ©L¸¸bÀ#Ó,F€ r$   )r'   r(   r)   Údictr   )r.   r-   r˜   rŒ  s   `` €r"   rŒ  zDJitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.input_reduce!  sV   ú€ Ü˜e¤U§\¡\Ô2Ù�u˜c”Nð
 �
ô	   ¤tÔ,ÜÕMÈuÐVYÔZð �
ô ÔFÈÈsÔSØ�
r$   c                 ó$   — |j                  | «      S r   )rj   )r+   r˜   s     r"   r,   z@JitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.<lambda>)  s   € ÀsÇzÁzÐRSÃ}€ r$   )Útuple)r“   rŒ  rx  s    @€r"   Úflatten_inputsz.JitTestCase.checkTrace.<locals>.flatten_inputs   s!   ù€ ôô ™Ð&6Ñ8TÐVXÓYÓZÐZr$   c                 ó>   — | j                  «       j                  «       S r   )Úclonern  r*   s    r"   r,   z(JitTestCase.checkTrace.<locals>.<lambda>-  s   € °a·g±g³i×6NÑ6NÓ6P€ r$   F)Úcheck_toleranceÚ_force_outplaceÚcheck_trace)Úallow_unusedrp  T)Úcreate_graphr˜  c                 ó   — t        | d¬«      S )NT)rh  r   r*   s    r"   r,   z(JitTestCase.checkTrace.<locals>.<lambda>\  s   € ´h¸qÐPTÔ6U€ r$   g-Cëâ6J?)r/   r(   r3   r3  ÚgetExportImportCopyÚprintr¦   rÎ   ÚautogradÚgradrâ   )rK   rò   Úreference_tensorsÚinput_tensorsr†  r˜  ÚverboseÚinputs_require_gradsr•  Úexport_importr–  Ú	grad_atolÚ	grad_rtolr‡  r’  Únograd_inputsÚflattened_recording_inputsrY  rQ  Ú
outputs_geÚgradsÚgrads_geÚl1Úl2Úgrads2Úl1_geÚl2_geÚ	grads2_geÚg2Úg2_gerx  s       `                         @r"   Ú
checkTracezJitTestCase.checkTrace  s´  ù€ ô	]ð Ð Ø-ˆMô		[ð *ˆÙÜ+Ñ,PÐRcÓdÐÙ)7Ð8HÓ)IÑ&à0Ðô
 �Y‰Y�_‰_˜T =À/Ø-<È%ð ó Qˆñ Ø×)Ñ)¨"Ó-ˆBáÜ�"—(‘(ŒOñ ˜Ð&ˆÙ˜Ð'ˆ
Ø×Ñ˜ *Ô-ñ Ð(Ð)ˆÙÜ—N‘N×'Ñ'©¨w«Ð9SØ5Að (ó CˆEñ Ð)Ð*ˆ
ÙÜ—~‘~×*Ñ*©6°*Ó+=Ð?YØ8Dð +ó FˆHà×Ñ˜ *Ô-ÙØ×Ñ˜U H°9À9ÐÔMñ Ð(Ð)ˆÙ�G‹_ˆÙÜ—N‘N×'Ñ'¨Ð,FÐUYØ5Að (ó CˆEáÙ˜“- "Ñ$ˆBÜ—^‘^×(Ñ(¨Ð-GÐVbÐ(ÓcˆFáÜ+Ñ,UÐWhÓiÐÙ)7Ð8HÓ)IÐ&áÐ)Ð*ˆ
Ù�zÓ"ˆÙÜ—~‘~×*Ñ*ØÐ1ÀÐS_ð +ó aˆHñ  Ù˜HÓ%¨Ñ-ˆEÜŸ™×+Ñ+¨EÐ3MÐ\hÐ+ÓiˆIà×Ñ˜ *Ô-ÙØ×Ñ˜U H°9À9ÐÔMÜ  ¨Ó3ò B‘	��EØ�: % -ØØ× Ñ   U°¸DÐ ÕAðBð
 ˆ	r$   c                 ó  — t         j                  j                  |«      }t        «       5   ||Ž }ddd«       t        «       5   ||Ž }ddd«       | j	                  «       | j                  ||«       |S # 1 sw Y   ŒGxY w# 1 sw Y   Œ;xY w)zq
        Check that a nn.Module's results in Script mode match eager and that it
        can be exported
        N)r(   r3   rP  r   rÎ   ÚassertExportImportModule)rK   Ú	nn_modulerm   ÚsmÚ	eager_outÚ
script_outs         r"   ÚcheckModulezJitTestCase.checkModules  sŠ   € ô
 �Y‰Y×Ñ˜iÓ(ˆäÓñ 	)Ù! 4Ð(ˆI÷	)ô Óñ 	#Ù˜T˜ˆJ÷	#ð 	×Ñ˜ JÔ/Ø×%Ñ% b¨$Ô/àˆ	÷	)ð 	)ú÷	#ð 	#ús   ªA6ÁBÁ6A?ÂB)r9   )TN)F)
NNFFTgñhãˆµøä>TFNN)!r[   r\   r]   Ú_do_cuda_memory_leak_checkrƒ   r<   rp   rx   r}   r   r‚   r‰   rª   r°   rï   r|   r{   r  r  r$  r,  r*  r9  rE  rG  r   Ú	PROFILINGrZ  re  ru  r³  rº  Ú__classcell__)r‡   s   @r"   r`   r`   e   sâ   ø„ Ø!%ÐØÐô)˜ô )ô)˜ô )òQò1ôôó(ò<ò;Mò|*ò,óó4,ó(+ò85ò9òò$òYð %)°$ÀuØ)*°m×6MÑ6Mó( òT8ð  Ø!Ø).Ø#(ØØ+×5Ñ5ØØóN#ð` AEØ:?ØRVØDHóböHr$   r`   c                   ó   — e Zd Zd„ Zd„ Zy)ÚNoTracerWarnContextManagerc                 óˆ   — t         j                  j                  «       | _        t         j                  j	                  d«       y ©NF)r(   r1   Ú_jit_get_tracer_state_warnÚprevÚ_jit_set_tracer_state_warnrO   s    r"   rP   z$NoTracerWarnContextManager.__enter__†  s(   € Ü—H‘H×7Ñ7Ó9ˆŒ	Ü�‰×+Ñ+¨EÕ2r$   c                 óV   — t         j                  j                  | j                  «       y r   )r(   r1   rÄ  rÃ  rl   s     r"   rZ   z#NoTracerWarnContextManager.__exit__Š  s   € Ü�‰×+Ñ+¨D¯I©IÕ6r$   N)r[   r\   r]   rP   rZ   r9   r$   r"   r¿  r¿  …  s   „ ò3ó7r$   r¿  c              #   ó  K  — t         j                  j                  «       }t         j                  j                  | «       	 d –— t         j                  j                  |«       y # t         j                  j                  |«       w xY w­wr   )r(   r1   Ú_jit_get_inline_everything_modeÚ_jit_set_inline_everything_mode)Úshould_inlineÚolds     r"   Úinline_everything_moderË  �  sV   è ø€ ä
�(‰(×
2Ñ
2Ó
4€CÜ	‡H�H×,Ñ,¨]Ô;ð6Ûä�‰×0Ñ0°Õ5øŒ�‰×0Ñ0°Õ5üó   ‚>B	ÁA% Á B	Á%!BÂB	c              #   ó  K  — t         j                  j                  «       }t         j                  j                  | «       	 d –— t         j                  j                  |«       y # t         j                  j                  |«       w xY w­wr   )r(   r1   Ú _debug_get_fusion_group_inliningÚ _debug_set_fusion_group_inlining)ÚinliningrÊ  s     r"   Úset_fusion_group_inliningrÑ  –  sV   è ø€ ä
�(‰(×
3Ñ
3Ó
5€CÜ	‡H�H×-Ñ-¨hÔ7ð7Ûä�‰×1Ñ1°#Õ6øŒ�‰×1Ñ1°#Õ6ürÌ  c              #   óÜ   K  — t         j                  j                  |  «       	 d –— t         j                  j                  d«       y # t         j                  j                  d«       w xY w­wrR   )r(   r1   Ú%_debug_set_autodiff_subgraph_inlining)Úenableds    r"   Ú"disable_autodiff_subgraph_inliningrÕ     sF   è ø€ ä	‡H�H×2Ñ2°w°;Ô?ð=Ûä�‰×6Ñ6°tÕ<øŒ�‰×6Ñ6°tÕ<üs   ‚!A,¤A ¨ A,Á!A)Á)A,c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  óV   •— t        d«      5   ‰| i |¤Ž d d d «       y # 1 sw Y   y xY wrR   ©rË  ©rm   r+  r-   s     €r"   Úwrapperz#_inline_everything.<locals>.wrapper©  s-   ø€ ä# DÓ)ñ 	 Ù�Ð˜Ò÷	 ÷ 	 ñ 	 úó   �	Ÿ(©Ú	functoolsÚwraps©r-   rÚ  s   ` r"   Ú_inline_everythingrà  ¨  ó%   ø€ Ü‡_�_�RÓó ó ð ð €Nr$   c                 óB   ‡ — t        j                  ‰ «      ˆ fd„«       }|S )Nc                  óV   •— t        d«      5   ‰| i |¤Ž d d d «       y # 1 sw Y   y xY wrÁ  rØ  rÙ  s     €r"   rÚ  z5_tmp_donotuse_dont_inline_everything.<locals>.wrapper²  s-   ø€ ä# EÓ*ñ 	 Ù�Ð˜Ò÷	 ÷ 	 ñ 	 úrÛ  rÜ  rß  s   ` r"   Ú$_tmp_donotuse_dont_inline_everythingrä  ±  rá  r$   c                  ó   ‡ ‡— ˆ ˆfd„}|S )Nc                 óF   •— t        j                  j                  | ‰fi ‰¤ŽS r   )r(   r3   r3  )rò   rm   r+  s    €€r"   rÚ  z_trace.<locals>.wrapperº  s   ø€ Ü�y‰y�‰˜t TÑ4¨VÑ4Ð4r$   r9   )rm   r+  rÚ  s   `` r"   Ú_tracerç  ¹  s   ù€ õ5à€Nr$   c                 ó   ‡ — ˆ fd„}|S )Nc                  óP  •— t         j                  j                  d«       t         j                  j                  d«       t         j                  j	                  d«       	  ‰| i |¤Ž t         j                  j                  d«       t         j                  j                  d«       t         j                  j	                  d«       y # t         j                  j                  d«       t         j                  j                  d«       t         j                  j	                  d«       w xY w©NTF)r(   r1   Ú$_jit_override_can_fuse_on_cpu_legacyÚ_jit_override_can_fuse_on_cpuÚ_jit_set_te_must_use_llvm_cpurÙ  s     €r"   rÚ  z!enable_cpu_fuser.<locals>.wrapperÀ  s»   ø€ Ü�‰×5Ñ5°dÔ;Ü�‰×.Ñ.¨tÔ4Ü�‰×.Ñ.¨uÔ5ð	9Ù�Ð˜Òä�H‰H×9Ñ9¸%Ô@Ü�H‰H×2Ñ2°5Ô9Ü�H‰H×2Ñ2°4Õ8øô �H‰H×9Ñ9¸%Ô@Ü�H‰H×2Ñ2°5Ô9Ü�H‰H×2Ñ2°4Õ8ús   Á C ÃAD%r9   rß  s   ` r"   Úenable_cpu_fuserrî  ¿  s   ø€ ô	9ð €Nr$   c                 ó   — | rt         S d„ }|S )Nc                 ó   ‡ — ˆ fd„}|S )Nc                  ó   •—  ‰| i |¤ŽS r   r9   rÙ  s     €r"   rÚ  z8enable_cpu_fuser_if.<locals>.noop_fuser.<locals>.wrapperÒ  s   ø€ Ù˜4Ð* 6Ñ*Ð*r$   r9   rß  s   ` r"   Ú
noop_fuserz'enable_cpu_fuser_if.<locals>.noop_fuserÑ  s   ø€ ô+àˆNr$   )rî  )Úcondrò  s     r"   Úenable_cpu_fuser_ifrô  Í  s   € ÙÜÐò	ð Ðr$   c                 ó$   — | j                  d«      S ©NÚforward)Ú_get_method©Úcs    r"   Úget_forwardrû  ×  s   € Ø�=‰=˜Ó#Ð#r$   c                 ó8   — | j                  d«      j                  S rö  )rø  r¦   rù  s    r"   Úget_forward_graphrý  Ú  s   € Ø�=‰=˜Ó#×)Ñ)Ð)r$   c                 óV   — | j                   j                  |«      j                  |«      S r   )rå   r6  rø  )ræ   rô   Úmethods      r"   Úget_module_methodr   Ý  s    € Ø�4‰4�<‰<˜Ó×+Ñ+¨FÓ3Ð3r$   c                 óž   — | j                   j                  j                  «       D ��cg c]  \  }}|j                  |«      r|‘Œ c}}S c c}}w r   )Ú_modulesrå   r¤   r´   )rô   Úprefixr¶   Ú_s       r"   Úattrs_with_prefixr  à  sD   € Ø Ÿ/™/×,Ñ,×2Ñ2Ó4÷ %‘$�!�QØ�|‰|˜FÔ#ò ó %ð %ùó %s   ¨A	c                 óÒ   — d}g }t        |«      D ]T  }t        |«      dkD  r2t        j                  j                  | g|¢­Ž }|j                  |«       ŒC| j                  d¬«       ŒV |S )Né   r   T)Úretain_graph)r_  r?   r(   r�  rž  rj   Úbackward)r¾   rm   Úprofiling_countÚresultsr  Úrs         r"   Úwarmup_backwardr  ä  se   € Ø€OØ€GÜ�?Ó#ò *ˆÜˆt‹9�qŠ=Ü—‘×#Ñ# AÐ-¨Ò-ˆAØ�N‰N˜1Õà�J‰J DˆJÕ)ð*ð €Nr$   c                  óv   — | D ]4  }t        t        j                  |j                     |j                  |«       Œ6 y r   )Úsetattrrd   Úmodulesr\   r[   )rm   Úargs     r"   Úmake_globalr  ñ  s0   € Øò @ˆÜ”—‘˜CŸN™NÑ+¨S¯\©\¸3Õ?ñ@r$   c                 óò  — t        j                  «       5 }t        j                  j	                  |d«      }t        |d«      5 }|j                  | «       d d d «       t        j                  j                  ||«      }t        j                  j                  |«      }|j                  }t        |t        «      sJ ‚|j                  |«       t        ||«      }|cd d d «       S # 1 sw Y   ŒŽxY w# 1 sw Y   y xY w)Nz	script.pyÚw)r  ÚTemporaryDirectoryr  ÚpathrÃ   r¼   ÚwriteÚ	importlibÚutilÚspec_from_file_locationÚmodule_from_specÚloaderr'   r   Úexec_moduler6  )	r   Úfn_nameÚtmp_dirÚscript_pathr¾   Úspecrô   r  r-   s	            r"   Ú_get_py3_coder"  ÷  sÊ   € Ü	×	$Ñ	$Ó	&ð 
¨'Ü—g‘g—l‘l 7¨KÓ8ˆÜ�+˜sÓ#ð 	 qØ�G‰G�DŒM÷	ä�~‰~×5Ñ5°g¸{ÓKˆÜ—‘×0Ñ0°Ó6ˆØ—‘ˆÜ˜&¤&Ô)Ð)Ð)Ø×Ñ˜6Ô"Ü�V˜WÓ%ˆØ÷
ñ 
÷	ð 	ú÷
ð 
ús$   •-C-ÁC!ÁBC-Ã!C*	Ã&C-Ã-C6c                   ó   — e Zd Zdd„Zd„ Zy)ÚTensorExprTestOptionsNc                 ó(  — t         j                  j                  d«      | _        t         j                  j	                  d«      | _        t         j                  j                  «       | _        t         j                  j                  «       | _	        t         j                  j                  d«       t         j                  j                  d«       t         j                  j                  «       | _        t         j                  j                  d«       t         j                  j                  «       | _        t         j                  j#                  d«       t         j                  j%                  «       | _        t         j                  j)                  d«       y rê  )r(   r1   Ú_jit_set_profiling_executorÚold_profiling_executorÚ_get_graph_executor_optimizeÚold_profiling_modeÚ_jit_can_fuse_on_cpuÚold_cpu_fuser_stateÚ_jit_can_fuse_on_gpuÚold_gpu_fuser_staterì  Ú_jit_override_can_fuse_on_gpuÚ_jit_texpr_fuser_enabledÚtexpr_fuser_stateÚ_jit_set_texpr_fuser_enabledrÎ  Úold_fusion_inliningrÏ  Ú_jit_get_te_must_use_llvm_cpuÚold_te_must_use_llvm_cpurí  rO   s    r"   rM   zTensorExprTestOptions.__init__  só   € Ü&+§h¡h×&JÑ&JÈ4Ó&PˆÔ#Ü"'§(¡(×"GÑ"GÈÓ"MˆÔä#(§8¡8×#@Ñ#@Ó#BˆÔ Ü#(§8¡8×#@Ñ#@Ó#BˆÔ Ü�‰×.Ñ.¨tÔ4Ü�‰×.Ñ.¨tÔ4Ü!&§¡×!BÑ!BÓ!DˆÔÜ�‰×-Ñ-¨dÔ3Ü#(§8¡8×#LÑ#LÓ#NˆÔ Ü�‰×1Ñ1°%Ô8Ü(-¯©×(NÑ(NÓ(PˆÔ%Ü�‰×.Ñ.¨uÕ5r$   c                 óB  — t         j                  j                  | j                  «       t         j                  j	                  | j
                  «       t         j                  j                  | j                  «       t         j                  j                  | j                  «       t         j                  j                  | j                  «       t         j                  j                  | j                  «       t         j                  j                  | j                  «       y r   )r(   r1   r&  r'  r(  r)  r1  r0  r.  r-  rì  r+  rÏ  r2  rí  r4  rO   s    r"   ÚrestorezTensorExprTestOptions.restore  sª   € Ü�‰×,Ñ,¨T×-HÑ-HÔIÜ�‰×-Ñ-¨d×.EÑ.EÔFä�‰×-Ñ-¨d×.DÑ.DÔEÜ�‰×.Ñ.¨t×/GÑ/GÔHÜ�‰×.Ñ.¨t×/GÑ/GÔHÜ�‰×1Ñ1°$×2JÑ2JÔKÜ�‰×.Ñ.¨t×/LÑ/LÕMr$   )ÚreturnN)r[   r\   r]   rM   r6  r9   r$   r"   r$  r$    s   „ ó6óNr$   r$  c                 ób  — g }| D ]¢  }t        |t        j                  «      r.|j                  |j	                  «       j                  «       «       ŒKt        |«      r<|j                  |D �cg c]   }|j	                  «       j                  «       ‘Œ" c}«       Œ’|j                  |«       Œ¤ |S c c}w r   )r'   r(   r)   rj   rm  r”  r   )rm   r“   r  r+   s       r"   Úclone_inputsr9    s…   € Ø<>€Fàò ˆÜ�cœ5Ÿ<™<Ô(Ø�M‰M˜#Ÿ*™*›,×,Ñ,Ó.Õ/Ü# CÔ(Ø�M‰M°sÖ;°!˜1Ÿ8™8›:×+Ñ+Õ-Ò;Õ<à�M‰M˜#Õðð €Mùò	 <s   Á*%B,
c           	      óÊ  ‡— g }‰j                  | |«      }‰j                  «       }‰j                  «       }||dœ}‰j                  dv }|r&dt	        t
        j                  ‰j                  «      i}ddgdœddgdœddgdœd	d
gdœddgdœddgdœddgdœg}	|r|S |D ]Ä  }
|j                  «       D ]¯  }|€Œt        |«      rŒt        ˆfd„|	«      }|D ]w  }|d   D ]m  }t        |
j                  «      }t        |
j                  «      |kD  r.t        |
j                  |   t        «      rt        ||   «      ||<   t!        |«      |
_        Œo Œy |j#                  ||
f«       Œ± ŒÆ |S )N)Úfunctionrÿ  )Úresize_Ú
resize_as_rÿ  Údiv_floor_roundingr   )rñ   Úarg_idxÚdiv_no_rounding_modeÚdiv_trunc_roundingÚ
index_fillri  Ú	full_likeÚmulÚnew_fullr   c                 ó(   •— ‰j                   | d   k(  S )Nrñ   )Úformatted_name)r¶   Úops    €r"   r,   z1get_traced_sample_variant_pairs.<locals>.<lambda>n  s   ø€ ¨B×,=Ñ,=ÀÀ6ÁÑ,J€ r$   r?  )Úsample_inputsÚget_opÚ
get_methodrñ   r6  r(   r)   r>   Ú	is_lambdarÐ   r<   rm   r?   r'   r7  Úintr‘  rj   )ÚdeviceÚdtyperH  rQ  Úsamplesrò   rÿ  ÚvariantsÚhas_fake_functionÚops_with_unsupported_bool_argsÚsampleÚvariantÚmatching_opsÚop_dataÚidxrm   s     `             r"   Úget_traced_sample_variant_pairsrY  +  sº  ø€ à%'€Gà×Ñ˜v uÓ-€Gð �9‰9‹;€DØ�]‰]‹_€Fð  Fñ€Hð Ÿ™Ð#<Ð<ÐáØœg¤e§l¡l°B·G±GÓ<Ð=ˆð )Ø�sñ	
ð
 +Ø�sñ	
ð
 )Ø�sñ	
ð
 !Ø�sñ	
ð
  Ø�sñ	
ð
 Ø�sñ	
ð
 Ø�sñ	
ð3&Ð"ñ@ Øˆàò .ˆØ—‘Ó(ò 	.ˆGØˆØä˜Ô!Øä!Ó"JÐLjÓkˆLØ'ò .�Ø" 9Ñ-ò .�CÜ §¡Ó,�DÜ˜6Ÿ;™;Ó'¨#Ò-´*¸V¿[¹[ÈÑ=MÌtÔ2TÜ$'¨¨S©	£N˜˜S™	Ü"'¨£+�F•Kñ	.ð.ð �N‰N˜G VÐ,Õ-ñ	.ð.ð$ €Nr$   c                 óh   — d„ }t        | t        |«      «      xr | j                  |j                  k(  S )Nc                   ó   — yr\  r9   r9   r$   r"   r,   zis_lambda.<locals>.<lambda>|  s   � r$   )r'   rW   r[   )ÚlambÚLAMBDAs     r"   rL  rL  {  s*   € Ù€FÜ�dœD ›LÓ)ÒN¨d¯m©m¸v¿¹Ñ.NÐNr$   )T)\Útorch.autogradr   Útorch.autograd.functionr   Útorch.jit.annotationsr   r   Ú
torch.onnxr	   r(   Ú
torch.cudaÚ	torch.jitÚtorch.jit._loggingÚtorch.jit.frontendÚtorch.jit.quantizedrÌ   rÝ  Útorch.testingr
   Ú$torch.testing._internal.common_utilsr   r   r   r   r   r   Ú"torch.testing._internal.common_jitr   r   Ú
contextlibr   r   rÞ   r   Úcollectionsr   Úimportlib.utilr  r;  r€  r  rÊ   rd   r  rM  Úimportlib.abcr   Útypingr   r   ÚcudaÚis_availableÚRUN_CUDAÚdevice_countÚRUN_CUDA_MULTI_GPUÚRUN_CUDA_HALFÚversionÚhipr1   Ú_cuda_getCompiledVersionÚCUDA_VERSIONr_  ÚdÚget_device_capabilityÚmajorr#   r/   r:   rC   rE   rŸ   r`   r¿  rË  rÑ  rÕ  rà  rä  rç  rî  rô  rû  rý  r   r  r  r  r"  r$  r9  rY  rL  r9   r$   r"   ú<module>r|     sñ  ðõ $Ý /ß Få *Û Û Û Û Û Û Û Û õ $÷÷ õ AÝ Fõ &Ý Ý Ý #ã Û Û 	Û Û 	Û Û 
Û Û Ý  ß à�:‰:×"Ñ"Ó$€ØÒ? %§*¡*×"9Ñ"9Ó";¸aÑ"?Ð Ø€à‡:�:×ÑÔ U§]¡]×%6Ò%6Ø—8‘8×4Ñ4Ó6€LÙ�5—:‘:×*Ñ*Ó,Ó-ò "ˆØ—
‘
×0Ñ0°Ó3°AÑ6ˆØ�A‹IØ!‰Mð"ò
òIò*ò
÷ñ ð2 '€ô^Ð#ô ^÷@7ñ 7ð ñ6ó ð6ð ñ7ó ð7ð ò=ó ð=òòòòòò$ò*ò4ò%ò
ò@ò÷Nñ Nò4òMó`Or$   