Ë
    ÃÓ^jA ã                   ó²  — 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@ ddlAmBZBmCZC ddlDmEZEmFZF ddlGmHZHmIZI ddlJmKZK ddlLmMZM erddlNmOZO dZP e.eQd«      ZR e.eQd«      ZSdeTfd„ZUdeTfd„ZVdej®                  dz  dej®                  dz  fd „ZXd!ede
d"ef   fd#„ZY G d$„ d%«      ZZ G d&„ d'«      Z[ G d(„ d)«      Z\ e[«       Z]g d*¢Z^ eKeeej¾                  eg«      Z` ejÂ                  «       abd+ecdefd,„Zd G d-„ d.«      Zed/afd/agd/ahd/aidajejÖ                  	 	 dDd0e
d"ef   d1eTd2eTded3   fd4„«       ZlejÖ                  ded3   fd5„«       ZmdEd6„Znd7eej®                     d8eeI   d9eeI   d:eId;eeI   d<eeI   d=eIdeoej®                     fd>„Zpd?eeT   d@ej®                  dAeej®                  dz     dBej®                  deoej®                  dz     f
dC„Zqy)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)Ú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 )Nr5   )ÚtorchÚ_loggingÚ	_internalÚ	log_stateÚis_artifact_enabled© ó    új/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_dynamo/compiled_autograd.pyÚ snapshot_verbose_logging_enabledr@   S   s(   € Ü�>‰>×#Ñ#×-Ñ-×AÑAØ#óð r>   c                  ó^   — t         j                  j                  j                  j                  S ©N)r8   Ú	_inductorÚconfigÚtritonÚ
cudagraphsr=   r>   r?   Úsnapshot_cudagraph_enabledrG   Y   s   € Ü�?‰?×!Ñ!×(Ñ(×3Ñ3Ð3r>   Úxc                 ó    — | �t        | «      S | S rB   r   )rH   s    r?   Úmaybe_clonerJ   ]   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   r8   Ú_subclassesÚfake_tensorÚunset_fake_temporarilyÚbw_module_fnÚAssertionError)rK   s    r?   Úextract_bw_modulerU   c   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_gradr6   Nc                 ó<   — || _         g | _        i | _        g | _        y rB   )rX   Úparams_indicesÚparams_to_checkÚoutput_names)ÚselfrX   s     r?   Ú__init__zNaNChecker.__init__   s"   € Ø.ˆÔØ)+ˆÔØ8:ˆÔØ')ˆÕr>   Úgraphc                 ój  — t        t        |j                  «      «      }|j                  dt        ¬«      }|j                  d¬«      d   j
                  d   }| j                  t        |«      k7  r%t        d| j                  › dt        |«      › d�«      ‚| j                  | k7  rt        d	| j                  › d| › �«      ‚|D ]Ê  }|j
                  d   }|j                  t        j                  urt        d
|j                  › �«      ‚|j
                  d   |urt        d«      ‚t        |j
                  d   t        «      s$t        dt        |j
                  d   «      › �«      ‚| j                  j!                  |j
                  d   «       ŒÌ |D �cg c]  }|j"                  ‘Œ c}| _        y c c}w )NÚcall_function©ÚopÚtargetÚoutput©rc   r   z#accumulate_grad mismatch: expected z, got z acc_grad_nodesz5accumulate_grad mismatch with output_nodes: expected z7Expected param_node target to be operator.getitem, got z-Expected param_node.args[0] to be inputs_nodeé   z+Expected param_node.args[1] to be int, got )ÚnextÚiterÚnodesÚ
find_nodesr   ÚargsrX   ÚboolrT   rd   ÚoperatorÚgetitemrM   ÚintÚtyperZ   Ú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Ñ?ˆØ×Ñ¤4¨Ó#7Ò7Ü Ø5°d×6JÑ6JÐ5Kð LÜ˜NÓ+Ð,¨Oð=óð ð ×Ñ¨Ð$4Ò5Ü ØGÈ×H\ÑH\ÐG]ð ^Ø'Ð'Ð(ð*óð ð
 #ò 	;ˆDØŸ™ 1™ˆJð × Ñ ¬×(8Ñ(8Ñ8Ü$ØMÈj×N_ÑN_ÐM`Ðaóð ð �‰˜qÑ!¨Ñ4Ü$Ð%TÓUÐUÜ˜jŸo™o¨aÑ0´#Ô6Ü$ØAÄ$ÀzÇÁÐWXÑGYÓBZÐA[Ð\óð ð ×Ñ×&Ñ& z§¡°qÑ'9Õ:ð	;ð" 4@Ö@¨4˜TŸY›YÒ@ˆÕùÒ@s   ÆF0Úinputs.c                 óþ   — | j                   sy | j                  D ]a  }||   j                  }|�8t        j                  |«      j                  «       rt        d|› dt        › �«      ‚||   | j                  d|› d�<   Œc y )Nz9Compiled autograd running under anomaly mode with inputs[z6] already having NaN gradient. This is not supported. zinputs[ú])	rX   rZ   Úgradr8   ÚisnanÚanyrT   ÚTURN_OFF_MSGr[   )r]   rz   Úidxr}   s       r?   Úprep_with_inputszNaNChecker.prep_with_inputs©   s˜   € Ø×#Ò#àð ×&Ñ&ò 		AˆCØ˜#‘;×#Ñ#ˆDØÐÜ—;‘;˜tÓ$×(Ñ(Ô*Ü(ØSÐTWÐSXð YGÜGSÀnðVóð ð
 6<¸C±[ˆD× Ñ  7¨3¨%¨qÐ!1Ò2ñ		Ar>   Úoutc                 óZ  — | j                   r¨|rt        d«      ‚g }| j                  j                  «       D ][  \  }}|j                  €t        d«      ‚t        j                  |j                  «      j                  «       sŒK|j                  |«       Œ] |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 )Nz2Expected empty output for accumulate_grad backwardz4Expected param.grad to be non-None for backward modez9Compiled Autograd returned NaN gradients for parameters: ú,ú.z;Compiled Autograd returned NaN gradients for output nodes: )rX   rT   r[   Úitemsr}   r8   r~   r   rr   ÚRuntimeErrorÚjoinÚ	enumerater\   )r]   rƒ   Ú
nan_paramsÚ
inputs_strÚparamÚ	nan_gradsÚir}   s           r?   ÚcheckzNaNChecker.checkº   s;  € Ø×ÒáÜ$ØHóð ð %'ˆJØ%)×%9Ñ%9×%?Ñ%?Ó%Aò 2Ñ!�
˜EØ—:‘:Ð%Ü(ØNóð ô —;‘;˜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__rm   r^   r8   ÚfxÚGraphry   ÚtupleÚTensorr‚   r�   r=   r>   r?   rW   rW   ~   sy   „ ð*¨ð *°ó *ð"A U§X¡X§^¡^ð "A¸ó "AðHA u¨U¯\©\¸3Ð->Ñ'?ð AÀDó Að"˜˜uŸ|™|¨SÐ0Ñ1ð °dô r>   rW   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)ÚOpNamespacer6   Nc                 ó"   — t        «       | _        y rB   )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t        d|› d�«      ‚t        |||«      Š|r,t	        | |t
        j                  j                  ‰«      «       |S t
        j                  j                  dt        dt        dt        fˆfd„«       }t	        | ||«       |S )	NÚCppNoderg   zOp with name 'z' already existsrl   Úkwargsr6   c                  ó   •—  ‰| i |¤ŽS rB   r=   )rl   r¢   Úresults     €r?   Úrun_non_traceable_cpp_in_eagerz7OpNamespace.add.<locals>.run_non_traceable_cpp_in_eagerú   s   ø€ á˜tÐ. vÑ.Ð.r>   )
r›   ÚhasattrrT   ÚOpÚsetattrr8   Ú_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˜ÔÜ  >°$°Ð7GÐ!HÓIÐIÜ�D˜"Ð0Ó1ˆÙä�D˜$¤§¡× <Ñ <¸VÓ DÔEð ˆô �]‰]×"Ñ"ð/´cð /ÄSð /ÌSô /ó #ð/ô �D˜$Ð >Ô?Øˆr>   c                 ó   — t        | |«      S rB   )Úgetattr)r]   rs   s     r?   ÚgetzOpNamespace.get  s   € Ü�t˜TÓ"Ð"r>   ©r6   N)
r‘   r’   r“   r^   Ústrr   r   rm   r­   r°   r=   r>   r?   r™   r™   à   sY   „ óDðàðð �S˜#�XÑðð !ð	ð
 ðð 
óð:#˜ð # ô #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ž   r6   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>   rl   r¢   c                 ó&   —  | j                   |i |¤ŽS rB   )r�   )r]   rl   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   rm   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j                  dej                  fd-„Z d.ed/edef   d0ed1edef
d2„Z!d.ed3ee   d4ed5ee   deej                     f
d6„Z"d/edef   d4ed5ee   deej                     fd7„Z#d8ed9ee   d4ed5ee   deej                     f
d:„Z$d;ed<edej                  fd=„Z%	 dmd>ej                  d?ej                  dz  d@ej                  ez  dAedz  dej                  dz  f
dB„Z&dCedef   d4edDedejN                  jP                  fdE„Z)dFedGedej                  fdH„Z*deej                     dFedIedeej                     fdJ„Z+deej                     dFedIedeej                     fdK„Z,dee   dFedeej                     fdL„Z-d9eej                     deej                     dFedeej                     fdM„Z.dNej                  dFedeej                     fdO„Z/dPejN                  j`                  dee   fdQ„Z1dRedefdS„Z2dndT„Z3de4e   fdU„Z5dVede6fdW„Z7d9edeedef   ef   fdX„Z8ed4ee   deejN                  jr                     fdY„«       Z:edRejN                  jr                  defdZ„«       Z;dnd[„Z<dnd\„Z=dnd]„Z>dnd^„Z?dnd_„Z@dnd`„ZAdnda„ZBdbedefdc„ZC	 dmddee   deedeeeef      dz  dee   fdf„ZDdgedeEfdh„ZFdiedjedkej2                  jŽ                  dz  ddfdl„ZHy)oÚAutogradCompilerInstanceÚcompiler_fn.r6   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__2  st   € Ø&ˆÔÜ×)Ñ)Ó+ˆŒ
Ø—Z‘Z×%Ñ%ˆŒ
Ü!›ˆŒÜ .Ø#'Ø"&Ø—n‘nô!
ˆÔô
 )Ó*ˆŒÜ0°·±ÀÓLˆŒØ)-ˆÕr>   rH   Úsourcec                 óž   — t        |t        j                  «      st        dt	        |«      › �«      ‚| j
                  j                  ||¬«      S )NúExpected torch.Tensor, got )rÒ   )rM   r8   r—   rT   rq   rÎ   Úfrom_tensor)r]   rH   rÒ   s      r?   Ú	wrap_fakez"AutogradCompilerInstance.wrap_fake@  sC   € Ü˜!œUŸ\™\Ô*Ü Ð#>¼tÀA»w¸iÐ!HÓIÐIØ×$Ñ$×0Ñ0°¸6Ð0ÓBÐBr>   rs   r�   c                 ó,   — t        t        | «      |«      S rB   r   )rs   r�   s     r?   rÒ   zAutogradCompilerInstance.sourceE  s   € äœ[¨Ó.°Ó4Ð4r>   rz   r¹   rº   ÚoriginsrX   Ú
check_nansc                 ó  ‡ — 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                  ‰ jv                  «       ‰ jB                  jE                  ‰ jx                  «       ‰ jB                  jE                  t{        «       «       ‰ jv                  jZ                  €tu        d«      ‚‰ jv                  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 )Nr4   Úcapturesrg   Ú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>i  s.   øè ø€ ò 
àð �N‰N×'Ñ'¨°t¸RÀ×Dñ
ùs   ƒ(+r   rz   zFound tensor of type z,, which is not supported by FakeTensorMode. r¹   ra   rº   )rÒ   Údynamic_dim)ÚhintrÒ   zUnexpected scalar type: z+fake_tensor_mode.shape_env must not be None)Dr   rh   ÚCOMPILE_COUNTERÚidr   rp   Úaot_id_counterrÁ   r   Ú	__enter__rW   Únan_checkerÚtimeÚtime_nsÚstart_time_nsr   Úlog_event_startr8   Ú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ÚNotImplementedErrorrq   r€   Úbind_objects_to_proxiesrÈ   Ú$create_unspecified_symint_and_symbolr+   ÚDYNAMICÚrangeÚlenrâ   r   rM   rw   ÚfloatÚcreate_symfloatnodeÚcreate_unspecified_symbolrT   rÎ   rÐ   r%   ÚexperimentalÚsymbolic_shapesÚ_suppress_guardsr²   r   Úcurrent_compile_id)r]   rz   r¹   rº   rØ   rX   rÙ   Ú
args_proxyÚinputs_originsÚsizes_originsÚscalars_originsrH   r�   ÚeÚvalÚ	sym_sizesr�   ÚproxiesÚsymintrÒ   ÚsymvalÚenvs   `                     r?   Úbegin_capturez&AutogradCompilerInstance.begin_captureI  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ð 	�
‰
× Ñ  ×!6Ñ!6Ô7Ø�
‰
× Ñ  §¡Ô1Ø�
‰
× Ñ Ô!7Ó!9Ô:à× Ñ ×*Ñ*Ð2Ü Ð!NÓOÐOØ×#Ñ#×-Ñ-ˆØ�
‰
× Ñ Ü�H‰H×!Ñ!×1Ñ1×BÑBÀ3ÓGô	
ô
 ”×1Ñ1Ó3Ó4ØØØð	
ð 	
øôG ò 	Ü%Ø'¬¨Q« yÐ0\Ô]iÐ\jÐkóàðûð	üó
ùò Gs%   Ç8U ÈAU<É=VÕ	U9ÕU4Õ4U9Úcompile_reasonsc                 óD   ‡— ‰st        d«      ‚t        dd„ ˆfd„¬«       y )Nz!compile_reasons must not be emptyÚ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 rB   r=   )r  s   €r?   r  z>AutogradCompilerInstance.log_compile_reasons.<locals>.<lambda>Ð  s   ø€ ˜€ r>   ©Úmetadata_fnÚ
payload_fn)rT   r   )r]   r  s    `r?   Úlog_compile_reasonsz,AutogradCompilerInstance.log_compile_reasonsÄ  s)   ø€ ñ Ü Ð!DÓEÐEÜØñó /ö	
r>   ÚpinputsÚpsaved_tensorsÚsaved_tensorsÚpctxÚctxÚmaybe_backward_state_idxÚopaque_object_indicesc                 ó,  ‡ ‡‡‡‡‡‡— ‰j                  «       D �cg c]  }‰ j                  |«      ‘Œ }	}|D �
cg c]  }
‰ j                  |
   ‘Œ }}
‰j                  }t	        |«      Š|j
                  }|j                  }|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|||	||fi ¬	«      Šd Š|�‰ j                  |   Šdt.        t        j$                     fˆˆˆˆˆˆ fd
„} |«       }|�:dt(        dt0        dt"        t(           dt        j$                  fˆ fd„} |||¬«      }n ||«      }t3        j4                  ‰ 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_argsr6   c                 ó   •—  ‰| |||«      S rB   r=   )r*  r+  r,  r-  Úbw_prologue_fns       €r?   Úcall_aot_bwd_prologuezOAutogradCompilerInstance.proxy_call_aot_backward.<locals>.call_aot_bwd_prologue   s   ø€ ñ "Ø!ØØØó	ð r>   ra   ©Úkindrd   rl   r¢   c            	      óê	  •‡‡— dt         j                  j                  dt        fd„}  | ‰j                  «      }t        |t        ‰d u«      z
  «      D �cg c]  }‰|   ‘Œ	 }}‰j                  «       }t        |«      t        ‰j                  «      k7  r-t        dt        |«      › dt        ‰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k7  r!t        dt        |
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,                  j1                  |«      }t3        ‰j,                  j4                  |t7        ‰|«      «       ‰j,                  j9                  d|di «      } |	|
j"                  «      |_        |‰|
<   �Œ—|
j                  dk(  r´|
j.                  t         j:                  j<                  j>                  j@                  u r3t         j:                  j<                  jB                  j@                  |
_        ‰j,                  j                  jE                  |
ˆfd„«      } |	|
j"                  «      |_        |‰|
<   �ŒZ|
j                  dk(  r‰|
j.                  }‰j,                  j1                  |«      }t3        ‰j,                  j4                  |t7        ‰|«      «       ‰j,                  j                  jE                  |
ˆfd„«      }||_        |‰|
<   �Œòt        d«      ‚ |€t        d«      ‚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_   r6   c                 óZ   — d}| j                   D ]  }|j                  dk(  r|dz  }Œ |S  |S )Nr   rá   rg   )rj   rc   )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>   zsymints length mismatch: z vs r   Ú_rg   Ú	node_namec                 ó   •— d‰› d| › �S )NÚaotr7  r=   )r8  Údeduped_aot_ids    €r?   Úmake_uniquezlAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.make_uniqueK  s   ø€ à˜^Ð,¨A¨i¨[Ð9Ð9r>   rá   re   z(Expected output node to have 1 arg, got Úget_attrr=   ra   c                 ó   •— ‰|    S rB   r=   ©ÚnÚvalue_remaps    €r?   r  ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>n  ó   ø€ ¨°A©€ r>   Úcall_modulec                 ó   •— ‰|    S rB   r=   r?  s    €r?   r  ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>w  rB  r>   zshouldn't get herez&No output node found in backward graphc                  ó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&   r8   Úzerosr=   r>   r?   ÚdummyzfAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.dummyƒ  s1   € Ü0Ó2ñ 8Ü Ÿ;™; q¨!¨Q°°3Ó7÷8÷ 8ò 8ús   ‹.®7)%r8   r”   r•   rp   r_   rÿ   Ú_get_compiled_autograd_symintsr   ÚsymintsrT   Úto_proxyrr   r²   ré   rj   rc   rw   rs   rl   rM   ÚNoder3   rÏ   rd   Úget_fresh_qualnamer¨   rò   r¯   Úcreate_nodeÚopsÚatenÚviewÚdefaultÚreshapeÚ	node_copyr—   rü   )r6  r5  r�   Ú	pall_argsrK  r  ÚpsymintsÚargs_idxÚpoutputsr<  rw   Úphr@  rs   Úqualnamer¤   rI  ÚoÚoutputsr;  rA  Úaot_idrO   r&  Úpbackward_stateÚpgradsr]   s                      @@€€€€€€r?   Úcopy_paste_aot_backward_graphzWAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph   se  ú€ ð ¤%§(¡(§.¡.ð  ´Só  ñ " )§/¡/Ó2ˆHä#(¨´C¸ÈtÐ8SÓ4TÑ)TÓ#UöØ��q“	ðˆIð ð ×8Ñ8Ó:ˆGÜ�7‹|œs 3§;¡;Ó/Ò/Ü$Ø/´°G³¨~¸TÄ#ÀcÇkÁkÓBRÐASÐTóð ð 3:Ö:¨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 Ò(Ü˜4Ÿ9™9“~¨Ò*Ü,ØFÄsÈ4Ï9É9Ã~ÐFVÐWóð ð "&§¡¨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 Ó%ä(Ð)=Ó>Ð>ð[-?ð^ ÐÜ$Ð%MÓNÐNð8œ5Ÿ<™<ó 8ð
 JRöØDEœ: a¬¯©¯©Ô8‘”¸aÑ?ðˆGð ð ×(Ñ(¨°(Ô;ØˆNùò{ùò ;ùòF ùòZs   ÁS!ÃS&ÈAS+Ò4S0Ú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 )Nrd  r6   c                  ó*   •— ‰j                  | ‰¬«      S )N)rc  )Úcreation_fn)rd  rc  rb  s    €€r?   Úmake_subclasszkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructor.<locals>.make_subclass–  s    ø€ à(×4Ñ4Ø&°:ð 5ó ð r>   ra   r1  )r8   r©   rª   r   ÚpytreeÚtree_maprL  rÏ   râ   r–   Úallocate_dummyrü   )rb  rc  rd  rh  Úpunwrapped_argsÚpoutputre   r]   s   ``     €r?   Úproxy_subclass_constructorzTAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructor‘  s˜   ú€ ô
 —‘×-Ñ-ð´3ð ¼3õ ó .ðô
 #)§/¡/°$·-±-ÀÓ"P�àŸ.™.×5Ñ5Ø(à(Ü˜Ó/Øð 6ó �ð ×,Ñ,Ó.�Ø×,Ñ,¨f¨X¸°yÔAØ�r>   )Úmake_subclass_override)rJ  rL  rÑ   Ú_forward_clsrU   ÚmetadataÚmaybe_subclass_metadataÚ_aot_idÚ_bw_prologue_fnÚ_bw_epilogue_fnr8   Úis_grad_enabledÚoutput_infoÚrequires_gradrˆ   r©   rª   r   r—   r0   r   rÏ   râ   Úlistrm   ri  rj  )r]   r"  r#  r$  r%  r&  r'  r(  r  rW  r�   Úpopaque_objectsrK   rq  rr  Úbw_epilogue_fnÚoutput_alias_infor0  ra  r]  rn  ÚresultsÚpresultsr^  rO   r/  r_  r`  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ˆØ)×9Ñ9ˆØä× Ñ Ô"Ø%-×%9Ñ%9ò Ð!Ø$×2Ó2Ü&ØZóð ðô 
�‰×	%Ñ	%ð	Ü'¬¯©Ñ5ð	ä!¤+Ñ.ð	ô &¤c™]ð	ô  ¤‘}ð		ô
 ô	ó 
&ð	ð —‘×,Ñ,Ø à(àØØØð	ð ð -ó 
ˆð ˆØ#Ð/Ø"×.Ñ.Ð/GÑHˆOðk	¬t´E·L±LÑ/A÷ k	ò k	ñZ 0Ó1ˆà"Ð.ðÜ"ðä ðô !)¬¡ðô —‘õ	ñ2 %ØÐ0Jô‰Gñ % WÓ-ˆGä—?‘? 4§=¡=°'Ó:ˆØˆùòS Tùò
s
   šH¸HÚoutput_metadatasÚbackward_idxc           
      ó  — | j                   €t        d«      ‚| j                   |   }| j                  |«      }	| j                  |«      }
t        |j                  d«      r| j                  |	|
|||||«      }nbt        |j                  dd«      r#t        d|j                  j                  › d�«      ‚| j                  j                  dt        ||
g|	¢­i ¬«      }|€t        d	«      ‚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)Nz2hooks_proxy must be set before proxy_call_backwardrs  Úboxed_grads_callFzboxed_grads_call=True on z* is not supported with compiled autograd. ra   r1  z,proxies must not be None after backward call)ÚsizeÚdtypeÚlayoutÚdevice)rÑ   rT   rL  r¦   rp  r  r¯   rˆ   r‘   rÏ   râ   r   r&   rŠ   rr   r8   Ú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³  s·  € ð ×ÑÐ#Ü Ð!UÓVÐVØ×Ñ Ñ-ˆØ—-‘- Ó'ˆØŸ™ }Ó5ˆÜ�3×#Ñ# YÔ/à×2Ñ2ØØØØØØ(Ø%ó‰Gô �s×'Ñ'Ð);¸UÔCÜ"Ø/°×0@Ñ0@×0IÑ0IÐ/Jð K@ð @óð ð —n‘n×1Ñ1Ø$Ü$àØ"ðð ñð
 ð 2ó 	ˆGð ˆ?Ü Ð!OÓPÐPä(Ó*ñ 	<à24ˆHÜ(1Ð2BÓ(Cò Ñ$��_Ø"Ð*¨g°c©lÐ.BØ—O‘O DÔ)Øà.=Ñ+�˜  tØ—‘Ü—K‘K T°¸vÈfÔUõðð ×(Ñ(¨°7Ô;÷	<ô �X‹Ð÷	<ô �X‹Ðús   Ã0A0E3Å3FÚ
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é   )rL  Ú
proxy_callÚcopy_slices_prologue)	r]   rz   rŒ  r�  rŽ  r�  r�  r‘  rl   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 rB   )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Í[rG  rœ   s    r?   rk  z'AutogradCompilerInstance.allocate_dummy  s-   € Ü(Ó*ñ 	/ä—;‘;  9˜~Ó.÷	/÷ 	/ò 	/ús   ‹,¬5c                 ól   — t        «       5  t        j                  |«      cd d d «       S # 1 sw Y   y xY wrB   )r&   r8   Ú
empty_like)r]   rH   s     r?   Úallocate_dummy_likez,AutogradCompilerInstance.allocate_dummy_like  s+   € Ü(Ó*ñ 	'Ü×#Ñ# AÓ&÷	'÷ 	'ò 	'ús   ‹*ª3Úfn_namer�   rž   rŸ   c                 ó2   — t         j                  ||||«      S )zBinds ops.fn_name = fn)rP  r­   )r]   r¡  r�   rž   rŸ   s        r?   Úbind_functionz&AutogradCompilerInstance.bind_function  s   € ô �w‰w�w Ð$6¸ÓEÐEr>   Úgradsrl   rŠ  c                 óZ   — t         j                  |«      }| j                  ||g|¢­|«      S )z:Proxies a call to ops.fn_name(grads, *args) into the graph)rP  r°   r”  )r]   r¡  r¤  rl   rŠ  rc   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 rB   ©rL  )r  r]   s    €r?   r  z5AutogradCompilerInstance.proxy_call.<locals>.<lambda>3  s   ø€ ¨t¯}©}¸QÓ/?€ r>   ra   ©rl   r¢   )ri  rj  rÏ   râ   rk  rü   rÿ   r   )	r]   r�   rl   rŠ  Ú
proxy_argsÚ	proxy_outr7  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
r7  r]  c                 óP  — t         j                  d«      }t        j                  | j                  |g|¢­«      }| j
                  j                  d||i ¬«      }t        |«      t        |«      k7  r$t        dt        |«      › dt        |«      › d�«      ‚| j                  ||«       |S )zEProxies a call to ops.validate_outputs(outputs, *args) into the graphÚvalidate_outputsra   rª  zoutput_metadata length (z) != outputs length (ú))
rP  r°   ri  rj  rL  rÏ   râ   r   rT   rü   )r]   r7  r]  rl   rŠ  rc   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ó 
Ðô ˆÓ¤3 w£<Ò/Ü Ø*¬3¨Ó+?Ð*@Ð@UÔVYÐZaÓVbÐUcÐcdÐeóð ð 	×$Ñ$ WÐ.?Ô@Øˆr>   Úold_varÚnew_varc                 óð   — | j                  |«      }| j                  |«      }| j                  j                  dt        j                  ||fi ¬«      }| j                  «       }| j                  |g|g«       |S ©Nra   rª  )rL  rÏ   râ   r8   r­   rk  rü   )r]   r±  r²  Úold_var_proxyÚnew_var_proxyr¬  r¤   s          r?   Ú
accumulatez#AutogradCompilerInstance.accumulateK  ss   € ØŸ™ gÓ.ˆØŸ™ gÓ.ˆØ—N‘N×/Ñ/ØœUŸY™Y¨m¸]Ð-KÐTVð 0ó 
ˆ	ð ×$Ñ$Ó&ˆØ×$Ñ$ f X°	¨{Ô;Øˆr>   ÚvariableÚvariable_gradr}   Úhas_post_hooksc           	      óJ  — |d u }|€t        |«      }|}|j                  }| j                  j                  dt        | j                  |«      | j                  |«      | j                  |«      |fi ¬«      }| j                  |«      }| j                  |g|g«       ||_        |ry |S r´  )rm   r}   rÏ   râ   r   rL  r   rü   )r]   r¸  r¹  r}   rº  Úold_callr¬  r¤   s           r?   rX   z(AutogradCompilerInstance.accumulate_gradU  sµ   € ð " TÐ)ˆØÐ!ô " $›ZˆNØ ˆDØ$ŸM™MˆMà—N‘N×/Ñ/ØÜ à—‘˜hÓ'Ø—‘˜mÓ,Ø—‘˜dÓ#Øð	ð ð 0ó 

ˆ	ð ×)Ñ)¨(Ó3ˆØ×$Ñ$ f X°	¨{Ô;ØˆŒÙØØˆr>   Úhookr¢   c                 ó’   — | j                   j                  dt        |g|D �cg c]  }| j                  |«      ‘Œ c}¢­|«      S c c}w ©Nra   )rÏ   râ   r   rL  )r]   r½  rl   r¢   rH   s        r?   Úproxy_call_hookz(AutogradCompilerInstance.proxy_call_hookv  sO   € ð �~‰~×*Ñ*ØÜàðà,0Ö1 q�$—-‘- Õ"Ò1ñð ó
ð 	
ùò
 2s   ¢AÚhook_idÚdata_idc                 óà   — | j                   €t        d«      ‚| j                   |   }| j                  |   }| j                  ||d¬«      }| j	                  «       }| j                  |g|g«       |S )Nz*hooks_proxy must be set before unpack_hookÚunpack_hook©Ú	hook_type)rÑ   rT   rø   rÀ  rk  rü   )r]   rÁ  rÂ  r½  ÚdataÚproxyrƒ   s          r?   rÄ  z$AutogradCompilerInstance.unpack_hookƒ  s�   € Ø×ÑÐ#Ü Ð!MÓNÐNØ×Ñ Ñ(ˆØ×%Ñ% gÑ.ˆØ×$Ñ$ØØØ#ð %ó 
ˆð
 ×!Ñ!Ó#ˆØ×$Ñ$ c U¨U¨GÔ4Øˆ
r>   r�   c                 ó  — | j                   €t        d«      ‚| j                   |   }| j                  |||   d¬«      }t        «       5  t	        ||   «      ||<   | j                  ||   g|g«       d d d «       |S # 1 sw Y   |S xY w)Nz.hooks_proxy must be set before tensor_pre_hookÚtensor_pre_hookrÅ  ©rÑ   rT   rÀ  r&   rJ   rü   )r]   rz   rÁ  r�   r½  rÈ  s         r?   rÊ  z(AutogradCompilerInstance.tensor_pre_hook‘  sž   € ð ×ÑÐ#Ü Ð!QÓRÐRØ×Ñ Ñ(ˆØ×$Ñ$ØØ�1‰IØ'ð %ó 
ˆô
 )Ó*ñ 	?Ü# F¨1¡IÓ.ˆF�1‰IØ×(Ñ(¨&°©)¨°u°gÔ>÷	?ð ˆ÷	?ð ˆús   Á)A;Á;B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â   r8   Ú_Cr©   r4   Úcall_cpp_tensor_pre_hooksrL  r&   rJ   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                   €t        d«      ‚| 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)Nz'hooks_proxy must be set before pre_hookÚpre_hookrÅ  rË  )r]   rz   rÁ  r½  r  rH   s         r?   rÑ  z!AutogradCompilerInstance.pre_hook¯  sš   € Ø×ÑÐ#Ü Ð!JÓKÐKØ×Ñ Ñ(ˆØ×&Ñ&ØØØ ð 'ó 
ˆô
 )Ó*ñ 	:Ø.4Ö5¨”k !•nÐ5ˆFÐ5Ø×(Ñ(¨°Ô9÷	:ð ˆùò 6÷	:ð ˆús   ÁA?Á
A:ÁA?Á:A?Á?B	c                 ó  — | j                   €t        d«      ‚| 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)Nz(hooks_proxy must be set before post_hookÚ	post_hookrÅ  rË  )r]   r]  rz   rÁ  r½  r  rH   s          r?   rÓ  z"AutogradCompilerInstance.post_hook½  sŸ   € ð ×ÑÐ#Ü Ð!KÓLÐLØ×Ñ Ñ(ˆØ×&Ñ&ØØØØ!ð	 'ó 
ˆô )Ó*ñ 	;Ø/6Ö7¨!”{ 1•~Ð7ˆGÐ7Ø×(Ñ(¨°'Ô:÷	;ð ˆùò 8÷	;ð ˆús   ÁB ÁA;ÁB Á;B Â B
Úinputc                 óZ  — t        |t        j                  «      st        dt	        |«      › �«      ‚| j
                  €t        d«      ‚| j
                  |   }| j                  ||d¬«      }t        «       5  t        |«      g}| j                  ||g«       d d d «       |S # 1 sw Y   S xY w)NrÔ   z1hooks_proxy must be set before post_acc_grad_hookÚpost_acc_grad_hookrÅ  )
rM   r8   r—   rT   rq   rÑ   rÀ  r&   rJ   rü   )r]   rÔ  rÁ  r½  rÈ  r˜  s         r?   rÖ  z+AutogradCompilerInstance.post_acc_grad_hookÎ  s´   € ô ˜%¤§¡Ô.Ü Ð#>¼tÀE»{¸mÐ!LÓMÐMØ×ÑÐ#Ü Ð!TÓUÐUØ×Ñ Ñ(ˆØ×$Ñ$ØØØ*ð %ó 
ˆô
 )Ó*ñ 	7Ü˜uÓ%Ð&ˆCØ×(Ñ(¨¨u¨gÔ6÷	7ð ˆ
÷	7ð ˆ
ús   Á6 B Â B*r_   c                 óø  — i }d}t        |j                  «      }|d   j                  dk7  rt        d|d   j                  › d�«      ‚|d   }t        |j                  j                  «       «      }t        t        «      }||   |d   k7  rt        d«      ‚|t        |«      z   dz
  }||   |d   k7  rt        d	«      ‚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   z0Expected first node target to be 'inputs', got 'ú'z3First getitem node does not match first inputs userrg   éÿÿÿÿz1Last getitem node does not match last inputs userr  Ú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))ÚprimsrQ  N)rM   rd   r8   Ú_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)ry  rj   rd   rT   ÚusersÚkeysr   rõ   rŠ   Úmetar‡  rq   r„  ÚallÚvaluesÚverbose_logÚdebugrÚ  )r]   r_   Úto_moveÚhas_cuda_inputsrj   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—[‘[Ó!ˆØ�‰8�?‰?˜hÒ&Ü ØBÀ5ÈÁ8Ç?Á?ÐBSÐSTÐUóð ð �q‘ˆÜ˜FŸL™L×-Ñ-Ó/Ó0ˆäÔ 3Ó4ÐØÐ"Ñ# |°A¡Ò6Ü Ð!VÓWÐWØ,¬s°<Ó/@Ñ@À1ÑDÐØÐ!Ñ" l°2Ñ&6Ò6Ü Ð!TÓUÐUä  Ó.ò 	&‰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¿  )rM   r8   r”   rM  rc   rd   rP  rQ  Úsym_sizerp   Ú	sym_numelrS  )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                 ó¶  ‡— t        «       Šd }t        | j                  j                  j	                  d¬«      «      D ].  \  }}‰j                  |j                  j                  «       «       Œ0 |t        t        «      dz
  k7  r!t        dt        t        «      dz
  › d|› �«      ‚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á   rf   rg   z	Expected z placeholders, got rw   r6   c                 óp   •— | ‰v s!| j                   dk(  r| j                  t        v ry| j                  «       S )Nra   T)rc   rd   Ú_impure_targetsÚ	is_impure)rw   Úunpack_nodess    €r?   rú  z/AutogradCompilerInstance.dce.<locals>.is_impure1  s2   ø€ Ø�|Ñ#Ø—‘˜?Ò*¨t¯{©{¼oÑ/MàØ—>‘>Ó#Ð#r>   zDCE removed %d nodes)r1   rŠ   rÏ   r_   rk   Úupdaterã  rä  r   rõ   rT   r8   r”   rM  rm   rj   Ú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à”Ô'Ó(¨1Ñ,Ò,Ü ØœCÔ 3Ó4°qÑ8Ð9Ð9LÈQÈCÐPóð ð	$œ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k7  rt        d|j
                  › d�«      ‚|j                  D ]e  }|j                  t        j                  urt        d|j                  › �«      ‚|j                  r|j                  |«       ŒU|j                  |«       Œg t        «       }|D ]Ú  }t        |j                  t        «      s!t        dt!        |j                  «      › �«      ‚|j                  d   |k7  rt        d«      ‚t        |j                  d   t"        «      s$t        d	t!        |j                  d   «      › �«      ‚t%        |«      }|j'                  |j                  d   «       |j                  d   |f|_        ŒÜ |D ]'  }	| j                  j                  j)                  |	«       Œ) |S )
Nr¹   z#Expected placeholder 'sizes', got 'rØ  z&Expected operator.getitem target, got z$Expected used.args to be tuple, got r   z&Expected used.args[0] to be sizes_noderg   z%Expected used.args[1] to be int, got )ri   rÏ   r_   rj   rh   rs   rT   rã  rd   rn   ro   rr   ÚsetrM   rl   r–   rq   rp   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ˆ
Ø�?‰?˜gÒ%Ü Ø5°j·o±oÐ5FÀaÐHóð ð '×,Ñ,ò 		2ˆLØ×"Ñ"¬(×*:Ñ*:Ñ:Ü$Ø<¸\×=PÑ=PÐ<QÐRóð ð ×!Ò!Ø×!Ñ! ,Õ/ð ×#Ñ# LÕ1ð		2ô $'£5ˆØò 	6ˆDÜ˜dŸi™i¬Ô/Ü$Ø:¼4ÀÇ	Á	»?Ð:KÐLóð ð �y‰y˜‰|˜zÒ)Ü$Ð%MÓNÐNÜ˜dŸi™i¨™l¬CÔ0Ü$Ø;¼DÀÇÁÈ1ÁÓ<NÐ;OÐPóð ô   Ó/ˆ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 rB   )r#   rÏ   rò   r_   )r]   rè   s     r?   Úcreate_graph_modulez,AutogradCompilerInstance.create_graph_modulel  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 )Nra   r=   re   )Ú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>�  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_inputsr6   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Ù  rg   )Únon_blockingF)Úin_compiled_autograd_regionrë   r‚   rŠ   rr   r8   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%r4   rÜ   rÝ   )-rÏ   râ   r   Ú_exec_final_callbacks_stubrÌ   rÍ   rO  Ú
create_argrL  rG   rò  r_   rj   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]   r]  rw   ÚfieldÚlazy_graph_coder,  r_   r+  r	  s	   `     @@@r?   Úend_capturez$AutogradCompilerInstance.end_captureo  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 rB   )rq   r8   r”   rM  )rl   r@  rj   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á   ra   r   TF)rc   rd   rn   ro   rl   )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   |j                  d   }}}d}t        |t        j                  j                  «      r-|j                  t        j                  u r|}|j                  d   }t        | j                  |||g«      «      }||j                  usŒ¯| 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.
        ra   rb   r   rg   é   N)rÏ   r_   rk   r   rl   rM   r8   r”   rM  rd   rn   ro   Úmaxr>  Úprevr@  rr   )r]   rw   rx   Úvariable_grad_nodeÚ	grad_noder  Úargs          r?   r2  z6AutogradCompilerInstance.reorder_accumulate_grad_nodesý  sû   € ð —N‘N×(Ñ(×3Ñ3ØÔ';ð 4ó 
ò 	-ˆDð —	‘	˜!‘Ø—	‘	˜!‘Ø—	‘	˜!‘ð -6Ð*ˆJð
  ˆLä˜9¤e§h¡h§m¡mÔ4Ø×$Ñ$¬×(8Ñ(8Ñ8à(�Ø(×-Ñ-¨aÑ0�	äØ×"Ñ" JÐ0BÀIÐ#NÓOóˆ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.
        ra   rb   rÆ  NrÄ  )	rÏ   r_   rk   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.
        ra   rb   rÆ  NrÊ  r   rg   )
rÏ   r_   rk   r   r¢   r°   rl   rD  r@  rr   )r]   rw   r  Ú
input_nodes       r?   r0  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.
        ra   rb   rÆ  NrÑ  r   rg   )rÏ   r_   rk   r   r¢   r°   rl   r>  rc   rd   rn   ro   rr   ÚzipÚremoverC  rD  r@  )r]   rw   r  Úinput_nodesÚ	to_removeÚ	to_appendÚ
hook_blockr@  ÚaÚbrG  s              r?   r1  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t        d«      ‚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.
        ra   rb   rÆ  NrÑ  r   c              3   óv   K  — | ]1  }|j                   d k(  xr |j                  t        j                  u –— Œ3 y­w)ra   N)rc   rd   rn   ro   rá  s     r?   rä   zQAutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager.<locals>.<genexpr>w  s8   è ø€ ò àð —‘˜?Ñ*ÒN¨t¯{©{¼h×>NÑ>NÐ/NÓNñùs   ‚79zIExpected all users of pre_hook to be operator.getitem call_function nodes)rÏ   r_   rk   r   r¢   r°   rr   Úreversedrl   ry  rã  rä  r   ræ  rT   rh   ri   rJ  )r]   Ú	pre_hooksrw   Úhook_getitem_noderã  Úregistered_nodero   s          r?   r3  z>AutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager`  s9  € ð ˆ	Ø—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 |€t        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.
        ra   rb   rÆ  NrÖ  r   rg   z8post_acc_grad_hook must have corresponding acc grad node)rÏ   r_   rk   r   r¢   r°   rr   rY  rl   ry  rã  rä  rc   rd   r   rT   )r]   Úpost_acc_grad_hooksrw   r  rx   Úacc_grad_noder@  s          r?   r4  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Ùðð
 Ð$Ü$ØNóð ð
 × Ñ  Ô.Ø×Ñ Õ%ñ%	&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.
        ra   rb   rÆ  NrÓ  r   rg   rB  c              3   ó¢   •K  — | ]F  }|j                   d k(  r1|j                  t        u r‰j                  j	                  dd«      dk(  s|–— ŒH y­w)ra   rÆ  NrÓ  )rc   rd   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_   rk   r   r¢   r°   rr   rY  rl   r   Úextendry  rã  rä  rC  rc   rd   r   rD  r@  )r]   Ú
post_hooksr  rv   rQ  Úinput_nodes_and_usersrM  rG  rx   Úpost_acc_grad_hook_noder@  rw   s              @r?   r5  z0AutogradCompilerInstance.reorder_post_hook_nodes«  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                 óZ  ‡ — |€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t!        dt#        |«      › �«      ‚|j$                  S c c}w )Nc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrB   r©  )rã   rH   r]   s     €r?   rä   z4AutogradCompilerInstance.to_proxy.<locals>.<genexpr>ë  s   øè ø€ Ò5¨a˜Ÿ™ q×)Ñ5ùs   ƒzExpected _ProxyTensor, got )rM   ry  rL  r–   r8   ÚSymIntÚSymFloatrô   rw   r—   r'   rÏ   r”   r  Úproxy_tensorÚ_ProxyTensorrT   rq   rÈ  )r]   rf  rH   rk  s   `   r?   rL  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Ü)¨$¯.©.¸!Ó<ˆÜØœ%Ÿ(™(×/Ñ/×<Ñ<×IÑIô
ô !Ð#>¼tÀLÓ?QÐ>RÐ!SÓTÐTØ×!Ñ!Ð!ùò 1s   ™D(Úobjectsr  c                 ó\  — t        |t        j                  j                  «      r®|rˆt	        |«      t	        |«      k7  r$t        dt	        |«      › dt	        |«      › d�«      ‚g }t        t	        |«      «      D ]1  }||   \  }}| j                  ||d «       |j                  ||   «       Œ3 |}n$t        t	        |«      «      D �cg c]  }||   ‘Œ	 }}t	        |«      t	        |«      k7  r$t        dt	        |«      › dt	        |«      › d�«      ‚t        ||d | j                  ¬«       |S c c}w )Nzorigins length (z) != objects length (r¯  zobjects length (z) != proxies length (©ÚconstantÚtracer)rM   r8   r”   r3   r   rT   rÿ   Úset_node_originrr   r*   rÏ   )r]   rm  r  rØ   Úbound_proxiesr�   Únodecall_indexr8  s           r?   rü   z0AutogradCompilerInstance.bind_objects_to_proxiesø  s#  € ô �gœuŸx™xŸ~™~Ô.ÙÜ�w“<¤3 w£<Ò/Ü(Ø*¬3¨w«<¨.Ð8MÌcÐRYËlÈ^Ð[\Ð]óð ð !#�Üœs 7›|Ó,ò 5�AØ07¸±
Ñ-�N IØ×(Ñ(¨°NÀDÔIØ!×(Ñ(¨°©Õ4ð5ð (‘ä/4´S¸³\Ó/BÖC¨!˜7 1›:ÐC�ÐCäˆw‹<œ3˜w›<Ò'Ü Ø"¤3 w£< .Ð0EÄcÈ'ÃlÀ^ÐSTÐUóð ô 	˜' 7°TÀ$Ç.Á.ÕQØˆùò Ds   ÃD)Úindexc                 ó˜   — | j                   €t        d«      ‚| j                   |   }t        «       }t        ||d | j                  ¬«       |S )Nz2hooks_proxy must be set before bind_backward_statero  )rÑ   rT   r$   r*   rÏ   )r]   ru  rÈ  Úbw_states       r?   Úbind_backward_statez,AutogradCompilerInstance.bind_backward_state  sH   € Ø×ÑÐ#Ü Ð!UÓVÐVØ× Ñ  Ñ'ˆÜ “?ˆÜ˜( E°DÀÇÁÕPØˆr>   r8  rt  Úpyobjc                 ó  — d}|�;|j                   }t        |d«      r#|j                  €t        d«      ‚|j                  }|› |› d|› d�}t        j                  «       j                  «       d   }|j                  d|«      }t        |«       y )NÚ rs  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¯  rÙ  z:raw_stack_trace = CapturedTraceback.extract().format()[-1])
rp  r¦   rN   rˆ   rs  r2   ÚextractÚformatÚreplacer.   )	r]   r8  rt  ry  Úmaybe_aot_idÚforward_clsÚnew_codeÚraw_stack_traceÚnew_stack_traces	            r?   rr  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>   rB   r±   )Ir‘   r’   r“   r   r   r^   r8   r—   r   r"   rÖ   Ústaticmethodr²   r   rÒ   ry  rp   r0   r/   r–   rm   r  r!  r   r  ÚautogradÚfunctionÚBackwardCFunctionr‹  r–  rœ  rk  r   r£  r¦  r”  r®  r·  rX   r”   r3   rÀ  rÄ  rÊ  rÏ  rÑ  rÓ  rÖ  r•   rò  rö  r   r  r  r#   r  r<  rM  r>  r@  r2  r/  r0  r1  r3  r4  r5  rL  rü   r$   rx  ÚFunctionrr  r=   r>   r?   rÃ   rÃ   1  s¶  „ ð. 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™ð
ð 
ó
ð^à˜#‘ð^ð ! §¡Ñ.ð^ð   §¡Ñ-ð	^ð
 ð^ð ð^ð #&¨¡*ð^ð  $ C™yð^ð 
�#‰ó^ð@:à˜‘ð:ð # 3™-ð:ð   §¡Ñ-ð	:ð
 ð:ð �^‰^×$Ñ$×6Ñ6ð:ð #&¨¡*ð:ð  $ C™yð:ð 
ˆu�|‰|˜dÑ" CÐ'Ñ	(ó:ðxGà˜‘ðGð ˜S‘MðGð ˜s‘mð	Gð
 !ðGð ˜S‘MðGð ˜s‘mðGð !ðGð 
�%—,‘,Ñ	óGð*
à" 4™.ð
ð —‘ð
ð �c‰]ð	
ð
 —L‘Lð
ð 
�%—,‘,Ñ	ó
ð/ §¡ó /ð
' U§\¡\ð '°e·l±ló 'ðFàðFð �S˜#�XÑðFð !ð	Fð
 ðFð 
óFð	Dàð	Dð ˜‰}ð	Dð ð		Dð
 " #™ð	Dð 
�%—,‘,Ñ	ó	Dð
Ø˜3 ˜8Ñ$ð
Ø,/ð
ØBJÈ3Á-ð
à	�%—,‘,Ñ	ó
ðØðØ'¨™}ðØ47ðØJRÐSVÉ-ðà	�%—,‘,Ñ	óð  #ð °ð ¸¿¹ó ð '+ñà—,‘,ðð —|‘| dÑ*ðð �l‰l˜TÑ!ð	ð
 ˜t™ðð 
�‰˜Ñ	óðB
Ø˜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Ñ	óð.4¨e¯h©h¯n©nð 4ÀÀcÁó 4ðl
 ð 
¨ó 
óBð4- S¨¡Xó -ð^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óL#&óJ8*ðt"˜#ð " #ó "ð. 15ñ	à˜#‘ðð ðð �e˜C ˜H‘oÑ&¨Ñ-ð	ð
 
�#‰óð8¨ð °ó ð)àð)ð ð)ð �~‰~×&Ñ&¨Ñ-ð	)ð
 
ô)r>   rÃ   FrÄ   ÚdynamicÚignore_active_disable_ctx)NNNc              #   ó4  K  — |st         rd –— y |r(t        |«      t        urt        dt        |«      › �«      ‚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t2        }t2        dz  a	 t        j4                  j7                  d«      5  d –— d d d «       |sdat        j                  j                  j                   j#                  ||«       t2        dz  at2        |k7  rt        d	«      ‚y # daw xY w# 1 sw Y   ŒfxY w# |sdat        j                  j                  j                   j#                  ||«       t2        dz  at2        |k7  rt        d	«      ‚w xY w­w)
Nz!Expected dynamic to be bool, got r   )Ú
eval_frameÚforce_eagerTF)Úcudagraph_treesrg   zINested Compiled Autograd Contexts must return before their parent context)Úactive_disable_ctxrq   rm   rT   Útorch._dynamorŒ  Ú_stanceÚstanceÚ%compiled_autograd_enabled_force_eagerr8   rÚ  Úis_availableÚtorch._inductorrŽ  rÍ  r©   r4   Úset_autograd_compilerÚ	functoolsÚpartialrÃ   r@   Úset_verbose_loggerrè  Úcompiled_autograd_enabledÚdepthr…  Úset_multithreading_enabled)rÄ   r‰  rŠ  rŒ  rŽ  Úprior_compilerÚprior_dynamicÚprior_depths           r?   Ú_enabler   C  sÜ  è ø€ ñ4 %Õ);ÜáÜ�G‹}¤DÑ(Ü$Ø7¼¸W»°ÐGóð õ 	-à×Ñ×$Ñ$¨Ò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ôô ˜‘
�Ü˜KÒ'Ü(Øcóð ð (øð= 9>Ñ5ú÷*ð ûñ &Ø05Ð-Ü—‘× Ñ ×2Ñ2×HÑHØ" Môô ˜‘
�Ü˜KÒ'Ü(Øcóð ð (üsQ   ‚AHÁF+ Á CHÄ)F> ÅF2ÅF> ÅAHÆ+F/Æ/HÆ2F;Æ7F> Æ>AHÈH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)r8   rÍ  r©   r4   r–  rš  r�  )r�  rž  s     r?   r(  r(  ”  s³   è ø€ ô
 	�‰×Ñ×*Ñ*×@Ñ@ÀÀuÓMñØØð !&ÐåØ!Ðð
ÛáØ(,Ð%Ø"ÐÜ�‰×Ñ×*Ñ*×@Ñ@Ø˜Mõ	
øñ Ø(,Ð%Ø"ÐÜ�‰×Ñ×*Ñ*×@Ñ@Ø˜Mõ	
üs   ‚ACÁB Á	;CÂ<C Ã Cc                  ó„  — da t        rt        d«      ‚t        j                  j
                  j                  j                  d d«       t        j                  j
                  j                  j                  d «       t        j                  j
                  j                  j                  «        t        j                  «       ay )NFz6Cannot reset while in_compiled_autograd_region is True)rš  r%  rT   r8   rÍ  r©   r4   r–  r™  Úclear_cacheÚ	itertoolsr¬   rç   r=   r>   r?   Úresetr¥  «  s}   € à %ÐÝ"ÜÐUÓVÐVÜ	‡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                  ||«      }|€t        d«      ‚|j                  |«       ||z
  }	|j                  |||	«      }
||
|
j	                  t
        j                  ¬«      gS )Nr   z-grad must not be None in copy_slices_prologue)Úmemory_format)Únew_empty_stridedrT   Úcopy_Ú
as_stridedÚcloner8   Úcontiguous_format)rz   rŒ  r�  rŽ  r�  r�  r‘  r}   r¤   Úoffsetr™  s              r?   r•  r•  ¹  s|   € ð �!‰9€DØ×#Ñ# J°Ó=€FØ€|ÜÐLÓMÐMØ
‡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 ]D  }| |   sŒ	||   €Œ|dk(  r)||   }|€t        d«      ‚|j                  |«       |||<   Œ=||   ||<   ŒF |S )Nr   z/res[0] must not be None for needs_input_grad[0])r   rÿ   rT   r©  )r—  r¤   r˜  r™  Úgrad_inputsr�   Úto_copys          r?   r›  r›  Î  s—   € ð /3¨V´cÐ:JÓ6KÑ-K€KÜ”3Ð'Ó(Ó)ò (ˆØ˜AÓØ�1‰vˆ~ØØ�AŠvØ˜a™&�Ø�?Ü(ØIóð ð × Ñ  Ô)Ø!'�˜A’à!$ Q¡�˜A’ð(ð Ðr>   )TTr±   )rÚ__doc__rÊ   r—  r¤  rn   rì   Úcollectionsr   r   Úcollections.abcr   r   r   Útypingr   r	   r8   Útorch.utils._pytreeÚutilsÚ_pytreeri  Ú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*   Ú%torch.fx.experimental.symbolic_shapesr+   r,   Útorch.fx.tracebackr-   r.   Útorch.typesr/   r0   Útorch.utils._ordered_setr1   Útorch.utils._tracebackr2   Útorch.fx.proxyr3   r€   r‘   r6  rè  rm   r@   rG   r—   rJ   rU   rW   r™   r§   rP  rõ   r-  rù  r¬   rç   rp   rÁ   rÃ   rš  r“  r%  r�  r›  Úcontextmanagerr   r(  r¥  ry  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ó 
÷6Zñ Z÷D"#ñ "#÷J5ñ 5ñ  ƒm€ò MÐ ÙàØØ"×=Ñ=Øð	ó€ð "�)—/‘/Ó#€ð	¨sð 	°só 	÷A)ñ A)ðJ( "Ð ð ).Ð %ð $Ð àÐ à	€ð ×Ñð Ø&*ñMØ˜#˜s˜(Ñ#ðMàðMð  $ðMð ÐÑ ò	Mó ðMð` ×Ñð
�)Ð,Ñ-ò 
ó ð
ó,	(ðYØ�U—\‘\Ñ"ðYà˜Ñ%ðYð ˜;Ñ'ðYð %ð	Yð
 ˜Ñ%ðYð ˜;Ñ'ðYð %ðYð 
ˆ%�,‰,ÑóYð*Ø˜t‘nðà�L‰Lðð 
�%—,‘, Ñ%Ñ	&ðð —‘ð	ð
 
ˆ%�,‰,˜Ñ
Ñôr>   