ó
    IC˜j+ˆ  ã                   ó  • S SK Jr  S SKJr  S SKJrJr  S SKJr  S SK	r	S SK
r	S SKr	S SKr	S SKr	S SKr	S SKrS SKrS SKJr  S SKJrJrJrJrJrJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SK J!r!  S SK"J#r#  S SK$r%S SK&r&S SK r S SK'r'S SK(r(S SK)r)S SK*r*S SK+r+S SK,r,S SK-J.r.  S SK/J0r0  \	Rb                  Re                  5       r3\3=(       a    \	Rb                  Ri                  5       S:„  r5\3r6\	Rb                  Re                  5       (       a„  \	Rn                  Rp                  (       di  \	Rr                  Ru                  5       r;\<" \	Rb                  Ri                  5       5       H+  r=\	Rb                  R}                  \=5      S    r?\?S:  d  M)  Sr6M-     S r@S rAS rBS rC " S S5      rDSrE " S S\5      rF " S S5      rG\S 5       rH\S 5       rI\S2S  j5       rJS! rKS" rLS# rMS$ rNS% rOS& rPS' rQS( rRS) rSS* rTS+ rUS, rV " S- S.5      rWS/ rXS0 rYS1 rZg)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                 ó   • [        XU5        g ©N)Úexec)ÚcodeÚglobÚlocs      Ú¯C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\torch/testing/_internal/jit_utils.pyÚexecWrapperr"   7   s   € Üˆ�SÕó    c                 ó(   • [        S U 5      " U5      $ )Nc                 ó6   • [        U [        R                  5      $ r   )Ú
isinstanceÚtorchÚTensor©Úts    r!   Ú<lambda>Údo_input_map.<locals>.<lambda>;   s   € ¤¨A¬u¯|©|Ô!<r#   r   )ÚfnÚinputs     r!   Údo_input_mapr/   :   s   € ÜÑ<¸bÔAÀ%ÓHÐHr#   c                  ó  • [         R                  R                  5         [         R                  R                  R                  5       [         R                  R                  l        [         R                  R                  R                  5         g 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                 ó�   • [        U R                  R                  5       5      n[        U5      nUS:w  a  [	        SU 35      eU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                   ó*   • \ rS rSrSrS rS rS rSrg)Ú&_AssertRaisesRegexWithHighlightContextéJ   zr
A context manager that is useful for checking that error messages highlight
the correct part of the source code.
c                 ó4   • Xl         X l        X0l        X@l        g r   )Ú	test_caseÚexception_typeÚregexÚ	highlight)ÚselfrH   Ú	exceptionrJ   rK   s        r!   Ú__init__Ú/_AssertRaisesRegexWithHighlightContext.__init__P   s   € Ø"ŒØ'ÔØŒ
Ø"�r#   c                 ó   • U $ r   r9   ©rL   s    r!   Ú	__enter__Ú0_AssertRaisesRegexWithHighlightContext.__enter__V   s   € Øˆr#   c                 óD  • U R                   R                  U R                  U R                  5         U(       a  Ue S S S 5        U R                  (       a;  [        5       R                  U R                  5      R                  [        U5      5        g! , (       d  f       N[= f©NT)	rH   ÚassertRaisesRegexrI   rJ   rK   r
   Úcheck_source_highlightedÚrunÚstr)rL   ÚtypeÚvalueÚ	tracebacks       r!   Ú__exit__Ú/_AssertRaisesRegexWithHighlightContext.__exit__Y   sl   € Ø�^‰^×-Ñ-¨d×.AÑ.AÀ4Ç:Á:ÕNÞØ�ð ÷ Oð �>�>Ü‹K×0Ñ0°·±Ó@×DÑDÄSÈÃZÔPà÷ OÕNús   ±
BÂ
B)rI   rK   rJ   rH   N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__rN   rR   r]   Ú__static_attributes__r9   r#   r!   rE   rE   J   s   † ñò
#òõr#   rE   zprim::TensorExprGroupc                   óF  ^ • \ rS rSrSrSr " S S\5      r " S S\5      rS r	S	 r
U 4S
 jrU 4S jrS"S jrS rS rS rS rS#S jrS$S jrS$S jrS rS rS rS rS rSSSS\R6                  4S jrS rSSSSS\R6                  SS4S jr    S%S  jrS! r Sr!U =r"$ )&ÚJitTestCaseée   TFc                   ó$   • \ rS rSrSrS rS rSrg)ÚJitTestCase.capture_stdoutéi   z.
Replace sys.stdout with a temporary StringIO
c                 óx   • [         R                  U l        [        5       U l        U R                  [         l        U $ r   )ÚsysÚstdoutÚ
sys_stdoutr   ÚstringiorQ   s    r!   rR   Ú$JitTestCase.capture_stdout.__enter__m   ó&   € Ü!Ÿj™jˆDŒOÜ$›JˆDŒMØŸ™ŒCŒJØˆKr#   c                 ó–   • U R                  [        U R                  R                  5       5      5        U ?U R                  [
        l        g r   )ÚappendrY   ro   Úgetvaluern   rl   rm   ©rL   Úargss     r!   r]   Ú#JitTestCase.capture_stdout.__exit__s   ó0   € Ø�K‰Kœ˜DŸM™M×2Ñ2Ó4Ó5Ô6Ø�ØŸ™ŒC�Jr#   )ro   rn   N©r_   r`   ra   rb   rc   rR   r]   rd   r9   r#   r!   Úcapture_stdoutri   i   ó   † ñ	ò	õ	)r#   rz   c                   ó$   • \ rS rSrSrS rS rSrg)ÚJitTestCase.capture_stderréx   z.
Replace sys.stderr with a temporary StringIO
c                 óx   • [         R                  U l        [        5       U l        U R                  [         l        U $ r   )rl   ÚstderrÚ
sys_stderrr   ro   rQ   s    r!   rR   Ú$JitTestCase.capture_stderr.__enter__|   rq   r#   c                 ó–   • U R                  [        U R                  R                  5       5      5        U ?U R                  [
        l        g r   )rs   rY   ro   rt   r�   rl   r€   ru   s     r!   r]   Ú#JitTestCase.capture_stderr.__exit__‚   rx   r#   )ro   r�   Nry   r9   r#   r!   Úcapture_stderrr}   x   r{   r#   r…   c                 ól   • [         R                  R                  U R                  U R                  5        g r   )r'   r1   Ú_jit_set_emit_hooksÚemitModuleHookÚemitFunctionHookrQ   s    r!   ÚsetHooksÚJitTestCase.setHooks‡   s"   € Ü�‰×$Ñ$ T×%8Ñ%8¸$×:OÑ:OÕPr#   c                 óD   • [         R                  R                  S S 5        g r   )r'   r1   r‡   rQ   s    r!   Ú
clearHooksÚJitTestCase.clearHooksŠ   s   € Ü�‰×$Ñ$ T¨4Õ0r#   c                 óÒ   >• [         TU ]  5         [        R                  (       d3  [        R
                  R                  R                  5         S[        l        U R                  5         g rU   )	ÚsuperÚsetUprf   Ú_restored_warningsr'   r3   ÚTracerWarningÚignore_lib_warningsrŠ   ©rL   Ú	__class__s    €r!   r‘   ÚJitTestCase.setUp�   s>   ø€ Ü‰‰Œô ×-×-Ü�I‰I×#Ñ#×7Ñ7Ô9Ø-1ŒKÔ*Ø�‰�r#   c                 óV   >• [         TU ]  5         U R                  5         [        5         g r   )r�   ÚtearDownr�   r:   r•   s    €r!   r™   ÚJitTestCase.tearDown—   s    ø€ Ü‰ÑÔð 	�‰ÔÜÕr#   r9   c                 ó¸  ^^• U4S jmS[         SSSSS1[        U5      -  m[        [        5      nT" U[         U5        U R	                  [        U5      S:H  S	U 35        [        [        UR                  5       5      5      u  pU R	                  [        U5      S:H  S	U 35        U R	                  [        U4S
 jUR                  5        5       5      S	U 35        g )Nc                 ó  >• U R                  5        GHq  nUR                  5       U:X  a  X    R                  U5        M-  UR                  5       S:X  a  T" UR                  S5      X5        M[  UR                  5       S:X  aâ  UR	                  5       R                  5       R                  5       R                  5       S:X  d|  UR	                  5       R                  5       R                  5       R                  5       S:X  d>  UR	                  5       R                  5       R                  5       R                  5       S:X  a(  T" UR                  5       R                  5       X5        GMQ  UR                  5        H  nT" XAU5        M     GMt     g )Nzprim::DifferentiableGraphÚSubgraphúprim::Ifz	aten::allúprim::TypeCheckúprim::RequiresGradCheck)ÚnodesÚkindrs   ÚgÚinputsÚ__next__ÚnodeÚblocks)Úblockr¢   Úaccr¦   Úinner_blockÚ!get_nodes_and_parents_recursivelys        €r!   r«   ÚEJitTestCase.assertAllFused.<locals>.get_nodes_and_parents_recursively¢   s  ø€ ØŸ™Ÿ�Ø—9‘9“; $Ó&Ø‘J×%Ñ% dÖ+Ø—Y‘Y“[Ð$?Ó?Ù5°d·f±f¸ZÓ6HÈ$Ö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×Zà'+§{¡{¦}˜Ù9¸+ÈSÖQô (5ò &r#   zprim::Constantzprim::BailoutTemplatezprim::TupleConstructrž   rŸ   r    r   zgot c              3   óH   >#   • U  H  oR                  5       T;   v •  M     g 7fr   )r¢   )Ú.0r¦   Úallowed_nodess     €r!   Ú	<genexpr>Ú-JitTestCase.assertAllFused.<locals>.<genexpr>¹   s   øé € ÐSÂ]¸TŸI™I›K¨=Ö8Â]ùs   ƒ")ÚFUSION_GROUPÚsetr   r<   Ú
assertTruer?   ÚnextÚiterÚitemsÚallr¡   )rL   ÚgraphÚ
except_forÚfusion_groupsÚfusion_nodesr¯   r«   s        @@r!   ÚassertAllFusedÚ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                 ó>   • [        U5      nSnU H
  nXB;   d  M
    g   g)N)z Could not export Python functionzclosures are not exportableTF)rY   )rL   ÚeÚseÚallowedÚas        r!   Ú_isHookExceptionOkÚJitTestCase._isHookExceptionOk¼   s)   € Ü�‹Vˆð2ˆãˆAØ�wÙñ ð r#   c                 ó„  ^ • U 4S jn[         R                  R                  5           [        UR                  5      S:X  a
   S S S 5        g [        U[         R                  R                  5      (       a'  [        UR                  5       5      S:X  a
   S S S 5        g [        R                  " 5       n[         R                  R                  X5        UR                  5       nU" U5      u  pV[        R                  " U5      n[         R                  R!                  U5      n	[        R                  " 5       n
[         R                  R                  Xš5        U
R#                  S5        U" U
5      u  p¼[%        X[SS9 H  u  pÞT R'                  XÞ5        M     [        U[         R                  R                  5      (       a8  T R)                  [         R                  R+                  XR,                  5      5        S S S 5        g ! [         a)  nT R                  U5      (       d  e  S nAS S S 5        g S nAff = f! , (       d  f       g = f)Nc                 ó&  >• [         R                  " U 5       nT
R                  [        [	        UR                  5       5      5      [        UR                  5       5      5        [        [        S UR                  5       5      5      n[        S U5      n/ nU H[  nUR                  U5       nUR                  SR                  U Vs/ s H  owR                  5       PM     sn5      5        S S S 5        M]     [        S U5      n/ n	U HB  nUR                  U5       nU	R                  [        R                  " U5      5        S S S 5        MD     XI4sS S S 5        $ s  snf ! , (       d  f       MÖ  = f! , (       d  f       Mx  = f! , (       d  f       g = f)Nc                 ó$   • U R                  S5      $ )Nzarchive/code/)Ú
startswith©Úxs    r!   r+   ÚKJitTestCase._compared_saved_loaded.<locals>.extract_files.<locals>.<lambda>Ë   s   € ¨a¯l©l¸?Ô.Kr#   c                 ó$   • U R                  S5      $ )Nz.py©ÚendswithrÊ   s    r!   r+   rÌ   Í   s   € °!·*±*¸UÔ2Cr#   Ú c                 ó$   • U R                  S5      $ )Nz
.debug_pklrÎ   )Úfs    r!   r+   rÌ   Ô   s   € °1·:±:¸lÔ3Kr#   )ÚzipfileÚZipFileÚassertEqualr?   r³   Únamelistr<   ÚfilterÚopenrs   ÚjoinÚdecodeÚpickleÚload)ÚbufferÚarchiveÚfilesÚcode_files_strÚ
code_filesrÒ   ÚstreamÚlineÚdebug_files_strÚdebug_filesrL   s             €r!   Úextract_filesÚ9JitTestCase._compared_saved_loaded.<locals>.extract_filesÆ   s/  ø€ ä—’ Ô(¨Gà× Ñ ¤¤S¨×)9Ñ)9Ó);Ó%<Ó!=¼sÀ7×CSÑCSÓCUÓ?VÔWÜœVÑ$KÈW×M]ÑM]ÓM_Ó`Óa�ä!'Ñ(CÀUÓ!K�Ø�
Û'�AØ Ÿ™ aœ¨FØ"×)Ñ)¨"¯'©'ÉVÓ2TÊVÀT·;±;¶=ÉVÑ2TÓ*UÔV÷ )™ñ (ô
 #)Ñ)KÈUÓ"S�Ø �Û(�AØ Ÿ™ aœ¨FØ#×*Ñ*¬6¯;ª;°vÓ+>Ô?÷ )™ñ )ð "Ð.÷# )Ñ(ùò 3U÷ )žú÷ )žú÷ )Õ(úsN   ˜BFÂ+EÃEÃEÃ*1FÄ&E0ÅFÅEÅ
E-Å(FÅ0
E?Å:FÆ
Fr   T©Ústrict)r'   Ú_jit_internalÚ_disable_emit_hooksr?   r   r&   r1   ÚScriptModuleÚ_method_namesÚioÚBytesIOr3   Úsavert   r@   rÄ   rÜ   ÚseekÚzipÚassertMultiLineEqualr´   Ú_ivalue_tags_matchÚ_c)rL   Úmræ   rÝ   Úbuffer_copyrá   Ú_debug_filesrÀ   Úbuffer2ÚimportedÚsaved_module_buffer_2Úcode_files_2Ú_debug_files_2rÃ   Úbs   `              r!   Ú_compared_saved_loadedÚ"JitTestCase._compared_saved_loadedÅ   s¥  ø€ õ	/ô, × Ñ ×4Ñ4Õ6ðä�q—v‘v“; !Ó#Ø÷	 7Ð6ô
 ˜a¤§¡×!6Ñ!6×7Ñ7Ü˜1Ÿ?™?Ó,Ó-°Ó2Ø÷ 7Ð6ô Ÿš›�Ü—	‘	—‘˜qÔ)ð %Ÿo™oÓ/�á+8¸Ó+@Ñ(�
ô —j’j Ó-ˆGÜ—y‘y—~‘~ gÓ.ˆHô %'§J¢J£LÐ!Ü�I‰I�N‰N˜8Ô;à!×&Ñ& qÔ)Ù+8Ð9NÓ+OÑ(ˆLä˜J¸TÔB‘�Ø×)Ñ)¨!Ö/ñ Cô ˜!œUŸX™X×2Ñ2×3Ñ3Ø—‘¤§¡× ;Ñ ;¸A¿{¹{Ó KÔL÷Q 7Ð6øô&  ó Ø×.Ñ.¨q×1Ñ1Øã÷/ 7Ð6ûð&ú÷' 7Õ6úsC   ¦H1¨G;ÁAG;ÂAG;Ã)D	H1Ç;
H.ÈH)ÈH1È)H.È.H1È1
H?c                 óh   • UR                   S:X  d  SUR                   ;   a  g U R                  U5        g )Nz<lambda>zaten::)Únamerÿ   )rL   Úfuncs     r!   r‰   ÚJitTestCase.emitFunctionHook  s*   € à�9‰9˜
Ó" h°$·)±)Ó&;ØØ×#Ñ# DÕ)r#   c                 ó&   • U R                  U5        g r   )rÿ   )rL   Úmodules     r!   rˆ   ÚJitTestCase.emitModuleHook  s   € Ø×#Ñ# FÕ+r#   Nc                 óü  • [         R                  " 5       nUR                  S 5        [        R                  R                  X5        UR                  S 5        UR                  S5        [        R                  R                  XCS9nUR                  S 5        U(       d  U$ [        R                  " SS9 n UR                  5         UR                  UR                  5        [        R                  R                  UR                  US9n[        R                  " UR                  5         S S S 5        WR                  S 5        U$ ! [        R                  " UR                  5        f = f! , (       d  f       NG= f)	Nc                 óf   • U R                   R                  S5      (       a  U R                  5       $ S $ )NÚ_pack)rõ   Ú_has_methodr
  ©Úss    r!   r+   Ú<JitTestCase.getExportImportCopyWithPacking.<locals>.<lambda>  s&   €  q§t¡t×'7Ñ'7¸×'@Ñ'@˜!Ÿ'™'›)ÐJÀdÐJr#   c                 óf   • U R                   R                  S5      (       a  U R                  5       $ S $ ©NÚ_unpack©rõ   r  r  r  s    r!   r+   r    s&   € ¨¯©×)9Ñ)9¸)×)DÑ)D˜!Ÿ)™)›+ÐNÈ$ÐNr#   r   )Úmap_locationc                 óf   • U R                   R                  S5      (       a  U R                  5       $ S $ r  r  r  s    r!   r+   r    s'   € °·±×0@Ñ0@À×0KÑ0K §¡£Ð!UÐQUÐ!Ur#   F)Údeletec                 óf   • U R                   R                  S5      (       a  U R                  5       $ S $ r  r  r  s    r!   r+   r  (  s&   € ¨a¯d©d×.>Ñ.>¸y×.IÑ.I˜qŸy™y›{ÐSÈtÐSr#   )rî   rï   Úapplyr'   r3   rð   rñ   rÜ   ÚtempfileÚNamedTemporaryFileÚcloser  ÚosÚunlink)rL   rö   Úalso_test_filer  rÝ   rú   rÒ   Úresults           r!   ÚgetExportImportCopyWithPackingÚ*JitTestCase.getExportImportCopyWithPacking  sû   € Ü—’“ˆØ	�‰ÑJÔKÜ�	‰	�‰�qÔ!Ø	�‰ÑNÔOØ�‰�AŒÜ—9‘9—>‘> &�>ÐDˆØ�‰ÑUÔVæØˆOô
 ×(Ò(°Ò6¸!ð"Ø—‘”	Ø—‘˜aŸf™fÔ%ÜŸ™Ÿ™¨¯©¸\˜ÐJ�ä—	’	˜!Ÿ&™&Õ!÷ 7ð 	�‰ÑSÔTØˆøô —	’	˜!Ÿ&™&Õ!ú÷ 7Õ6ús%   Â6E-Â8AEÄ E-Å"E*Å*E-Å-
E;c                 óú   ^^• U(       aF  [        U5      nUR                  T5      UR                  ST 35      -
  nU R                  US:„  5        g UU4S jmT" U5      nU R                  [        U5      S:„  5        g )Núwith r   c                 óÈ   >• / nU R                  5        HJ  nUR                  5       T:X  a  UR                  U5        UR                  5        H  n UT" U 5      -  nM     ML     U$ r   ©r¡   r¢   rs   r§   ©r¨   Úoutr¦   r¢   r¡   s      €€r!   r¡   Ú.JitTestCase.assertGraphContains.<locals>.nodes3  óW   ø€ ØˆCØŸ™ž�Ø—9‘9“; $Ó&Ø—J‘J˜tÔ$Ø!Ÿ[™[ž]�EØ™5 ›<Ñ'’Có +ñ &ð
 ˆJr#   )rY   Úcountr´   r?   )rL   r¹   r¢   Úconsider_subgraphsÚstrgraphr)  Ú	out_nodesr¡   s     `    @r!   ÚassertGraphContainsÚJitTestCase.assertGraphContains+  si   ù€ æÜ˜5“zˆHØ—N‘N 4Ó(¨8¯>©>¸EÀ$À¸.Ó+IÑIˆEØ�O‰O˜E A™IÔ&Øö	ñ ˜%“Lˆ	Ø�‰œ˜I›¨Ñ*Õ+r#   c                 óÞ   ^^	• S nU(       a=  [        U5      nUR                  T5      UR                  ST 35      -
  nU" UTXsU5        g UU	4S jm	T	" U5      nU" UT[        U5      UU5        g )Nc                 óV   • X#:X  a  g U(       a  SOSn[        U  SU SU SU SU 3	5      e)NÚ	includingÚ	excludingz
Error: graph contains Ú z nodes (z subgraphs) but expected )ÚAssertionError)r¹   r¢   ÚactualÚexpectedr*  Úsubgraphs         r!   Úperform_assertÚ>JitTestCase.assertGraphContainsExactly.<locals>.perform_assert@  sG   € ØÓ!ØÞ&8‘{¸kˆHÜ Ø�'Ð1°&°¸¸4¸&ÀÈÈ
ÐRkÐltÐkuÐvóxð xr#   r"  c                 óÈ   >• / nU R                  5        HJ  nUR                  5       T:X  a  UR                  U5        UR                  5        H  n UT" U 5      -  nM     ML     U$ r   r$  r%  s      €€r!   r¡   Ú5JitTestCase.assertGraphContainsExactly.<locals>.nodesN  r(  r#   )rY   r)  r?   )
rL   r¹   r¢   Únum_kind_nodesr*  r8  r+  r)  r,  r¡   s
     `      @r!   ÚassertGraphContainsExactlyÚ&JitTestCase.assertGraphContainsExactly?  st   ù€ ò	xö Ü˜5“zˆHØ—N‘N 4Ó(¨8¯>©>¸EÀ$À¸.Ó+IÑIˆEÙ˜5 $¨Ø-ô/àö	ñ ˜%“Lˆ	Ù�u˜d¤C¨	£N°NØ)õ	+r#   c                 óˆ   • [         R                  R                  U[        R                  S9nU R
                  " U/UQ70 UD6  g )N)Úoperator_export_type)r'   ÚonnxÚ_optimize_tracer	   ÚONNXÚassertExpectedGraph)rL   r£   rv   Úkwargss       r!   ÚassertExpectedONNXGraphÚ#JitTestCase.assertExpectedONNXGraph[  s:   € Ü�J‰J×&Ñ& qÔ?R×?WÑ?WÐ&ÐXˆØ× Ò  Ð4 TÒ4¨VÓ4r#   c                 óð  • [        U[        R                  R                  5      (       a  UnOUR	                  5       n[        R                  R                  U5        [        R                  R                  U5        [        R                  R                  U5        [        R                  R                  U5      n[        R                  R                  U5        U R                  " [        U5      /UQ70 UD6  g r   )
r&   r'   r1   ÚGraphr¹   Ú_jit_pass_lintÚ_jit_pass_dceÚ_jit_pass_canonicalizeÚassertExpectedrY   )rL   Útracerv   rE  r¹   s        r!   rD  ÚJitTestCase.assertExpectedGraph_  sŸ   € Ü�eœUŸX™XŸ^™^×,Ñ,Ø‰Eà—K‘K“MˆEä�‰×Ñ Ô&Ü�‰×Ñ˜uÔ%Ü�‰×Ñ Ô&Ü—‘×/Ñ/°Ó6ˆÜ�‰×Ñ Ô&Ø×ÒœC ›JÐ8¨Ò8°Ó8r#   c                 ó¬  • [        U[        R                  R                  5      (       a  UnSnOSnUR	                  5       n[        R                  R                  U5        [        [        R                  SU-   5      " U5      nUb  [        U[        5      (       d  Un[        R                  R                  U5        U(       a  UR                  U5        U$ )NFTÚ
_jit_pass_)	r&   r'   r1   rI  r¹   rJ  ÚgetattrÚboolÚ	set_graph)rL   r  rN  r¹   rT  r  s         r!   Úrun_passÚJitTestCase.run_passl  sš   € Ü�eœUŸX™XŸ^™^×,Ñ,ØˆEØ‰IàˆIØ—K‘K“MˆEä�‰×Ñ Ô&ÜœŸ™ <°$Ñ#6Ô7¸Ó>ˆØÑ¤j°¼×&>Ñ&>ØˆEÜ�‰×Ñ Ô&æØ�O‰O˜EÔ"Øˆr#   c                 ó2  • [         R                  " 5       nU(       d  [        S5      eSnX1S-   :  a-  UR                  nU(       d  [        S5      eUS-  nX1S-   :  a  M-  0 nUR	                  UR
                  5        UR	                  UR                  5        U$ )Nzfailed to inspect framer   r   zfailed to get frame)ÚinspectÚcurrentframer@   Úf_backÚupdateÚf_localsÚ	f_globals)rL   Ú	frames_upÚframeÚiÚdefined_varss        r!   Úget_frame_varsÚ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                 ó   • [        XX#5      $ r   )rE   )rL   rM   rJ   rK   s       r!   ÚassertRaisesRegexWithHighlightÚ*JitTestCase.assertRaisesRegexWithHighlight�  s   € Ü5°dÀuÓXÐXr#   r   c
                 óž  • [        5          U R                  X45         [        U[        5      (       a3  U R	                  U5      n
0 n[        XUS9  U
R                  U5        X¥   nOUnU" U6   SSS5        U R                  X45         [        U[        5      (       a)  [        R                  R                  XS9n[        XÕ5      nO\[        R                  " [        R                  " U5      5      n[        R                  R                  XøS9n[        XÑR                  5      nU" U6   SSS5        [        U[        5      (       d>  U R                  X45         [        R                  R!                  W5      nU" U6   SSS5        SSS5        g! , (       d  f       GN$= f! , (       d  f       N|= f! , (       d  f       N:= f! , (       d  f       g= f)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   rV   r&   rY   rb  r"   r[  r'   r3   ÚCompilationUnitrR  ÚtextwrapÚdedentrX  Ú	getsourcer_   Úscript)rL   ro  r¤   rM   rJ   r  ÚoutputsÚcapture_outputr^  Ú	profilingr_  Ú
the_localsÚ	python_fnÚcuÚstring_frontendÚsourceÚges                    r!   ÚcheckScriptRaisesRegexÚ"JitTestCase.checkScriptRaisesRegex�  sY  € ô 7Õ8à×'Ñ'¨	Õ9Ü˜f¤c×*Ñ*Ø ×/Ñ/°	Ó:�EØ13�JÜ ¸
ÒCØ—L‘L Ô,à %¡‘Ià &�Iá˜6Ñ"÷ :ð ×'Ñ'¨	Õ9Ü˜f¤c×*Ñ*ÜŸ™×2Ñ2°6Ð2ÐP�BÜ&-¨bÓ&7‘Oä%Ÿ_š_¬W×->Ò->¸vÓ-FÓG�FÜŸ™×2Ñ2°6Ð2ÐP�BÜ&-¨b·/±/Ó&B�Oá Ñ(÷ :ô ˜f¤c×*Ñ*Ø×+Ñ+¨IÕ=ÜŸ™×)Ñ)¨)Ó4�BÙ˜‘K÷ >÷; 9Ð8ç9Ö9ú÷ :Õ9ú÷ >Õ=ú÷; 9Õ8úsT   ‹F>�AF
Á-F>ÂB FÄ&.F>Å%F-Å9F>Æ

F	ÆF>Æ
F*	Æ&F>Æ-
F;	Æ7F>Æ>
Gc                 óô   • UR                  5       n[        U5      nUR                  R                  5       n[	        U5       H4  nUR                  R                  U5        U" U6 nU R                  Xƒ5        M6     g r   )Úget_debug_staterC   r   Únum_bailoutsÚrangeÚrequest_bailoutrÕ   )	rL   Úmodelr¤   r6  ÚstateÚplanr}  r`  Úbailout_outputss	            r!   ÚcheckBailoutsÚJitTestCase.checkBailoutsº  sd   € Ø×%Ñ%Ó'ˆÜ! %Ó(ˆØ—y‘y×-Ñ-Ó/ˆÜ�|Ö$ˆAØ�I‰I×%Ñ% aÔ(Ù# V˜nˆOØ×Ñ˜_Ö7ò %r#   r  c                 ó(  • [         R                  R                  U5         [        5          [	        S U 5       5      n[        U[        5      (       a[  [         R                  R                  XS9nU R                  U5      n0 n[        XUS9  UR                  U5        XÓ   n[        XÃ5      nOj[        R                  " [        R                  " U5      5      nU R!                  UUUR"                  UUUUSS9  [         R                  R%                  USS9nUnU(       a  ['        S U5      nOUnU(       aŠ  U R)                  5        nU" U6 nSSS5        U R)                  5          U" U6 nSSS5        U R)                  5          U" U6 nSSS5        [*        (       d  U R-                  WS	   S
S9  U R/                  WWXšS9  O@U" U6 nU(       d  U(       a  U" U6 nU" U6 n[0        (       a  U R3                  UUU5        U" U6 nU R/                  UWXšS9  U R/                  UUXšS9  UsSSS5        sSSS5        $ ! , (       d  f       Nð= f! , (       d  f       Nã= f! , (       d  f       NÖ= f! , (       d  f       O= fSSS5        g! , (       d  f       g= f)zd
Checks that a given script generates the same output as the Python
version using the given inputs.
c              3   ó|   #   • U  H2  n[        U[        R                  5      =(       a    UR                  v •  M4     g 7fr   )r&   r'   r(   Úrequires_grad)r®   rË   s     r!   r°   Ú*JitTestCase.checkScript.<locals>.<genexpr>Ó  s*   é € Ð$eÒ^dÐYZ¤Z°´5·<±<Ó%@×%TÀQÇ_Á_Ô%TÒ^dùs   ‚:<ri  rh  é   )ÚoptimizeÚinputs_requires_gradrq  rr  r^  r   c                 ó>   • U R                  5       R                  5       $ r   )ÚdetachÚrequires_grad_r)   s    r!   r+   Ú)JitTestCase.checkScript.<locals>.<lambda>ö  s   € ¸!¿(¹(»*×:SÑ:SÔ:Ur#   Nr   rm   )Úsubname©ÚatolÚrtol)r'   r3   Úoptimized_executionr   Úanyr&   rY   rk  rb  r"   r[  rR  rl  rm  rX  rn  ÚcheckScriptr_   ro  r/   rz   r   rM  rÕ   r   r„  )rL   ro  r¤   r  r‹  rŒ  rq  r^  rr  r“  r”  Úextra_profile_runsru  r_  rs  rt  Úscripted_fnrw  Úrecording_inputsÚscript_stdoutÚscript_outputsÚopt_script_outputsÚpython_outputss                          r!   r—  ÚJitTestCase.checkScriptÃ  sX  € ô �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]Ó#^Ñ à#)Ð æØ×(Ñ(Ô*¨mÙ%0Ð2BÐ%C�N÷ +à×(Ñ(Õ*Ù)4Ð6FÐ)GÐ&÷ +à×(Ñ(Õ*Ù%.°Ð%7�N÷ +ç!’zØ×'Ñ'¨°aÑ(8À(Ð'ÑKØ× Ñ  Ð1CÈ$Ð ÒZñ "-Ð.>Ð!?�Þ'Ö+=Ù)4Ð6FÐ)GÐ&á%0Ð2BÐ%CÐ"ß ’=Ø×&Ñ& {°FÐ<NÔOÙ!*¨FÐ!3�Ø×Ñ˜^¨^À$ÐÑRØ×Ñ˜^Ð-?ÀdÐÑVØ÷} 7bÐ6a×4Ñ4÷R +Õ*úç*Õ*úç*Õ*ú÷[ 7bÕ6aú×4×4Ö4úsl    J«DI)ÅH6ÅI)Å$IÅ*I)ÆIÆBI)È#	JÈ6
IÉ I)É
IÉI)É
I&É"I)É)
I7	É3JÊ
Jc                 óä  ^^• U4S jnUc  UnU4S jnUnU(       a  [        S U5      mU" T5      nOUm[        R                  R                  XUU
SS9nU	(       a  U R	                  U5      nU(       a  [        UR                  5        U" U6 nU" U6 nU R                  UU5        U" T6 nU(       a%  [        R                  R                  U" U5      WUS9nU" T6 nU(       a%  [        R                  R                  U" U5      WUS9nU R                  UU5        U(       a  U R                  WWX¼S9  U" T6 nU" U5      nU(       a   [        R                  R                  UWSUS	9nU(       a*  U" W5      U-  n[        R                  R                  UWUS9nU(       a  [        S
 U5      mU" T5      nU" T6 nU" U5      nU(       a   [        R                  R                  UWSUS	9nU(       a*  U" W5      U-  n[        R                  R                  UWUS9nU R                  UU5        U(       a@  U R                  WWX¼S9  [        WWSS9 H   u  nnUc  Uc  M  U R                  UUSSS9  M"     U$ )Nc                 óL   >• Tb  U S T*  n [        S [        U 5       5       5      $ )Nc              3   ó„   #   • U  H6  u  pUc  M
  [         R                  " US-   5      UR                  5       -  v •  M8     g 7f)NrŠ  )ÚmathÚlogÚsum)r®   r`  Úvs      r!   r°   Ú9JitTestCase.checkTrace.<locals>.allSum.<locals>.<genexpr>  s.   é € Ð\º]±T°QÈaÓ0”t—x’x  A¡“¨¯©«Ö0º]ùs
   ‚	A �1A )r¥  Ú	enumerate)ÚvsÚdrops    €r!   ÚallSumÚ&JitTestCase.checkTrace.<locals>.allSum  s/   ø€ ð ÑØ˜˜$˜�Z�ô Ñ\¼YÀr¼]Ó\Ó\Ð\r#   c                 ó:   >^• U4S jm[        T" TS / 5      5      $ )Nc                 óØ   >^ ^• [        T [        R                  5      (       a  T" T U5        U$ [        T [        5      (       a  [	        UU U4S jT U5        U$ [	        UU4S jT U5        U$ )Nc                 ó   >• T" TU   TU 5      $ r   r9   )r©   Úkeyr-   r.   Úinput_reduces     €€€r!   r+   ÚVJitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.input_reduce.<locals>.<lambda>(  s   ø€ ©L¸¸s¹ÀRÈÔ,Mr#   c                 ó   >• T" UTU 5      $ r   r9   )r©   Úvalr-   r±  s     €€r!   r+   r²  *  s   ø€ ©L¸¸bÀ#Ô,Fr#   )r&   r'   r(   Údictr   )r.   r-   r©   r±  s   `` €r!   r±  ÚDJitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.input_reduce$  s\   ú€ Ü˜e¤U§\¡\×2Ñ2Ù�u˜c”Nð
 �
ô	   ¤t×,Ñ,ÜÖMÈuÐVYÔZð �
ô ÕFÈÈsÔSØ�
r#   c                 ó$   • UR                  U 5      $ r   )rs   )r*   r©   s     r!   r+   Ú@JitTestCase.checkTrace.<locals>.flatten_inputs.<locals>.<lambda>,  s   € ÀsÇzÁzÐRSÄ}r#   )Útuple)r¤   r±  rš  s    @€r!   Úflatten_inputsÚ.JitTestCase.checkTrace.<locals>.flatten_inputs#  s!   ù€ õô ™Ð&6Ñ8TÐVXÓYÓZÐZr#   c                 ó>   • U R                  5       R                  5       $ r   )Úcloner�  r)   s    r!   r+   Ú(JitTestCase.checkTrace.<locals>.<lambda>0  s   € °a·g±g³i×6NÑ6NÔ6Pr#   F)Úcheck_toleranceÚ_force_outplaceÚcheck_trace)Úallow_unusedr’  T)Úcreate_graphrÂ  c                 ó   • [        U SS9$ )NT)rˆ  r   r)   s    r!   r+   r¾  _  s   € ´h¸qÐPTÒ6Ur#   rè   g-Cëâ6J?)r/   r'   r3   rN  ÚgetExportImportCopyÚprintr¹   rÕ   ÚautogradÚgradrò   )rL   r  Úreference_tensorsÚinput_tensorsrª  rÂ  ÚverboseÚinputs_require_gradsr¿  Úexport_importrÀ  Ú	grad_atolÚ	grad_rtolr«  rº  Únograd_inputsÚflattened_recording_inputsrx  rp  Ú
outputs_geÚgradsÚgrads_geÚl1Úl2Úgrads2Úl1_geÚl2_geÚ	grads2_geÚg2Úg2_gerš  s       `                         @r!   Ú
checkTraceÚ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ÐÑ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ÐÑMÜ  ¨¸4Ô@‘	��EØ‘: %¡-ÙØ× Ñ   U°¸DÐ ÓAñ Að
 ˆ	r#   c                 ó.  • [         R                  R                  U5      n[        5          U" U6 nSSS5        [        5          U" U6 nSSS5        U R	                  WW5        U R                  X25        U$ ! , (       d  f       NK= f! , (       d  f       ND= f)zY
Check that a nn.Module's results in Script mode match eager and that it
can be exported
N)r'   r3   ro  r   rÕ   ÚassertExportImportModule)rL   Ú	nn_modulerv   ÚsmÚ	eager_outÚ
script_outs         r!   ÚcheckModuleÚJitTestCase.checkModulev  sz   € ô
 �Y‰Y×Ñ˜iÓ(ˆäÕÙ! 4Ð(ˆI÷  ô ÕÙ˜T˜ˆJ÷  ð 	×Ñ˜ JÔ/Ø×%Ñ% bÔ/àˆ	÷  Õú÷  Õús   ªA5ÁBÁ5
BÂ
B)r9   )TN)F)
NNFFTgñhãˆµøä>TFNN)#r_   r`   ra   rb   Ú_do_cuda_memory_leak_checkr’   r<   rz   r…   rŠ   r�   r‘   r™   r½   rÄ   rÿ   r‰   rˆ   r  r-  r=  rF  rD  rU  rb  re  r   Ú	PROFILINGry  r„  r—  rÝ  rå  rd   Ú__classcell__)r–   s   @r!   rf   rf   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#   rf   c                   ó    • \ rS rSrS rS rSrg)ÚNoTracerWarnContextManageriˆ  c                 óˆ   • [         R                  R                  5       U l        [         R                  R	                  S5        g ©NF)r'   r1   Ú_jit_get_tracer_state_warnÚprevÚ_jit_set_tracer_state_warnrQ   s    r!   rR   Ú$NoTracerWarnContextManager.__enter__‰  s(   € Ü—H‘H×7Ñ7Ó9ˆŒ	Ü�‰×+Ñ+¨EÕ2r#   c                 óV   • [         R                  R                  U R                  5        g r   )r'   r1   rð  rï  ru   s     r!   r]   Ú#NoTracerWarnContextManager.__exit__�  s   € Ü�‰×+Ñ+¨D¯I©IÕ6r#   )rï  N)r_   r`   ra   rb   rR   r]   rd   r9   r#   r!   rë  rë  ˆ  s   † ò3õ7r#   rë  c              #   ó  #   • [         R                  R                  5       n[         R                  R                  U 5         S v •  [         R                  R                  U5        g ! [         R                  R                  U5        f = f7fr   )r'   r1   Ú_jit_get_inline_everything_modeÚ_jit_set_inline_everything_mode)Úshould_inlineÚolds     r!   Úinline_everything_moderù  �  sU   é € ä
�(‰(×
2Ñ
2Ó
4€CÜ	‡H�H×,Ñ,¨]Ô;ð6Ûä�‰×0Ñ0°Õ5øŒ�‰×0Ñ0°Õ5üó   ‚>B	ÁA% Á B	Á%!BÂB	c              #   ó  #   • [         R                  R                  5       n[         R                  R                  U 5         S v •  [         R                  R                  U5        g ! [         R                  R                  U5        f = f7fr   )r'   r1   Ú _debug_get_fusion_group_inliningÚ _debug_set_fusion_group_inlining)Úinliningrø  s     r!   Úset_fusion_group_inliningrÿ  ™  sU   é € ä
�(‰(×
3Ñ
3Ó
5€CÜ	‡H�H×-Ñ-¨hÔ7ð7Ûä�‰×1Ñ1°#Õ6øŒ�‰×1Ñ1°#Õ6ürú  c              #   óä   #   • [         R                  R                  U (       + 5         S v •  [         R                  R                  S5        g ! [         R                  R                  S5        f = f7frU   )r'   r1   Ú%_debug_set_autodiff_subgraph_inlining)Úenableds    r!   Ú"disable_autodiff_subgraph_inliningr  £  sE   é € ä	‡H�H×2Ñ2°w´;Ô?ð=Ûä�‰×6Ñ6°tÕ<øŒ�‰×6Ñ6°tÕ<üs   ‚%A0¨A ¬ A0Á!A-Á-A0c                 óF   ^ • [         R                  " T 5      U 4S j5       nU$ )Nc                  ó`   >• [        S5         T" U 0 UD6  S S S 5        g ! , (       d  f       g = frU   ©rù  ©rv   rE  r-   s     €r!   ÚwrapperÚ#_inline_everything.<locals>.wrapper¬  s$   ø€ ä# DÕ)Ù�Ð˜Ò÷ *×)Ö)úó   �	Ÿ
-©Ú	functoolsÚwraps©r-   r  s   ` r!   Ú_inline_everythingr  «  ó%   ø€ Ü‡_‚_�RÓô ó ð ð €Nr#   c                 óF   ^ • [         R                  " T 5      U 4S j5       nU$ )Nc                  ó`   >• [        S5         T" U 0 UD6  S S S 5        g ! , (       d  f       g = frí  r  r  s     €r!   r  Ú5_tmp_donotuse_dont_inline_everything.<locals>.wrapperµ  s$   ø€ ä# EÕ*Ù�Ð˜Ò÷ +×*Ö*úr
  r  r  s   ` r!   Ú$_tmp_donotuse_dont_inline_everythingr  ´  r  r#   c                  ó   ^ ^• U U4S jnU$ )Nc                 óH   >• [         R                  R                  " U T40 TD6$ r   )r'   r3   rN  )r  rv   rE  s    €€r!   r  Ú_trace.<locals>.wrapper½  s   ø€ Ü�y‰y�Š˜t TÑ4¨VÑ4Ð4r#   r9   )rv   rE  r  s   `` r!   Ú_tracer  ¼  s   ù€ ö5à€Nr#   c                 ó   ^ • U 4S jnU$ )Nc                  óP  >• [         R                  R                  S5        [         R                  R                  S5        [         R                  R	                  S5         T" U 0 UD6  [         R                  R                  S5        [         R                  R                  S5        [         R                  R	                  S5        g ! [         R                  R                  S5        [         R                  R                  S5        [         R                  R	                  S5        f = f©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  Ú!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                 ó&   • U (       a  [         $ S nU$ )Nc                 ó   ^ • U 4S jnU$ )Nc                  ó   >• T" U 0 UD6$ r   r9   r  s     €r!   r  Ú8enable_cpu_fuser_if.<locals>.noop_fuser.<locals>.wrapperÕ  s   ø€ Ù˜4Ð* 6Ñ*Ð*r#   r9   r  s   ` r!   Ú
noop_fuserÚ'enable_cpu_fuser_if.<locals>.noop_fuserÔ  s   ø€ õ+àˆNr#   )r   )Úcondr%  s     r!   Úenable_cpu_fuser_ifr(  Ð  s   € ÞÜÐò	ð Ðr#   c                 ó$   • U R                  S5      $ ©NÚforward)Ú_get_method©Úcs    r!   Úget_forwardr/  Ú  s   € Ø�=‰=˜Ó#Ð#r#   c                 ó8   • U R                  S5      R                  $ r*  )r,  r¹   r-  s    r!   Úget_forward_graphr1  Ý  s   € Ø�=‰=˜Ó#×)Ñ)Ð)r#   c                 óV   • U R                   R                  U5      R                  U5      $ r   )rõ   rR  r,  )rö   r  Úmethods      r!   Úget_module_methodr4  à  s    € Ø�4‰4�<‰<˜Ó×+Ñ+¨FÓ3Ð3r#   c                 ó°   • U R                   R                  R                  5        VVs/ s H  u  p#UR                  U5      (       d  M  UPM!     snn$ s  snnf r   )Ú_modulesrõ   r·   rÉ   )r  ÚprefixrË   Ú_s       r!   Úattrs_with_prefixr9  ã  sH   € Ø Ÿ/™/×,Ñ,×2Ñ2Ô4ô %Ò4‘$�!Ø�|‰|˜F×#÷ Ñ4ò %ð %ùó %s   ¨AÁAc                 óÖ   • Sn/ n[        U5       HU  n[        U5      S:”  a4  [        R                  R                  " U /UQ76 nUR                  U5        MF  U R                  SS9  MW     U$ )Né   r   T)Úretain_graph)r~  r?   r'   rÇ  rÈ  rs   Úbackward)rÒ   rv   Úprofiling_countÚresultsr8  Úrs         r!   Úwarmup_backwardrA  ç  s`   € Ø€OØ€GÜ�?Ö#ˆÜˆt‹9�q‹=Ü—‘×#Ò# AÐ-¨Ò-ˆAØ�N‰N˜1Öà�J‰J DˆJÓ)ñ $ð €Nr#   c                  óz   • U  H5  n[        [        R                  UR                     UR                  U5        M7     g r   )Úsetattrrl   Úmodulesr`   r_   )rv   Úargs     r!   Úmake_globalrF  ô  s)   € ÛˆÜ”—‘˜CŸN™NÑ+¨S¯\©\¸3Ö?ò r#   c                 ó8  • [         R                  " 5        n[        R                  R	                  US5      n[        US5       nUR                  U 5        S S S 5        [        R                  R                  X5      n[        R                  R                  U5      nUR                  n[        U[        5      (       d  [        S[        U5       35      eUR!                  U5        [#        Xa5      nUsS S S 5        $ ! , (       d  f       N«= f! , (       d  f       g = f)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   r4  rZ   Úexec_modulerR  )	r   Úfn_nameÚtmp_dirÚscript_pathrÒ   Úspecr  rP  r-   s	            r!   Ú_get_py3_coderV  ú  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Ó%ˆØ÷ 
'Ñ	&ç#Õ#ú÷ 
'Õ	&ús$   –-DÁC:ÁBDÃ:
D	ÄDÄ
Dc                   ó$   • \ rS rSrSS jrS rSrg)ÚTensorExprTestOptionsi  Nc                 ó(  • [         R                  R                  S5      U l        [         R                  R	                  S5      U l        [         R                  R                  5       U l        [         R                  R                  5       U l	        [         R                  R                  S5        [         R                  R                  S5        [         R                  R                  5       U l        [         R                  R                  S5        [         R                  R                  5       U l        [         R                  R#                  S5        [         R                  R%                  5       U l        [         R                  R)                  S5        g 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  rQ   s    r!   rN   Ú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  • [         R                  R                  U R                  5        [         R                  R	                  U R
                  5        [         R                  R                  U R                  5        [         R                  R                  U R                  5        [         R                  R                  U R                  5        [         R                  R                  U R                  5        [         R                  R                  U R                  5        g r   )r'   r1   rZ  r[  r\  r]  re  rd  rb  ra  r  r_  rý  rf  r  rh  rQ   s    r!   ÚrestoreÚ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#   )r_  rf  ra  r[  r]  rh  rd  )ÚreturnN)r_   r`   ra   rb   rN   rk  rd   r9   r#   r!   rX  rX    s   † ô6õNr#   rX  c                 ó‚  • / nU  H±  n[        U[        R                  5      (       a/  UR                  UR	                  5       R                  5       5        MQ  [        U5      (       a?  UR                  U Vs/ s H   o3R	                  5       R                  5       PM"     sn5        M   UR                  U5        M³     U$ s  snf r   )r&   r'   r(   rs   rŽ  r½  r   )rv   r¤   rE  r*   s       r!   Úclone_inputsro  "  sˆ   € Ø68€FãˆÜ�cœ5Ÿ<™<×(Ñ(Ø�M‰M˜#Ÿ*™*›,×,Ñ,Ó.Ö/Ü# C×(Ñ(Ø�M‰M±sÓ;²s°!Ÿ8™8›:×+Ñ+Ö-±sÑ;Ö<à�M‰M˜#Öñ ð €Mùò	 <s   Á5'B<
c           	      ó  ^• / nTR                  X5      nTR                  5       nTR                  5       nXVS.nTR                  S;   nU(       a&  S[	        [
        R                  TR                  5      0nSS/S.SS/S.SS/S.S	S
/S.SS/S.SS/S.SS/S./n	U(       a  U$ U H×  n
UR                  5        HÀ  nUc  M  [        U5      (       a  M  [        U4S jU	5      nU H~  nUS    Hr  n[        U
R                  5      n[        U
R                  5      U:”  a1  [        U
R                  U   [        5      (       a  [        Xþ   5      Xþ'   [!        U5      U
l        Mt     M€     UR#                  Xº45        MÂ     MÙ     U$ )N)Úfunctionr3  )Úresize_Ú
resize_as_r3  Údiv_floor_roundingr   )r  Úarg_idxÚdiv_no_rounding_modeÚdiv_trunc_roundingÚ
index_fillrŠ  Ú	full_likeÚmulÚnew_fullr   c                 ó(   >• TR                   U S   :H  $ )Nr  )Úformatted_name)rË   Úops    €r!   r+   Ú1get_traced_sample_variant_pairs.<locals>.<lambda>r  s   ø€ ¨B×,=Ñ,=ÀÀ6ÁÒ,Jr#   ru  )Úsample_inputsÚget_opÚ
get_methodr  rR  r'   r(   r>   Ú	is_lambdar×   r<   rv   r?   r&   rS  Úintr¹  rs   )ÚdeviceÚdtyper~  rp  Úsamplesr  r3  ÚvariantsÚhas_fake_functionÚops_with_unsupported_bool_argsÚsampleÚvariantÚmatching_opsÚop_dataÚidxrv   s     `             r!   Úget_traced_sample_variant_pairsr�  /  s¢  ø€ à%'€Gà×Ñ˜vÓ-€Gð �9‰9‹;€DØ�]‰]‹_€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Ñ2TÜ$'¨©	£N˜™	Ü"'¨£+�F–Kó	 .ñ (ð �N‰N˜GÐ,Ö-ó )ñ ð$ €Nr#   c                 ór   • S n[        U [        U5      5      =(       a    U R                  UR                  :H  $ )Nc                  ó   • g)Nr   r9   r9   r#   r!   r+   Úis_lambda.<locals>.<lambda>€  s   € �Qr#   )r&   rZ   r_   )ÚlambÚLAMBDAs     r!   rƒ  rƒ    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.utilrL  rX  r£  r  rÛ   rl   r  rl  Úimportlib.abcr   Útypingr   Ú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²   rf   rë  rù  rÿ  r  r  r  r  r   r(  r/  r1  r4  r9  rA  rF  rV  rX  ro  r�  rƒ  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 '€ôaÐ#ô a÷F7ñ 7ð ñ6ó ð6ð ñ7ó ð7ð ó=ó ð=òòòòòò$ò*ò4ò%ò
ò@ò÷Nñ Nò4òMó`Or#   