Ë
    L²j©ý  ã                   ó¶  — d 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mZ ddl	m
Z
mZmZ ddlmZmZ ddlZddlmc mZ ddlmZ ddlmZmZmZmZmZ ddlmZmZ dd	l m!Z!m"Z"m#Z#m$Z$ dd
l%m&Z&m'Z' ddl(m)Z)m*Z*m+Z+m,Z, ddl-m.Z.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZCmDZD ddlEmFZFmGZG ddlHmIZImJZJ ddlKmLZL ddlMmNZN erddlOmPZP dZQ e.eRd«      ZS e.eRd«      ZTdeUfd„ZVdeUfd„ZWdej°                  dz  dej°                  dz  fd „ZYd!ede
d"ef   fd#„ZZ G d$„ d%«      Z[ G d&„ d'«      Z\ G d(„ d)«      Z] e\«       Z^g d*¢Z_ eLeeejÀ                  eg«      Za ejÄ                  «       acd+eddefd,„Ze G d-„ d.«      Zfd/agd/ahd/aid/ajdakejØ                  	 	 dDd0e
d"ef   d1eUd2eUded3   fd4„«       ZmejØ                  ded3   fd5„«       ZndEd6„Zod7eej°                     d8eeJ   d9eeJ   d:eJd;eeJ   d<eeJ   d=eJdepej°                     fd>„Zqd?eeU   d@ej°                  dAeej°                  dz     dBej°                  depej°                  dz     f
dC„Zry)Faò  
Provides functionality for compiling PyTorch's autograd (automatic differentiation) system.

This module implements compiled autograd, which traces and optimizes backward pass
computations at runtime. The key components are:

- AutogradCompilerInstance: Traces and compiles autograd graphs using FX
- Context managers (_enable/_disable): Control when compiled autograd is active
- Utility functions: Support graph manipulation, tensor operations, and hooks

Compiled autograd can significantly improve backward pass performance by removing
Python overhead and enabling additional optimizations. It works by capturing
backward computations into an FX graph that can be compiled and optimized,
while maintaining the same semantics as eager mode autograd.
é    N)ÚCounterÚdefaultdict)ÚCallableÚ	GeneratorÚSequence)ÚAnyÚTYPE_CHECKING)Úenable_python_dispatcher)Úcall_accumulate_gradÚcall_backwardÚ	call_hookÚFakeCompiledAutogradEngineÚunwrap_maybe_dynamic_int©ÚGetItemSourceÚLocalSource)ÚcountersÚget_chromium_event_loggerÚlazy_format_graph_codeÚset_locals_to_steal)ÚAutogradLazyBackwardCompileInfoÚ%CachedAutogradLazyBackwardCompileInfo)Úcompile_contextÚCompileContextÚ	CompileIdÚSource)ÚgetArtifactLoggerÚtrace_structured©Úclone_preserve_strides)ÚFakeTensorMode)Ú
FakeTensor)ÚGraphModule)ÚBackwardState)Ú	decomposeÚdisable_autocast_cacheÚdisable_proxy_modes_tracingÚfetch_object_proxyÚProxyTorchDispatchModeÚPythonKeyTracerÚtrack_tensor_tree)Ú
DimDynamicÚShapeEnv)Úpreserve_node_metaÚset_stack_trace)ÚFloatLikeTypeÚIntLikeType)Ú
OrderedSet)ÚCapturedTraceback)ÚProxya»  You can turn off compiled autograd by either:
1. Moving the unsupported autograd call outside of the torch.compile'd region.
2. Wrapping the unsupported autograd call in the torch._dynamo.compiled_autograd._disable() context manager.
3. Setting torch._dynamo.config.compiled_autograd=False for the torch.compile call containing the unsupported autograd call.
4. Setting torch._dynamo.config.compiled_autograd=False at the start of the program.Úcompiled_autogradÚcompiled_autograd_verboseÚreturnc                  óh   — t         j                  j                  j                  j	                  d«      S )Nr6   )ÚtorchÚ_loggingÚ	_internalÚ	log_stateÚis_artifact_enabled© ó    ú^/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/_dynamo/compiled_autograd.pyÚ snapshot_verbose_logging_enabledrA   T   s(   € Ü�>‰>×#Ñ#×-Ñ-×AÑAØ#óð r?   c                  ó^   — t         j                  j                  j                  j                  S ©N)r9   Ú	_inductorÚconfigÚtritonÚ
cudagraphsr>   r?   r@   Úsnapshot_cudagraph_enabledrH   Z   s   € Ü�?‰?×!Ñ!×(Ñ(×3Ñ3Ð3r?   Úxc                 ó    — | �t        | «      S | S rC   r   )rI   s    r@   Úmaybe_clonerK   ^   s   € Ø€}Ü% aÓ(Ð(Ø€Hr?   ÚCompiledFunction.c                 ó\  — t        | j                  t        «      r| j                  j                  S t        | j                  t        «      rLt
        j                  j                  j                  «       5  | j                  j                  «       cd d d «       S t        d«      ‚# 1 sw Y   y xY w)NzEUnexpected Lazy Backward Compilation Info Type. Please file an issue.)Ú
isinstanceÚ_lazy_backward_infor   Ú	bw_moduler   r9   Ú_subclassesÚfake_tensorÚunset_fake_temporarilyÚbw_module_fnÚAssertionError)rL   s    r@   Úextract_bw_modulerV   d   s›   € ÜØ×,Ñ,Ô.Môð  ×3Ñ3×=Ñ=Ð=Ü	Ø×,Ñ,Ô.Sô
ô ×Ñ×*Ñ*×AÑAÓCñ 	GØ#×7Ñ7×DÑDÓF÷	Gñ 	Gô ØSó
ð 	
÷	Gð 	Gús   Á3B"Â"B+c                   ó°   — e Zd Zdeddfd„Zdej                  j                  ddfd„Zde	ej                  df   ddfd	„Zd
e	ej                  df   ddfd„Zy)Ú
NaNCheckerÚaccumulate_gradr7   Nc                 ó<   — || _         g | _        i | _        g | _        y rC   )rY   Úparams_indicesÚparams_to_checkÚoutput_names)ÚselfrY   s     r@   Ú__init__zNaNChecker.__init__€   s"   € Ø.ˆÔØ)+ˆÔØ8:ˆÔØ')ˆÕr?   Úgraphc                 ób  — t        t        |j                  «      «      }|j                  dt        ¬«      }|j                  d¬«      d   j
                  d   }| j                  t        |«      k(  r| j                  | k(  sJ ‚|D ]…  }|j
                  d   }|j                  t        j                  u r.|j
                  d   |u rt        |j
                  d   t        «      sJ ‚| j                  j                  |j
                  d   «       Œ‡ |D �cg c]  }|j                  ‘Œ c}| _        y c c}w )NÚcall_function©ÚopÚtargetÚoutput©rd   r   é   )ÚnextÚiterÚnodesÚ
find_nodesr   ÚargsrY   Úboolre   ÚoperatorÚgetitemrN   Úintr[   ÚappendÚnamer]   )r^   r`   Úinputs_nodeÚacc_grad_nodesÚoutput_nodesÚnodeÚ
param_nodes          r@   Úprep_with_graphzNaNChecker.prep_with_graph†   s&  € Üœ4 §¡Ó,Ó-ˆØ×)Ñ)ØÔ';ð *ó 
ˆð ×'Ñ'¨8Ð'Ó4°QÑ7×<Ñ<¸QÑ?ˆØ×#Ñ#¤tØó(
ò 
à×"Ñ"¨<Ð'7Ò8ð	9ð 9ð #ò 
	;ˆDØŸ™ 1™ˆJð
 ×!Ñ!¤X×%5Ñ%5Ñ5Ø—O‘O AÑ&¨+Ñ5Ü˜zŸ™¨qÑ1´3Ô7ðð8ð ×Ñ×&Ñ& z§¡°qÑ'9Õ:ð
	;ð 4@Ö@¨4˜TŸY›YÒ@ˆÕùÒ@s   ÄD,Úinputs.c                 óö   — | j                   sy | j                  D ]]  }||   j                  }|�4t        j                  |«      j                  «       rJ d|› dt        › �«       ‚||   | j                  d|› d�<   Œ_ y )Nz9Compiled autograd running under anomaly mode with inputs[z6] already having NaN gradient. This is not supported. zinputs[ú])rY   r[   Úgradr9   ÚisnanÚanyÚTURN_OFF_MSGr\   )r^   rz   Úidxr}   s       r@   Úprep_with_inputszNaNChecker.prep_with_inputsž   s—   € Ø×#Ò#àð ×&Ñ&ò 	AˆCØ˜#‘;×#Ñ#ˆDØÐÜ Ÿ;™; tÓ,×0Ñ0Ô2ð ØOÐPSÈuð UCÜCOÀ.ðRóÐ2ð
 6<¸C±[ˆD× Ñ  7¨3¨%¨qÐ!1Ò2ñ	Ar?   Úoutc                 ó6  — | j                   r–|rJ ‚g }| j                  j                  «       D ]R  \  }}|j                  €J ‚t	        j
                  |j                  «      j                  «       sŒB|j                  |«       ŒT |rt        ddj                  |«      › d�«      ‚y g }t        |«      D ]G  \  }}t	        j
                  |«      j                  «       sŒ*|j                  | j                  |   «       ŒI |rt        ddj                  |«      › d�«      ‚y )Nz9Compiled Autograd returned NaN gradients for parameters: ú,ú.z;Compiled Autograd returned NaN gradients for output nodes: )rY   r\   Úitemsr}   r9   r~   r   rr   ÚRuntimeErrorÚjoinÚ	enumerater]   )r^   rƒ   Ú
nan_paramsÚ
inputs_strÚparamÚ	nan_gradsÚir}   s           r@   ÚcheckzNaNChecker.check®   s!  € Ø×ÒáˆN�7Ø$&ˆJØ%)×%9Ñ%9×%?Ñ%?Ó%Aò 2Ñ!�
˜EØ—z‘zÐ-Ð-Ð-Ü—;‘;˜uŸz™zÓ*×.Ñ.Õ0Ø×%Ñ% jÕ1ð2ñ
 Ü"ØOÐPS×PXÑPXÐYcÓPdÐOeÐefÐgóð ð ð $&ˆIÜ$ S›>ò ;‘��4Ü—;‘;˜tÓ$×(Ñ(Õ*Ø×$Ñ$ T×%6Ñ%6°qÑ%9Õ:ð;ñ Ü"ØQÐRU×RZÑRZÐ[dÓReÐQfÐfgÐhóð ð r?   )Ú__name__Ú
__module__Ú__qualname__rn   r_   r9   ÚfxÚGraphry   ÚtupleÚTensorr‚   r�   r>   r?   r@   rX   rX      sx   „ ð*¨ð *°ó *ðA U§X¡X§^¡^ð A¸ó Að0A u¨U¯\©\¸3Ð->Ñ'?ð AÀDó Að ˜˜uŸ|™|¨SÐ0Ñ1ð °dô r?   rX   c            
       óJ   — e Zd Zdd„Zdededef   dededef
d	„Zdedefd
„Z	y)ÚOpNamespacer7   Nc                 ó"   — t        «       | _        y rC   )r   Úcustom_function_name_counter©r^   s    r@   r_   zOpNamespace.__init__Ï   s   € Ü:A»)ˆÕ)r?   rs   Úfn.Úis_custom_functionÚis_traceablec                 ó„  ‡— |r1d|z   }| j                   |   }| j                   |xx   dz  cc<   |› |› �}t        | |«      rJ ‚t        |||«      Š|r,t        | |t        j
                  j                  ‰«      «       |S t        j
                  j                  dt        dt        dt        fˆfd„«       }t        | ||«       |S )NÚCppNoderh   rm   Úkwargsr7   c                  ó   •—  ‰| i |¤ŽS rC   r>   )rm   r¢   Úresults     €r@   Úrun_non_traceable_cpp_in_eagerz7OpNamespace.add.<locals>.run_non_traceable_cpp_in_eagerç   s   ø€ á˜tÐ. vÑ.Ð.r?   )	r›   ÚhasattrÚOpÚsetattrr9   Ú_dynamoÚallow_in_graphÚdisabler   )r^   rs   r�   rž   rŸ   Úcountr¥   r¤   s          @r@   ÚaddzOpNamespace.addÒ   sÑ   ø€ ñ Ø˜tÑ#ˆDØ×5Ñ5°dÑ;ˆEØ×-Ñ-¨dÓ3°qÑ8Ó3Ø�V˜E˜7Ð#ˆDä˜4 Ô&Ð&Ð&Ü�D˜"Ð0Ó1ˆÙä�D˜$¤§¡× <Ñ <¸VÓ DÔEð ˆô �]‰]×"Ñ"ð/´cð /ÄSð /ÌSô /ó #ð/ô �D˜$Ð >Ô?Øˆr?   c                 ó   — t        | |«      S rC   )Úgetattr)r^   rs   s     r@   ÚgetzOpNamespace.getî   s   € Ü�t˜TÓ"Ð"r?   ©r7   N)
r‘   r’   r“   r_   Ústrr   r   rn   r­   r°   r>   r?   r@   r™   r™   Î   sY   „ óDðàðð �S˜#�XÑðð !ð	ð
 ðð 
óð8#˜ð # ô #r?   r™   c                   óN   — e Zd Zdededef   deddfd„Zded	edefd
„Zdefd„Z	y)r§   rs   r�   .rž   r7   Nc                 ó<   — || _         || _        || _        d| _        y )Nz#torch._dynamo.compiled_autograd.ops)r�   rž   r‘   r’   )r^   rs   r�   rž   s       r@   r_   zOp.__init__ó   s!   € ð ˆŒØ"4ˆÔØˆŒØ?ˆ�r?   rm   r¢   c                 ó&   —  | j                   |i |¤ŽS rC   )r�   )r^   rm   r¢   s      r@   Ú__call__zOp.__call__û   s   € Øˆt�w‰w˜Ð' Ñ'Ð'r?   c                 ó:   — | j                   dz   | j                  z   S )Nr†   )r’   r‘   rœ   s    r@   Ú__repr__zOp.__repr__þ   s   € Ø�‰ Ñ$ t§}¡}Ñ4Ð4r?   )
r‘   r’   r“   r²   r   r   rn   r_   r¶   r¸   r>   r?   r@   r§   r§   ò   s[   „ ð@Øð@Ø% c¨3 hÑ/ð@ØEIð@à	ó@ð(˜cð (¨Sð (°Só (ð5˜#ô 5r?   r§   )rz   ÚsizesÚscalarsÚhooksÚpacked_dataÚcompiled_autograd_idc           	      óB   — t        t        t        | d d ¬«      «      «      S )N)r½   Úframe_idÚframe_compile_id)r   r   r   )r½   s    r@   Úmake_compile_contextrÁ     s(   € ÜÜÜØ%9ØØ!%ôó	
óð r?   c                   ó|  — e Zd Zdedef   ddfd„Zdej                  dedz  de	fd„Z
ed	ed
edefd„«       Zdeej                     dee   deeez     deeeeef         dededeeeej                     ee   ee   f   fd„Zdee   ddfd„Zdee   deej                     deej                     dedededz  dee   dee   fd„Zdee   dee   deej                     dedej2                  j4                  j6                  dedz  dee   deej                  dz  df   fd„Zdee   d ee   d!ee   d"ed#ee   d$ee   d%edeej                     fd&„Zd'ee   d(ej                  d)ee   d*ej                  deej                     f
d+„Zdej                  fd,„Zd-ed.edef   d/ed0edef
d1„Z d-ed2ee   d3ed4ee   deej                     f
d5„Z!d.edef   d3ed4ee   deej                     fd6„Z"d7ed8ee   d3ed4ee   deej                     f
d9„Z#d:ed;edej                  fd<„Z$d=ej                  d>ej                  d?eddfd@„Z%dAedef   d3edBedejL                  jN                  fdC„Z(dDedEedej                  fdF„Z)deej                     dDedGedeej                     fdH„Z*deej                     dDedGedeej                     fdI„Z+dee   dDedeej                     fdJ„Z,d8eej                     deej                     dDedeej                     fdK„Z-dLej                  dDedeej                     fdM„Z.dNejL                  j^                  dee   fdO„Z0dPedefdQ„Z1dkdR„Z2de3e   fdS„Z4dTede5fdU„Z6d8edeedef   ef   fdV„Z7ed3ee   deejL                  jp                     fdW„«       Z9edPejL                  jp                  defdX„«       Z:dkdY„Z;dkdZ„Z<dkd[„Z=dkd\„Z>dkd]„Z?dkd^„Z@dkd_„ZAd`edefda„ZB	 dldbee   dcedeeeef      dz  dee   fdd„ZCdeedeDfdf„ZEdgedhediej2                  jŒ                  dz  ddfdj„ZGy)mÚAutogradCompilerInstanceÚcompiler_fn.r7   Nc                 ó4  — || _         t        j                  «       | _        | j                  j                  | _        t        «       | _        t        dd| j                  ¬«      | _        t        «       | _
        t        | j                  d«      | _        d | _        y )NT)Úallow_fallback_kernelsÚallow_non_fake_inputsÚ	shape_envÚsymbolic)rÄ   Ú
contextlibÚ	ExitStackÚstackÚcloser-   rÈ   r!   Úfake_tensor_moder*   Ú	fx_tracerr)   Ú
proxy_modeÚhooks_proxy)r^   rÄ   s     r@   r_   z!AutogradCompilerInstance.__init__  st   € Ø&ˆÔÜ×)Ñ)Ó+ˆŒ
Ø—Z‘Z×%Ñ%ˆŒ
Ü!›ˆŒÜ .Ø#'Ø"&Ø—n‘nô!
ˆÔô
 )Ó*ˆŒÜ0°·±ÀÓLˆŒØ)-ˆÕr?   rI   Úsourcec                 ót   — t        |t        j                  «      sJ ‚| j                  j	                  ||¬«      S )N)rÒ   )rN   r9   r—   rÎ   Úfrom_tensor)r^   rI   rÒ   s      r@   Ú	wrap_fakez"AutogradCompilerInstance.wrap_fake-  s2   € Ü˜!œUŸ\™\Ô*Ð*Ð*Ø×$Ñ$×0Ñ0°¸6Ð0ÓBÐBr?   rs   r�   c                 ó,   — t        t        | «      |«      S rC   r   )rs   r�   s     r@   rÒ   zAutogradCompilerInstance.source1  s   € äœ[¨Ó.°Ó4Ð4r?   rz   r¹   rº   ÚoriginsrY   Ú
check_nansc                 óD  ‡ — t         d   dxx   dz  cc<   t        t        «      ‰ _        t	        t
        «      ‰ _        t        ‰ j                  «      ‰ _        ‰ j                  j                  «        |rt        |«      nd ‰ _        t        j                  «       ‰ _        t        «       j!                  d‰ j                  d‰ j                  id¬«       t"        j$                  j'                  «       ‰ j(                  _        t"        j,                  j/                  t0        ¬«      ‰ j(                  _        i ‰ j(                  _        i ‰ _        ˆ fd„t8        D «       \  }‰ _        ‰ _        ‰ _        ‰ _         ‰ jB                  jE                  tG        «       «       |\  }}	}
‰ jB                  jE                  tI        «       «       |d	   }	 tK        |«      D ]*  \  }}‰ jM                  |‰ jO                  d
|«      «      ||<   Œ, 	 ‰ jY                  |||«       tK        |«      D ��cg c]@  \  }}‰ jZ                  j]                  |‰ jO                  d|«      t^        j`                  «      ‘ŒB }}}tc        te        |«      «      D �cg c]  }‰ j:                  |   ‘Œ }}tK        |«      D ][  \  }}‰ j(                  jg                  dth        ||   fi «      ||<   tk        |t
        «      rŒ@||   ‰ j6                  |jl                  <   Œ] ‰ jY                  |||	«      }tK        |«      D ]Æ  \  }}‰ jO                  d|«      }tk        |t
        «      r/‰ jZ                  j]                  ||t^        j`                  «      ||<   ŒWtk        |tn        «      rL‰ jZ                  jq                  ‰ jZ                  js                  ||t^        j`                  ¬«      ||¬«      ||<   Œ³tu        dtU        |«      «      ‚ ‰ jY                  |‰ j<                  |
«       tK        |«      D ]+  \  }}‰ j<                  |   ‰ j6                  |jl                  <   Œ- ‰ jB                  jE                  tw        i «      «       ‰ jB                  jE                  ‰ jx                  «       ‰ jB                  jE                  ‰ jz                  «       ‰ jB                  jE                  t}        «       «       ‰ jx                  jZ                  €J ‚‰ jx                  jZ                  }‰ jB                  jE                  t"        j,                  j~                  j€                  jƒ                  |«      «       t…        t‡        jˆ                  «       «      |||fS # tP        $ r$}tS        dtU        |«      › dtV        › �«      |‚d }~ww xY wc c}}w c c}w )Nr5   Úcapturesrh   Úgraph_idT©Úlog_pt2_compile_event)Ú
tracer_clsc              3   óZ   •K  — | ]"  }‰j                   j                  d |di «      –— Œ$ y­w)Úplaceholderr>   N)rÏ   Úcreate_proxy)Ú.0rs   r^   s     €r@   ú	<genexpr>z9AutogradCompilerInstance.begin_capture.<locals>.<genexpr>U  s.   øè ø€ ò 
àð �N‰N×'Ñ'¨°t¸RÀ×Dñ
ùs   ƒ(+r   rz   zFound tensor of type z,, which is not supported by FakeTensorMode. r¹   rb   rº   )rÒ   Údynamic_dim)ÚhintrÒ   zUnexpected scalar type: )Er   ri   ÚCOMPILE_COUNTERÚidr   rq   Úaot_id_counterrÁ   r   Ú	__enter__rX   Únan_checkerÚtimeÚtime_nsÚstart_time_nsr   Úlog_event_startr9   ÚnnÚModulerÏ   Úrootr”   r•   r*   r`   Útensor_attrsÚsymnode_proxy_lookupÚ_graph_placeholdersÚsizes_proxyÚscalars_proxyrÑ   Úpacked_data_proxyrÌ   Úenter_contextr.   r
   rŠ   rÕ   rÒ   Ú	ExceptionÚNotImplementedErrorÚtyper€   Úbind_objects_to_proxiesrÈ   Ú$create_unspecified_symint_and_symbolr,   ÚDYNAMICÚrangeÚlenrá   r   rN   rw   ÚfloatÚcreate_symfloatnodeÚcreate_unspecified_symbolrU   r%   rÎ   rÐ   r&   ÚexperimentalÚsymbolic_shapesÚ_suppress_guardsr²   r   Úcurrent_compile_id)r^   rz   r¹   rº   r×   rY   rØ   Ú
args_proxyÚinputs_originsÚsizes_originsÚscalars_originsrI   r�   ÚeÚvalÚ	sym_sizesr�   ÚproxiesÚsymintrÒ   ÚsymvalÚenvs   `                     r@   Úbegin_capturez&AutogradCompilerInstance.begin_capture5  sè  ø€ ô 	Ð$Ñ% jÓ1°QÑ6Ó1Ü”Ó'ˆŒÜ.9¼#Ó.>ˆÔÜ3°D·G±GÓ<ˆÔØ×Ñ×&Ñ&Ô(Ù:Dœ: oÔ6È$ˆÔÜ!Ÿ\™\›^ˆÔÜ!Ó#×3Ñ3ØØ×ÑØ˜Ÿ™Ð!Ø"&ð	 	4ô 	
ô $Ÿh™hŸo™oÓ/ˆ�‰ÔÜ$Ÿx™xŸ~™~¼˜~ÓIˆ�‰ÔØ&(ˆ�‰Ô#Ø$&ˆÔ!ó
ä+ô
ñ	
ØØÔØÔØÔØÔ"ð 	�
‰
× Ñ Ô!3Ó!5Ô6Ø9@Ñ6ˆ˜ ð 	�
‰
× Ñ Ô!9Ó!;Ô<ð �1‰Iˆð	Ü# FÓ+ò L‘��QØ"Ÿn™n¨Q°·±¸HÀcÓ0JÓK��s’ñLð 	×$Ñ$ V¨Z¸ÔHô & eÓ,÷
ñ ��Sð �N‰N×?Ñ?ØØ—‘˜G SÓ)Ü×"Ñ"õð
ˆ	ñ 
ô 16´c¸)³nÓ0EÖF¨1�4×#Ñ# AÓ&ÐFˆÐFÜ" 9Ó-ò 	D‰IˆAˆvØŸ™×4Ñ4ØÜ(Ø˜‘�Øó	ˆG�A‰Jô ˜f¤cÕ*Ø9@À¹�×)Ñ)¨&¯+©+Ò6ð	Dð ×.Ñ.¨y¸'À=ÓQˆä! 'Ó*ò 	L‰HˆC�Ø—[‘[ ¨CÓ0ˆFÜ˜#œsÔ#Ø#Ÿ~™~×RÑRØØÜ×&Ñ&ó �˜’ô
 ˜C¤Ô'Ø#Ÿ~™~×AÑAØ—N‘N×<Ñ<ØØ%Ü$.×$6Ñ$6ð =ó ð
 Ø!ð  Bó  �˜’ô %Ð%?ÄÀcÃÓKÐKð'	Lð( 	×$Ñ$ W¨d×.@Ñ.@À/ÔRÜ" 7Ó+ò 	K‰IˆAˆvØ59×5GÑ5GÈÑ5JˆD×%Ñ% f§k¡kÒ2ð	Kð 	�
‰
× Ñ ¤¨2£Ô/Ø�
‰
× Ñ  ×!6Ñ!6Ô7Ø�
‰
× Ñ  §¡Ô1Ø�
‰
× Ñ Ô!7Ó!9Ô:à×$Ñ$×.Ñ.Ð:Ð:Ð:Ø×#Ñ#×-Ñ-ˆØ�
‰
× Ñ Ü�H‰H×!Ñ!×1Ñ1×BÑBÀ3ÓGô	
ô
 ”×1Ñ1Ó3Ó4ØØØð	
ð 	
øôG ò 	Ü%Ø'¬¨Q« yÐ0\Ô]iÐ\jÐkóàðûð	üó
ùò Gs%   Ç8U' ÈAVÉ=VÕ'	VÕ0VÖVÚcompile_reasonsc                 ó2   ‡— ‰sJ ‚t        dd„ ˆfd„¬«       y )NÚartifactc                  ó   — dddœS )NÚ!compiled_autograd_compile_reasonsÚjson©rs   Úencodingr>   r>   r?   r@   ú<lambda>z>AutogradCompilerInstance.log_compile_reasons.<locals>.<lambda>·  s   € Ø;Ø"ñ!€ r?   c                  ó   •— ‰ S rC   r>   )r  s   €r@   r  z>AutogradCompilerInstance.log_compile_reasons.<locals>.<lambda>»  s   ø€ ˜€ r?   ©Úmetadata_fnÚ
payload_fn)r   )r^   r  s    `r@   Úlog_compile_reasonsz,AutogradCompilerInstance.log_compile_reasons°  s"   ø€ ñ ÐˆÜØñó /ö	
r?   ÚpinputsÚpsaved_tensorsÚsaved_tensorsÚpctxÚctxÚmaybe_backward_state_idxÚopaque_object_indicesc                 óH  ‡ ‡‡‡‡‡‡‡— ‰j                  «       D �cg c]  }‰ j                  |«      ‘Œ }	}|D �
cg c]  }
‰ j                  |
   ‘Œ }}
‰j                  }t	        |«      Š|j
                  Š|j                  Š|j                  Š~t        j                  «       r(‰j                  D ]  }|j                  sŒt        d«      ‚ t        j                  j                  dt        t        j                      dt        t"           dt        t$           dt        t$           dt$        f
ˆˆfd„«       }‰ j&                  j)                  d|||	|g|¢­i ¬	«      Šd Š|�‰ j                  |   Šdt*        t        j                      fˆˆˆˆˆˆ fd
„} |«       }dt$        dt,        dt        t$           dt        j                   fˆ fd„}t        j.                  j0                  j2                  j5                  ‰‰||¬«      }t7        j8                  ‰ j                  |«      }|S c c}w c c}
w )Nz@torch.compile does not currently support higher order gradients.Úctx_saved_tensorsÚctx_symintsÚctx_opaque_objsÚ	flat_argsr7   c                 óx   •— t        j                  j                  j                  j                  | ||‰‰g|¢­Ž }|S rC   )r9   Ú
_functorchÚ_aot_autogradÚruntime_wrappersÚ_backward_prologue_functional)r*  r+  r,  r-  rƒ   Úmaybe_subclass_metadataÚmetadatas        €€r@   Úcall_aot_bwd_prologuezOAutogradCompilerInstance.proxy_call_aot_backward.<locals>.call_aot_bwd_prologueé  sG   ø€ ô ×"Ñ"×0Ñ0×AÑA×_Ñ_Ø!ØØØØ'ðð òˆCð ˆJr?   rb   ©Úkindre   rm   r¢   c            	      óD	  •‡‡— dt         j                  j                  dt        fd„}  | ‰j                  «      }t        |t        ‰d u«      z
  «      D �cg c]  }‰|   ‘Œ	 }}‰j                  «       }t        |«      t        ‰j                  «      k(  sJ ‚|D �cg c]  }‰j                  |«      ‘Œ }}||d t        |«       ‰�|j                  ‰«       d}i Šd }t        ‰«      Š‰j                  ‰   r‰d‰j                  ‰   › �z  Š‰j                  ‰xx   dz  cc<   dt        dt        fˆfd„}	‰j                  j                  D �]Û  }
|
j                  d	k(  r1||   j                  } |	|
j                   «      |_        |‰|
<   |dz  }ŒD|
j                  d
k(  rˆt        |
j"                  «      dk(  sJ ‚|
j"                  d   D �cg c]U  }t%        |t         j                  j&                  «      r-t         j                  j)                  ‰|   ‰j*                  «      n|‘ŒW }}ŒÛ|
j                  dk(  rŽ|
j,                  }‰j*                  j/                  |«      }t1        ‰j*                  j2                  |t5        ‰|«      «       ‰j*                  j7                  d|di «      } |	|
j                   «      |_        |‰|
<   �Œx|
j                  dk(  r´|
j,                  t         j8                  j:                  j<                  j>                  u r3t         j8                  j:                  j@                  j>                  |
_        ‰j*                  j                  jC                  |
ˆfd„«      } |	|
j                   «      |_        |‰|
<   �Œ;|
j                  dk(  r‰|
j,                  }‰j*                  j/                  |«      }t1        ‰j*                  j2                  |t5        ‰|«      «       ‰j*                  j                  jC                  |
ˆfd„«      }||_        |‰|
<   �ŒÓtE        d«      ‚ |€J ‚dt         jF                  fd„}|D �cg c]/  }t%        |t         j                  j(                  «      r |«       n|‘Œ1 }}‰jI                  ||«       |S c c}w c c}w c c}w c c}w )Nr`   r7   c                 óZ   — d}| j                   D ]  }|j                  dk(  r|dz  }Œ |S  |S )Nr   rà   rh   )rk   rd   )r`   Únum_argsrw   s      r@   Ú
num_inputszkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.num_inputs  sA   € Ø�Ø!ŸK™Kò �DØ—w‘w -Ò/Ø  A™˜Ø àØ�ðð  �r?   r   Ú_rh   Ú	node_namec                 ó   •— d‰› d| › �S )NÚaotr<  r>   )r=  Údeduped_aot_ids    €r@   Úmake_uniquezlAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.make_unique4  s   ø€ à˜^Ð,¨A¨i¨[Ð9Ð9r?   rà   rf   Úget_attrr>   rb   c                 ó   •— ‰|    S rC   r>   ©ÚnÚvalue_remaps    €r@   r  ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>T  ó   ø€ ¨°A©€ r?   Úcall_modulec                 ó   •— ‰|    S rC   r>   rD  s    €r@   r  ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>]  rG  r?   zshouldn't get herec                  ót   — t        «       5  t        j                  ddddd«      cd d d «       S # 1 sw Y   y xY w)Nr   é{   ©r'   r9   Úzerosr>   r?   r@   ÚdummyzfAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.dummyh  s1   € Ü0Ó2ñ 8Ü Ÿ;™; q¨!¨Q°°3Ó7÷8÷ 8ò 8ús   ‹.®7)%r9   r”   r•   rq   r`   rÿ   Ú_get_compiled_autograd_symintsr   ÚsymintsÚto_proxyrr   r²   rè   rk   rd   rw   rs   rm   rN   ÚNoder4   rÏ   re   Úget_fresh_qualnamer¨   rñ   r¯   Úcreate_nodeÚopsÚatenÚviewÚdefaultÚreshapeÚ	node_copyrU   r—   rü   )r;  r:  r�   Ú	pall_argsrP  r  ÚpsymintsÚargs_idxÚpoutputsrA  rw   ÚphrE  rs   Úqualnamer¤   rN  ÚoÚoutputsr@  rF  Úaot_idrP   r&  Úpbackward_stateÚpgradsr^   s                      @@€€€€€€r@   Úcopy_paste_aot_backward_graphzWAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph  s  ú€ ð ¤%§(¡(§.¡.ð  ´Só  ñ " )§/¡/Ó2ˆHä#(¨´C¸ÈtÐ8SÓ4TÑ)TÓ#UöØ��q“	ðˆIð ð ×8Ñ8Ó:ˆGÜ�w“<¤3 s§{¡{Ó#3Ò3Ð3Ð3Ø29Ö:¨Q˜Ÿ™ aÕ(Ð:ˆHÐ:Ø(0ˆI�nœ˜G›Ð%àÐ*Ø× Ñ  Ô1ð ˆHàˆKØ48ˆHô ! ›[ˆNØ×"Ñ" 6Ò*Ø A d×&9Ñ&9¸&Ñ&AÐ%BÐ"CÑC�Ø×Ñ Ó'¨1Ñ,Ó'ð:¤sð :¬sõ :ð "Ÿ™×-Ñ-ó *?�Ø—7‘7˜mÒ+Ø" 8Ñ,×1Ñ1�BÙ)¨$¯)©)Ó4�B”GØ(*�K Ñ%Ø ‘M‘HØ—W‘W Ò(Ü˜tŸy™y›>¨QÒ.Ð.Ð.ð
 "&§¡¨1¡ö	 ð ô & a¬¯©¯©Ô7ô Ÿ™Ÿ™ {°1¡~°t·~±~ÔFàñð �Hñ  ð —W‘W 
Ò*ØŸ;™;�DØ#Ÿ~™~×@Ñ@ÀÓF�HÜ˜DŸN™N×/Ñ/°¼7À9ÈdÓ;SÔTØ!Ÿ^™^×7Ñ7¸
ÀHÈbÐRTÓU�FÙ"-¨d¯i©iÓ"8�F”KØ(.�K Ó%Ø—W‘W Ò/Ø—{‘{¤e§i¡i§n¡n×&9Ñ&9×&AÑ&AÑAô ',§i¡i§n¡n×&<Ñ&<×&DÑ&D˜œØ!Ÿ^™^×1Ñ1×;Ñ;ØÓ6ó�Fñ #.¨d¯i©iÓ"8�F”KØ(.�K Ó%Ø—W‘W Ò-ØŸ;™;�DØ#Ÿ~™~×@Ñ@ÀÓF�HÜ˜DŸN™N×/Ñ/°¼7À9ÈdÓ;SÔTØ!Ÿ^™^×1Ñ1×;Ñ;ØÓ6ó�Fð %-�F”MØ(.�K Ó%ä(Ð)=Ó>Ð>ðU*?ðX Ð'Ð'Ð'ð8œ5Ÿ<™<ó 8ð
 JRöØDEœ: a¬¯©¯©Ô8‘”¸aÑ?ðˆGð ð ×(Ñ(¨°(Ô;ØˆNùòmùò ;ùò@ ùòXs   ÁRÂRÇARÑ4RÚsubclass_metaÚ
is_runtimeÚunwrapped_argsc                 óD  •‡ ‡— t         j                  j                  dt        dt        fˆˆ fd„«       }t	        j
                  ‰j                  |«      }‰j                  j                  d|t        |«      i ¬«      }‰j                  «       }‰j                  |g|g«       |S )Nri  r7   c                  ó*   •— ‰j                  | ‰¬«      S )N)rh  )Úcreation_fn)ri  rh  rg  s    €€r@   Úmake_subclasszkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructor.<locals>.make_subclassw  s   ø€ à$×0Ñ0°ÈJÐ0ÓWÐWr?   rb   r6  )r9   r©   rª   r   ÚpytreeÚtree_maprQ  rÏ   rá   r–   Úallocate_dummyrü   )rg  rh  ri  rm  Úpunwrapped_argsÚpoutputrf   r^   s   ``     €r@   Úproxy_subclass_constructorzTAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructort  sœ   ú€ ô �]‰]×)Ñ)ðX¬sð X´sõ Xó *ðXô %Ÿo™o¨d¯m©m¸^ÓLˆOà—n‘n×1Ñ1Ø$à$Ü˜?Ó+Øð 2ó ˆGð ×(Ñ(Ó*ˆFØ×(Ñ(¨&¨°G°9Ô=ØˆMr?   )Úmake_subclass_override)rO  rQ  rÑ   Ú_forward_clsrV   r4  r3  Ú_aot_idr9   Úis_grad_enabledÚoutput_infoÚrequires_gradrˆ   r©   rª   r   r—   r1   r   rÏ   rá   Úlistrn   r/  r0  r1  Ú_backward_epilogue_functionalrn  ro  )r^   r"  r#  r$  r%  r&  r'  r(  r  r\  r�   Úpopaque_objectsrL   Úoutput_alias_infor5  rf  rb  rs  ÚresultsÚpresultsrc  rP   r3  r4  rd  re  s   `    `              @@@@@@r@   Úproxy_call_aot_backwardz0AutogradCompilerInstance.proxy_call_aot_backward¾  s=  ÿ€ ð* /2×.PÑ.PÓ.RÖS¨�D—M‘M !Õ$ÐSˆÐSð -ö
àð ×Ñ˜SÓ!ð
ˆð 
ð ×+Ñ+ÐÜ%Ð&6Ó7ˆ	Ø#×,Ñ,ˆØ"2×"JÑ"JÐØ!×)Ñ)ˆØä× Ñ Ô"Ø%-×%9Ñ%9ò Ð!Ø$×2Ó2Ü&ØZóð ðô 
�‰×	%Ñ	%ð	Ü'¬¯©Ñ5ð	ä!¤+Ñ.ð	ô &¤c™]ð	ô !¤™ð		ô
 õ	ó 
&ð	ð  —‘×,Ñ,Ø à(àØØðð ñ	ð ð -ó 
ˆð ˆØ#Ð/Ø"×.Ñ.Ð/GÑHˆOðd	¬t´E·L±LÑ/A÷ d	ò d	ñL 0Ó1ˆð	Üð	Ü,0ð	ÜBJÌ3Á-ð	ä�\‰\õ	ô* ×"Ñ"×0Ñ0×AÑA×_Ñ_ØØ#ØØ#=ð	 `ó 
ˆô —?‘? 4§=¡=°'Ó:ˆØˆùò{ Tùò
s
   ›H¹HÚoutput_metadatasÚbackward_idxc           
      óz  — | j                   €J ‚| j                   |   }| j                  |«      }	| j                  |«      }
t        |j                  d«      r| j	                  |	|
|||||«      }n(| j
                  j                  dt        ||
g|	¢­i ¬«      }|€J ‚t        «       5  g }t        |«      D ]M  \  }}|�||   €|j                  d «       Œ|\  }}}}|j                  t        j                  ||||¬«      «       ŒO | j                  ||«       d d d «       t        |«      S # 1 sw Y   t        «      S xY w)Nrv  rb   r6  )ÚsizeÚdtypeÚlayoutÚdevice)rÑ   rQ  r¦   ru  r€  rÏ   rá   r   r'   rŠ   rr   r9   Úemptyrü   r–   )r^   rz   r�  r$  r‚  r&  r'  r(  r%  r"  r#  r  Úgrad_insr�   Úoutput_metadatar†  r‡  r…  r„  s                      r@   Úproxy_call_backwardz,AutogradCompilerInstance.proxy_call_backward’  si  € ð ×ÑÐ+Ð+Ð+Ø×Ñ Ñ-ˆØ—-‘- Ó'ˆØŸ™ }Ó5ˆÜ�3×#Ñ# YÔ/à×2Ñ2ØØØØØØ(Ø%ó‰Gð —n‘n×1Ñ1Ø$Ü$àØ"ðð ñð
 ð 2ó 	ˆGð Ð"Ð"Ð"ä(Ó*ñ 	<à24ˆHÜ(1Ð2BÓ(Cò Ñ$��_Ø"Ð*¨g°c©lÐ.BØ—O‘O DÔ)Øà.=Ñ+�˜  tØ—‘Ü—K‘K T°¸vÈfÔUõðð ×(Ñ(¨°7Ô;÷	<ô �X‹Ð÷	<ô �X‹Ðús   Â$A0D'Ä'D:Ú
base_sizesÚbase_stridesÚbase_storage_offsetÚ
view_sizesÚview_stridesÚview_storage_offsetc           	      óþ   — || j                  |«      | j                  |«      | j                  |«      | j                  |«      | j                  |«      | j                  |«      f}| j                  t        |d gdz  «      S )Né   )rQ  Ú
proxy_callÚcopy_slices_prologue)	r^   rz   rŒ  r�  rŽ  r�  r�  r‘  rm   s	            r@   Úcall_copy_slices_prologuez2AutogradCompilerInstance.call_copy_slices_prologueÇ  st   € ð Ø�M‰M˜*Ó%Ø�M‰M˜,Ó'Ø�M‰MÐ-Ó.Ø�M‰M˜*Ó%Ø�M‰M˜,Ó'Ø�M‰MÐ-Ó.ð
ˆð �‰Ô3°T¸D¸6ÀA¹:ÓFÐFr?   Úneeds_input_gradr¤   ÚresÚ
grad_slicec                 óR   — | j                  t        ||||fd gt        |«      z  «      S rC   )r”  Úcopy_slices_epiloguer   )r^   r—  r¤   r˜  r™  s        r@   Úcall_copy_slices_epiloguez2AutogradCompilerInstance.call_copy_slices_epilogueÜ  s4   € ð �‰Ü Ø˜v s¨JÐ7ØˆF”SÐ)Ó*Ñ*ó
ð 	
r?   c                 óp   — t        «       5  t        j                  ddg«      cd d d «       S # 1 sw Y   y xY w)Nr   iÍ[rL  rœ   s    r@   rp  z'AutogradCompilerInstance.allocate_dummyé  s-   € Ü(Ó*ñ 	/ä—;‘;  9˜~Ó.÷	/÷ 	/ò 	/ús   ‹,¬5Úfn_namer�   rž   rŸ   c                 ó2   — t         j                  ||||«      S )zBinds ops.fn_name = fn)rU  r­   )r^   rž  r�   rž   rŸ   s        r@   Úbind_functionz&AutogradCompilerInstance.bind_functionî  s   € ô �w‰w�w Ð$6¸ÓEÐEr?   Úgradsrm   rŠ  c                 óZ   — t         j                  |«      }| j                  ||g|¢­|«      S )z:Proxies a call to ops.fn_name(grads, *args) into the graph)rU  r°   r”  )r^   rž  r¡  rm   rŠ  rd   s         r@   Úapply_functionalz)AutogradCompilerInstance.apply_functionalø  s+   € ô �W‰W�WÓˆØ�‰˜r E >¨D¡>°?ÓCÐCr?   c                 ó0  ‡ — t        j                  ˆ fd„|«      }‰ j                  j                  d||i ¬«      }|D �cg c]  }‰ j	                  «       ‘Œ }}‰ j                  |t        t        |«      «      D �cg c]  }||   ‘Œ	 c}«       |S c c}w c c}w )z*Proxies a call to fn(*args) into the graphc                 ó&   •— ‰j                  | «      S rC   ©rQ  )r  r^   s    €r@   r  z5AutogradCompilerInstance.proxy_call.<locals>.<lambda>  s   ø€ ¨t¯}©}¸QÓ/?€ r?   rb   ©rm   r¢   )rn  ro  rÏ   rá   rp  rü   rÿ   r   )	r^   r�   rm   rŠ  Ú
proxy_argsÚ	proxy_outr<  r¤   r�   s	   `        r@   r”  z#AutogradCompilerInstance.proxy_call  s�   ø€ ô —_‘_Ó%?ÀÓFˆ
Ø—N‘N×/Ñ/Ø˜R j¸ð 0ó 
ˆ	ð 2AÖA¨A�$×%Ñ%Õ'ÐAˆÐAØ×$Ñ$ VÄEÌ#ÈfË+ÓDVÖ-W¸q¨i¸«lÒ-WÔXØˆùò BùÚ-Ws   ¾BÁ9B
r<  rb  c                 ó  — t         j                  d«      }t        j                  | j                  |g|¢­«      }| j
                  j                  d||i ¬«      }t        |«      t        |«      k(  sJ ‚| j                  ||«       |S )zEProxies a call to ops.validate_outputs(outputs, *args) into the graphÚvalidate_outputsrb   r§  )	rU  r°   rn  ro  rQ  rÏ   rá   r   rü   )r^   r<  rb  rm   rŠ  rd   r¨  Únew_proxy_outputss           r@   r«  z)AutogradCompilerInstance.validate_outputs  s�   € ô �W‰WÐ'Ó(ˆÜ—_‘_ T§]¡]°WÐ4D¸tÑ4DÓEˆ
Ø ŸN™N×7Ñ7Ø˜R j¸ð 8ó 
Ðô �?Ó#¤s¨7£|Ò3Ð3Ð3Ø×$Ñ$ WÐ.?Ô@Øˆr?   Úold_varÚnew_varc                 óð   — | j                  |«      }| j                  |«      }| j                  j                  dt        j                  ||fi ¬«      }| j                  «       }| j                  |g|g«       |S ©Nrb   r§  )rQ  rÏ   rá   r9   r­   rp  rü   )r^   r­  r®  Úold_var_proxyÚnew_var_proxyr©  r¤   s          r@   Ú
accumulatez#AutogradCompilerInstance.accumulate  ss   € ØŸ™ gÓ.ˆØŸ™ gÓ.ˆØ—N‘N×/Ñ/ØœUŸY™Y¨m¸]Ð-KÐTVð 0ó 
ˆ	ð ×$Ñ$Ó&ˆØ×$Ñ$ f X°	¨{Ô;Øˆr?   Úvariabler}   Úhas_post_hooksc                 óŒ   — | j                   j                  dt        | j                  |«      | j                  |«      |fi ¬«       y r°  )rÏ   rá   r   rQ  )r^   r´  r}   rµ  s       r@   rY   z(AutogradCompilerInstance.accumulate_grad&  sF   € ð 	�‰×#Ñ#ØÜ à—‘˜hÓ'Ø—‘˜dÓ#Øðð
 ð 	$õ 		
r?   Úhookr¢   c                 ó’   — | j                   j                  dt        |g|D �cg c]  }| j                  |«      ‘Œ c}¢­|«      S c c}w ©Nrb   )rÏ   rá   r   rQ  )r^   r·  rm   r¢   rI   s        r@   Úproxy_call_hookz(AutogradCompilerInstance.proxy_call_hook4  sO   € ð �~‰~×*Ñ*ØÜàðà,0Ö1 q�$—-‘- Õ"Ò1ñð ó
ð 	
ùò
 2s   ¢AÚhook_idÚdata_idc                 óÎ   — | j                   €J ‚| j                   |   }| j                  |   }| j                  ||d¬«      }| j                  «       }| j	                  |g|g«       |S )NÚunpack_hook©Ú	hook_type)rÑ   r÷   rº  rp  rü   )r^   r»  r¼  r·  ÚdataÚproxyrƒ   s          r@   r¾  z$AutogradCompilerInstance.unpack_hookA  s{   € Ø×ÑÐ+Ð+Ð+Ø×Ñ Ñ(ˆØ×%Ñ% gÑ.ˆØ×$Ñ$ØØØ#ð %ó 
ˆð
 ×!Ñ!Ó#ˆØ×$Ñ$ c U¨U¨GÔ4Øˆ
r?   r�   c                 óþ   — | j                   €J ‚| j                   |   }| j                  |||   d¬«      }t        «       5  t        ||   «      ||<   | j	                  ||   g|g«       d d d «       |S # 1 sw Y   |S xY w)NÚtensor_pre_hookr¿  ©rÑ   rº  r'   rK   rü   )r^   rz   r»  r�   r·  rÂ  s         r@   rÄ  z(AutogradCompilerInstance.tensor_pre_hookN  s˜   € ð ×ÑÐ+Ð+Ð+Ø×Ñ Ñ(ˆØ×$Ñ$ØØ�1‰IØ'ð %ó 
ˆô
 )Ó*ñ 	?Ü# F¨1¡IÓ.ˆF�1‰IØ×(Ñ(¨&°©)¨°u°gÔ>÷	?ð ˆ÷	?ð ˆús   ¿)A2Á2A<c           	      óR  — | j                   j                  dt        j                  j                  j
                  j                  || j                  ||   «      fi «      }t        «       5  t        ||   «      ||<   | j                  ||   g|g«       d d d «       |S # 1 sw Y   |S xY wr¹  )rÏ   rá   r9   Ú_Cr©   r5   Úcall_cpp_tensor_pre_hooksrQ  r'   rK   rü   )r^   rz   r»  r�   rÂ  s        r@   Úcpp_tensor_pre_hookz,AutogradCompilerInstance.cpp_tensor_pre_hook]  sœ   € ð —‘×+Ñ+ØÜ�H‰H×Ñ×.Ñ.×HÑHØ�d—m‘m F¨1¡IÓ.Ð/Øó	
ˆô )Ó*ñ 	?Ü# F¨1¡IÓ.ˆF�1‰IØ×(Ñ(¨&°©)¨°u°gÔ>÷	?ð ˆ÷	?ð ˆús   Á))BÂB&c                 ó  — | j                   €J ‚| j                   |   }| j                  ||d¬«      }t        «       5  |D �cg c]  }t        |«      ‘Œ }}| j	                  ||«       d d d «       |S c c}w # 1 sw Y   |S xY w)NÚpre_hookr¿  rÅ  )r^   rz   r»  r·  r  rI   s         r@   rË  z!AutogradCompilerInstance.pre_hookk  s”   € Ø×ÑÐ+Ð+Ð+Ø×Ñ Ñ(ˆØ×&Ñ&ØØØ ð 'ó 
ˆô
 )Ó*ñ 	:Ø.4Ö5¨”k !•nÐ5ˆFÐ5Ø×(Ñ(¨°Ô9÷	:ð ˆùò 6÷	:ð ˆús   ¼A6ÁA1ÁA6Á1A6Á6B c                 ó  — | j                   €J ‚| j                   |   }| j                  |||d¬«      }t        «       5  |D �cg c]  }t        |«      ‘Œ }}| j	                  ||«       d d d «       |S c c}w # 1 sw Y   |S xY w)NÚ	post_hookr¿  rÅ  )r^   rb  rz   r»  r·  r  rI   s          r@   rÍ  z"AutogradCompilerInstance.post_hookx  s™   € ð ×ÑÐ+Ð+Ð+Ø×Ñ Ñ(ˆØ×&Ñ&ØØØØ!ð	 'ó 
ˆô )Ó*ñ 	;Ø/6Ö7¨!”{ 1•~Ð7ˆGÐ7Ø×(Ñ(¨°'Ô:÷	;ð ˆùò 8÷	;ð ˆús   ½A7ÁA2ÁA7Á2A7Á7BÚinputc                 ó  — t        |t        j                  «      sJ ‚| j                  €J ‚| j                  |   }| j	                  ||d¬«      }t        «       5  t        |«      g}| j                  ||g«       d d d «       |S # 1 sw Y   S xY w)NÚpost_acc_grad_hookr¿  )rN   r9   r—   rÑ   rº  r'   rK   rü   )r^   rÎ  r»  r·  rÂ  r˜  s         r@   rÐ  z+AutogradCompilerInstance.post_acc_grad_hookˆ  s�   € ô ˜%¤§¡Ô.Ð.Ð.Ø×ÑÐ+Ð+Ð+Ø×Ñ Ñ(ˆØ×$Ñ$ØØØ*ð %ó 
ˆô
 )Ó*ñ 	7Ü˜uÓ%Ð&ˆCØ×(Ñ(¨¨u¨gÔ6÷	7ð ˆ
÷	7ð ˆ
ús   Á BÂBr`   c                 ó   — i }d}t        |j                  «      }|d   j                  dk(  sJ ‚|d   }t        |j                  j	                  «       «      }t        t        «      }||   |d   k(  sJ ‚|t        |«      z   dz
  }||   |d   k(  sJ ‚t        |«      D ]À  \  }	}
|s)|
j                  d   j                  j                  dk(  rd}Œ1|
j                  d   j                  j                  d	k(  }t        |
j                  d   j                  «       «      dk(  }|sŒƒ|sŒ†t        |
j                  j	                  «       «      }t        d
„ |D «       «      sŒ¼|
||	<   ŒÂ |rn|j                  «       D ]B  }
t        j                  d|
«       |
j                  d   j!                  «       |
j                  d<   ŒD t        |j	                  «       «      S g S )NFr   rz   rh   éÿÿÿÿr  ÚcudaTÚcpuc              3   ó  K  — | ]�  }t        |j                  t        j                  j                  «      xr |j                  j
                  d v xs3 t        |j                  t        «      xr |j                  j                   –— Œƒ y­w))ÚprimsrV  N)rN   re   r9   Ú_opsÚ
OpOverloadÚ	namespacer§   rž   ©râ   Úusers     r@   rã   zDAutogradCompilerInstance.move_graph_nodes_to_cuda.<locals>.<genexpr>´  sw   è ø€ ò 
ð ô # 4§;¡;´·
±
×0EÑ0EÓFò GØ ŸK™K×1Ñ1Ð5FÐFòô
 # 4§;¡;´Ó3ò ?Ø $§¡× >Ñ >Ð>óñ
ùs   ‚BB	zMoving node %s from cpu to cuda)rz  rk   re   ÚusersÚkeysr   rô   rŠ   Úmetar‡  rû   r„  ÚallÚvaluesÚverbose_logÚdebugrÓ  )r^   r`   Úto_moveÚhas_cuda_inputsrk   rz   Úinputs_usersÚfirst_getitem_idxÚlast_getitem_idxr�   rw   Úis_cpuÚ	is_scalarÚ
node_userss                 r@   Úmove_graph_nodes_to_cudaz1AutogradCompilerInstance.move_graph_nodes_to_cuda�  sÁ  € Ø,.ˆØˆÜ�U—[‘[Ó!ˆØ�Q‰x�‰ (Ò*Ð*Ð*Ø�q‘ˆÜ˜FŸL™L×-Ñ-Ó/Ó0ˆäÔ 3Ó4ÐØÐ&Ñ'¨<¸©?Ò:Ð:Ð:Ø,¬s°<Ó/@Ñ@À1ÑDÐØÐ%Ñ&¨,°rÑ*:Ò:Ð:Ð:ä  Ó.ò 	&‰GˆAˆtÙ" t§y¡y°Ñ'7×'>Ñ'>×'CÑ'CÀvÒ'MØ"&�Øà—Y‘Y˜uÑ%×,Ñ,×1Ñ1°UÑ:ˆFÜ˜DŸI™I eÑ,×1Ñ1Ó3Ó4¸Ñ9ˆIÚš)Ü! $§*¡*§/¡/Ó"3Ó4�
äñ 
ð !+ô
õ 
ð "&�G˜A’Jð-	&ñ4 ØŸ™Ó(ò ;�Ü×!Ñ!Ð"CÀTÔJØ#'§9¡9¨UÑ#3×#8Ñ#8Ó#:�—	‘	˜%Ò ð;ô
 ˜Ÿ™›Ó'Ð'àˆ	r?   rw   c                 ó@  — t        |t        j                  j                  «      xry |j                  dk(  xrh |j
                  t        j                  j                  j                  j                  t        j                  j                  j                  j                  fv S r¹  )rN   r9   r”   rR  rd   re   rU  rV  Úsym_sizerq   Ú	sym_numelrX  )r^   rw   s     r@   Úis_sym_nodez$AutogradCompilerInstance.is_sym_nodeÎ  sn   € ä�tœUŸX™XŸ]™]Ó+ò OØ—‘˜?Ñ*òOà—‘Ü—	‘	—‘×'Ñ'×+Ñ+¬U¯Y©Y¯^©^×-EÑ-E×-MÑ-MÐNðOð	
r?   c                 óx  ‡— t        «       Šd }t        | j                  j                  j	                  d¬«      «      D ].  \  }}‰j                  |j                  j                  «       «       Œ0 |t        t        «      dz
  k(  sJ ‚dt        j                  j                  dt        fˆfd„}t        | j                  j                  j                  «      }| j                  j                  j                  |«       t        | j                  j                  j                  «      }t         j#                  d||z
  «       y )Nrà   rg   rh   rw   r7   c                 óp   •— | ‰v s!| j                   dk(  r| j                  t        v ry| j                  «       S )Nrb   T)rd   re   Ú_impure_targetsÚ	is_impure)rw   Úunpack_nodess    €r@   ró  z/AutogradCompilerInstance.dce.<locals>.is_impureá  s2   ø€ Ø�|Ñ#Ø—‘˜?Ò*¨t¯{©{¼oÑ/MàØ—>‘>Ó#Ð#r?   zDCE removed %d nodes)r2   rŠ   rÏ   r`   rl   ÚupdaterÜ  rÝ  r   rô   r9   r”   rR  rn   rk   Úeliminate_dead_coderá  râ  )r^   r�   rw   ró  ÚbeforeÚafterrô  s         @r@   ÚdcezAutogradCompilerInstance.dceÖ  sñ   ø€ ô
 3=³,ˆØˆÜ  §¡×!5Ñ!5×!@Ñ!@ÀMÐ!@Ó!RÓSò 	3‰GˆAˆtØ×Ñ §
¡
§¡Ó 1Õ2ð	3à”CÔ+Ó,¨qÑ0Ò0Ð0Ð0ð	$œEŸH™HŸM™Mð 	$¬dõ 	$ô �T—^‘^×)Ñ)×/Ñ/Ó0ˆØ�‰×Ñ×0Ñ0°Ô;Ü�D—N‘N×(Ñ(×.Ñ.Ó/ˆÜ×ÑÐ0°&¸5±.ÕAr?   c                 ó   — g }g }t        | j                  j                  j                  «      }t	        |«       t	        |«      }|j
                  dk(  sJ ‚|j                  D ]O  }|j                  t        j                  u sJ ‚|j                  r|j                  |«       Œ?|j                  |«       ŒQ t        «       }|D ]�  }t        |j                  t        «      sJ ‚|j                  d   |k(  sJ ‚t        |j                  d   t        «      sJ ‚t!        |«      }|j#                  |j                  d   «       |j                  d   |f|_        Œ’ |D ]'  }	| j                  j                  j%                  |	«       Œ) |S )Nr¹   r   rh   )rj   rÏ   r`   rk   ri   rs   rÜ  re   ro   rp   rr   ÚsetrN   rm   r–   rq   r   r­   Ú
erase_node)
r^   Ú
used_sizesÚunused_sizesÚitÚ
sizes_nodeÚgetitem_nodeÚused_sizes_idxÚusedÚnext_size_idxÚunuseds
             r@   Úremove_unused_sizesz,AutogradCompilerInstance.remove_unused_sizesí  s_  € Øˆ
Øˆô �$—.‘.×&Ñ&×,Ñ,Ó-ˆÜˆRŒÜ˜"“Xˆ
Ø�‰ 'Ò)Ð)Ð)à&×,Ñ,ò 	2ˆLØ×&Ñ&¬(×*:Ñ*:Ñ:Ð:Ð:Ø×!Ò!Ø×!Ñ! ,Õ/ð ×#Ñ# LÕ1ð	2ô $'£5ˆØò 	6ˆDÜ˜dŸi™i¬Ô/Ð/Ð/Ø—9‘9˜Q‘< :Ò-Ð-Ð-Ü˜dŸi™i¨™l¬CÔ0Ð0Ð0Ü Ó/ˆMà×Ñ˜tŸy™y¨™|Ô,àŸ™ 1™ }Ð5ˆD�Ið	6ð #ò 	4ˆFØ�N‰N× Ñ ×+Ñ+¨FÕ3ð	4ð Ðr?   rç   c                 ól   — t        | j                  j                  | j                  j                  |«      S rC   )r#   rÏ   rñ   r`   )r^   rç   s     r@   Úcreate_graph_modulez,AutogradCompilerInstance.create_graph_module  s%   € Ü˜4Ÿ>™>×.Ñ.°·±×0DÑ0DÀbÓIÐIr?   c                 ó:  ‡ ‡‡‡— ‰ j                   j                  dt        j                  di «       ‰ j                  j                  «        ‰ j                   j                  dd‰ j                   j                  ‰ j                  |«      «      fi «       g Št        «       r%‰ j                  ‰ j                   j                  «      Š‰ j                   j                  j                  D ]%  }dD ]  }||j                  v sŒ|j                  |= Œ  Œ' t        dd„ ˆ fd„¬«       ‰ j                  «        ‰ j!                  «        ‰ j#                  «        ‰ j%                  «        ‰ j'                  «        ‰ j)                  «        ‰ j+                  «        ‰ j-                  «        ‰ j.                  r/‰ j.                  j1                  ‰ j                   j                  «       ‰ j3                  «       Š‰ j5                  d	‰ j6                  › �«      Št9        ‰d
g«       t;        d‰ddd¬«      }t<        j?                  d|«       t@        jC                  d|«       t        dˆfd„¬«       dtD        dtF        f   d
tF        dtF        dtF        dtF        dtF        dtH        tF        tF        f   fˆˆ ˆfd„}tK        «       jM                  dtO        jP                  «       d‰ j6                  i‰ jR                  d¬«       ‰ jT                  jW                  d d d «       |‰ jY                  ‰«      fS )Nrb   r>   rf   )Útensor_metaÚexample_valuer  r  c                  ó   — dddœS )NÚ&compiled_autograd_graph_pre_reorderingÚstringr  r>   r>   r?   r@   r  z6AutogradCompilerInstance.end_capture.<locals>.<lambda>.  s   € Ø@Ø$ñ!€ r?   c                  óª   •— t        ‰ j                  j                  ‰ j                  j                  d‰ j                  › d�«      j                  d¬«      S )NÚCompiledAutogradÚPreReorderingF©Úprint_output)r#   rÏ   rñ   r`   rç   Úprint_readablerœ   s   €r@   r  z6AutogradCompilerInstance.end_capture.<locals>.<lambda>2  sG   ø€ œ{Ø—‘×#Ñ#Ø—‘×$Ñ$Ø" 4§7¡7 )¨=Ð9ó ÷ ‰n¨%ˆnÓ0ð	 r?   r  r  rz   zCompiled autograd graphT)Úinclude_deviceÚinclude_strideÚcoloredz%sÚcompiled_autograd_graphc                  ó(   •— ‰ j                  d¬«      S )NFr  )r  )r`   s   €r@   r  z6AutogradCompilerInstance.end_capture.<locals>.<lambda>]  s   ø€ ˜u×3Ñ3ÀÐ3ÓG€ r?   )r   Úcompiled_fn.r¹   rº   r»   Úpacked_inputsr7   c           	      óÐ  •— 	 da ‰j                  r‰j                  j                  |«       g }t        |«      D ]i  \  }}|‰v sŒ|dkD  rI|j	                  t        j                  d|«      «       t
        j                  j                  |d   d«       ŒY|j	                  |«       Œk ‰D ](  }	||	   j                  «       j                  d¬«      ||	<   Œ* t        «       5  t        ‰j                  «      5   | |||||«      }
‰j                  r‰j                  j                  |
«       |
cd d d «       cd d d «       da S # 1 sw Y   nxY wd d d «       da y # 1 sw Y   da y xY w# da w xY w)NTr   rÒ  rh   )Únon_blockingF)Úin_compiled_autograd_regionrê   r‚   rŠ   rr   r9   rˆ  r©   Úmaybe_mark_dynamicÚ
pin_memoryrÓ  Ú_disablerÁ   rç   r�   )r  rz   r¹   rº   r»   r  Úfiltered_sizesr�   Úintegerr�   rƒ   Úruntime_inputs_to_mover^   r  s              €€€r@   Úruntime_wrapperz=AutogradCompilerInstance.end_capture.<locals>.runtime_wrapper`  sf  ø€ ð4Ø.2Ð+à×#Ò#Ø×$Ñ$×5Ñ5°fÔ=à!#�Ü$-¨eÓ$4ò ;‘L�C˜Ø˜nÒ,à" Qš;Ø*×1Ñ1´%·+±+¸aÀÓ2IÔJÜ!ŸM™M×<Ñ<¸^ÈBÑ=OÐQRÕSà*×1Ñ1°'Õ:ð;ð 0ò O�AØ & q¡	× 4Ñ 4Ó 6× ;Ñ ;ÈÐ ;Ó N�F˜1’IðOô “Zñ Ô!5°d·g±gÓ!>ñ Ù%Ø °¸Àó�Cð ×'Ò'Ø×(Ñ(×.Ñ.¨sÔ3Ø÷÷ ñ ð /4Ñ+÷ð ú÷ ð /4Ñ+÷ð /4Ñ+û¨eÑ+úsO   ƒA E! ÁBE! ÃEÃ25D<Ä'	EÄ0	E! Ä<E	ÅEÅE! ÅEÅE! ÅE! Å!E%r5   rÛ   rÜ   )-rÏ   rá   r   Ú_exec_final_callbacks_stubrÌ   rÍ   rT  Ú
create_argrQ  rH   rë  r`   rk   rÞ  r   Údelay_unpack_hook_nodesÚreorder_tensor_pre_hook_nodesÚ'reorder_pre_hook_nodes_to_schedule_asapÚreorder_accumulate_grad_nodesÚ%reorder_pre_hook_nodes_to_mimic_eagerÚ reorder_post_acc_grad_hook_nodesÚreorder_post_hook_nodesrù  rê   ry   r  r  rç   r   r   Úcompiled_autograd_logÚinforá  râ  r   r   r–   r   Úlog_event_endrë   rì   rí   r   Ú__exit__rÄ   )	r^   rb  rw   ÚfieldÚlazy_graph_coder%  r`   r$  r  s	   `     @@@r@   Úend_capturez$AutogradCompilerInstance.end_capture  sÈ  û€ Ø�‰×#Ñ#ØÜ&×AÑAØØô		
ð 	�
‰
×ÑÔØ�‰×"Ñ"ØØØ�^‰^×&Ñ& t§}¡}°WÓ'=Ó>Ð@Øô		
ð -/ÐÜ%Ô'Ø%)×%BÑ%BÀ4Ç>Á>×CWÑCWÓ%XÐ"ð
 —N‘N×(Ñ(×.Ñ.ò 	)ˆDØ@ò )�Ø˜DŸI™IÒ%ØŸ	™	 %Ñ(ñ)ð	)ô
 	Øñó1õ	
ð 	×$Ñ$Ô&Ø×*Ñ*Ô,Ø×4Ñ4Ô6Ø×*Ñ*Ô,Ø×2Ñ2Ô4Ø×-Ñ-Ô/Ø×$Ñ$Ô&ð 	�‰Œ
Ø×ÒØ×Ñ×,Ñ,¨T¯^©^×-AÑ-AÔBð ×1Ñ1Ó3ˆà×(Ñ(Ð+;¸D¿G¹G¸9Ð)EÓFˆÜ˜E H :Ô.Ü0Ø%ØØØØô
ˆô 	×"Ñ" 4¨Ô9Ü×Ñ˜$ Ô0ÜØ%ÛGõ	
ð
$	4Ü! #¤s (Ñ+ð$	4äð$	4ô ð$	4ô ð	$	4ô
 ð$	4ô ð$	4ô ”3œ�8‰_÷$	4ôL 	"Ó#×1Ñ1ØÜ�L‰L‹NØ˜Ÿ™Ð!Ø×ÑØ"&ð 	2ô 	
ð 	×Ñ×%Ñ% d¨D°$Ô7Ø × 0Ñ 0°Ó 7Ð7Ð7r?   c                 óz   — | D �cg c]*  }t        |«      t        j                  j                  u sŒ)|‘Œ, }}|S c c}w rC   )rû   r9   r”   rR  )rm   rE  rk   s      r@   Úget_all_nodesz&AutogradCompilerInstance.get_all_nodes�  s4   € ð !Ö=�q¤D¨£G¬u¯x©x¯}©}Ò$<’Ð=ˆÐ=Øˆùò >s   …*8°8c                 ó²   — | j                   dk(  sG| j                   dk(  r9| j                  t        j                  u r| j                  d   j                   dk(  ryy)Nrà   rb   r   TF)rd   re   ro   rp   rm   )rw   s    r@   Úis_placeholderz'AutogradCompilerInstance.is_placeholder–  sF   € à�7‰7�mÒ#Ø�G‰G�Ò&Ø—‘œx×/Ñ/Ñ/Ø—	‘	˜!‘—‘ =Ò0àØr?   c                 ó¤  — | j                   j                  j                  dt        ¬«      D ]¢  }|j                  d   |j                  d   }}d}|j
                  t        j                  u r|}|j                  d   }t        ||g«      }||j                  usŒl| j                  |«      rŒ~|j                  |«       |€Œ’|j                  |«       Œ¤ y)a  
        Usage of AOTAutograd causes all the accumulate_grad_ nodes to get pushed to the end of
        the graph.  This differs from eager mode, which schedules them as soon as possible. This
        pass attempts to reorder the graph to mimic eager behavior.
        rb   rc   r   rh   N)rÏ   r`   rl   r   rm   re   ro   rp   ÚmaxÚprevr9  rr   )r^   rw   rx   Ú	grad_noder  Úargs         r@   r+  z6AutogradCompilerInstance.reorder_accumulate_grad_nodes   sÂ   € ð —N‘N×(Ñ(×3Ñ3ØÔ';ð 4ó 
ò 	-ˆDð %)§I¡I¨a¡L°$·)±)¸A±,˜	ˆJØˆLØ×Ñ¤8×#3Ñ#3Ñ3Ø(�Ø(×-Ñ-¨aÑ0�	ä�z 9Ð-Ó.ˆCØ˜$Ÿ)™)Ò#¨D×,?Ñ,?ÀÕ,DØ—
‘
˜4Ô ØÑ+Ø—J‘J˜|Õ,ñ	-r?   c                 óð   — | j                   j                  j                  dt        ¬«      D ]H  }|j                  j                  dd«      dk7  rŒ#t        |j                  «      }|j                  |«       ŒJ y)zp
        We can delay unpack hooks until they are needed, even later than in the eager autograd engine.
        rb   rc   rÀ  Nr¾  )	rÏ   r`   rl   r   r¢   r°   ÚminrÜ  Úprepend)r^   rw   Ú
first_users      r@   r(  z0AutogradCompilerInstance.delay_unpack_hook_nodesµ  si   € ð —N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ò 	%ˆDð �{‰{�‰˜{¨DÓ1°]ÒBØä˜TŸZ™Z›ˆJØ×Ñ˜tÕ$ñ	%r?   c                 óf  — | j                   j                  j                  dt        ¬«      D ]ƒ  }|j                  j                  dd«      dk7  rŒ#|j                  d   }|j                  d   }||j                  usŒP| j                  |«      rŒb|j                  |«       |j                  |«       Œ… y)a  
        Usage of AOTAutograd causes all the tensor_pre_hook nodes to get pushed
        to the end of the graph. This differs from eager mode, which schedules
        them as soon as possible. This pass attempts to reorder the graph to
        mimic eager behavior.
        rb   rc   rÀ  NrÄ  r   rh   )
rÏ   r`   rl   r   r¢   r°   rm   r<  r9  rr   )r^   rw   r  Ú
input_nodes       r@   r)  z6AutogradCompilerInstance.reorder_tensor_pre_hook_nodesÂ  sž   € ð —N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ò 	*ˆDð �{‰{�‰˜{¨DÓ1Ð5FÒFØàŸ9™9 Q™<ˆLØŸ™ 1™ˆJà §¡Ò*°4×3FÑ3FÀzÕ3RØ×!Ñ! ,Ô/Ø×#Ñ# DÕ)ñ	*r?   c                 ó  — | j                   j                  j                  dt        ¬«      D �]X  }|j                  j                  dd«      dk7  rŒ$|j                  d   }| j                  |j                  d   «      }g }g }|g}|D ]o  }|j                  dk(  sŒ|j                  t        j                  u sŒ0|j                  |j                  d   «       |j                  |«       |j                  |«       Œq t        ||«      D ]'  \  }}	|j                  |«       |j                  |	«       Œ) t        |«      }
|
|j                   us�Œ| j#                  |
«      r�Œ0|
j                  |«       |D ]  }|j                  |«       Œ �Œ[ y)a‚  
        In this function, we schedule the pre hooks as soon as possible. This
        does not match eager behavior (schedule pre hook right before its
        registered node), but it can make acc grad be scheduled properly when
        the pre hooks are registered to them. After reordering acc grad node, we
        will reorder the pre hooks again to mimic eager behavior.
        rb   rc   rÀ  NrË  r   rh   )rÏ   r`   rl   r   r¢   r°   rm   r7  rd   re   ro   rp   rr   ÚzipÚremover;  r<  r9  )r^   rw   r  Úinput_nodesÚ	to_removeÚ	to_appendÚ
hook_blockrE  ÚaÚbr>  s              r@   r*  z@AutogradCompilerInstance.reorder_pre_hook_nodes_to_schedule_asapÖ  sh  € ð —N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ó 	+ˆDð �{‰{�‰˜{¨DÓ1°ZÒ?ØàŸ9™9 Q™<ˆLà×,Ñ,¨T¯Y©Y°q©\Ó:ˆKàˆIØˆIØ˜ˆJØ ò )�Ø—4‘4˜?Ó*¨q¯x©x¼8×;KÑ;KÒ/KØ×$Ñ$ Q§V¡V¨A¡YÔ/Ø×$Ñ$ QÔ'Ø×%Ñ% aÕ(ð	)ô
 ˜I yÓ1ò &‘��1Ø×"Ñ" 1Ô%Ø×"Ñ" 1Õ%ð&ô �kÓ"ˆCØ˜$Ÿ)™)Ó#¨D×,?Ñ,?ÀÖ,DØ—
‘
˜<Ô(Ø#ò +�AØ ×'Ñ'¨Õ*ò+ñ3	+r?   c                 ó„  — g }| j                   j                  j                  dt        ¬«      D ]3  }|j                  j                  dd«      dk7  rŒ#|j                  |«       Œ5 t        |«      D ]Ï  }|j                  d   }t        |j                  j                  «       «      }t        |«      dk(  rŒDt        d„ |D «       «      sJ ‚t        t        |d   j                  j                  «       «      «      }||j                  usŒ–|j!                  |«       |j!                  |«       |D ]  }|j!                  |«       Œ ŒÑ y)a%  
        Usage of AOTAutograd causes all the pre_hook nodes to get pushed to the
        end of the graph. This differs from eager mode, which schedules them
        right before their registered node execution. This pass attempts to
        reorder the graph to mimic eager behavior.
        rb   rc   rÀ  NrË  r   c              3   óv   K  — | ]1  }|j                   d k(  xr |j                  t        j                  u –— Œ3 y­w)rb   N)rd   re   ro   rp   rÚ  s     r@   rã   zQAutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager.<locals>.<genexpr>  s8   è ø€ ò àð —‘˜?Ñ*ÒN¨t¯{©{¼h×>NÑ>NÐ/NÓNñùs   ‚79)rÏ   r`   rl   r   r¢   r°   rr   Úreversedrm   rz  rÜ  rÝ  r   rß  ri   rj   rA  )r^   Ú	pre_hooksrw   Úhook_getitem_noderÜ  Úregistered_noderp   s          r@   r,  z>AutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eagerú  s1  € ð ˆ	Ø—N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ò 	#ˆDð �{‰{�‰˜{¨DÓ1°ZÒ?ØØ×Ñ˜TÕ"ð	#ô ˜YÓ'ò 	5ˆDØ $§	¡	¨!¡Ðä˜Ÿ™Ÿ™Ó*Ó+ˆEÜ�5‹z˜QŠØô ñ à!ôô ð ð ô #¤4¨¨a©¯©×(;Ñ(;Ó(=Ó#>Ó?ˆOà d§i¡iÒ/Ø×'Ñ'Ð(9Ô:Ø×'Ñ'¨Ô-Ø$ò 5�GØ#×+Ñ+¨GÕ4ñ5ñ#	5r?   c                 ó  — g }| j                   j                  j                  dt        ¬«      D ]3  }|j                  j                  dd«      dk7  rŒ#|j                  |«       Œ5 t        |«      D ]›  }|j                  d   }|j                  d   }d}t        |j                  j                  «       «      D ](  }|j                  dk(  sŒ|j                  t        u sŒ&|} n |€J d«       ‚|j                  |«       |j                  |«       Œ� y)	a  
        Usage of AOTAutograd causes all the post_acc_grad_hook nodes to get
        pushed to the end of the graph. This differs from eager mode, which
        schedules them as soon as possible. This pass attempts to reorder the
        graph to mimic eager behavior.
        rb   rc   rÀ  NrÐ  r   rh   z8post_acc_grad_hook must have corresponding acc grad node)rÏ   r`   rl   r   r¢   r°   rr   rP  rm   rz  rÜ  rÝ  rd   re   r   )r^   Úpost_acc_grad_hooksrw   r  rx   Úacc_grad_noderE  s          r@   r-  z9AutogradCompilerInstance.reorder_post_acc_grad_hook_nodes  s  € ð !ÐØ—N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ò 	-ˆDð �{‰{�‰˜{¨DÓ1Ð5IÒIØØ×&Ñ& tÕ,ð	-ô Ð0Ó1ò 	&ˆDØŸ9™9 Q™<ˆLØŸ™ 1™ˆJð !ˆMÜ˜*×*Ñ*×/Ñ/Ó1Ó2ò �Ø—4‘4˜?Ó*¨q¯x©xÔ;OÒ/OØ$%�MÙðð
 !Ð,ð ØJóÐ,ð
 × Ñ  Ô.Ø×Ñ Õ%ñ#	&r?   c           	      óN  ‡— g }| j                   j                  j                  dt        ¬«      D ]3  Š‰j                  j                  dd«      dk7  rŒ#|j                  ‰«       Œ5 t        |«      D �]²  Š‰j                  d   }‰j                  d   }‰j                  d   }t        |«      dkD  rŒ@g }|j                  t        |«      «       |D ]=  }|j                  ˆfd	„t        |j                  j                  «       «      D «       «       Œ? t        |«      }|j                  dk(  r¶|j                   t"        u r¤|j                  d   }d}	t        |j                  j                  «       «      D ]G  }
|
j                  dk(  sŒ|
j                   t        u sŒ&|
j                  j                  dd«      d
k(  sŒF|
}	ŒI |	�$|	j                  |«       |j                  ‰«       �Œn|‰j$                  us�Œ~| j'                  |«      r�Œ‘|j                  |«       |j                  ‰«       �Œµ y)a  
        Usage of AOTAutograd causes all the post_hook nodes to get pushed to the
        end of the graph. This differs from eager mode, which schedules them as
        soon as possible. This pass attempts to reorder the graph to mimic eager
        behavior.
        rb   rc   rÀ  NrÍ  r   rh   é   c              3   ó¢   •K  — | ]F  }|j                   d k(  r1|j                  t        u r‰j                  j	                  dd«      dk(  s|–— ŒH y­w)rb   rÀ  NrÍ  )rd   re   r   r¢   r°   )râ   rÛ  rw   s     €r@   rã   zCAutogradCompilerInstance.reorder_post_hook_nodes.<locals>.<genexpr>\  sH   øè ø€ ò -ààŸ™ ?Ò2Ø ŸK™K¬9Ñ4Ø ŸK™KŸO™O¨K¸Ó>À+ÒMô ñ-ùs   ƒAArÐ  )rÏ   r`   rl   r   r¢   r°   rr   rP  rm   r   Úextendrz  rÜ  rÝ  r;  rd   re   r   r<  r9  )r^   Ú
post_hooksr  rv   rH  Úinput_nodes_and_usersrD  r>  rx   Úpost_acc_grad_hook_noderE  rw   s              @r@   r.  z0AutogradCompilerInstance.reorder_post_hook_nodesA  sô  ø€ ð ˆ
Ø—N‘N×(Ñ(×3Ñ3Ø¤yð 4ó 
ò 	$ˆDð �{‰{�‰˜{¨DÓ1°[Ò@ØØ×Ñ˜dÕ#ð	$ô ˜ZÓ(ó )	*ˆDØŸ9™9 Q™<ˆLØŸ9™9 Q™<ˆLØŸ)™) A™,ˆKä�<Ó  1Ò$Øð %'Ð!Ø!×(Ñ(¬¨kÓ):Ô;Ø)ò 	�
Ø%×,Ñ,ó -ä $ Z×%5Ñ%5×%:Ñ%:Ó%<Ó =ô-õ ð	ô Ð+Ó,ˆCØ�v‰v˜Ò(¨S¯Z©ZÔ;OÑ-OØ ŸX™X a™[�
Ø*.Ð'Ü˜j×.Ñ.×3Ñ3Ó5Ó6ò 4�AàŸ™ Ó/ØŸH™H¬	Ò1ØŸH™HŸL™L¨°dÓ;Ð?SÓSà23Ñ/ð4ð +Ð6Ø+×2Ñ2°<Ô@Ø ×'Ñ'¨Ô-Ùà˜$Ÿ)™)Ó#¨D×,?Ñ,?ÀÖ,DØ—
‘
˜<Ô(Ø×#Ñ# DÖ)ñS)	*r?   Útc                 ó0  ‡ — |€y t        |t        «      r|D �cg c]  }‰ j                  |«      ‘Œ c}S t        |t        «      rt        ˆ fd„|D «       «      S t        |t        j
                  t        j                  f«      r‰ j                  |j                     S t        |t        j                  «      s|S t        ‰ j                  |«      }t        |t        j                  j                  j                  j                  «      sJ ‚|j                   S c c}w )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrC   r¦  )râ   rI   r^   s     €r@   rã   z4AutogradCompilerInstance.to_proxy.<locals>.<genexpr>�  s   øè ø€ Ò5¨a˜Ÿ™ q×)Ñ5ùs   ƒ)rN   rz  rQ  r–   r9   ÚSymIntÚSymFloatró   rw   r—   r(   rÏ   r”   r  Úproxy_tensorÚ_ProxyTensorrÂ  )r^   r^  rI   rc  s   `   r@   rQ  z!AutogradCompilerInstance.to_proxy{  sÐ   ø€ Øˆ9ØÜ�aœÔØ./Ö0¨�D—M‘M !Õ$Ò0Ð0Ü�aœÔÜÓ5°1Ô5Ó5Ð5Ü�aœ%Ÿ,™,¬¯©Ð7Ô8Ø×,Ñ,¨Q¯V©VÑ4Ð4Ü˜!œUŸ\™\Ô*àˆHÜ)¨$¯.©.¸!Ó<ˆÜ˜,¬¯©×(=Ñ(=×(JÑ(J×(WÑ(WÔXÐXÐXØ×!Ñ!Ð!ùò 1s   ™DÚobjectsr  c                 óÔ  — t        |t        j                  j                  «      rŒ|rft	        |«      t	        |«      k(  sJ ‚g }t        t	        |«      «      D ]1  }||   \  }}| j                  ||d «       |j                  ||   «       Œ3 |}n$t        t	        |«      «      D �cg c]  }||   ‘Œ	 }}t	        |«      t	        |«      k(  sJ ‚t        ||d | j                  ¬«       |S c c}w ©N)ÚconstantÚtracer)
rN   r9   r”   r4   r   rÿ   Úset_node_originrr   r+   rÏ   )r^   re  r  r×   Úbound_proxiesr�   Únodecall_indexr=  s           r@   rü   z0AutogradCompilerInstance.bind_objects_to_proxies‹  sØ   € ô �gœuŸx™xŸ~™~Ô.ÙÜ˜7“|¤s¨7£|Ò3Ð3Ð3Ø "�Üœs 7›|Ó,ò 5�AØ07¸±
Ñ-�N IØ×(Ñ(¨°NÀDÔIØ!×(Ñ(¨°©Õ4ð5ð (‘ä/4´S¸³\Ó/BÖC¨!˜7 1›:ÐC�ÐCä�7‹|œs 7›|Ò+Ð+Ð+Ü˜' 7°TÀ$Ç.Á.ÕQØˆùò	 Ds   Â#C%Úindexc                 ó†   — | j                   €J ‚| j                   |   }t        «       }t        ||d | j                  ¬«       |S rg  )rÑ   r$   r+   rÏ   )r^   rm  rÂ  Úbw_states       r@   Úbind_backward_statez,AutogradCompilerInstance.bind_backward_state¡  sB   € Ø×ÑÐ+Ð+Ð+Ø× Ñ  Ñ'ˆÜ “?ˆÜ˜( E°DÀÇÁÕPØˆr?   r=  rl  Úpyobjc                 ó  — d}|�;|j                   }t        |d«      r#|j                  €t        d«      ‚|j                  }|› |› d|› d�}t        j                  «       j                  «       d   }|j                  d|«      }t        |«       y )NÚ rv  zÅThis compiled backward function was saved by AOTAutogradCache, which does not support
                    compiled autograd. Please turn off AOTAutogradCache using `TORCHINDUCTOR_AUTOGRAD_CACHE=0`.z (NodeCall ú)rÒ  z:raw_stack_trace = CapturedTraceback.extract().format()[-1])
ru  r¦   rO   rˆ   rv  r3   ÚextractÚformatÚreplacer/   )	r^   r=  rl  rq  Úmaybe_aot_idÚforward_clsÚnew_codeÚraw_stack_traceÚnew_stack_traces	            r@   rj  z(AutogradCompilerInstance.set_node_origin¨  s¢   € ð ˆØÐØ×,Ñ,ˆKÜ�{ IÔ.à×2Ñ2Ð:Ü&ðsóð ð  +×2Ñ2�Ø�[  ¨k¸.Ð9IÈÐKˆÜ+×3Ñ3Ó5×<Ñ<Ó>¸rÑBˆØ)×1Ñ1ØHÈ(ó
ˆô 	˜Õ(r?   r±   rC   )Hr‘   r’   r“   r   r   r_   r9   r—   r   r"   rÕ   Ústaticmethodr²   r   rÒ   rz  rq   r1   r0   r–   rn   r  r!  r   r€  ÚautogradÚfunctionÚBackwardCFunctionr‹  r–  rœ  rp  r   r£  r”  r«  r³  rY   r”   r4   rº  r¾  rÄ  rÉ  rË  rÍ  rÐ  r•   rë  rï  rù  rû  r  r#   r  r5  rR  r7  r9  r+  r(  r)  r*  r,  r-  r.  rQ  rü   r$   rp  ÚFunctionrj  r>   r?   r@   rÃ   rÃ     sj  „ ð. H¨S°#¨XÑ$6ð .¸4ó .ðC˜5Ÿ<™<ð C°¸$±ð CÀ:ó Cð ð5�Sð 5˜sð 5 }ò 5ó ð5ðy
à�U—\‘\Ñ"ðy
ð �C‰yðy
ð �k MÑ1Ñ2ð	y
ð
 �d˜5  c ™?Ñ+Ñ,ðy
ð ðy
ð ðy
ð 
ˆs�D˜Ÿ™Ñ&¨¨[Ñ(9¸4ÀÑ;NÐNÑ	Oóy
ðv
à˜c™ð
ð 
ó
ðRà˜#‘ðRð ! §¡Ñ.ðRð   §¡Ñ-ð	Rð
 ðRð ðRð #&¨¡*ðRð  $ C™yðRð 
�#‰óRðh3à˜‘ð3ð # 3™-ð3ð   §¡Ñ-ð	3ð
 ð3ð �^‰^×$Ñ$×6Ñ6ð3ð #&¨¡*ð3ð  $ C™yð3ð 
ˆu�|‰|˜dÑ" CÐ'Ñ	(ó3ðjGà˜‘ðGð ˜S‘MðGð ˜s‘mð	Gð
 !ðGð ˜S‘MðGð ˜s‘mðGð !ðGð 
�%—,‘,Ñ	óGð*
à" 4™.ð
ð —‘ð
ð �c‰]ð	
ð
 —L‘Lð
ð 
�%—,‘,Ñ	ó
ð/ §¡ó /ð
FàðFð �S˜#�XÑðFð !ð	Fð
 ðFð 
óFð	Dàð	Dð ˜‰}ð	Dð ð		Dð
 " #™ð	Dð 
�%—,‘,Ñ	ó	Dð
Ø˜3 ˜8Ñ$ð
Ø,/ð
ØBJÈ3Á-ð
à	�%—,‘,Ñ	ó
ðØðØ'¨™}ðØ47ðØJRÐSVÉ-ðà	�%—,‘,Ñ	óð #ð °ð ¸¿¹ó ð
ØŸ™ð
Ø,1¯L©Lð
ØJNð
à	ó
ð
Ø˜S #˜XÑ&ð
Ø/2ð
Ø>Að
à	�‰�‰ó
ð 3ð °ð ¸¿¹ó ðØ˜5Ÿ<™<Ñ(ðØ36ðØ;>ðà	ˆe�l‰lÑ	óðØ˜5Ÿ<™<Ñ(ðØ36ðØ;>ðà	ˆe�l‰lÑ	óð˜x¨™}ð °sð ¸tÀEÇLÁLÑ?Qó ðØ˜EŸL™LÑ)ðØ3;¸E¿L¹LÑ3IðØTWðà	ˆe�l‰lÑ	óð Ø—\‘\ðØ,/ðà	ˆe�l‰lÑ	óð*/¨e¯h©h¯n©nð /ÀÀcÁó /ðb
 ð 
¨ó 
óBð.  S¨¡Xó  ðDJ cð J¨kó Jð|8 3ð |8¨5°¸#¸s¸(Ñ1CÀSÐ1HÑ+Ió |8ð| ð˜H S™Mð ¨d°5·8±8·=±=Ñ.Aò ó ðð
 ð˜UŸX™XŸ]™]ð ¨tò ó ðó-ó*%ó*ó("+óH!5óF"&óH8*ðt"˜#ð " #ó "ð( 15ñ	à˜#‘ðð ðð �e˜C ˜H‘oÑ&¨Ñ-ð	ð
 
�#‰óð,¨ð °ó ð)àð)ð ð)ð �~‰~×&Ñ&¨Ñ-ð	)ð
 
ô)r?   rÃ   FrÄ   ÚdynamicÚignore_active_disable_ctx)NNNc              #   óú  K  — |st         rd –— y |rt        |«      t        u sJ ‚ddlm} |j
                  j                  dk(  r
da	 d –— day t        j                  j                  «       rddlm} t        j                  j                  j                  j!                  t#        j$                  t&        | «      |«      \  }}t)        «       r7t        j                  j                  j                  j+                  t,        «       dat0        }t0        dz  a	 t        j2                  j5                  d«      5  d –— d d d «       |sdat        j                  j                  j                  j!                  ||«       t0        dz  at0        |k(  sJ d«       ‚y # daw xY w# 1 sw Y   ŒbxY w# |sdat        j                  j                  j                  j!                  ||«       t0        dz  at0        |k(  sJ d«       ‚w xY w­w)	Nr   )Ú
eval_frameÚforce_eagerTF)Úcudagraph_treesrh   zINested Compiled Autograd Contexts must return before their parent context)Úactive_disable_ctxrû   rn   Útorch._dynamor…  Ú_stanceÚstanceÚ%compiled_autograd_enabled_force_eagerr9   rÓ  Úis_availableÚtorch._inductorr‡  rÇ  r©   r5   Úset_autograd_compilerÚ	functoolsÚpartialrÃ   rA   Úset_verbose_loggerrá  Úcompiled_autograd_enabledÚdepthr~  Úset_multithreading_enabled)rÄ   r‚  rƒ  r…  r‡  Úprior_compilerÚprior_dynamicÚprior_depths           r@   Ú_enabler™  Ï  s»  è ø€ ñ4 %Õ);ÜáÜ˜“=¤DÑ(Ð(Ð(å,à×Ñ×$Ñ$¨Ò5ð 59Ð1ð>Ûà8=Ñ5ô �z‰z×&Ñ&Ô(Ý;ô
 —‘× Ñ ×2Ñ2×HÑHÜ×!Ñ!Ô":¸KÓHÈ'óñØØô 0Ô1Ü—‘× Ñ ×2Ñ2×EÑEÄkÔRà(,Ð%äˆKÜ�Q‰JˆEðÜ—^‘^×>Ñ>¸uÓEñ Û÷ñ &Ø05Ð-Ü—‘× Ñ ×2Ñ2×HÑHØ" Môô ˜‘
�Ü Ò+ð Ø_óÑ+øð= 9>Ñ5ú÷*ð ûñ &Ø05Ð-Ü—‘× Ñ ×2Ñ2×HÑHØ" Môô ˜‘
�Ü Ò+ð Ø_óÑ+üsQ   ‚AG;ÁF ÁCG;ÄF% Ä3FÄ8F% Å AG;ÆFÆG;ÆF"ÆF% Æ%AG8Ç8G;c               #   óŠ  K  — t         j                  j                  j                  j	                  d d«      \  } }dat        sda	 d –— | rdadat         j                  j                  j                  j	                  | |«       y # | rdadat         j                  j                  j                  j	                  | |«       w xY w­w)NFT)r9   rÇ  r©   r5   r�  r“  rˆ  )r–  r—  s     r@   r!  r!    s³   è ø€ ô
 	�‰×Ñ×*Ñ*×@Ñ@ÀÀuÓMñØØð !&ÐåØ!Ðð
ÛáØ(,Ð%Ø"ÐÜ�‰×Ñ×*Ñ*×@Ñ@Ø˜Mõ	
øñ Ø(,Ð%Ø"ÐÜ�‰×Ñ×*Ñ*×@Ñ@Ø˜Mõ	
üs   ‚ACÁB Á	;CÂ<C Ã Cc                  ór  — da t        rJ ‚t        j                  j                  j
                  j                  d d«       t        j                  j                  j
                  j                  d «       t        j                  j                  j
                  j                  «        t        j                  «       ay )NF)r“  r  r9   rÇ  r©   r5   r�  r’  Úclear_cacheÚ	itertoolsr¬   ræ   r>   r?   r@   Úresetrž  3  sw   € à %ÐÝ*Ð*Ð*Ü	‡H�H×Ñ×&Ñ&×<Ñ<¸TÀ5ÔIÜ	‡H�H×Ñ×&Ñ&×9Ñ9¸$Ô?Ü	‡H�H×Ñ×&Ñ&×2Ñ2Ô4ä—o‘oÓ'�Or?   rz   rŒ  r�  rŽ  r�  r�  r‘  c                 óÐ   — | d   }|j                  ||«      }|€J ‚|j                  |«       ||z
  }	|j                  |||	«      }
||
|
j                  t        j
                  ¬«      gS )Nr   )Úmemory_format)Únew_empty_stridedÚcopy_Ú
as_stridedÚcloner9   Úcontiguous_format)rz   rŒ  r�  rŽ  r�  r�  r‘  r}   r¤   Úoffsetr™  s              r@   r•  r•  @  sw   € ð �!‰9€DØ×#Ñ# J°Ó=€FØÐÐÐØ
‡L�L�ÔØ Ð#6Ñ6€FØ×"Ñ" :¨|¸VÓD€JØ�J 
× 0Ñ 0¼u×?VÑ?VÐ 0Ó WÐXÐXr?   r—  r¤   r˜  r™  c                 óÈ   — d gt        | «      z  }t        t        | «      «      D ];  }| |   sŒ	||   €Œ|dk(  r ||   }|€J ‚|j                  |«       |||<   Œ4||   ||<   Œ= |S )Nr   )r   rÿ   r¢  )r—  r¤   r˜  r™  Úgrad_inputsr�   Úto_copys          r@   r›  r›  T  sŒ   € ð /3¨V´cÐ:JÓ6KÑ-K€KÜ”3Ð'Ó(Ó)ò 
(ˆØ˜AÓØ�1‰vˆ~ØØ�AŠvØ˜a™&�ØÐ*Ð*Ð*Ø× Ñ  Ô)Ø!'�˜A’à!$ Q¡�˜A’ð
(ð Ðr?   )TTr±   )sÚ__doc__rÊ   r�  r�  ro   rë   Úcollectionsr   r   Úcollections.abcr   r   r   Útypingr   r	   r9   Útorch.utils._pytreeÚutilsÚ_pytreern  Útorch._dispatch.pythonr
   Útorch._dynamo.external_utilsr   r   r   r   r   Útorch._dynamo.sourcer   r   Útorch._dynamo.utilsr   r   r   r   Ú/torch._functorch._aot_autograd.runtime_wrappersr   r   Útorch._guardsr   r   r   r   Útorch._loggingr   r   Útorch._prims_commonr    Útorch._subclassesr!   Útorch._subclasses.fake_tensorr"   Útorch.fxr#   Ú%torch.fx.experimental._backward_stater$   Ú"torch.fx.experimental.proxy_tensorr%   r&   r'   r(   r)   r*   r+   Ú%torch.fx.experimental.symbolic_shapesr,   r-   Útorch.fx.tracebackr.   r/   Útorch.typesr0   r1   Útorch.utils._ordered_setr2   Útorch.utils._tracebackr3   Útorch.fx.proxyr4   r€   r‘   r/  rá  rn   rA   rH   r—   rK   rV   rX   r™   r§   rU  rô   r&  rò  r¬   ræ   rq   rÁ   rÃ   r“  rŒ  r  rˆ  r”  Úcontextmanagerr™  r!  rž  rz  r•  r›  r>   r?   r@   ú<module>rÅ     s  ðñó  Û Û Û Û ß ,ß 9Ñ 9ß %ã ß $Ð $Ý ;÷õ ÷ <÷ó ÷÷ MÓ Lß >Ý 6Ý ,Ý 4Ý  Ý ?÷÷ ñ ÷ Gß Bß 2Ý /Ý 4ñ Ý$ðX€ñ *¨(Ð4GÓHÐ Ù Ð*EÓF€ð¨$ó ð4 Dó 4ð�5—<‘< $Ñ&ð ¨5¯<©<¸$Ñ+>ó ð
¨ð 
°¸¸c¸Ñ0Bó 
÷6Gñ G÷^!#ñ !#÷H5ñ 5ñ  ƒm€ò MÐ ÙàØØ"×=Ñ=Øð	ó€ð "�)—/‘/Ó#€ð	¨sð 	°só 	÷`)ñ `)ðH% "Ð ð ).Ð %ð $Ð àÐ à	€ð ×Ñð Ø&*ñIØ˜#˜s˜(Ñ#ðIàðIð  $ðIð ÐÑ ò	Ió ðIðX ×Ñð
�)Ð,Ñ-ò 
ó ð
ó,(ðYØ�U—\‘\Ñ"ðYà˜Ñ%ðYð ˜;Ñ'ðYð %ð	Yð
 ˜Ñ%ðYð ˜;Ñ'ðYð %ðYð 
ˆ%�,‰,ÑóYð(Ø˜t‘nðà�L‰Lðð 
�%—,‘, Ñ%Ñ	&ðð —‘ð	ð
 
ˆ%�,‰,˜Ñ
Ñôr?   