Ë
    ÌÓ^jª„  ã                   óê  — 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/m0Z0 e	jb                  je                  «       Z3e3xr e	jb                  ji                  «       dkD  Z5e3Z6e	jb                  je                  «       r{e	jn                  jp                  see	jr                  ju                  «       Z; e<e	jb                  ji                  «       «      D ](  Z=e	jb                  j}                  e=«      d    Z?e?dk  sŒ'dZ6Œ* d„ Z@d„ ZAd„ ZBd„ ZC G d„ d«      ZDdZE G d„ de«      ZF G d„ d«      ZGed„ «       ZHed„ «       ZIed2d „«       ZJd!„ ZKd"„ ZLd#„ ZMd$„ ZNd%„ ZOd&„ ZPd'„ ZQd(„ ZRd)„ ZSd*„ ZTd+„ ZUd,„ ZV G d-„ d.«      ZWd/„ ZXd0„ ZYd1„ ZZy)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é   é   Fc                 ó   — t        | ||«       y ©N)Úexec)ÚcodeÚglobÚlocs      úl/var/www/ramen.bs-engineer-server.com/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_registryr9   =   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_planrB   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)ÚselfrF   Ú	exceptionrH   rI   s        r!   Ú__init__z/_AssertRaisesRegexWithHighlightContext.__init__P   s   € Ø"ˆŒØ'ˆÔØˆŒ
Ø"ˆ�r#   c                 ó   — | S r   r8   ©rJ   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)	rF   ÚassertRaisesRegexrG   rH   rI   r
   Úcheck_source_highlightedÚrunÚstr)rJ   Ú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__rL   rO   rY   r8   r#   r!   rD   rD   J   s   „ ñò
#òór#   rD   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   ÚstringiorN   s    r!   rO   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   )ÚappendrU   rf   Úgetvaluere   rc   rd   ©rJ   Úargss     r!   rY   z#JitTestCase.capture_stdout.__exit__s   ó0   € Ø�K‰Kœ˜DŸM™M×2Ñ2Ó4Ó5Ô6Ø�ØŸ™ŒC�Jr#   N©rZ   r[   r\   r]   rO   rY   r8   r#   r!   Úcapture_stdoutra   i   ó   „ ñ	ò	ó	)r#   ro   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   )rc   ÚstderrÚ
sys_stderrr   rf   rN   s    r!   rO   z$JitTestCase.capture_stderr.__enter__|   rg   r#   c                 ó–   — | j                  t        | j                  j                  «       «      «       | `| j                  t
        _        y r   )ri   rU   rf   rj   ru   rc   rt   rk   s     r!   rY   z#JitTestCase.capture_stderr.__exit__‚   rm   r#   Nrn   r8   r#   r!   Úcapture_stderrrr   x   rp   r#   rw   c                 ól   — t         j                  j                  | j                  | j                  «       y r   )r'   r0   Ú_jit_set_emit_hooksÚemitModuleHookÚemitFunctionHookrN   s    r!   ÚsetHookszJitTestCase.setHooks‡   s"   € Ü�‰×$Ñ$ T×%8Ñ%8¸$×:OÑ:OÕPr#   c                 óD   — t         j                  j                  d d «       y r   )r'   r0   ry   rN   s    r!   Ú
clearHookszJitTestCase.clearHooksŠ   s   € Ü�‰×$Ñ$ T¨4Õ0r#   c                 óÈ   •— t         ‰| �  «        t        j                  s3t        j
                  j                  j                  «        dt        _        | j                  «        y rQ   )	ÚsuperÚsetUpr_   Ú_restored_warningsr'   r2   ÚTracerWarningÚignore_lib_warningsr|   ©rJ   Ú	__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~   r9   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Úkindri   Ú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�   )rJ   Ú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)rU   )rJ   Ú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¬«      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                  | «      5 }‰
j                  t        t	        |j                  «       «      «      t        |j                  «       «      «       t        t        d„ |j                  «       «      «      }t        d„ |«      }g }|D ]X  }|j                  |«      5 }|j                  dj                  |D �cg c]  }|j                  «       ‘Œ c}«      «       d d d «       ŒZ t        d„ |«      }g }	|D ]@  }|j                  |«      5 }|	j                  t        j                  |«      «       d d d «       ŒB ||	fcd d d «       S c c}w # 1 sw Y   ŒÊxY w# 1 sw Y   ŒjxY w# 1 sw Y   y xY w)Nc                 ó$   — | j                  d«      S )Nzarchive/code/)Ú
startswith©Úxs    r!   r+   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Ë   s   € ¨a¯l©l¸?Ó.K€ r#   c                 ó$   — | j                  d«      S )Nz.py©Úendswithr´   s    r!   r+   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Í   s   € °!·*±*¸UÓ2C€ r#   Ú c                 ó$   — | j                  d«      S )Nz
.debug_pklr·   )Úfs    r!   r+   zKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Ô   s   € °1·:±:¸lÓ3K€ r#   )ÚzipfileÚZipFileÚassertEqualr>   rŸ   Únamelistr;   ÚfilterÚopenri   ÚjoinÚdecodeÚpickleÚload)ÚbufferÚarchiveÚfilesÚcode_files_strÚ
code_filesr»   ÚstreamÚlineÚdebug_files_strÚdebug_filesrJ   s             €r!   Úextract_filesz9JitTestCase._compared_saved_loaded.<locals>.extract_filesÆ   sf  ø€ ä—‘ Ó(ð /¨Gà× Ñ ¤¤S¨×)9Ñ)9Ó);Ó%<Ó!=¼sÀ7×CSÑCSÓCUÓ?VÔWÜœVÑ$KÈW×M]ÑM]ÓM_Ó`Óa�ä!'Ñ(CÀUÓ!K�Ø�
Ø'ò W�AØ Ÿ™ a›ð W¨FØ"×)Ñ)¨"¯'©'ÈVÖ2TÀT°4·;±;µ=Ò2TÓ*UÔV÷Wð WðWô
 #)Ñ)KÈUÓ"S�Ø �Ø(ò @�AØ Ÿ™ a›ð @¨FØ#×*Ñ*¬6¯;©;°vÓ+>Ô?÷@ð @ð@ð " ;Ð.÷#/ñ /ùò 3U÷Wð Wú÷@ð @ú÷/ð /úsN   —BE/Â*EÃEÃEÃ'/E/Ä%E#Ä;E/ÅEÅE ÅE/Å#E,Å(E/Å/E8r   T©Ústrict)r'   Ú_jit_internalÚ_disable_emit_hooksr>   r   r&   r0   ÚScriptModuleÚ_method_namesÚioÚBytesIOr2   Úsaverj   r?   r¯   rÅ   ÚseekÚzipÚassertMultiLineEqualr    Ú_ivalue_tags_matchÚ_c)rJ   Ú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¨¸TÔBò 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$§G4Á	A G4ÂAG4Ã"D	H$Ç4	H!Ç=HÈH$ÈH!È!H$È$H-c                 ób   — |j                   dk(  sd|j                   v ry | j                  |«       y )Nz<lambda>zaten::)Únamerç   )rJ   Úfuncs     r!   r{   zJitTestCase.emitFunctionHook  s*   € à�9‰9˜
Ò" h°$·)±)Ñ&;ØØ×#Ñ# DÕ)r#   c                 ó&   — | j                  |«       y r   )rç   )rJ   Úmodules     r!   rz   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¬«      5 }	 |j                  «        |j                  |j                  «       t        j                  j                  |j                  |¬«      }t        j                  |j                  «       	 d d d «       j                  d„ «       |S # t        j                  |j                  «       w xY w# 1 sw Y   ŒAx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'   r2   rØ   rÙ   rÅ   ÚtempfileÚNamedTemporaryFileÚcloseré   ÚosÚunlink)rJ   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ô
 ×(Ñ(°Ô6ð 	"¸!ð"Ø—‘”	Ø—‘˜aŸf™fÔ%ÜŸ™Ÿ™¨¯©¸\˜ÓJ�ä—	‘	˜!Ÿ&™&Õ!÷	"ð 	�‰ÑSÔTØˆøô —	‘	˜!Ÿ&™&Õ!ú÷	"ð 	"ús%   Â7E/Â9AEÄE/Å!E,Å,E/Å/E8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�   ri   r•   ©r–   Úoutr”   r�   r�   s      €€r!   r�   z.JitTestCase.assertGraphContains.<locals>.nodes3  óa   ø€ ØˆCØŸ™›ò (�Ø—9‘9“; $Ò&Ø—J‘J˜tÔ$Ø!Ÿ[™[›]ò (�EØ™5 ›<Ñ'‘Cñ(ð(ð
 ˆJr#   )rU   Úcountr    r>   )rJ   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>.nodesN  r
  r#   )rU   r  r>   )
rJ   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)rJ   r‘   rl   Úkwargss       r!   ÚassertExpectedONNXGraphz#JitTestCase.assertExpectedONNXGraph[  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'   r0   ÚGraphr¥   Ú_jit_pass_lintÚ_jit_pass_dceÚ_jit_pass_canonicalizeÚassertExpectedrU   )rJ   Útracerl   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'   r0   r&  r¥   r'  ÚgetattrÚboolÚ	set_graph)rJ   ré   r+  r¥   r0  r  s         r!   Úrun_passzJitTestCase.run_passl  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)rJ   Ú	frames_upÚframeÚiÚdefined_varss        r!   Úget_frame_varszJitTestCase.get_frame_vars~  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   )rD   )rJ   rK   rH   rI   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   rR   r&   rU   r=  r"   r6  r'   r2   ÚCompilationUnitr.  ÚtextwrapÚdedentr3  Ú	getsourcerZ   Úscript)rJ   rH  r’   rK   rH   ré   ÚoutputsÚcapture_outputr9  Ú	profilingr:  Ú
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 ]4  }|j                  j                  |«        ||Ž }| j                  ||«       Œ6 y r   )Úget_debug_staterB   r   Únum_bailoutsÚrangeÚrequest_bailoutr¾   )	rJ   Úmodelr’   r  ÚstateÚplanrU  r;  Úbailout_outputss	            r!   ÚcheckBailoutszJitTestCase.checkBailoutsº  sk   € Ø×%Ñ%Ó'ˆÜ! %Ó(ˆØ—y‘y×-Ñ-Ó/ˆÜ�|Ó$ò 	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(   è ø€ Ò$eÐYZ¤Z°´5·<±<Ó%@Ò%TÀQÇ_Á_Ó%TÑ$eùs   ‚24rB  rA  é   )ÚoptimizeÚinputs_requires_gradrJ  rK  r9  r   c                 ó>   — | j                  «       j                  «       S r   )ÚdetachÚrequires_grad_r)   s    r!   r+   z)JitTestCase.checkScript.<locals>.<lambda>ö  s   € ¸!¿(¹(»*×:SÑ:SÓ:U€ r#   Nr   rd   )Úsubname©ÚatolÚrtol)r'   r2   Úoptimized_executionr   Úanyr&   rU   rD  r=  r"   r6  r.  rE  rF  r3  rG  ÚcheckScriptrZ   rH  r.   ro   r   r*  r¾   r   r\  )rJ   rH  r’   ré   ra  rb  rJ  r9  rK  rh  ri  Úextra_profile_runsrN  r:  rL  rM  Úscripted_fnrP  Úrecording_inputsÚscript_stdoutÚscript_outputsÚopt_script_outputsÚpython_outputss                          r!   rl  zJitTestCase.checkScriptÃ  s“  € ô �Y‰Y×*Ñ*¨8Ó4ñ >	Ô6_Ó6añ >	Ü!$Ñ$eÐ^dÔ$eÓ!eÐÜ˜&¤#Ô&ô —Y‘Y×.Ñ.¨vÀ)Ð.ÓL�ð
 ×+Ñ+¨IÓ6�Ø-/�
Ü˜F¨°JÕ?Ø—‘˜ZÔ(à! $™K�	Ü% b¨$Ó/‘ô "Ÿ™¬×):Ñ):¸6Ó)BÓC�Ø× Ñ ØØØ—O‘OØ%Ø)=Ø#1Ø'Øð !ô !ô $Ÿi™i×.Ñ.¨vÀ!Ð.ÓD�Ø"�	á#Ü#/Ñ0UÐW]Ó#^Ñ à#)Ð áØ×(Ñ(Ó*ð D¨mÙ%0Ð2BÐ%C�N÷Dà×(Ñ(Ó*ñ HÙ)4Ð6FÐ)GÐ&÷Hà×(Ñ(Ó*ñ 8Ù%.°Ð%7�N÷8å!Ø×'Ñ'¨°aÑ(8À(Ð'ÔKØ× Ñ  Ð1CÈ$ÐUYÐ ÕZñ "-Ð.>Ð!?�Ù'Ñ+=Ù)4Ð6FÐ)GÐ&á%0Ð2BÐ%CÐ"Ý Ø×&Ñ& {°FÐ<NÔOÙ!*¨FÐ!3�Ø×Ñ˜^¨^À$ÈTÐÔRØ×Ñ˜^Ð-?ÀdÐQUÐÔVØ÷}>	÷ >	ò >	÷RDð Dú÷Hð Hú÷8ð 8ú÷[>	ð >	ú÷ >	÷ >	ñ >	úsl    I)«DIÅH0ÅIÅ#H<Å)IÆIÆBIÈ	I)È0H9È5IÈ<IÉIÉIÉIÉI	ÉI)É)I2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                  ||«       |rE| j                  ||¬«       t        d¬«      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)Nr`  )ÚmathÚlogÚsum)r›   r;  Úvs      r!   r�   z9JitTestCase.checkTrace.<locals>.allSum.<locals>.<genexpr>  s/   è ø€ Ò\±T°Q¸ÈaÉm”t—x‘x  A¡“¨¯©«Õ0Ñ\ùs   ‚
;�.;)ry  Ú	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   r8   )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   r8   )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   )ri   )r*   r—   s     r!   r+   z@JitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.<lambda>,  s   € ÀsÇzÁzÐRSÃ}€ r#   )Útuple)r’   rƒ  ro  s    @€r!   Úflatten_inputsz.JitTestCase.checkTrace.<locals>.flatten_inputs#  s!   ù€ ôô ™Ð&6Ñ8TÐVXÓYÓZÐZr#   c                 ó>   — | j                  «       j                  «       S r   )Úclonere  r)   s    r!   r+   z(JitTestCase.checkTrace.<locals>.<lambda>0  s   € °a·g±g³i×6NÑ6NÓ6P€ r#   F)Úcheck_toleranceÚ_force_outplaceÚcheck_trace)Úallow_unusedrg  T)Úcreate_graphr�  c                 ó   — t        | d¬«      S )NT)r_  r   r)   s    r!   r+   z(JitTestCase.checkTrace.<locals>.<lambda>_  s   € ´h¸qÐPTÔ6U€ r#   rÐ   g-Cëâ6J?)r.   r'   r2   r+  ÚgetExportImportCopyÚprintr¥   r¾   ÚautogradÚgradrÚ   )rJ   rê   Úreference_tensorsÚinput_tensorsr}  r�  ÚverboseÚinputs_require_gradsrŒ  Úexport_importr�  Ú	grad_atolÚ	grad_rtolr~  r‰  Únograd_inputsÚflattened_recording_inputsrQ  rI  Ú
outputs_geÚgradsÚgrads_geÚl1Úl2Úgrads2Úl1_geÚl2_geÚ	grads2_geÚg2Úg2_gero  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Ü  ¨¸4Ô@ò 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'   r2   rH  r   r¾   ÚassertExportImportModule)rJ   Ú	nn_modulerl   ÚsmÚ	eager_outÚ
script_outs         r!   ÚcheckModulezJitTestCase.checkModulev  sŠ   € ô
 �Y‰Y×Ñ˜iÓ(ˆäÓñ 	)Ù! 4Ð(ˆI÷	)ô Óñ 	#Ù˜T˜ˆJ÷	#ð 	×Ñ˜ JÔ/Ø×%Ñ% b¨$Ô/àˆ	÷	)ð 	)ú÷	#ð 	#ús   ªA6ÁBÁ6A?ÂB)r8   )TN)F)
NNFFTgñhãˆµøä>TFNN)!rZ   r[   r\   Ú_do_cuda_memory_leak_checkr‚   r;   ro   rw   r|   r~   r�   rˆ   r©   r¯   rç   r{   rz   r  r  r  r$  r"  r1  r=  r?  r   Ú	PROFILINGrR  r\  rl  rª  r±  Ú__classcell__)r†   s   @r!   r_   r_   e   sâ   ø„ Ø!%ÐØÐô)˜ô )ô)˜ô )òQò1ôôó(ò<ò?MòD*ò,óó4,ó(+ò85ò9òò$òYð %)°$ÀuØ)*°m×6MÑ6Mó( òT8ð  Ø!Ø).Ø#(ØØ+×5Ñ5ØØóMð^ 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'   r0   Ú_jit_get_tracer_state_warnÚprevÚ_jit_set_tracer_state_warnrN   s    r!   rO   z$NoTracerWarnContextManager.__enter__‰  s(   € Ü—H‘H×7Ñ7Ó9ˆŒ	Ü�‰×+Ñ+¨EÕ2r#   c                 óV   — t         j                  j                  | j                  «       y r   )r'   r0   r»  rº  rk   s     r!   rY   z#NoTracerWarnContextManager.__exit__�  s   € Ü�‰×+Ñ+¨D¯I©IÕ6r#   N)rZ   r[   r\   rO   rY   r8   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'   r0   Ú_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'   r0   Ú _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rQ   )r'   r0   Ú%_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rQ   ©rÂ  ©rl   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'   r2   r+  )rê   rl   r#  s    €€r!   rÑ  z_trace.<locals>.wrapper½  s   ø€ Ü�y‰y�‰˜t TÑ4¨VÑ4Ð4r#   r8   )rl   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'   r0   Ú$_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%r8   rÖ  s   ` r!   Úenable_cpu_fuserrå  Â  s   ø€ ô	9ð €Nr#   c                 ó   — | rt         S d„ }|S )Nc                 ó   ‡ — ˆ fd„}|S )Nc                  ó   •—  ‰| i |¤ŽS r   r8   rÐ  s     €r!   rÑ  z8enable_cpu_fuser_if.<locals>.noop_fuser.<locals>.wrapperÕ  s   ø€ Ù˜4Ð* 6Ñ*Ð*r#   r8   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Ý   r.  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)rV  r>   r'   r”  r•  ri   Úbackward)r»   rl   Ú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   )Úsetattrrc   Úmodulesr[   rZ   )rl   Ú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t        dt        |«      › �«      ‚|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Úwz"Expected loader to be Loader, got )rü   ÚTemporaryDirectoryrÿ   ÚpathrÂ   rÁ   ÚwriteÚ	importlibÚutilÚspec_from_file_locationÚmodule_from_specÚloaderr&   r   r  rV   Úexec_moduler.  )	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ˆØ—‘ˆÜ˜&¤&Ô)Ü Ð#EÄdÈ6ÃlÀ^Ð!TÓUÐUØ×Ñ˜6Ô"Ü�V˜WÓ%ˆØ÷ñ ÷	ð 	ú÷ð ús$   •-DÁC6ÁBDÃ6C?	Ã;DÄD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'   r0   Ú_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ä  rN   s    r!   rL   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'   r0   r  r  r  r   r(  r'  r%  r$  rã  r"  rÆ  r)  rä  r+  rN   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)rZ   r[   r\   rL   r-  r8   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(   ri   rd  r‹  r   )rl   r’   r  r*   s       r!   Úclone_inputsr0  "  s…   € Ø68€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_fillr`  Ú	full_likeÚmulÚnew_fullr   c                 ó(   •— ‰j                   | d   k(  S )Nré   )Úformatted_name)rµ   Úops    €r!   r+   z1get_traced_sample_variant_pairs.<locals>.<lambda>r  s   ø€ ¨B×,=Ñ,=ÀÀ6ÁÑ,J€ r#   r6  )Úsample_inputsÚget_opÚ
get_methodré   r.  r'   r(   r=   Ú	is_lambdarÀ   r;   rl   r>   r&   r/  Úintrˆ  ri   )ÚdeviceÚdtyper?  rI  Úsamplesrê   rö  ÚvariantsÚhas_fake_functionÚops_with_unsupported_bool_argsÚsampleÚvariantÚmatching_opsÚop_dataÚidxrl   s     `             r!   Úget_traced_sample_variant_pairsrP  /  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)Nr   r8   r8   r#   r!   r+   zis_lambda.<locals>.<lambda>€  s   � r#   )r&   rV   rZ   )ÚlambÚLAMBDAs     r!   rC  rC    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  r3  rw  rÿ   rÄ   rc   rü   rE  Úimportlib.abcr   Útypingr   ÚcudaÚis_availableÚRUN_CUDAÚdevice_countÚRUN_CUDA_MULTI_GPUÚRUN_CUDA_HALFÚversionÚhipr0   Ú_cuda_getCompiledVersionÚCUDA_VERSIONrV  ÚdÚget_device_capabilityÚmajorr"   r.   r9   rB   rD   rž   r_   r¶  rÂ  rÈ  rÌ  r×  rÛ  rÞ  rå  rë  rò  rô  r÷  rü  r  r	  r  r  r0  rP  rC  r8   r#   r!   ú<module>rs     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 '€ôaÐ#ô a÷F7ñ 7ð ñ6ó ð6ð ñ7ó ð7ð ò=ó ð=òòòòòò$ò*ò4ò%ò
ò@ò÷Nñ Nò4òMó`Or#   