§
    ŠŠtjA ã                   óÌ  — 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jW        dz  dejW        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ja        ¦   «         abd+ecdefd,„Zd G d-„ d.¦  «        Zed/afd/agd/ahd/aidajejk        	 	 dEd1e
d"ef         d2eTd3eTded4         fd5„¦   «         Zlejk        ded4         fd6„¦   «         ZmdFd7„Znd8eejW                 d9eeI         d:eeI         d;eId<eeI         d=eeI         d>eIdeoejW                 fd?„Zpd@eeT         dAejW        dBeejW        dz           dCejW        deoejW        dz           f
dD„ZqdS )Gaò  
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                  óT   — t           j        j        j                             d¦  «        S )Nr5   )ÚtorchÚ_loggingÚ	_internalÚ	log_stateÚis_artifact_enabled© ó    ú]/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_dynamo/compiled_autograd.pyÚ snapshot_verbose_logging_enabledr@   S   s%   € ÝŒ>Ô#Ô-×AÒAØ#ñô ð r>   c                  ó8   — t           j        j        j        j        S ©N)r8   Ú	_inductorÚconfigÚtritonÚ
cudagraphsr=   r>   r?   Úsnapshot_cudagraph_enabledrG   Y   s   € ÝŒ?Ô!Ô(Ô3Ð3r>   Úxc                 ó(   — | �t          | ¦  «        S | S rB   r   )rH   s    r?   Úmaybe_clonerJ   ]   s   € Ø€}Ý% aÑ(Ô(Ð(Ø€Hr>   ÚCompiledFunction.c                 óL  — t          | j        t          ¦  «        r| j        j        S t          | j        t          ¦  «        rVt
          j        j                             ¦   «         5  | j         	                    ¦   «         cd d d ¦  «         S # 1 swxY w Y   d S t          d¦  «        ‚)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Ô=Ð=Ý	ØÔ,Õ.Sñ
ô 
ð 
õ ÔÔ*×AÒAÑCÔCð 	Gð 	GØ#Ô7×DÒDÑFÔFð	Gð 	Gð 	Gð 	Gñ 	Gô 	Gð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gøøøð 	Gð 	Gð 	Gð 	Gð 	Gð 	Gõ ØSñ
ô 
ð 	
s   Á$B
Â
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dS )Ú
NaNCheckerÚaccumulate_gradr6   Nc                 ó>   — || _         g | _        i | _        g | _        d S rB   )rX   Úparams_indicesÚparams_to_checkÚoutput_names)ÚselfrX   s     r?   Ú__init__zNaNChecker.__init__   s(   € Ø.ˆÔØ)+ˆÔØ8:ˆÔØ')ˆÔÐÐr>   Úgraphc                 óP  — t          t          |j        ¦  «        ¦  «        }|                     dt          ¬¦  «        }|                     d¬¦  «        d         j        d         }| j        t          |¦  «        k    r(t          d| j        › dt          |¦  «        › d�¦  «        ‚| j        | k    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        d         ¦  «         ŒÇd„ |D ¦   «         | _        d S )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 c                 ó   — g | ]	}|j         ‘Œ
S r=   )Úname)Ú.0Únodes     r?   ú
<listcomp>z.NaNChecker.prep_with_graph.<locals>.<listcomp>§   s   € Ð@Ð@Ð@¨4˜TœYÐ@Ð@Ð@r>   )ÚnextÚiterÚnodesÚ
find_nodesr   ÚargsrX   ÚboolrT   rd   ÚoperatorÚgetitemrM   ÚintÚtyperZ   Úappendr\   )r]   r_   Úinputs_nodeÚacc_grad_nodesÚoutput_nodesrk   Ú
param_nodes          r?   Úprep_with_graphzNaNChecker.prep_with_graph…   sô  € Ý�4 ¤Ñ,Ô,Ñ-Ô-ˆØ×)Ò)ØÕ';ð *ñ 
ô 
ˆð ×'Ò'¨8Ð'Ñ4Ô4°QÔ7Ô<¸QÔ?ˆØÔ¥4¨Ñ#7Ô#7Ò7Ð7Ý ð=°dÔ6Jð =ð =Ý˜NÑ+Ô+ð=ð =ð =ñô ð ð Ô¨Ð$4Ò5Ð5Ý ð*ÈÔH\ð *ð *Ø'Ð'ð*ð *ñô ð ð
 #ð 	;ð 	;ˆDØœ 1œˆJð Ô ­Ô(8Ð8Ð8Ý$ØaÈjÔN_ÐaÐañô ð ð Œ˜qÔ!¨Ð4Ð4Ý$Ð%TÑUÔUÐUÝ˜jœo¨aÔ0µ#Ñ6Ô6ð Ý$Ø\Å$ÀzÄÐWXÔGYÑBZÔBZÐ\Ð\ñô ð ð Ô×&Ò& z¤°qÔ'9Ñ:Ô:Ð:Ð:à@Ð@°<Ð@Ñ@Ô@ˆÔÐÐr>   Úinputs.c                 óò   — | j         sd S | j        D ]e}||         j        }|�@t          j        |¦  «                             ¦   «         rt          d|› dt          › �¦  «        ‚||         | j        d|› d�<   Œfd S )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]   r}   Úidxr€   s       r?   Úprep_with_inputszNaNChecker.prep_with_inputs©   s¼   € ØÔ#ð 	àˆFð Ô&ð 		Að 		AˆCØ˜#”;Ô#ˆDØÐÝ”;˜tÑ$Ô$×(Ò(Ñ*Ô*ð Ý(ðVÐTWð Vð VÝGSðVð Vñô ð ð
 6<¸C´[ˆDÔ Ð!1¨3Ð!1Ð!1Ð!1Ñ2Ð2ð		Að 		Ar>   Úoutc                 ó‚  — | j         r²|rt          d¦  «        ‚g }| j                             ¦   «         D ][\  }}|j        €t          d¦  «        ‚t          j        |j        ¦  «                             ¦   «         r|                     |¦  «         Œ\|r&t          dd 
                    |¦  «        › d�¦  «        ‚d S g }t          |¦  «        D ]K\  }}t          j        |¦  «                             ¦   «         r |                     | j        |         ¦  «         ŒL|r&t          dd 
                    |¦  «        › d�¦  «        ‚d S )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‚   rw   ÚRuntimeErrorÚjoinÚ	enumerater\   )r]   r†   Ú
nan_paramsÚ
inputs_strÚparamÚ	nan_gradsÚir€   s           r?   ÚcheckzNaNChecker.checkº   s‡  € ØÔð 	àð Ý$ØHñô ð ð %'ˆJØ%)Ô%9×%?Ò%?Ñ%AÔ%Að 2ð 2Ñ!�
˜EØ”:Ð%Ý(ØNñô ð õ ”;˜uœzÑ*Ô*×.Ò.Ñ0Ô0ð 2Ø×%Ò% jÑ1Ô1Ð1øàð Ý"ØgÐPS×PXÒPXÐYcÑPdÔPdÐgÐgÐgñô ð ðð ð $&ˆIÝ$ S™>œ>ð ;ð ;‘��4Ý”;˜tÑ$Ô$×(Ò(Ñ*Ô*ð ;Ø×$Ò$ TÔ%6°qÔ%9Ñ:Ô:Ð:øàð Ý"ØhÐRU×RZÒRZÐ[dÑReÔReÐhÐhÐhñô ð ðð r>   )Ú__name__Ú
__module__Ú__qualname__rr   r^   r8   ÚfxÚGraphr|   ÚtupleÚTensorr…   r“   r=   r>   r?   rW   rW   ~   sÅ   € € € € € ð*¨ð *°ð *ð *ð *ð *ð"A U¤X¤^ð "A¸ð "Að "Að "Að "AðHA u¨U¬\¸3Ð->Ô'?ð AÀDð Að Að Að Að"˜˜uœ|¨SÐ0Ô1ð °dð ð ð ð ð ð r>   rW   c            
       óR   — 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	dS )ÚOpNamespacer6   Nc                 ó,   — t          ¦   «         | _        d S rB   )r   Úcustom_function_name_counter©r]   s    r?   r^   zOpNamespace.__init__á   s   € Ý:A¹)¼)ˆÔ)Ð)Ð)r>   ri   Úfn.Úis_custom_functionÚis_traceablec                 ó¶  ‡— |r-d|z   }| j         |         }| j         |xx         dz  cc<   |› |› �}t          | |¦  «        rt          d|› d�¦  «        ‚t          |||¦  «        Š|r/t	          | |t
          j                             ‰¦  «        ¦  «         nCt
          j        j        dt          dt          dt          fˆfd„¦   «         }t	          | ||¦  «         |S )	NÚCppNoderg   zOp with name 'z' already existsrq   Úkwargsr6   c                  ó   •—  ‰| i |¤ŽS rB   r=   )rq   r¥   Úresults     €r?   Úrun_non_traceable_cpp_in_eagerz7OpNamespace.add.<locals>.run_non_traceable_cpp_in_eagerú   s   ø€ à�v˜tÐ. vÐ.Ð.Ð.r>   )
rž   ÚhasattrrT   ÚOpÚsetattrr8   Ú_dynamoÚallow_in_graphÚdisabler   )r]   ri   r    r¡   r¢   Úcountr¨   r§   s          @r?   ÚaddzOpNamespace.addä   s  ø€ ð ð 	$Ø˜tÑ#ˆDØÔ5°dÔ;ˆEØÔ-¨dÐ3Ð3Ô3°qÑ8Ð3Ð3Ñ3ØÐ#˜EÐ#Ð#ˆDå�4˜ÑÔð 	JÝ Ð!H°$Ð!HÐ!HÐ!HÑIÔIÐIÝ�D˜"Ð0Ñ1Ô1ˆØð 
	@å�D˜$¥¤× <Ò <¸VÑ DÔ DÑEÔEÐEÐEõ Œ]Ô"ð/µcð /ÅSð /ÍSð /ð /ð /ð /ð /ñ #Ô"ð/õ �D˜$Ð >Ñ?Ô?Ð?Øˆr>   c                 ó"   — t          | |¦  «        S rB   )Úgetattr)r]   ri   s     r?   ÚgetzOpNamespace.get  s   € Ý�t˜TÑ"Ô"Ð"r>   ©r6   N)
r”   r•   r–   r^   Ústrr   r   rr   r°   r³   r=   r>   r?   rœ   rœ   à   s›   € € € € € ðDð Dð Dð Dðàðð �S˜#�XÔðð !ð	ð
 ðð 
ðð ð ð ð:#˜ð # ð #ð #ð #ð #ð #ð #r>   rœ   c                   óV   — 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	dS )rª   ri   r    .r¡   r6   Nc                 ó>   — || _         || _        || _        d| _        d S )Nz#torch._dynamo.compiled_autograd.ops)r    r¡   r”   r•   )r]   ri   r    r¡   s       r?   r^   zOp.__init__  s%   € ð ˆŒØ"4ˆÔØˆŒØ?ˆŒˆˆr>   rq   r¥   c                 ó   —  | j         |i |¤ŽS rB   )r    )r]   rq   r¥   s      r?   Ú__call__zOp.__call__  s   € ØˆtŒ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   rr   r^   r¹   r»   r=   r>   r?   rª   rª     s�   € € € € € ð@Øð@Ø% c¨3 hÔ/ð@ØEIð@à	ð@ð @ð @ð @ð(˜cð (¨Sð (°Sð (ð (ð (ð (ð5˜#ð 5ð 5ð 5ð 5ð 5ð 5r>   rª   )r}   ÚsizesÚscalarsÚhooksÚpacked_dataÚcompiled_autograd_idc           	      óZ   — 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j        j        j        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j'        j(        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j'        j0        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j'        j9                 fdY„¦   «         Z:edRej'        j9        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j        jG        dz  ddfdl„ZHdS )oÚAutogradCompilerInstanceÚcompiler_fn.r6   Nc                 ó,  — || _         t          j        ¦   «         | _        | j        j        | _        t          ¦   «         | _        t          dd| j        ¬¦  «        | _        t          ¦   «         | _
        t          | j
        d¦  «        | _        d | _        d S )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  sƒ   € Ø&ˆÔÝÔ)Ñ+Ô+ˆŒ
Ø”ZÔ%ˆŒ
Ý!™œˆŒÝ .Ø#'Ø"&Ø”nð!
ñ !
ô !
ˆÔõ
 )Ñ*Ô*ˆŒÝ0°´ÀÑLÔLˆŒØ)-ˆÔÐÐr>   rH   Úsourcec                 ó¬   — t          |t          j        ¦  «        st          dt	          |¦  «        › �¦  «        ‚| j                             ||¬¦  «        S )NúExpected torch.Tensor, got )rÕ   )rM   r8   rš   rT   rv   rÑ   Úfrom_tensor)r]   rH   rÕ   s      r?   Ú	wrap_fakez"AutogradCompilerInstance.wrap_fake@  sP   € Ý˜!�Uœ\Ñ*Ô*ð 	JÝ Ð!H½tÀA¹w¼wÐ!HÐ!HÑIÔIÐIØÔ$×0Ò0°¸6Ð0ÑBÔBÐBr>   ri   r„   c                 ó<   — t          t          | ¦  «        |¦  «        S rB   r   )ri   r„   s     r?   rÕ   zAutogradCompilerInstance.sourceE  s   € å�[¨Ñ.Ô.°Ñ4Ô4Ð4r>   r}   r¼   r½   ÚoriginsrX   Ú
check_nansc                 ó’
  ‡ — t           d         dxx         dz  cc<   t          t          ¦  «        ‰ _        t	          t
          ¦  «        ‰ _        t          ‰ j        ¦  «        ‰ _        ‰ j         	                    ¦   «          |rt          |¦  «        nd ‰ _        t          j        ¦   «         ‰ _        t          ¦   «                              d‰ j        d‰ j        id¬¦  «         t"          j                             ¦   «         ‰ j        _        t"          j                             t0          ¬¦  «        ‰ j        _        i ‰ j        _        i ‰ _        ˆ fd„t8          D ¦   «         \  }‰ _        ‰ _        ‰ _        ‰ _         ‰ j!         "                    tG          ¦   «         ¦  «         |\  }}	}
‰ j!         "                    tI          ¦   «         ¦  «         |d	         }	 tK          |¦  «        D ]2\  }}‰  &                    |‰  '                    d
|¦  «        ¦  «        ||<   Œ3n:# tP          $ r-}tS          dtU          |¦  «        › dtV          › �¦  «        |‚d }~ww xY w‰  ,                    |||¦  «         ˆ fd„tK          |¦  «        D ¦   «         }ˆ fd„t[          t]          |¦  «        ¦  «        D ¦   «         }tK          |¦  «        D ][\  }}‰ j         /                    dt`          ||         fi ¦  «        ||<   tc          |t
          ¦  «        s||         ‰ j        |j2        <   Œ\‰  ,                    |||	¦  «        }tK          |¦  «        D ]Ñ\  }}‰  '                    d|¦  «        }tc          |t
          ¦  «        r*‰ j3         4                    ||tj          j6        ¦  «        ||<   ŒZtc          |tn          ¦  «        rF‰ j3         8                    ‰ j3         9                    ||tj          j6        ¬¦  «        ||¬¦  «        ||<   Œµtu          dtU          |¦  «        ¦  «        ‚‰  ,                    |‰ j        |
¦  «         tK          |¦  «        D ]\  }}‰ j        |         ‰ j        |j2        <   Œ ‰ j!         "                    ‰ j;        ¦  «         ‰ j!         "                    ‰ j<        ¦  «         ‰ j!         "                    t{          ¦   «         ¦  «         ‰ j;        j3        €tu          d¦  «        ‚‰ j;        j3        }‰ j!         "                    t"          j        j>        j?         @                    |¦  «        ¦  «         tƒ          t…          jC        ¦   «         ¦  «        |||fS )Nr4   Úcapturesrg   Úgraph_idT©Úlog_pt2_compile_event)Ú
tracer_clsc              3   óR   •K  — | ]!}‰j                              d |di ¦  «        V — Œ"dS )Úplaceholderr=   N)rÒ   Úcreate_proxy)rj   ri   r]   s     €r?   ú	<genexpr>z9AutogradCompilerInstance.begin_capture.<locals>.<genexpr>i  sM   øè è € ð 
ð 
àð ŒN×'Ò'¨°t¸RÀÑDÔDð
ð 
ð 
ð 
ð 
ð 
r>   r   r}   zFound tensor of type z,, which is not supported by FakeTensorMode. c           	      óŠ   •— g | ]?\  }}‰j                              |‰                     d |¦  «        t          j        ¦  «        ‘Œ@S )r¼   )rË   Ú$create_unspecified_symint_and_symbolrÕ   r+   ÚDYNAMIC)rj   r„   Úvalr]   s      €r?   rl   z:AutogradCompilerInstance.begin_capture.<locals>.<listcomp>�  s[   ø€ ð 
ð 
ð 
ñ ��Sð ŒN×?Ò?ØØ—’˜G SÑ)Ô)ÝÔ"ñô ð
ð 
ð 
r>   c                 ó*   •— g | ]}‰j         |         ‘ŒS r=   )Úsizes_proxy)rj   r’   r]   s     €r?   rl   z:AutogradCompilerInstance.begin_capture.<locals>.<listcomp>�  s!   ø€ ÐFÐFÐF¨1�4Ô# AÔ&ÐFÐFÐFr>   ra   r½   )rÕ   Údynamic_dim)ÚhintrÕ   zUnexpected scalar type: z+fake_tensor_mode.shape_env must not be None)Dr   rm   ÚCOMPILE_COUNTERÚidr   ru   Ú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_placeholdersrì   Úscalars_proxyrÔ   Úpacked_data_proxyrÏ   Úenter_contextr-   r
   r�   rÙ   rÕ   Ú	ExceptionÚNotImplementedErrorrv   rƒ   Úbind_objects_to_proxiesÚrangeÚlenrå   r   rM   rk   rË   rè   r+   ré   ÚfloatÚcreate_symfloatnodeÚcreate_unspecified_symbolrT   rÑ   rÓ   r%   ÚexperimentalÚsymbolic_shapesÚ_suppress_guardsrµ   r   Úcurrent_compile_id)r]   r}   r¼   r½   rÛ   rX   rÜ   Ú
args_proxyÚinputs_originsÚsizes_originsÚscalars_originsrH   r„   ÚeÚ	sym_sizesÚproxiesr’   Úsymintrê   rÕ   ÚsymvalÚenvs   `                     r?   Úbegin_capturez&AutogradCompilerInstance.begin_captureI  sY  ø€ õ 	Ð$Ô% jÐ1Ð1Ô1°QÑ6Ð1Ð1Ñ1Ý•Ñ'Ô'ˆŒÝ.9½#Ñ.>Ô.>ˆÔÝ3°D´GÑ<Ô<ˆÔØÔ×&Ò&Ñ(Ô(Ð(Ø:DÐN�: oÑ6Ô6Ð6È$ˆÔÝ!œ\™^œ^ˆÔÝ!Ñ#Ô#×3Ò3ØØÔØ˜œÐ!Ø"&ð	 	4ñ 	
ô 	
ð 	
õ $œhŸošoÑ/Ô/ˆŒÔÝ$œxŸ~š~½˜~ÑIÔIˆŒÔØ&(ˆŒÔ#Ø$&ˆÔ!ð
ð 
ð 
ð 
å+ð
ñ 
ô 
ñ	
ØØÔØÔØÔØÔ"ð 	Œ
× Ò Õ!3Ñ!5Ô!5Ñ6Ô6Ð6Ø9@Ñ6ˆ˜ ð 	Œ
× Ò Õ!9Ñ!;Ô!;Ñ<Ô<Ð<ð �1ŒIˆð	Ý# FÑ+Ô+ð Lð L‘��QØ"Ÿnšn¨Q°·²¸HÀcÑ0JÔ0JÑKÔK��s‘�ðLøåð 	ð 	ð 	Ý%Øk­¨Q©¬ÐkÐkÕ]iÐkÐkñô àðøøøøð	øøøð 	×$Ò$ V¨Z¸ÑHÔHÐHð
ð 
ð 
ð 
õ & eÑ,Ô,ð
ñ 
ô 
ˆ	ð GÐFÐFÐFµµc¸)±n´nÑ0EÔ0EÐFÑFÔFˆÝ" 9Ñ-Ô-ð 	Dð 	D‰IˆAˆvØœ×4Ò4ØÝ(Ø˜”�Øñ	ô ˆG�A‰Jõ ˜f¥cÑ*Ô*ð DØ9@À¼�Ô)¨&¬+Ñ6øØ×.Ò.¨y¸'À=ÑQÔQˆå! 'Ñ*Ô*ð 	Lð 	L‰HˆC�Ø—[’[ ¨CÑ0Ô0ˆFÝ˜#�sÑ#Ô#ð LØ#œ~×RÒRØØÝÔ&ñ ô  �˜‘�õ
 ˜C¥Ñ'Ô'ð LØ#œ~×AÒAØ”N×<Ò<ØØ%Ý$.Ô$6ð =ñ ô ð
 Ø!ð  Bñ  ô  �˜‘�õ %Ð%?ÅÀcÁÄÑKÔKÐKØ×$Ò$ W¨dÔ.@À/ÑRÔRÐRÝ" 7Ñ+Ô+ð 	Kð 	K‰IˆAˆvØ59Ô5GÈÔ5JˆDÔ% f¤kÑ2Ð2ð 	Œ
× Ò  Ô!6Ñ7Ô7Ð7ØŒ
× Ò  ¤Ñ1Ô1Ð1ØŒ
× Ò Õ!7Ñ!9Ô!9Ñ:Ô:Ð:àÔ Ô*Ð2Ý Ð!NÑOÔOÐOØÔ#Ô-ˆØŒ
× Ò ÝŒHÔ!Ô1×BÒBÀ3ÑGÔGñ	
ô 	
ð 	
õ
 •Ô1Ñ3Ô3Ñ4Ô4ØØØð	
ð 	
s   ÇAH È
IÈ!(I	É	IÚcompile_reasonsc                 óV   ‡— ‰st          d¦  «        ‚t          dd„ ˆfd„¬¦  «         d S )Nz!compile_reasons must not be emptyÚartifactc                  ó   — dddœS )NÚ!compiled_autograd_compile_reasonsÚjson©ri   Ú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Ä  sY   ø€ ð ð 	FÝ Ð!DÑEÔEÐEÝØðð ð /Ð.Ð.Ð.ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
r>   ÚpinputsÚpsaved_tensorsÚsaved_tensorsÚpctxÚctxÚmaybe_backward_state_idxÚopaque_object_indicesc                 ó¸  ‡ ‡‡‡‡‡‡— ˆ fd„‰                      ¦   «         D ¦   «         }ˆ fd„|D ¦   «         }	‰j        }
t          |
¦  «        Š|
j        }|
j        }|
j        Š|
j        Š|
j        }~
t          j	        ¦   «         r |j
        D ]}|j        rt          d¦  «        ‚Œt          j        j        dt          t          j                 dt          t"                   dt          t$                   dt          t$                   dt$          f
ˆfd	„¦   «         }‰ j                             d
||||	|fi ¬¦  «        Šd Š|�‰ j        |         Šdt,          t          j                 fˆˆˆˆˆˆ fd„} |¦   «         }|�@dt$          dt.          dt          t$                   dt          j        fˆ fd„} |||¬¦  «        }n ||¦  «        }t1          j        ‰ j        |¦  «        }|S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r=   ©Úto_proxy©rj   r  r]   s     €r?   rl   zDAutogradCompilerInstance.proxy_call_aot_backward.<locals>.<listcomp>è  s%   ø€ ÐSÐSÐS¨�D—M’M !Ñ$Ô$ÐSÐSÐSr>   c                 ó*   •— g | ]}‰j         |         ‘ŒS r=   )rÔ   )rj   r„   r]   s     €r?   rl   zDAutogradCompilerInstance.proxy_call_aot_backward.<locals>.<listcomp>ê  s1   ø€ ð 
ð 
ð 
àð Ô˜SÔ!ð
ð 
ð 
r>   z@torch.compile does not currently support higher order gradients.Úctx_saved_tensorsÚctx_symintsÚctx_opaque_objsÚ	flat_argsr6   c                 ó    •—  ‰| |||¦  «        S rB   r=   )r3  r4  r5  r6  Úbw_prologue_fns       €r?   Úcall_aot_bwd_prologuezOAutogradCompilerInstance.proxy_call_aot_backward.<locals>.call_aot_bwd_prologue   s%   ø€ ð "�>Ø!ØØØñ	ô ð r>   ra   ©Úkindrd   rq   r¥   c            	      ó  •‡‡‡— dt           j        j        dt          fd„}  | ‰j        ¦  «        }ˆfd„t          |t          ‰d u¦  «        z
  ¦  «        D ¦   «         }‰                     ¦   «         }t          |¦  «        t          ‰j        ¦  «        k    r4t          dt          |¦  «        › dt          ‰j        ¦  «        › �¦  «        ‚ˆfd„|D ¦   «         }||d t          |¦  «        …<   ‰�| 
                    ‰¦  «         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}|j        dk    r-||         j        }	 ||j        ¦  «        |	_        |	‰|<   |d
z  }Œ;|j        dk    rWt          |j        ¦  «        d
k    r$t          dt          |j        ¦  «        › �¦  «        ‚ˆˆfd„|j        d         D ¦   «         }Œ�|j        dk    rƒ|j        }
‰j                             |
¦  «        }t+          ‰j        j        |t/          ‰|
¦  «        ¦  «         ‰j                             d|di ¦  «        } ||j        ¦  «        |_        |‰|<   �Œ+|j        dk    r�|j        t           j        j        j        j        u r t           j        j        j        j        |_        ‰j        j                             |ˆfd„¦  «        } ||j        ¦  «        |_        |‰|<   �Œ·|j        dk    r{|j        }
‰j                             |
¦  «        }t+          ‰j        j        |t/          ‰|
¦  «        ¦  «         ‰j        j                             |ˆfd„¦  «        }||_        |‰|<   �Œ=t          d¦  «        ‚|€t          d¦  «        ‚dt           j        fd„Šˆfd„|D ¦   «         }‰                      ||¦  «         |S )Nr_   r6   c                 ó@   — d}| j         D ]}|j        dk    r|dz  }Œ |S )Nr   rä   rg   )ro   rc   )r_   Únum_argsrk   s      r?   Ú
num_inputszkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.num_inputs!  s9   € Ø�Ø!œKð ð �DØ”w -Ò/Ð/Ø  A™˜Ø àØ�r>   c                 ó    •— g | ]
}‰|         ‘ŒS r=   r=   )rj   r’   Úpgradss     €r?   rl   zkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<listcomp>.  s*   ø€ ð ð ð Ø��q”	ðð ð r>   zsymints length mismatch: z vs c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r=   r/  r1  s     €r?   rl   zkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<listcomp>7  s%   ø€ Ð:Ð:Ð:¨Q˜Ÿš aÑ(Ô(Ð:Ð:Ð:r>   r   Ú_rg   Ú	node_namec                 ó   •— d‰› d| › �S )NÚaotrC  r=   )rD  Údeduped_aot_ids    €r?   Úmake_uniquezlAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.make_uniqueK  s   ø€ à9˜^Ð9Ð9¨iÐ9Ð9Ð9r>   rä   re   z(Expected output node to have 1 arg, got c                 ó¨   •— g | ]N}t          |t          j        j        ¦  «        r+t          j                             ‰|         ‰j        ¦  «        n|‘ŒOS r=   )rM   r8   r—   ÚNoder3   rÒ   )rj   Únr]   Úvalue_remaps     €€r?   rl   zkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<listcomp>Z  s\   ø€ ð  ð  ð  ð õ & a­¬¬Ñ7Ô7ð�œŸš {°1¤~°t´~ÑFÔFÐFàð ð  ð  r>   Úget_attrr=   ra   c                 ó   •— ‰|          S rB   r=   ©rK  rL  s    €r?   r   ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>n  ó   ø€ ¨°A¬€ r>   Úcall_modulec                 ó   •— ‰|          S rB   r=   rO  s    €r?   r   ziAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<lambda>w  rP  r>   zshouldn't get herez&No output node found in backward graphc                  ó‚   — t          ¦   «         5  t          j        ddddd¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   é{   ©r&   r8   Úzerosr=   r>   r?   ÚdummyzfAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.dummyƒ  s‡   € Ý0Ñ2Ô2ð 8ð 8Ý œ; q¨!¨Q°°3Ñ7Ô7ð8ð 8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8ð 8ð 8s   �4´8»8c                 óf   •— g | ]-}t          |t          j        j        ¦  «        r
 ‰¦   «         n|‘Œ.S r=   )rM   r8   r—   r3   )rj   ÚorW  s     €r?   rl   zkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph.<locals>.<listcomp>‡  sC   ø€ ð ð ð ØDE�: a­¬¬Ñ8Ô8Ð?��‘”�¸aðð ð r>   )!r8   r—   r˜   ru   r_   r  Ú_get_compiled_autograd_symintsr  ÚsymintsrT   rw   rµ   rñ   ro   rc   rk   ri   rq   rd   rÒ   Úget_fresh_qualnamer«   rú   r²   Úcreate_nodeÚopsÚatenÚviewÚdefaultÚreshapeÚ	node_copyrš   r  )r?  r>  Ú	pall_argsr[  ÚpsymintsÚargs_idxÚpoutputsrH  rk   Úphri   Úqualnamer§   ÚoutputsrG  rW  rL  Úaot_idrO   r*  Úpbackward_staterA  r]   s                 @@@€€€€€€r?   Úcopy_paste_aot_backward_graphzWAutogradCompilerInstance.proxy_call_aot_backward.<locals>.copy_paste_aot_backward_graph   s¯  øøøø€ ð ¥%¤(¤.ð  µSð  ð  ð  ð  ð "�z )¤/Ñ2Ô2ˆHðð ð ð Ý#(¨µC¸ÈtÐ8SÑ4TÔ4TÑ)TÑ#UÔ#Uðñ ô ˆIð ×8Ò8Ñ:Ô:ˆGÝ�7‰|Œ|�s 3¤;Ñ/Ô/Ò/Ð/Ý$ØTµ°G±´ÐTÐTÅ#ÀcÄkÑBRÔBRÐTÐTñô ð ð ;Ð:Ð:Ð:°'Ð:Ñ:Ô:ˆHØ(0ˆI�n�˜G™œ�nÑ%àÐ*Ø× Ò  Ñ1Ô1Ð1ð ˆHàˆKØ48ˆHõ ! ™[œ[ˆNØÔ" 6Ô*ð DØÐ"C dÔ&9¸&Ô&AÐ"CÐ"CÑC�ØÔ Ð'Ð'Ô'¨1Ñ,Ð'Ð'Ñ'ð:¥sð :­sð :ð :ð :ð :ð :ð :ð "œÔ-ð -?ñ -?�Ø”7˜mÒ+Ð+Ø" 8Ô,Ô1�BØ)˜k¨$¬)Ñ4Ô4�B”GØ(*�K Ñ%Ø ‘M�H�HØ”W Ò(Ð(Ý˜4œ9‘~”~¨Ò*Ð*Ý,ØWÅsÈ4Ì9Á~Ä~ÐWÐWñô ð ð ð  ð  ð  ð  ð "&¤¨1¤ð	 ñ  ô  �H�Hð ”W 
Ò*Ð*Øœ;�DØ#œ~×@Ò@ÀÑFÔF�HÝ˜DœNÔ/°½7À9ÈdÑ;SÔ;SÑTÔTÐTØ!œ^×7Ò7¸
ÀHÈbÐRTÑUÔU�FØ"- +¨d¬iÑ"8Ô"8�F”KØ(.�K Ñ%Ñ%Ø”W Ò/Ð/Ø”{¥e¤i¤nÔ&9Ô&AÐAÐAõ ',¤i¤nÔ&<Ô&D˜œØ!œ^Ô1×;Ò;ØÐ6Ð6Ð6Ð6ñô �Fð #. +¨d¬iÑ"8Ô"8�F”KØ(.�K Ñ%Ñ%Ø”W Ò-Ð-Øœ;�DØ#œ~×@Ò@ÀÑFÔF�HÝ˜DœNÔ/°½7À9ÈdÑ;SÔ;SÑTÔTÐTØ!œ^Ô1×;Ò;ØÐ6Ð6Ð6Ð6ñô �Fð %-�F”MØ(.�K Ñ%Ñ%å(Ð)=Ñ>Ô>Ð>àÐÝ$Ð%MÑNÔNÐNð8�5œ<ð 8ð 8ð 8ð 8ðð ð ð ØIQðñ ô ˆGð ×(Ò(¨°(Ñ;Ô;Ð;ØˆNr>   Úsubclass_metaÚ
is_runtimeÚunwrapped_argsc                 óF  •‡ ‡— t           j        j        dt          dt          fˆˆ fd„¦   «         }t	          j        ‰j        |¦  «        }‰j                             d|t          |¦  «        i ¬¦  «        }‰ 
                    ¦   «         }‰                     |g|g¦  «         |S )Nrp  r6   c                  ó2   •— ‰                      | ‰¬¦  «        S )N)ro  )Úcreation_fn)rp  ro  rn  s    €€r?   Úmake_subclasszkAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructor.<locals>.make_subclass–  s%   ø€ à(×4Ò4Ø&°:ð 5ñ ô ð r>   ra   r:  )r8   r¬   r­   r   ÚpytreeÚtree_mapr0  rÒ   rå   r™   Úallocate_dummyr  )rn  ro  rp  rt  Úpunwrapped_argsÚpoutputre   r]   s   ``     €r?   Úproxy_subclass_constructorzTAutogradCompilerInstance.proxy_call_aot_backward.<locals>.proxy_subclass_constructor‘  s¿   øøø€ õ
 ”Ô-ðµ3ð ½3ð ð ð ð ð ð ñ .Ô-ðõ
 #)¤/°$´-ÀÑ"PÔ"P�àœ.×5Ò5Ø(à(Ý˜Ñ/Ô/Øð 6ñ ô �ð ×,Ò,Ñ.Ô.�Ø×,Ò,¨f¨X¸°yÑAÔAÐAØ�r>   )Úmake_subclass_override)rZ  Ú_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å   rÔ   Úlistrr   ru  rv  r0  )r]   r&  r'  r(  r)  r*  r+  r,  re  Úpopaque_objectsrK   r}  r~  Úbw_epilogue_fnÚoutput_alias_infor9  rm  rj  rz  ÚresultsÚpresultsrk  rO   r8  rl  rA  s   `    `               @@@@@r?   Úproxy_call_aot_backwardz0AutogradCompilerInstance.proxy_call_aot_backwardÓ  s§  øøøøøøø€ ð* TÐSÐSÐS¨c×.PÒ.PÑ.RÔ.RÐSÑSÔSˆð
ð 
ð 
ð 
à,ð
ñ 
ô 
ˆð Ô+ÐÝ%Ð&6Ñ7Ô7ˆ	Ø#Ô,ˆØ"2Ô"JÐØ!Ô)ˆØ)Ô9ˆØ)Ô9ˆØåÔ Ñ"Ô"ð 	Ø%-Ô%9ð ð Ð!Ø$Ô2ð Ý&ØZñô ð ðõ
 
ŒÔ	%ð	Ý'­¬Ô5ð	å!¥+Ô.ð	õ &¥cœ]ð	õ  ¥”}ð		õ
 ð	ð 	ð 	ð 	ð 	ñ 
&Ô	%ð	ð ”×,Ò,Ø à(àØØØð	ð ð -ñ 
ô 
ˆð ˆØ#Ð/Ø"Ô.Ð/GÔHˆOðk	­tµE´LÔ/Að k	ð k	ð k	ð k	ð k	ð k	ð k	ð k	ð k	ð k	ð k	ðZ 0Ð/Ñ1Ô1ˆà"Ð.ðÝ"ðå ðõ !)­¤ðõ ”ð	ð ð ð ð ð ð2 %�nØÐ0Jðñ ô ˆGˆGð %�n WÑ-Ô-ˆGå”? 4¤=°'Ñ:Ô:ˆØˆr>   Úoutput_metadatasÚbackward_idxc           
      ó>  — | j         €t          d¦  «        ‚| j         |         }|                      |¦  «        }	|                      |¦  «        }
t          |j        d¦  «        r|                      |	|
|||||¦  «        }n[t          |j        dd¦  «        rt          d|j        j        › d�¦  «        ‚| j	         
                    dt          ||
g|	¢R i ¬¦  «        }|€t          d	¦  «        ‚t          ¦   «         5  g }t          |¦  «        D ]W\  }}|�||         €|                     d ¦  «         Œ%|\  }}}}|                     t          j        ||||¬
¦  «        ¦  «         ŒX|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   t%          |¦  «        S )Nz2hooks_proxy must be set before proxy_call_backwardr  Úboxed_grads_callFzboxed_grads_call=True on z* is not supported with compiled autograd. ra   r:  z,proxies must not be None after backward call)ÚsizeÚdtypeÚlayoutÚdevice)rÔ   rT   r0  r©   r|  r‹  r²   r‹   r”   rÒ   rå   r   r&   r�   rw   r8   Úemptyr  r™   )r]   r}   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ÐVØÔ Ô-ˆØ—-’- Ñ'Ô'ˆØŸš }Ñ5Ô5ˆÝ�3Ô# YÑ/Ô/ð 	à×2Ò2ØØØØØØ(Ø%ñô ˆGˆGõ �sÔ'Ð);¸UÑCÔCð Ý"ð@°Ô0@Ô0Ið @ð @ð @ñô ð ð ”n×1Ò1Ø$Ý$àØ"ðð ðð ð
 ð 2ñ 	ô 	ˆGð ˆ?Ý Ð!OÑPÔPÐPå(Ñ*Ô*ð 	<ð 	<à24ˆHÝ(1Ð2BÑ(CÔ(Cð ð Ñ$��_Ø"Ð*¨g°c¬lÐ.BØ—O’O DÑ)Ô)Ð)Øà.=Ñ+�˜  tØ—’Ý”K T°¸vÈfÐUÑUÔUñô ð ð ð ×(Ò(¨°7Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<õ �X‰ŒÐs   Ã9B FÆF	ÆF	Ú
base_sizesÚbase_stridesÚbase_storage_offsetÚ
view_sizesÚview_stridesÚview_storage_offsetc           	      ó8  — ||                       |¦  «        |                       |¦  «        |                       |¦  «        |                       |¦  «        |                       |¦  «        |                       |¦  «        f}|                      t          |d gdz  ¦  «        S )Né   )r0  Ú
proxy_callÚcopy_slices_prologue)	r]   r}   r˜  r™  rš  r›  rœ  r�  rq   s	            r?   Úcall_copy_slices_prologuez2AutogradCompilerInstance.call_copy_slices_prologueï  s‰   € ð Ø�MŠM˜*Ñ%Ô%Ø�MŠM˜,Ñ'Ô'Ø�MŠMÐ-Ñ.Ô.Ø�MŠM˜*Ñ%Ô%Ø�MŠM˜,Ñ'Ô'Ø�MŠMÐ-Ñ.Ô.ð
ˆð �ŠÕ3°T¸D¸6ÀA¹:ÑFÔFÐFr>   Úneeds_input_gradr§   ÚresÚ
grad_slicec                 ód   — |                       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  s<   € ð �ŠÝ Ø˜v s¨JÐ7ØˆF•SÐ)Ñ*Ô*Ñ*ñ
ô 
ð 	
r>   c                 ó~   — t          ¦   «         5  t          j        ddg¦  «        cd d d ¦  «         S # 1 swxY w Y   d S )Nr   iÍ[rU  rŸ   s    r?   rw  z'AutogradCompilerInstance.allocate_dummy  sƒ   € Ý(Ñ*Ô*ð 	/ð 	/å”;  9˜~Ñ.Ô.ð	/ð 	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð 	/ð 	/s   �2²6¹6c                 óz   — t          ¦   «         5  t          j        |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S rB   )r&   r8   Ú
empty_like)r]   rH   s     r?   Úallocate_dummy_likez,AutogradCompilerInstance.allocate_dummy_like  s€   € Ý(Ñ*Ô*ð 	'ð 	'ÝÔ# AÑ&Ô&ð	'ð 	'ð 	'ð 	'ñ 	'ô 	'ð 	'ð 	'ð 	'ð 	'ð 	'ð 	'øøøð 	'ð 	'ð 	'ð 	'ð 	'ð 	's   �0°4·4Úfn_namer    r¡   r¢   c                 ó<   — t                                ||||¦  «        S )zBinds ops.fn_name = fn)r^  r°   )r]   r­  r    r¡   r¢   s        r?   Úbind_functionz&AutogradCompilerInstance.bind_function  s   € õ �wŠw�w Ð$6¸ÑEÔEÐEr>   Úgradsrq   r–  c                 ól   — t                                |¦  «        }|                      ||g|¢R |¦  «        S )z:Proxies a call to ops.fn_name(grads, *args) into the graph)r^  r³   r   )r]   r­  r°  rq   r–  rc   s         r?   Úapply_functionalz)AutogradCompilerInstance.apply_functional$  s3   € õ �WŠW�WÑÔˆØ�Š˜r E >¨D > >°?ÑCÔCÐCr>   c           	      ó
  ‡ ‡— t          j        ˆ fd„|¦  «        }‰ j                             d||i ¬¦  «        Šˆ fd„|D ¦   «         }‰                      |ˆfd„t          t          |¦  «        ¦  «        D ¦   «         ¦  «         |S )z*Proxies a call to fn(*args) into the graphc                 ó.   •— ‰                      | ¦  «        S rB   r/  )r  r]   s    €r?   r   z5AutogradCompilerInstance.proxy_call.<locals>.<lambda>3  s   ø€ ¨t¯}ª}¸QÑ/?Ô/?€ r>   ra   ©rq   r¥   c                 ó8   •— g | ]}‰                      ¦   «         ‘ŒS r=   )rw  )rj   rC  r]   s     €r?   rl   z7AutogradCompilerInstance.proxy_call.<locals>.<listcomp>7  s%   ø€ ÐAÐAÐA¨A�$×%Ò%Ñ'Ô'ÐAÐAÐAr>   c                 ó    •— g | ]
}‰|         ‘ŒS r=   r=   )rj   r’   Ú	proxy_outs     €r?   rl   z7AutogradCompilerInstance.proxy_call.<locals>.<listcomp>8  s   ø€ Ð-WÐ-WÐ-W¸q¨i¸¬lÐ-WÐ-WÐ-Wr>   )ru  rv  rÒ   rå   r  r  r  )r]   r    rq   r–  Ú
proxy_argsr§   r¸  s   `     @r?   r   z#AutogradCompilerInstance.proxy_call/  s    øø€ õ ”_Ð%?Ð%?Ð%?Ð%?ÀÑFÔFˆ
Ø”N×/Ò/Ø˜R j¸ð 0ñ 
ô 
ˆ	ð BÐAÐAÐA°ÐAÑAÔAˆØ×$Ò$ VÐ-WÐ-WÐ-WÐ-WÅEÍ#ÈfÉ+Ì+ÑDVÔDVÐ-WÑ-WÔ-WÑXÔXÐXØˆr>   rC  rj  c                 ó~  — t                                d¦  «        }t          j        | j        |g|¢R ¦  «        }| j                             d||i ¬¦  «        }t          |¦  «        t          |¦  «        k    r0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚|  	                    ||¦  «         |S )zEProxies a call to ops.validate_outputs(outputs, *args) into the graphÚvalidate_outputsra   rµ  zoutput_metadata length (z) != outputs length (ú))
r^  r³   ru  rv  r0  rÒ   rå   r  rT   r  )r]   rC  rj  rq   r–  rc   r¹  Únew_proxy_outputss           r?   r»  z)AutogradCompilerInstance.validate_outputs;  sÍ   € õ �WŠWÐ'Ñ(Ô(ˆÝ”_ T¤]°WÐ4D¸tÐ4DÐ4DÑEÔEˆ
Ø œN×7Ò7Ø˜R j¸ð 8ñ 
ô 
Ðõ ˆÑÔ¥3 w¡<¤<Ò/Ð/Ý Øe­3¨Ñ+?Ô+?ÐeÐeÕVYÐZaÑVbÔVbÐeÐeÐeñô ð ð 	×$Ò$ WÐ.?Ñ@Ô@Ð@Øˆr>   Úold_varÚnew_varc                 ó  — |                       |¦  «        }|                       |¦  «        }| j                             dt          j        ||fi ¬¦  «        }|                      ¦   «         }|                      |g|g¦  «         |S ©Nra   rµ  )r0  rÒ   rå   r8   r°   rw  r  )r]   r¾  r¿  Úold_var_proxyÚnew_var_proxyr¸  r§   s          r?   Ú
accumulatez#AutogradCompilerInstance.accumulateK  sƒ   € ØŸš gÑ.Ô.ˆØŸš gÑ.Ô.ˆØ”N×/Ò/Ø�UœY¨m¸]Ð-KÐTVð 0ñ 
ô 
ˆ	ð ×$Ò$Ñ&Ô&ˆØ×$Ò$ f X°	¨{Ñ;Ô;Ð;Øˆr>   ÚvariableÚvariable_gradr€   Úhas_post_hooksc           	      ór  — |d u }|€t          |¦  «        }|}|j        }| j                             dt          |                      |¦  «        |                      |¦  «        |                      |¦  «        |fi ¬¦  «        }|                      |¦  «        }|                      |g|g¦  «         ||_        |rd S |S rÁ  )rr   r€   rÒ   rå   r   r0  r¬  r  )r]   rÅ  rÆ  r€   rÇ  Úold_callr¸  r§   s           r?   rX   z(AutogradCompilerInstance.accumulate_gradU  sÑ   € ð " TÐ)ˆØÐ!õ " $™ZœZˆNØ ˆDØ$œMˆMà”N×/Ò/ØÝ à—’˜hÑ'Ô'Ø—’˜mÑ,Ô,Ø—’˜dÑ#Ô#Øð	ð ð 0ñ 

ô 

ˆ	ð ×)Ò)¨(Ñ3Ô3ˆØ×$Ò$ f X°	¨{Ñ;Ô;Ð;ØˆŒØð 	Ø�4Øˆr>   Úhookr¥   c                 óh   ‡ — ‰ j                              dt          |gˆ fd„|D ¦   «         ¢R |¦  «        S )Nra   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r=   r/  ©rj   rH   r]   s     €r?   rl   z<AutogradCompilerInstance.proxy_call_hook.<locals>.<listcomp>~  s%   ø€ Ð1Ð1Ð1 q�$—-’- Ñ"Ô"Ð1Ð1Ð1r>   )rÒ   rå   r   )r]   rÊ  rq   r¥   s   `   r?   Úproxy_call_hookz(AutogradCompilerInstance.proxy_call_hookv  sS   ø€ ð Œ~×*Ò*ØÝàðà1Ð1Ð1Ð1¨DÐ1Ñ1Ô1ðð ð ñ
ô 
ð 	
r>   Úhook_idÚdata_idc                 óî   — | j         €t          d¦  «        ‚| j         |         }| j        |         }|                      ||d¬¦  «        }|                      ¦   «         }|                      |g|g¦  «         |S )Nz*hooks_proxy must be set before unpack_hookÚunpack_hook©Ú	hook_type)rÔ   rT   rÿ   rÎ  rw  r  )r]   rÏ  rÐ  rÊ  ÚdataÚproxyr†   s          r?   rÒ  z$AutogradCompilerInstance.unpack_hookƒ  s‰   € ØÔÐ#Ý Ð!MÑNÔNÐNØÔ Ô(ˆØÔ% gÔ.ˆØ×$Ò$ØØØ#ð %ñ 
ô 
ˆð
 ×!Ò!Ñ#Ô#ˆØ×$Ò$ c U¨U¨GÑ4Ô4Ð4Øˆ
r>   r’   c                 ó@  — | j         €t          d¦  «        ‚| j         |         }|                      |||         d¬¦  «        }t          ¦   «         5  t	          ||         ¦  «        ||<   |                      ||         g|g¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nz.hooks_proxy must be set before tensor_pre_hookÚtensor_pre_hookrÓ  )rÔ   rT   rÎ  r&   rJ   r  )r]   r}   rÏ  r’   rÊ  rÖ  s         r?   rØ  z(AutogradCompilerInstance.tensor_pre_hook‘  sí   € ð ÔÐ#Ý Ð!QÑRÔRÐRØÔ Ô(ˆØ×$Ò$ØØ�1ŒIØ'ð %ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	?ð 	?Ý# F¨1¤IÑ.Ô.ˆF�1‰IØ×(Ò(¨&°¬)¨°u°gÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð ˆs   Á7BÂBÂBc           	      ó`  — | j                              dt          j        j        j        j        ||                      ||         ¦  «        fi ¦  «        }t          ¦   «         5  t          ||         ¦  «        ||<   |  
                    ||         g|g¦  «         d d d ¦  «         n# 1 swxY w Y   |S ©Nra   )rÒ   rå   r8   Ú_Cr¬   r4   Úcall_cpp_tensor_pre_hooksr0  r&   rJ   r  )r]   r}   rÏ  r’   rÖ  s        r?   Úcpp_tensor_pre_hookz,AutogradCompilerInstance.cpp_tensor_pre_hook¡  sä   € ð ”×+Ò+ØÝŒHÔÔ.ÔHØ�d—m’m F¨1¤IÑ.Ô.Ð/Øñ	
ô 
ˆõ )Ñ*Ô*ð 	?ð 	?Ý# F¨1¤IÑ.Ô.ˆF�1‰IØ×(Ò(¨&°¬)¨°u°gÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð ˆs   Á 7B#Â#B'Â*B'c                 ó  — | j         €t          d¦  «        ‚| j         |         }|                      ||d¬¦  «        }t          ¦   «         5  d„ |D ¦   «         }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nz'hooks_proxy must be set before pre_hookÚpre_hookrÓ  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r=   ©rJ   ©rj   rH   s     r?   rl   z5AutogradCompilerInstance.pre_hook.<locals>.<listcomp>¹  s   € Ð5Ð5Ð5¨•k !‘n”nÐ5Ð5Ð5r>   ©rÔ   rT   rÎ  r&   r  )r]   r}   rÏ  rÊ  r  s        r?   rß  z!AutogradCompilerInstance.pre_hook¯  sÝ   € ØÔÐ#Ý Ð!JÑKÔKÐKØÔ Ô(ˆØ×&Ò&ØØØ ð 'ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	:ð 	:Ø5Ð5¨fÐ5Ñ5Ô5ˆFØ×(Ò(¨°Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð ˆs   Á
#A9Á9A=Â A=c                 ó  — | j         €t          d¦  «        ‚| j         |         }|                      |||d¬¦  «        }t          ¦   «         5  d„ |D ¦   «         }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nz(hooks_proxy must be set before post_hookÚ	post_hookrÓ  c                 ó,   — g | ]}t          |¦  «        ‘ŒS r=   rá  râ  s     r?   rl   z6AutogradCompilerInstance.post_hook.<locals>.<listcomp>Ê  s   € Ð7Ð7Ð7¨!•{ 1‘~”~Ð7Ð7Ð7r>   rã  )r]   rj  r}   rÏ  rÊ  r  s         r?   rå  z"AutogradCompilerInstance.post_hook½  sâ   € ð ÔÐ#Ý Ð!KÑLÔLÐLØÔ Ô(ˆØ×&Ò&ØØØØ!ð	 'ñ 
ô 
ˆõ )Ñ*Ô*ð 	;ð 	;Ø7Ð7¨wÐ7Ñ7Ô7ˆGØ×(Ò(¨°'Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð ˆs   Á#A:Á:A>ÂA>Úinputc                 óˆ  — t          |t          j        ¦  «        st          dt	          |¦  «        › �¦  «        ‚| j        €t          d¦  «        ‚| j        |         }|                      ||d¬¦  «        }t          ¦   «         5  t          |¦  «        g}|  	                    ||g¦  «         d d d ¦  «         n# 1 swxY w Y   |S )Nr×   z1hooks_proxy must be set before post_acc_grad_hookÚpost_acc_grad_hookrÓ  )
rM   r8   rš   rT   rv   rÔ   rÎ  r&   rJ   r  )r]   rç  rÏ  rÊ  rÖ  r¤  s         r?   ré  z+AutogradCompilerInstance.post_acc_grad_hookÎ  s  € õ ˜%¥¤Ñ.Ô.ð 	NÝ Ð!L½tÀE¹{¼{Ð!LÐ!LÑMÔMÐMØÔÐ#Ý Ð!TÑUÔUÐUØÔ Ô(ˆØ×$Ò$ØØØ*ð %ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	7ð 	7Ý˜uÑ%Ô%Ð&ˆCØ×(Ò(¨¨u¨gÑ6Ô6Ð6ð	7ð 	7ð 	7ñ 	7ô 	7ð 	7ð 	7ð 	7ð 	7ð 	7ð 	7øøøð 	7ð 	7ð 	7ð 	7ð ˆ
s   Â(B7Â7B;Â>B;r_   c                 óN  — i }d}t          |j        ¦  «        }|d         j        dk    rt          d|d         j        › d�¦  «        ‚|d         }t          |j                             ¦   «         ¦  «        }t          t          ¦  «        }||         |d         k    rt          d¦  «        ‚|t          |¦  «        z   dz
  }||         |d         k    rt          d	¦  «        ‚t          |¦  «        D ]¸\  }	}
|s|
j	        d
         j
        j        dk    rd}Œ%|
j	        d
         j
        j        dk    }t          |
j	        d
                              ¦   «         ¦  «        dk    }|rF|rDt          |
j                             ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        r|
||	<   Œ¹|rz|                     ¦   «         D ]D}
t                               d|
¦  «         |
j	        d
                              ¦   «         |
j	        d
<   ŒEt          |                     ¦   «         ¦  «        S g S )NFr   r}   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        ¦  «        o|j        j        d v p&t          |j        t          ¦  «        o|j        j         V — Œ^dS ))Úprimsr_  N)rM   rd   r8   Ú_opsÚ
OpOverloadÚ	namespacerª   r¡   ©rj   Úusers     r?   ræ   zDAutogradCompilerInstance.move_graph_nodes_to_cuda.<locals>.<genexpr>  sƒ   è è € ð 
ð 
ð õ # 4¤;µ´
Ô0EÑFÔFð GØ œKÔ1Ð5FÐFðõ
 # 4¤;µÑ3Ô3ð ?Ø $¤Ô >Ð>ð
ð 
ð 
ð 
ð 
ð 
r>   zMoving node %s from cpu to cuda)r…  ro   rd   rT   ÚusersÚkeysr  rý   r�   Úmetar“  rv   r�  ÚallÚvaluesÚverbose_logÚdebugrí  )r]   r_   Úto_moveÚhas_cuda_inputsro   r}   Úinputs_usersÚfirst_getitem_idxÚlast_getitem_idxr’   rk   Úis_cpuÚ	is_scalarÚ
node_userss                 r?   Úmove_graph_nodes_to_cudaz1AutogradCompilerInstance.move_graph_nodes_to_cudaå  sC  € Ø,.ˆØˆÝ�U”[Ñ!Ô!ˆØ�Œ8Œ?˜hÒ&Ð&Ý ØUÀ5ÈÄ8Ä?ÐUÐUÐUñô ð ð �q”ˆÝ˜FœL×-Ò-Ñ/Ô/Ñ0Ô0ˆåÕ 3Ñ4Ô4ÐØÐ"Ô# |°A¤Ò6Ð6Ý Ð!VÑWÔWÐWØ,­s°<Ñ/@Ô/@Ñ@À1ÑDÐØÐ!Ô" l°2Ô&6Ò6Ð6Ý Ð!TÑUÔUÐUå  Ñ.Ô.ð 	&ð 	&‰GˆAˆtØ"ð  t¤y°Ô'7Ô'>Ô'CÀvÒ'MÐ'MØ"&�Øà”Y˜uÔ%Ô,Ô1°UÒ:ˆFÝ˜DœI eÔ,×1Ò1Ñ3Ô3Ñ4Ô4¸Ò9ˆIØð &˜)ð &Ý! $¤*§/¢/Ñ"3Ô"3Ñ4Ô4�
åð 
ð 
ð !+ð
ñ 
ô 
ñ 
ô 
ð &ð "&�G˜A‘Jøð ð 	(ØŸšÑ(Ô(ð ;ð ;�Ý×!Ò!Ð"CÀTÑJÔJÐJØ#'¤9¨UÔ#3×#8Ò#8Ñ#:Ô#:�”	˜%Ñ Ð õ ˜Ÿš™œÑ'Ô'Ð'àˆ	r>   rk   c                 óÐ   — t          |t          j        j        ¦  «        oG|j        dk    o<|j        t          j        j        j        j	        t          j        j        j
        j        fv S rÚ  )rM   r8   r—   rJ  rc   rd   r^  r_  Úsym_sizeru   Ú	sym_numelra  )r]   rk   s     r?   Úis_sym_nodez$AutogradCompilerInstance.is_sym_node  sU   € å�t�UœXœ]Ñ+Ô+ð OØ”˜?Ò*ðOà”Ý”	”Ô'Ô+­U¬Y¬^Ô-EÔ-MÐNðOð	
r>   c                 óž  ‡— t          ¦   «         Šd }t          | j        j                             d¬¦  «        ¦  «        D ]1\  }}‰                     |j                             ¦   «         ¦  «         Œ2|t          t          ¦  «        dz
  k    r*t          dt          t          ¦  «        dz
  › d|› �¦  «        ‚dt          j        j        dt          fˆfd„}t          | j        j        j        ¦  «        }| j        j                             |¦  «         t          | j        j        j        ¦  «        }t"                               d	||z
  ¦  «         d S )
Nrä   rf   rg   z	Expected z placeholders, got rk   r6   c                 ój   •— | ‰v s| j         dk    r| j        t          v rdS |                      ¦   «         S )Nra   T)rc   rd   Ú_impure_targetsÚ	is_impure)rk   Úunpack_nodess    €r?   r  z/AutogradCompilerInstance.dce.<locals>.is_impure1  s<   ø€ Ø�|Ð#Ð#Ø”˜?Ò*Ð*¨t¬{½oÐ/MÐ/Mà�tØ—>’>Ñ#Ô#Ð#r>   zDCE removed %d nodes)r1   r�   rÒ   r_   rp   Úupdaterö  r÷  r  rý   rT   r8   r—   rJ  rr   ro   Úeliminate_dead_coderû  rü  )r]   r’   rk   r  ÚbeforeÚafterr  s         @r?   ÚdcezAutogradCompilerInstance.dce#  sI  ø€ õ
 3=±,´,ˆØˆÝ  ¤Ô!5×!@Ò!@ÀMÐ!@Ñ!RÔ!RÑSÔSð 	3ð 	3‰GˆAˆtØ×Ò ¤
§¢Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ø•Õ'Ñ(Ô(¨1Ñ,Ò,Ð,Ý ØP�CÕ 3Ñ4Ô4°qÑ8ÐPÐPÈQÐPÐPñô ð ð	$�EœHœMð 	$­dð 	$ð 	$ð 	$ð 	$ð 	$ð 	$õ �T”^Ô)Ô/Ñ0Ô0ˆØŒÔ×0Ò0°Ñ;Ô;Ð;Ý�D”NÔ(Ô.Ñ/Ô/ˆÝ×ÒÐ0°&¸5±.ÑAÔAÐAÐAÐAr>   c                 óÜ  — g }g }t          | j        j        j        ¦  «        }t	          |¦  «         t	          |¦  «        }|j        dk    rt          d|j        › d�¦  «        ‚|j        D ]^}|j        t          j
        urt          d|j        › �¦  «        ‚|j        r|                     |¦  «         ŒI|                     |¦  «         Œ_t          ¦   «         }|D ]í}t          |j        t          ¦  «        s$t          dt!          |j        ¦  «        › �¦  «        ‚|j        d         |k    rt          d¦  «        ‚t          |j        d         t"          ¦  «        s*t          d	t!          |j        d         ¦  «        › �¦  «        ‚t%          |¦  «        }|                     |j        d         ¦  «         |j        d         |f|_        Œî|D ]!}	| 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 )rn   rÒ   r_   ro   rm   ri   rT   rö  rd   rs   rt   rw   ÚsetrM   rq   r™   rv   ru   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”Xˆ
ØŒ?˜gÒ%Ð%Ý ØH°j´oÐHÐHÐHñô ð ð 'Ô,ð 		2ð 		2ˆLØÔ"­(Ô*:Ð:Ð:Ý$ØR¸\Ô=PÐRÐRñô ð ð Ô!ð 2Ø×!Ò! ,Ñ/Ô/Ð/Ð/ð ×#Ò# LÑ1Ô1Ð1Ð1å#&¡5¤5ˆØð 	6ð 	6ˆDÝ˜dœi­Ñ/Ô/ð Ý$ØL½4ÀÄ	¹?¼?ÐLÐLñô ð ð Œy˜Œ|˜zÒ)Ð)Ý$Ð%MÑNÔNÐNÝ˜dœi¨œl­CÑ0Ô0ð Ý$ØP½DÀÄÈ1ÄÑ<NÔ<NÐPÐPñô ð õ   Ñ/Ô/ˆMà×Ò˜tœy¨œ|Ñ,Ô,Ð,àœ 1œ }Ð5ˆDŒIˆIà"ð 	4ð 	4ˆFØŒNÔ ×+Ò+¨FÑ3Ô3Ð3Ð3àÐ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ÀbÑIÔIÐIr>   c                 ól  ‡ ‡‡‡— ‰ j                              dt          j        di ¦  «         ‰ j                             ¦   «          ‰ j                              dd‰ j                              ‰                      |¦  «        ¦  «        fi ¦  «         g Št          ¦   «         r‰  
                    ‰ j         j        ¦  «        Š‰ j         j        j        D ]}dD ]}||j        v r|j        |= ŒŒt          dd„ ˆ fd„¬¦  «         ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰                      ¦   «          ‰ j        r$‰ j                             ‰ j         j        ¦  «         ‰                      ¦   «         Š‰                      d	‰ j        › �¦  «        Št9          ‰d
g¦  «         t;          d‰ddd¬¦  «        }t<                               d|¦  «         t@           !                    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          ¦   «          &                    dtO          j(        ¦   «         d‰ j        i‰ j)        d¬¦  «         ‰ j*         +                    d d d ¦  «         |‰  ,                    ‰¦  «        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�¦  «                             d¬¦  «        S )NÚCompiledAutogradÚPreReorderingF©Úprint_output)r#   rÒ   rú   r_   rð   Úprint_readablerŸ   s   €r?   r   z6AutogradCompilerInstance.end_capture.<locals>.<lambda>�  sE   ø€ �{Ø”Ô#Ø”Ô$Ø9 4¤7Ð9Ð9Ð9ñ ô  ÷ Šn¨%ˆnÑ0Ô0ð	 r>   r"  r*  r}   zCompiled autograd graphT)Úinclude_deviceÚinclude_strideÚcoloredz%sÚcompiled_autograd_graphc                  ó0   •— ‰                       d¬¦  «        S )NFr,  )r.  )r_   s   €r?   r   z6AutogradCompilerInstance.end_capture.<locals>.<lambda>º  s   ø€ ˜u×3Ò3ÀÐ3ÑGÔG€ r>   )r$  Úcompiled_fn.r¼   r½   r¾   Úpacked_inputsr6   c           	      óü  •— 	 da ‰j        r‰j                             |¦  «         g }t          |¦  «        D ]s\  }}|‰v rj|dk    rO|                     t          j        d|¦  «        ¦  «         t
          j                             |d         d¦  «         Œ^|                     |¦  «         Œt‰D ]3}	||	          	                    ¦   «          
                    d¬¦  «        ||	<   Œ4t          ¦   «         5  t          ‰j        ¦  «        5   | |||||¦  «        }
‰j        r‰j                             |
¦  «         |
cd d d ¦  «         cd d d ¦  «         da S # 1 swxY w Y   d d d ¦  «         n# 1 swxY w Y   da d S # da w xY w)NTr   rì  rg   )Únon_blockingF)Úin_compiled_autograd_regionró   r…   r�   rw   r8   r”  r¬   Úmaybe_mark_dynamicÚ
pin_memoryrí  Ú_disablerÄ   rð   r“   )r4  r}   r¼   r½   r¾   r5  Úfiltered_sizesr„   Úintegerr’   r†   Úruntime_inputs_to_mover]   r  s              €€€r?   Úruntime_wrapperz=AutogradCompilerInstance.end_capture.<locals>.runtime_wrapper½  sL  ø€ ð4Ø.2Ð+àÔ#ð >ØÔ$×5Ò5°fÑ=Ô=Ð=à!#�Ý$-¨eÑ$4Ô$4ð ;ð ;‘L�C˜Ø˜nÐ,Ð,à" Qš;˜;Ø*×1Ò1µ%´+¸aÀÑ2IÔ2IÑJÔJÐJÝ!œM×<Ò<¸^ÈBÔ=OÐQRÑSÔSÐSÐSà*×1Ò1°'Ñ:Ô:Ð:øà/ð Oð O�AØ & q¤	× 4Ò 4Ñ 6Ô 6× ;Ò ;ÈÐ ;Ñ NÔ N�F˜1‘I�Iå‘Z”Zð ð Õ!5°d´gÑ!>Ô!>ð ð Ø%˜+Ø °¸Àñô �Cð Ô'ð 4ØÔ(×.Ò.¨sÑ3Ô3Ð3Øðð ð ð ñ ô ð ð ð ð ð ñ ô ð ð /4Ð+Ð+ðð ð ð øøøð ð ð ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð /4Ð+Ð+Ð+ø¨eÐ+Ð3Ð3Ð3Ð3sZ   ƒC,E7 Ã/E(Ä2EÄ6E(ÅE7 ÅE	ÅE(ÅE	ÅE(ÅE7 Å(E,Å,E7 Å/E,Å0E7 Å7E;r4   rß   rà   )-rÒ   rå   r   Ú_exec_final_callbacks_stubrÏ   rÐ   r]  Ú
create_argr0  rG   r  r_   ro   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ó   r|   r   r"  rð   r   r   Úcompiled_autograd_logÚinforû  rü  r   r   r™   r   Úlog_event_endrô   rõ   rö   r   Ú__exit__rÇ   )	r]   rj  rk   ÚfieldÚlazy_graph_coder?  r_   r>  r  s	   `     @@@r?   Úend_capturez$AutogradCompilerInstance.end_captureo  s   øøøø€ ØŒ×#Ò#ØÝ&ÔAØØñ		
ô 	
ð 	
ð 	Œ
×ÒÑÔÐØŒ×"Ò"ØØØŒ^×&Ò& t§}¢}°WÑ'=Ô'=Ñ>Ô>Ð@Øñ		
ô 	
ð 	
ð -/ÐÝ%Ñ'Ô'ð 	YØ%)×%BÒ%BÀ4Ä>ÔCWÑ%XÔ%XÐ"ð
 ”NÔ(Ô.ð 	)ð 	)ˆDØ@ð )ð )�Ø˜DœIÐ%Ð%Øœ	 %Ð(øð)õ 	Øðð ð1ð 1ð 1ð 1ð	
ñ 	
ô 	
ð 	
ð 	×$Ò$Ñ&Ô&Ð&Ø×*Ò*Ñ,Ô,Ð,Ø×4Ò4Ñ6Ô6Ð6Ø×*Ò*Ñ,Ô,Ð,Ø×2Ò2Ñ4Ô4Ð4Ø×-Ò-Ñ/Ô/Ð/Ø×$Ò$Ñ&Ô&Ð&ð 	�Š‰
Œ
ˆ
ØÔð 	CØÔ×,Ò,¨T¬^Ô-AÑBÔBÐBð ×1Ò1Ñ3Ô3ˆà×(Ò(Ð)E¸D¼GÐ)EÐ)EÑFÔFˆÝ˜E H :Ñ.Ô.Ð.Ý0Ø%ØØØØð
ñ 
ô 
ˆõ 	×"Ò" 4¨Ñ9Ô9Ð9Ý×Ò˜$ Ñ0Ô0Ð0ÝØ%ØGÐGÐGÐGð	
ñ 	
ô 	
ð 	
ð
$	4Ý! #¥s (Ô+ð$	4åð$	4õ ð$	4õ ð	$	4õ
 ð$	4õ ð$	4õ •3��8Œ_ð$	4ð $	4ð $	4ð $	4ð $	4ð $	4ð $	4ð $	4õL 	"Ñ#Ô#×1Ò1ØÝŒL‰NŒNØ˜œÐ!ØÔØ"&ð 	2ñ 	
ô 	
ð 	
ð 	Ô×%Ò% d¨D°$Ñ7Ô7Ð7Ø × 0Ò 0°Ñ 7Ô 7Ð7Ð7r>   c                 ó   — d„ | D ¦   «         }|S )Nc                 óR   — g | ]$}t          |¦  «        t          j        j        u ¯"|‘Œ%S r=   )rv   r8   r—   rJ  )rj   rK  s     r?   rl   z:AutogradCompilerInstance.get_all_nodes.<locals>.<listcomp>ð  s,   € Ð=Ð=Ð=�q¥D¨¡G¤G­u¬x¬}Ð$<Ð$<�Ð$<Ð$<Ð$<r>   r=   )rq   ro   s     r?   Úget_all_nodesz&AutogradCompilerInstance.get_all_nodesí  s   € ð >Ð=˜DÐ=Ñ=Ô=ˆØˆr>   c                 óˆ   — | j         dk    s4| j         dk    r+| j        t          j        u r| j        d         j         dk    rdS dS )Nrä   ra   r   TF)rc   rd   rs   rt   rq   )rk   s    r?   Úis_placeholderz'AutogradCompilerInstance.is_placeholderó  sI   € àŒ7�mÒ#Ð#ØŒG�Ò&Ð&Ø”�xÔ/Ð/Ð/Ø”	˜!”” =Ò0Ð0à�4Øˆur>   c                 ó
  — | 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          |                      |||g¦  «        ¦  «        }||j        urA|                      |¦  «        s,|                     |¦  «         |�|                     |¦  «         ŒÜdS )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_   rp   r   rq   rM   r8   r—   rJ  rd   rs   rt   ÚmaxrR  ÚprevrT  rw   )r]   rk   r{   Úvariable_grad_nodeÚ	grad_noder  Úargs          r?   rE  z6AutogradCompilerInstance.reorder_accumulate_grad_nodesý  s  € ð ”NÔ(×3Ò3ØÕ';ð 4ñ 
ô 
ð 	-ð 	-ˆDð ”	˜!”Ø”	˜!”Ø”	˜!”ð -6Ð*ˆJð
  ˆLå˜9¥e¤h¤mÑ4Ô4ð1àÔ$­Ô(8Ð8Ð8à(�Ø(Ô-¨aÔ0�	åØ×"Ò" JÐ0BÀIÐ#NÑOÔOñô ˆCð ˜$œ)Ð#Ð#¨D×,?Ò,?ÀÑ,DÔ,DÐ#Ø—
’
˜4Ñ Ô Ð ØÐ+Ø—J’J˜|Ñ,Ô,Ð,øð-	-ð 	-r>   c                 óê   — | j         j                             dt          ¬¦  «        D ]K}|j                             dd¦  «        dk    rŒ"t          |j        ¦  «        }|                     |¦  «         ŒLdS )zp
        We can delay unpack hooks until they are needed, even later than in the eager autograd engine.
        ra   rb   rÔ  NrÒ  )	rÒ   r_   rp   r   r¥   r³   Úminrö  Úprepend)r]   rk   Ú
first_users      r?   rB  z0AutogradCompilerInstance.delay_unpack_hook_nodes  s€   € ð ”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	%ð 	%ˆDð Œ{�Š˜{¨DÑ1Ô1°]ÒBÐBØå˜TœZ™œˆJØ×Ò˜tÑ$Ô$Ð$Ð$ð	%ð 	%r>   c                 ó\  — | j         j                             dt          ¬¦  «        D ]„}|j                             dd¦  «        dk    rŒ"|j        d         }|j        d         }||j        ur?|                      |¦  «        s*| 	                    |¦  «         | 	                    |¦  «         Œ…dS )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_   rp   r   r¥   r³   rq   rX  rT  rw   )r]   rk   r  Ú
input_nodes       r?   rC  z6AutogradCompilerInstance.reorder_tensor_pre_hook_nodes(  s¼   € ð ”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	*ð 	*ˆDð Œ{�Š˜{¨DÑ1Ô1Ð5FÒFÐFØàœ9 Qœ<ˆLØœ 1œˆJà ¤Ð*Ð*°4×3FÒ3FÀzÑ3RÔ3RÐ*Ø×!Ò! ,Ñ/Ô/Ð/Ø×#Ò# DÑ)Ô)Ð)øð	*ð 	*r>   c                 ó  — | j         j                             dt          ¬¦  «        D �]`}|j                             dd¦  «        dk    rŒ#|j        d         }|                      |j        d         ¦  «        }g }g }|g}|D ]j}|j        dk    r]|j	        t          j        u rJ|                     |j        d         ¦  «         |                     |¦  «         |                     |¦  «         Œkt          ||¦  «        D ]/\  }}	|                     |¦  «         |                     |	¦  «         Œ0t          |¦  «        }
|
|j        urD|                      |
¦  «        s/|
                     |¦  «         |D ]}|                     |¦  «         Œ�ŒbdS )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_   rp   r   r¥   r³   rq   rR  rc   rd   rs   rt   rw   ÚzipÚremoverW  rX  rT  )r]   rk   r  Úinput_nodesÚ	to_removeÚ	to_appendÚ
hook_blockrK  ÚaÚbr[  s              r?   rD  z@AutogradCompilerInstance.reorder_pre_hook_nodes_to_schedule_asap<  s­  € ð ”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	+ñ 	+ˆDð Œ{�Š˜{¨DÑ1Ô1°ZÒ?Ð?Øàœ9 Qœ<ˆLà×,Ò,¨T¬Y°q¬\Ñ:Ô:ˆKàˆIØˆIØ˜ˆJØ ð )ð )�Ø”4˜?Ò*Ð*¨q¬x½8Ô;KÐ/KÐ/KØ×$Ò$ Q¤V¨A¤YÑ/Ô/Ð/Ø×$Ò$ QÑ'Ô'Ð'Ø×%Ò% aÑ(Ô(Ð(øÝ˜I yÑ1Ô1ð &ð &‘��1Ø×"Ò" 1Ñ%Ô%Ð%Ø×"Ò" 1Ñ%Ô%Ð%Ð%å�kÑ"Ô"ˆCØ˜$œ)Ð#Ð#¨D×,?Ò,?ÀÑ,DÔ,DÐ#Ø—
’
˜<Ñ(Ô(Ð(Ø#ð +ð +�AØ ×'Ò'¨Ñ*Ô*Ð*Ð*ùð5	+ð 	+r>   c                 óÔ  — g }| j         j                             dt          ¬¦  «        D ]7}|j                             dd¦  «        dk    rŒ"|                     |¦  «         Œ8t          |¦  «        D ]÷}|j        d         }t          |j
                             ¦   «         ¦  «        }t          |¦  «        dk    rŒIt          d„ |D ¦   «         ¦  «        st          d¦  «        ‚t          t!          |d         j
                             ¦   «         ¦  «        ¦  «        }||j        urD|                     |¦  «         |                     |¦  «         |D ]}|                     |¦  «         ŒŒødS )	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   óR   K  — | ]"}|j         d k    o|j        t          j        u V — Œ#dS )ra   N)rc   rd   rs   rt   rô  s     r?   ræ   zQAutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager.<locals>.<genexpr>w  sL   è è € ð ð àð ”˜?Ò*ÐN¨t¬{½hÔ>NÐ/Nðð ð ð ð ð r>   zIExpected all users of pre_hook to be operator.getitem call_function nodes)rÒ   r_   rp   r   r¥   r³   rw   Úreversedrq   r…  rö  r÷  r  rù  rT   rm   rn   r^  )r]   Ú	pre_hooksrk   Úhook_getitem_noderö  Úregistered_nodert   s          r?   rF  z>AutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager`  s“  € ð ˆ	Ø”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	#ð 	#ˆDð Œ{�Š˜{¨DÑ1Ô1°ZÒ?Ð?ØØ×Ò˜TÑ"Ô"Ð"Ð"å˜YÑ'Ô'ð 	5ð 	5ˆDØ $¤	¨!¤Ðå˜œŸšÑ*Ô*Ñ+Ô+ˆEÝ�5‰zŒz˜QŠˆØõ ð ð à!ðñ ô ñ ô ð õ %Ø_ñô ð õ #¥4¨¨a¬¬×(;Ò(;Ñ(=Ô(=Ñ#>Ô#>Ñ?Ô?ˆOà d¤iÐ/Ð/Ø×'Ò'Ð(9Ñ:Ô:Ð:Ø×'Ò'¨Ñ-Ô-Ð-Ø$ð 5ð 5�GØ#×+Ò+¨GÑ4Ô4Ð4Ð4øð+	5ð 	5r>   c                 ó$  — g }| j         j                             dt          ¬¦  «        D ]7}|j                             dd¦  «        dk    rŒ"|                     |¦  «         Œ8t          |¦  «        D ]Ÿ}|j        d         }|j        d         }d}t          |j
                             ¦   «         ¦  «        D ]}|j        dk    r|j        t          u r|} nŒ |€t          d¦  «        ‚|                     |¦  «         |                     |¦  «         Œ dS )	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_   rp   r   r¥   r³   rw   rm  rq   r…  rö  r÷  rc   rd   r   rT   )r]   Úpost_acc_grad_hooksrk   r  r{   Úacc_grad_noderK  s          r?   rG  z9AutogradCompilerInstance.reorder_post_acc_grad_hook_nodes†  sD  € ð !ÐØ”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	-ð 	-ˆDð Œ{�Š˜{¨DÑ1Ô1Ð5IÒIÐIØØ×&Ò& tÑ,Ô,Ð,Ð,õ Ð0Ñ1Ô1ð 	&ð 	&ˆDØœ9 Qœ<ˆLØœ 1œˆJð !ˆMÝ˜*Ô*×/Ò/Ñ1Ô1Ñ2Ô2ð ð �Ø”4˜?Ò*Ð*¨q¬xÕ;OÐ/OÐ/OØ$%�MØ�EøàÐ$Ý$ØNñô ð ð
 × Ò  Ñ.Ô.Ð.Ø×Ò Ñ%Ô%Ð%Ð%ð%	&ð 	&r>   c           	      ób  ‡— g }| j         j                             dt          ¬¦  «        D ]7Š‰j                             dd¦  «        dk    rŒ"|                     ‰¦  «         Œ8t          |¦  «        D �]¼Š‰j        d         }‰j        d         }‰j        d         }t          |¦  «        dk    rŒ>g }| 
                    t          |¦  «        ¦  «         |D ]G}| 
                    ˆfd	„t          |j                             ¦   «         ¦  «        D ¦   «         ¦  «         ŒHt          |¦  «        }|j        dk    r®|j        t"          u r |j        d         }d}	t          |j                             ¦   «         ¦  «        D ]<}
|
j        dk    r/|
j        t          u r!|
j                             dd¦  «        d
k    r|
}	Œ=|	�,|	                     |¦  «         |                     ‰¦  «         �Œt|‰j        ur?|                      |¦  «        s*|                     |¦  «         |                     ‰¦  «         �Œ¾dS )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   rV  c              3   óŒ   •K  — | ]>}|j         d k    r-|j        t          u r‰j                             dd¦  «        dk    °:|V — Œ?dS )ra   rÔ  Nrå  )rc   rd   r   r¥   r³   )rj   rõ  rk   s     €r?   ræ   zCAutogradCompilerInstance.reorder_post_hook_nodes.<locals>.<genexpr>Æ  sg   øè è € ð -ð -ààœ ?Ò2Ð2Ø œK­9Ð4Ð4Ø œKŸOšO¨K¸Ñ>Ô>À+ÒMÐMð ð
 NÐMÐMÐMð-ð -r>   ré  )rÒ   r_   rp   r   r¥   r³   rw   rm  rq   r  Úextendr…  rö  r÷  rW  rc   rd   r   rX  rT  )r]   Ú
post_hooksr  rz   re  Úinput_nodes_and_usersra  r[  r{   Úpost_acc_grad_hook_noderK  rk   s              @r?   rH  z0AutogradCompilerInstance.reorder_post_hook_nodes«  sk  ø€ ð ˆ
Ø”NÔ(×3Ò3Ø¥yð 4ñ 
ô 
ð 	$ð 	$ˆDð Œ{�Š˜{¨DÑ1Ô1°[Ò@Ð@ØØ×Ò˜dÑ#Ô#Ð#Ð#å˜ZÑ(Ô(ð )	*ñ )	*ˆDØœ9 Qœ<ˆLØœ9 Qœ<ˆLØœ) Aœ,ˆKå�<Ñ Ô  1Ò$Ð$Øð %'Ð!Ø!×(Ò(­¨kÑ):Ô):Ñ;Ô;Ð;Ø)ð 	ð 	�
Ø%×,Ò,ð -ð -ð -ð -å $ ZÔ%5×%:Ò%:Ñ%<Ô%<Ñ =Ô =ð-ñ -ô -ñ ô ð ð õ Ð+Ñ,Ô,ˆCØŒv˜Ò(Ð(¨S¬ZÕ;OÐ-OÐ-OØ œX aœ[�
Ø*.Ð'Ý˜jÔ.×3Ò3Ñ5Ô5Ñ6Ô6ð 4ð 4�Aàœ Ò/Ð/ØœH­	Ð1Ð1ØœHŸLšL¨°dÑ;Ô;Ð?SÒSÐSà23Ð/øà*Ð6Ø+×2Ò2°<Ñ@Ô@Ð@Ø ×'Ò'¨Ñ-Ô-Ð-Ùà˜$œ)Ð#Ð#¨D×,?Ò,?ÀÑ,DÔ,DÐ#Ø—
’
˜<Ñ(Ô(Ð(Ø×#Ò# DÑ)Ô)Ð)ùðS)	*ð )	*r>   Útc                 ó"  ‡ — |€d S t          |t          ¦  «        rˆ fd„|D ¦   «         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 )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r=   r/  rÍ  s     €r?   rl   z5AutogradCompilerInstance.to_proxy.<locals>.<listcomp>é  s%   ø€ Ð0Ð0Ð0¨�D—M’M !Ñ$Ô$Ð0Ð0Ð0r>   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S rB   r/  rÍ  s     €r?   ræ   z4AutogradCompilerInstance.to_proxy.<locals>.<genexpr>ë  s/   øè è € Ð5Ð5¨a˜Ÿš qÑ)Ô)Ð5Ð5Ð5Ð5Ð5Ð5r>   zExpected _ProxyTensor, got )rM   r…  r™   r8   ÚSymIntÚSymFloatrü   rk   rš   r'   rÒ   r—   r	  Úproxy_tensorÚ_ProxyTensorrT   rv   rÖ  )r]   rz  r€  s   `  r?   r0  z!AutogradCompilerInstance.to_proxyå  s  ø€ Øˆ9Ø�4Ý�a�ÑÔð 	1Ø0Ð0Ð0Ð0¨aÐ0Ñ0Ô0Ð0Ý�a�ÑÔð 	6ÝÐ5Ð5Ð5Ð5°1Ð5Ñ5Ô5Ñ5Ô5Ð5Ý�a�%œ,­¬Ð7Ñ8Ô8ð 	5ØÔ,¨Q¬VÔ4Ð4Ý˜!�Uœ\Ñ*Ô*ð 	àˆHÝ)¨$¬.¸!Ñ<Ô<ˆÝØ�%œ(Ô/Ô<ÔIñ
ô 
ð 	Uõ !Ð!S½tÀLÑ?QÔ?QÐ!SÐ!SÑTÔTÐTØÔ!Ð!r>   Úobjectsr  c                 óÌ  ‡— t          ‰t          j        j        ¦  «        rÛ|r±t	          |¦  «        t	          |¦  «        k    r0t          dt	          |¦  «        › dt	          |¦  «        › d�¦  «        ‚g }t          t	          |¦  «        ¦  «        D ]?}||         \  }}|                      ||d ¦  «         |                     ‰|         ¦  «         Œ@|Šn(ˆfd„t          t	          |¦  «        ¦  «        D ¦   «         Št	          |¦  «        t	          ‰¦  «        k    r0t          dt	          |¦  «        › dt	          ‰¦  «        › d�¦  «        ‚t          |‰d | j
        ¬¦  «         ‰S )Nzorigins length (z) != objects length (r¼  c                 ó    •— g | ]
}‰|         ‘ŒS r=   r=   )rj   r’   r  s     €r?   rl   zDAutogradCompilerInstance.bind_objects_to_proxies.<locals>.<listcomp>  s   ø€ ÐCÐCÐC¨!˜7 1œ:ÐCÐCÐCr>   zobjects length (z) != proxies length (©ÚconstantÚtracer)rM   r8   r—   r3   r  rT   r  Úset_node_originrw   r*   rÒ   )r]   r‚  r  rÛ   Úbound_proxiesr’   Únodecall_indexrD  s     `     r?   r  z0AutogradCompilerInstance.bind_objects_to_proxiesø  so  ø€ õ �g�uœxœ~Ñ.Ô.ð 	DØð DÝ�w‘<”<¥3 w¡<¤<Ò/Ð/Ý(Ø]­3¨w©<¬<Ð]Ð]ÍcÐRYÉlÌlÐ]Ð]Ð]ñô ð ð !#�Ý�s 7™|œ|Ñ,Ô,ð 5ð 5�AØ07¸´
Ñ-�N IØ×(Ò(¨°NÀDÑIÔIÐIØ!×(Ò(¨°¬Ñ4Ô4Ð4Ð4Ø'��àCÐCÐCÐC­uµS¸±\´\Ñ/BÔ/BÐCÑCÔC�åˆw‰<Œ<�3˜w™<œ<Ò'Ð'Ý ØU¥3 w¡<¤<ÐUÐUÅcÈ'ÁlÄlÐUÐUÐUñô ð õ 	˜' 7°TÀ$Ä.ÐQÑQÔQÐQØˆr>   Úindexc                 ó˜   — | j         €t          d¦  «        ‚| j         |         }t          ¦   «         }t          ||d | j        ¬¦  «         |S )Nz2hooks_proxy must be set before bind_backward_stater…  )rÔ   rT   r$   r*   rÒ   )r]   r‹  rÖ  Úbw_states       r?   Úbind_backward_statez,AutogradCompilerInstance.bind_backward_state  sN   € ØÔÐ#Ý Ð!UÑVÔVÐVØÔ  Ô'ˆÝ ‘?”?ˆÝ˜( E°DÀÄÐPÑPÔPÐPØˆr>   rD  rŠ  Úpyobjc                 ó*  — d}|�4|j         }t          |d¦  «        r|j        €t          d¦  «        ‚|j        }|› |› d|› d�}t          j        ¦   «                              ¦   «         d         }|                     d|¦  «        }t          |¦  «         d S )NÚ r  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])
r|  r©   rN   r‹   r  r2   ÚextractÚformatÚreplacer.   )	r]   rD  rŠ  r�  Úmaybe_aot_idÚforward_clsÚnew_codeÚraw_stack_traceÚnew_stack_traces	            r?   rˆ  z(AutogradCompilerInstance.set_node_origin  s¾   € ð ˆØÐØÔ,ˆKÝ�{ IÑ.Ô.ð 3àÔ2Ð:Ý&ðsñô ð ð  +Ô2�ØÐK ÐKÐK¸.ÐKÐKÐKˆÝ+Ô3Ñ5Ô5×<Ò<Ñ>Ô>¸rÔBˆØ)×1Ò1ØHÈ(ñ
ô 
ˆõ 	˜Ñ(Ô(Ð(Ð(Ð(r>   rB   r´   )Ir”   r•   r–   r   r   r^   r8   rš   r   r"   rÙ   Ústaticmethodrµ   r   rÕ   r…  ru   r0   r/   r™   rr   r  r%  r   r‹  ÚautogradÚfunctionÚBackwardCFunctionr—  r¢  r¨  rw  r¬  r¯  r²  r   r»  rÄ  rX   r—   r3   rÎ  rÒ  rØ  rÝ  rß  rå  ré  r˜   r  r	  r  r  r   r#   r"  rO  rJ  rR  rT  rE  rB  rC  rD  rF  rG  rH  r0  r  r$   rŽ  ÚFunctionrˆ  r=   r>   r?   rÆ   rÆ   1  s

  € € € € € ð. H¨S°#¨XÔ$6ð .¸4ð .ð .ð .ð .ðC˜5œ<ð C°¸$±ð CÀ:ð Cð Cð Cð Cð
 ð5�Sð 5˜sð 5 }ð 5ð 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
ð y
ð y
ð y
ðv
à˜cœð
ð 
ð
ð 
ð 
ð 
ð^à˜#”ð^ð ! ¤Ô.ð^ð   ¤Ô-ð	^ð
 ð^ð ð^ð #&¨¡*ð^ð  $ Cœyð^ð 
�#Œð^ð ^ð ^ð ^ð@:à˜”ð:ð # 3œ-ð:ð   ¤Ô-ð	:ð
 ð:ð Œ^Ô$Ô6ð:ð #&¨¡*ð:ð  $ Cœyð:ð 
ˆuŒ|˜dÑ" CÐ'Ô	(ð:ð :ð :ð :ðxGà˜”ðGð ˜S”MðGð ˜s”mð	Gð
 !ðGð ˜S”MðGð ˜s”mðGð !ðGð 
�%”,Ô	ðGð Gð Gð Gð*
à" 4œ.ð
ð ”ð
ð �cŒ]ð	
ð
 ”Lð
ð 
�%”,Ô	ð
ð 
ð 
ð 
ð/ ¤ð /ð /ð /ð /ð
' U¤\ð '°e´lð 'ð 'ð 'ð 'ðFàðFð �S˜#�XÔðFð !ð	Fð
 ðFð 
ðFð Fð Fð Fð	Dàð	Dð ˜Œ}ð	Dð ð		Dð
 " #œð	Dð 
�%”,Ô	ð	Dð 	Dð 	Dð 	Dð
Ø˜3 ˜8Ô$ð
Ø,/ð
ØBJÈ3Ä-ð
à	�%”,Ô	ð
ð 
ð 
ð 
ðØðØ'¨œ}ðØ47ðØJRÐSVÌ-ðà	�%”,Ô	ðð ð ð ð  #ð °ð ¸¼ð ð ð ð ð '+ðð à”,ðð ”| dÑ*ðð Œl˜TÑ!ð	ð
 ˜t™ðð 
Œ˜Ñ	ðð ð ð ðB
Ø˜S #˜XÔ&ð
Ø/2ð
Ø>Að
à	ŒŒð
ð 
ð 
ð 
ð 3ð °ð ¸¼ð ð ð ð ðØ˜5œ<Ô(ðØ36ðØ;>ðà	ˆeŒlÔ	ðð ð ð ð Ø˜5œ<Ô(ðØ36ðØ;>ðà	ˆeŒlÔ	ðð ð ð ð˜x¨œ}ð °sð ¸tÀEÄLÔ?Qð ð ð ð ðØ˜EœLÔ)ðØ3;¸E¼LÔ3IðØTWðà	ˆeŒlÔ	ðð ð ð ð"Ø”\ðØ,/ðà	ˆeŒlÔ	ðð ð ð ð.4¨e¬h¬nð 4ÀÀcÄð 4ð 4ð 4ð 4ðl
 ð 
¨ð 
ð 
ð 
ð 
ðBð Bð Bð Bð4- S¨¤Xð -ð -ð -ð -ð^J cð J¨kð Jð Jð Jð Jð|8 3ð |8¨5°¸#¸s¸(Ô1CÀSÐ1HÔ+Ið |8ð |8ð |8ð |8ð| ð˜H SœMð ¨d°5´8´=Ô.Að ð ð ñ „\ðð
 ð˜UœXœ]ð ¨tð ð ð ñ „\ðð-ð -ð -ð -ð<%ð %ð %ð %ð*ð *ð *ð *ð("+ð "+ð "+ð "+ðH$5ð $5ð $5ð $5ðL#&ð #&ð #&ð #&ðJ8*ð 8*ð 8*ð 8*ðt"˜#ð " #ð "ð "ð "ð "ð. 15ð	ð à˜#”ðð ðð �e˜C ˜H”oÔ&¨Ñ-ð	ð
 
�#Œðð ð ð ð8¨ð °ð ð ð ð ð)àð)ð ð)ð Œ~Ô&¨Ñ-ð	)ð
 
ð)ð )ð )ð )ð )ð )r>   rÆ   FTrÇ   ÚdynamicÚignore_active_disable_ctx)NNNc              #   ó   K  — |st           rd V — d S |r5t          |¦  «        t          urt          dt          |¦  «        › �¦  «        ‚ddlm} |j        j        dk    rda	 d V — dad S # daw xY wt          j
                             ¦   «         rddlm} t          j        j        j                             t%          j        t(          | ¦  «        |¦  «        \  }}t+          ¦   «         r.t          j        j        j                             t.          ¦  «         dat2          }t2          dz  a	 t          j                             d¦  «        5  d V — d d d ¦  «         n# 1 swxY w Y   |sdat          j        j        j                             ||¦  «         t2          dz  at2          |k    rt          d	¦  «        ‚d S # |sdat          j        j        j                             ||¦  «         t2          dz  at2          |k    rt          d	¦  «        ‚w xY 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_ctxrv   rr   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 %ð 4Õ);ð 4Øˆˆˆˆˆàð 	Ý�G‰}Œ}¥DÐ(Ð(Ý$ØG½¸W¹¼ÐGÐGñô ð ð 	-Ð,Ð,Ð,Ð,Ð,àÔÔ$¨Ò5Ð5ð 59Ð1ð>Ø���à8=Ð5Ð5Ð5ø¸Ð5Ð=Ð=Ð=Ð=õ Œz×&Ò&Ñ(Ô(ð <Ø;Ð;Ð;Ð;Ð;Ð;õ
 ”Ô Ô2×HÒHÝÔ!Õ":¸KÑHÔHÈ'ñô ñØØõ 0Ñ1Ô1ð SÝ”Ô Ô2×EÒEÅkÑRÔRÐRà(,Ð%åˆKÝ�Q‰JˆEðÝ”^×>Ò>¸uÑEÔEð ð Ø�E�E�Eðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð &ð 6Ø05Ð-Ý”Ô Ô2×HÒHØ" Mñô ð õ ˜‘
�Ý˜KÒ'Ð'Ý(Øcñô ð ð (Ð'øð &ð 6Ø05Ð-Ý”Ô Ô2×HÒHØ" Mñô ð õ ˜‘
�Ý˜KÒ'Ð'Ý(Øcñô ð ð ð ð ð s=   Á"A* Á*A.Ä*F9 Å	EÅF9 ÅEÅF9 Å!EÅ"F9 Æ9AHc               #   óN  K  — t           j        j        j                             d d¦  «        \  } }dat          sda	 d V — | rdadat           j        j        j                             | |¦  «         d S # | rdadat           j        j        j                             | |¦  «         w xY w)NFT)r8   rÛ  r¬   r4   r¬  r°  r¥  )r³  r´  s     r?   r;  r;  ”  sÙ   è è € õ
 	ŒÔÔ*×@Ò@ÀÀuÑMÔMñØØð !&Ðåð "Ø!Ðð
Øˆˆˆàð 	-Ø(,Ð%Ø"ÐÝŒÔÔ*×@Ò@Ø˜Mñ	
ô 	
ð 	
ð 	
ð 	
øð ð 	-Ø(,Ð%Ø"ÐÝŒÔÔ*×@Ò@Ø˜Mñ	
ô 	
ð 	
ð 	
øøøs   ¼A2 Á22B$c                  óR  — da t          rt          d¦  «        ‚t          j        j        j                             d d¦  «         t          j        j        j                             d ¦  «         t          j        j        j         	                    ¦   «          t          j        ¦   «         ad S )NFz6Cannot reset while in_compiled_autograd_region is True)r°  r8  rT   r8   rÛ  r¬   r4   r¬  r¯  Úclear_cacheÚ	itertoolsr¯   rï   r=   r>   r?   Úresetr»  «  s…   € à %ÐÝ"ð WÝÐUÑVÔVÐVÝ	„HÔÔ&×<Ò<¸TÀ5ÑIÔIÐIÝ	„HÔÔ&×9Ò9¸$Ñ?Ô?Ð?Ý	„HÔÔ&×2Ò2Ñ4Ô4Ð4å”oÑ'Ô'€O€O€Or>   r}   r˜  r™  rš  r›  rœ  r�  c                 ó  — | d         }|                      ||¦  «        }|€t          d¦  «        ‚|                     |¦  «         ||z
  }	|                     |||	¦  «        }
||
|
                     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)r}   r˜  r™  rš  r›  rœ  r�  r€   r§   Úoffsetr¥  s              r?   r¡  r¡  ¹  s‹   € ð �!Œ9€DØ×#Ò# J°Ñ=Ô=€FØ€|ÝÐLÑMÔMÐMØ
‡L‚L�ÑÔÐØ Ð#6Ñ6€FØ×"Ò" :¨|¸VÑDÔD€JØ�J 
× 0Ò 0½uÔ?VÐ 0Ñ WÔ WÐXÐXr>   r£  r§   r¤  r¥  c                 ó  — d gt          | ¦  «        z  }t          t          | ¦  «        ¦  «        D ]X}| |         rN||         €Œ|dk    r4||         }|€t          d¦  «        ‚|                     |¦  «         |||<   ŒM||         ||<   ŒY|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Ô6KÑ-K€KÝ•3Ð'Ñ(Ô(Ñ)Ô)ð (ð (ˆØ˜AÔð 	(Ø�1Œvˆ~ØØ�AŠvˆvØ˜aœ&�Ø�?Ý(ØIñô ð ð × Ò  Ñ)Ô)Ð)Ø!'�˜A‘�à!$ Q¤�˜A‘øØÐr>   )TTr´   )rÚ__doc__rÍ   r­  rº  rs   rô   Úcollectionsr   r   Úcollections.abcr   r   r   Útypingr   r	   r8   Útorch.utils._pytreeÚutilsÚ_pytreeru  Ú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”   rI  rû  rr   r@   rG   rš   rJ   rU   rW   rœ   rª   r^  rý   r@  r  r¯   rï   ru   rÄ   rÆ   r°  r©  r8  r¥  r±  Úcontextmanagerr¶  r;  r»  r…  r¡  r§  r=   r>   r?   ú<module>râ     s¼  ððð ð  Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;ðð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LÐ LØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø  Ð  Ð  Ð  Ð  Ð  Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø /Ð /Ð /Ð /Ð /Ð /Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð ð %Ø$Ð$Ð$Ð$Ð$Ð$ðX€ð *Ð)¨(Ð4GÑHÔHÐ ØÐ Ð*EÑFÔF€ð¨$ð ð ð ð ð4 Dð 4ð 4ð 4ð 4ð�5”< $Ñ&ð ¨5¬<¸$Ñ+>ð ð ð ð ð
¨ð 
°¸¸c¸Ô0Bð 
ð 
ð 
ð 
ð6Zð Zð Zð Zð Zñ Zô Zð ZðD"#ð "#ð "#ð "#ð "#ñ "#ô "#ð "#ðJ5ð 5ð 5ð 5ð 5ñ 5ô 5ð 5ð  €k�m„m€ð MÐLÐLÐ Ø�*àØØ"Ô=Øð	ñô €ð "�)”/Ñ#Ô#€ð	¨sð 	°sð 	ð 	ð 	ð 	ðA)ð A)ð A)ð A)ð A)ñ A)ô A)ð A)ðJ( "Ð ð ).Ð %ð $Ð àÐ à	€ð Ôð Ø&*ðMð MØ˜#˜s˜(Ô#ðMàðMð  $ðMð ÐÔ ð	Mð Mð Mñ ÔðMð` Ôð
�)Ð,Ô-ð 
ð 
ð 
ñ Ôð
ð,	(ð 	(ð 	(ð 	(ðYØ�U”\Ô"ðYà˜Ô%ðYð ˜;Ô'ðYð %ð	Yð
 ˜Ô%ðYð ˜;Ô'ðYð %ðYð 
ˆ%Œ,ÔðYð Yð Yð Yð*Ø˜t”nðàŒLðð 
�%”, Ñ%Ô	&ðð ”ð	ð
 
ˆ%Œ,˜Ñ
Ôðð ð ð ð ð r>   