§
    ž²Åj£†  ã                   ó8  — d dl Z d dlZd dlZd dlmZmZmZmZmZm	Z	m
Z
 d dlZd dlmZmZm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mZ d dlmZ d d	lmZ d d
l m!Z! d dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z) d dl*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3 e	rd dl4m5Z5  ee6d¦  «        Z7 ee6d¦  «        Z8d„ Z9d„ Z:d„ Z;g d¢Z< e1eeej=        ej>        j?        j@        jA        g¦  «        ZB G d„ d¦  «        ZCdaDdaEdaFe jG        dd„¦   «         ZHe jG        d„ ¦   «         ZIdd„ZJdS ) é    N)ÚAnyÚDictÚListÚOptionalÚTupleÚTYPE_CHECKINGÚUnion)Úcall_backwardÚ	call_hookÚFakeCompiledAutogradEngine©ÚGetItemSourceÚLocalSource)ÚcountersÚlazy_format_graph_codeÚset_locals_to_steal)ÚgetArtifactLoggerÚtrace_structured©Úclone_preserve_strides)ÚFakeTensorMode)ÚGraphModule)ÚBackwardState)Ú	decomposeÚdisable_autocast_cacheÚdisable_proxy_modes_tracingÚfetch_object_proxyÚProxyTorchDispatchModeÚPythonKeyTracerÚtrack_tensor_tree)Ú
DimDynamicÚShapeEnv)Úpreserve_node_metaÚset_stack_trace)Ú
OrderedSet)ÚCapturedTraceback)ÚProxyÚcompiled_autogradÚcompiled_autograd_verbosec                  óT   — t           j        j        j                             d¦  «        S )Nr)   )ÚtorchÚ_loggingÚ	_internalÚ	log_stateÚis_artifact_enabled© ó    úPC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/compiled_autograd.pyÚ snapshot_verbose_logging_enabledr3   +   s%   € ÝŒ>Ô#Ô-×AÒAØ#ñô ð r1   c                  ó8   — t           j        j        j        j        S ©N)r+   Ú	_inductorÚconfigÚtritonÚ
cudagraphsr0   r1   r2   Úsnapshot_cudagraph_enabledr:   1   s   € ÝŒ?Ô!Ô(Ô3Ð3r1   c                 ó(   — | �t          | ¦  «        S | S r5   r   )Úxs    r2   Úmaybe_cloner=   5   s   € Ø€}Ý% aÑ(Ô(Ð(Ø€Hr1   )ÚinputsÚsizesÚscalarsÚhooksc                   óä  — e Zd Zd(d„Zd„ Zedefd„¦   «         Zdee	j
                 dee         deeeef                  d	eeeeef                           fd
„Zdefd„Zd„ Zdefd„Zd„ Zd„ Zd„ Zdee         fd„Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d „ Z$	 d)d	e%eeeef                           fd!„Z&d"efd#„Z'd$ed%ed&e%e	j(        j)                 fd'„Z*dS )*ÚAutogradCompilerInstanceÚreturnNc                 ó,  — || _         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)Úcompiler_fnÚ
contextlibÚ	ExitStackÚstackÚcloser"   rH   r   Úfake_tensor_moder   Ú	fx_tracerr   Ú
proxy_modeÚhooks_proxy)ÚselfrJ   s     r2   Ú__init__z!AutogradCompilerInstance.__init__G   sƒ   € Ø&ˆÔÝÔ)Ñ+Ô+ˆŒ
Ø”ZÔ%ˆŒ
Ý!™œˆŒÝ .Ø#'Ø"&Ø”nð!
ñ !
ô !
ˆÔõ
 )Ñ*Ô*ˆŒÝ0°´ÀÑLÔLˆŒØ,0ˆÔÐÐr1   c                 ór   — t          |t          j        ¦  «        sJ ‚| j                             ||¬¦  «        S )N)Úsource)Ú
isinstancer+   ÚTensorrO   Úfrom_tensor)rS   r<   rV   s      r2   Ú	wrap_fakez"AutogradCompilerInstance.wrap_fakeU   s6   € Ý˜!�Uœ\Ñ*Ô*Ð*Ð*Ð*ØÔ$×0Ò0°¸6Ð0ÑBÔBÐBr1   c                 ó<   — t          t          | ¦  «        |¦  «        S r5   r   )ÚnameÚidxs     r2   rV   zAutogradCompilerInstance.sourceY   s   € å�[¨Ñ.Ô.°Ñ4Ô4Ð4r1   r>   r?   r@   Úoriginsc                 ó<  ‡ — t           d         dxx         dz  cc<   d ‰ _        i ‰ _        t          j                             ¦   «         ‰ j        _        t          j         	                    t          ¬¦  «        ‰ j        _        i ‰ j        _        ˆ fd„t          D ¦   «         \  }}}‰ _        ‰ j                             t#          ¦   «         ¦  «         |\  }}	}
ˆ fd„t%          |¦  «        D ¦   «         }‰                      |||¦  «         ˆ fd„t%          |¦  «        D ¦   «         }‰                      |||	¦  «         t%          |¦  «        D ]Ñ\  }}‰                      d|¦  «        }t+          |t,          ¦  «        r*‰ j                             ||t2          j        ¦  «        ||<   ŒZt+          |t6          ¦  «        rF‰ j                             ‰ j                             ||t2          j        ¬	¦  «        ||¬
¦  «        ||<   Œµt=          dt?          |¦  «        ¦  «        ‚‰                      |||
¦  «         ‰ j                             tA          i ¦  «        ¦  «         ‰ j                             ‰ j!        ¦  «         ‰ j                             ‰ j"        ¦  «         ‰ j                             tG          ¦   «         ¦  «         ‰ j!        j        €J ‚‰ j!        j        }‰ j                             t          j        j$        j%         &                    |¦  «        ¦  «         |||fS )Nr(   Úcapturesé   )Ú
tracer_clsc              3   óR   •K  — | ]!}‰j                              d |di ¦  «        V — Œ"dS )Úplaceholderr0   N)rP   Úcreate_proxy)Ú.0r\   rS   s     €r2   ú	<genexpr>z9AutogradCompilerInstance.begin_capture.<locals>.<genexpr>j   sU   øè è € ð D
ð D
àð ŒN×'Ò'¨°t¸RÀÑDÔDðD
ð D
ð D
ð D
ð D
ð D
r1   c           	      ój   •— g | ]/\  }}‰                      |‰                     d |¦  «        ¦  «        ‘Œ0S )r>   )rZ   rV   )rf   r]   r<   rS   s      €r2   ú
<listcomp>z:AutogradCompilerInstance.begin_capture.<locals>.<listcomp>r   sI   ø€ ð 
ð 
ð 
á��Qð �NŠN˜1˜dŸkšk¨(°CÑ8Ô8Ñ9Ô9ð
ð 
ð 
r1   c           	      óŠ   •— g | ]?\  }}‰j                              |‰                     d |¦  «        t          j        ¦  «        ‘Œ@S )r?   )rH   Ú$create_unspecified_symint_and_symbolrV   r!   ÚDYNAMIC)rf   r]   ÚvalrS   s      €r2   ri   z:AutogradCompilerInstance.begin_capture.<locals>.<listcomp>y   s[   ø€ ð 
ð 
ð 
ñ ��Sð ŒN×?Ò?ØØ—’˜G SÑ)Ô)ÝÔ"ñô ð
ð 
ð 
r1   r@   )rV   Údynamic_dim)ÚhintrV   zUnexpected scalar type: )'r   Úaot_graph_cls_nameÚaot_graph_infosr+   ÚnnÚModulerP   ÚrootÚfxÚGraphr   ÚgraphÚtensor_attrsÚ_graph_placeholdersrR   rM   Úenter_contextr#   Ú	enumerateÚbind_tensors_to_proxiesrV   rW   ÚintrH   rk   r!   rl   ÚfloatÚcreate_symfloatnodeÚcreate_unspecified_symbolÚAssertionErrorÚtyper   rO   rQ   r   ÚexperimentalÚsymbolic_shapesÚ_suppress_guards)rS   r>   r?   r@   r^   Ú
args_proxyÚsizes_proxyÚscalars_proxyÚinputs_originsÚsizes_originsÚscalars_originsr]   rm   rV   Úenvs   `              r2   Úbegin_capturez&AutogradCompilerInstance.begin_capture]   s;  ø€ õ 	Ð$Ô% jÐ1Ð1Ô1°QÑ6Ð1Ð1Ñ1Ø15ˆÔØ:<ˆÔÝ#œhŸošoÑ/Ô/ˆŒÔÝ$œxŸ~š~½˜~ÑIÔIˆŒÔØ&(ˆŒÔ#ðD
ð D
ð D
ð D
å+ðD
ñ D
ô D
Ñ@ˆ
�K °Ô0@ð
 	Œ
× Ò Õ!3Ñ!5Ô!5Ñ6Ô6Ð6Ø9@Ñ6ˆ˜ ð
ð 
ð 
ð 
å# FÑ+Ô+ð
ñ 
ô 
ˆð 	×$Ò$ V¨Z¸ÑHÔHÐHð
ð 
ð 
ð 
õ & eÑ,Ô,ð
ñ 
ô 
ˆð 	×$Ò$ U¨K¸ÑGÔGÐGå! 'Ñ*Ô*ð 	Lð 	L‰HˆC�Ø—[’[ ¨CÑ0Ô0ˆFÝ˜#�sÑ#Ô#ð LØ#œ~×RÒRØØÝÔ&ñ ô  �˜‘�õ
 ˜C¥Ñ'Ô'ð LØ#œ~×AÒAØ”N×<Ò<ØØ%Ý$.Ô$6ð =ñ ô ð
 Ø!ð  Bñ  ô  �˜‘�õ %Ð%?ÅÀcÁÄÑKÔKÐKØ×$Ò$ W¨m¸_ÑMÔMÐMð 	Œ
× Ò ¥¨2¡¤Ñ/Ô/Ð/ØŒ
× Ò  Ô!6Ñ7Ô7Ð7ØŒ
× Ò  ¤Ñ1Ô1Ð1ØŒ
× Ò Õ!7Ñ!9Ô!9Ñ:Ô:Ð:àÔ$Ô.Ð:Ð:Ð:ØÔ#Ô-ˆØŒ
× Ò ÝŒHÔ!Ô1×BÒBÀ3ÑGÔGñ	
ô 	
ð 	
ð �u˜gÐ%Ð%r1   Úbackward_idxc           
      ó  — | j         €J ‚| j         |         }| j                             dt          ||                      |¦  «        g|                      |¦  «        ¢R i ¬¦  «        }t          ¦   «         5  g }|D ]L}|€|                     d ¦  «         Œ|\  }	}
}}|                     t          j        |||	|
¬¦  «        ¦  «         ŒM|  	                    ||¦  «         d d d ¦  «         n# 1 swxY w Y   t          |¦  «        S )NÚcall_function)ÚkindÚtargetÚargsÚkwargs)ÚsizeÚdtypeÚlayoutÚdevice)rR   rP   re   r
   Úto_proxyr   Úappendr+   Úemptyr|   Útuple)rS   r>   Úoutput_metadatasÚsaved_tensorsrŽ   Úbackward_c_functionÚproxiesÚgrad_insÚoutput_metadatar—   r˜   r–   r•   s                r2   Úproxy_call_backwardz,AutogradCompilerInstance.proxy_call_backward¦   sq  € ð ÔÐ+Ð+Ð+Ø"Ô.¨|Ô<ÐØ”.×-Ò-Ø Ý à#Ø—’˜mÑ,Ô,ðð —’˜vÑ&Ô&ðð ð
 ð .ñ 	
ô 	
ˆõ )Ñ*Ô*ð 	<ð 	<à57ˆHØ#3ð ð �Ø"Ð*Ø—O’O DÑ)Ô)Ð)Øà.=Ñ+�˜  tØ—’Ý”K T°¸vÈfÐUÑUÔUñô ð ð ð ×(Ò(¨°7Ñ;Ô;Ð;ð	<ð 	<ð 	<ñ 	<ô 	<ð 	<ð 	<ð 	<ð 	<ð 	<ð 	<øøøð 	<ð 	<ð 	<ð 	<õ �X‰ŒÐs   Á3A(C'Ã'C+Ã.C+c                 óh   ‡ — ‰ j                              dt          |gˆ fd„|D ¦   «         ¢R |¦  «        S )Nr�   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r0   ©r™   ©rf   r<   rS   s     €r2   ri   z<AutogradCompilerInstance.proxy_call_hook.<locals>.<listcomp>Ï   s%   ø€ Ð1Ð1Ð1 q�$—-’- Ñ"Ô"Ð1Ð1Ð1r1   )rP   re   r   )rS   Úhookr“   r”   s   `   r2   Úproxy_call_hookz(AutogradCompilerInstance.proxy_call_hookÉ   sQ   ø€ ØŒ~×*Ò*ØÝàðà1Ð1Ð1Ð1¨DÐ1Ñ1Ô1ðð ð ñ
ô 
ð 	
r1   Úic                 ó&  — | j         €J ‚| j         |         }|                      |||         d¬¦  «        }t          ¦   «         5  t          ||         ¦  «        ||<   |                      ||         g|g¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NÚtensor_pre_hook©Ú	hook_type)rR   r©   r   r=   r|   )rS   r>   Úhook_idrª   r¨   Úproxys         r2   r¬   z(AutogradCompilerInstance.tensor_pre_hookÔ   sâ   € ØÔÐ+Ð+Ð+ØÔ Ô(ˆØ×$Ò$ØØ�1ŒIØ'ð %ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	?ð 	?Ý# F¨1¤IÑ.Ô.ˆF�1‰IØ×(Ò(¨&°¬)¨°u°gÑ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð ˆs   Á7BÂB
ÂB
c                 óò   — | j         €J ‚| j         |         }|                      ||d¬¦  «        }t          ¦   «         5  d„ |D ¦   «         }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NÚpre_hookr­   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r0   ©r=   ©rf   r<   s     r2   ri   z5AutogradCompilerInstance.pre_hook.<locals>.<listcomp>ê   s   € Ð5Ð5Ð5¨•k !‘n”nÐ5Ð5Ð5r1   ©rR   r©   r   r|   )rS   r>   r¯   r¨   r    s        r2   r²   z!AutogradCompilerInstance.pre_hooká   sÔ   € ØÔÐ+Ð+Ð+ØÔ Ô(ˆØ×&Ò&ØØØ ð 'ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	:ð 	:Ø5Ð5¨fÐ5Ñ5Ô5ˆFØ×(Ò(¨°Ñ9Ô9Ð9ð	:ð 	:ð 	:ñ 	:ô 	:ð 	:ð 	:ð 	:ð 	:ð 	:ð 	:øøøð 	:ð 	:ð 	:ð 	:ð ˆs   ½#A,Á,A0Á3A0c                 óô   — | j         €J ‚| j         |         }|                      |||d¬¦  «        }t          ¦   «         5  d„ |D ¦   «         }|                      ||¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NÚ	post_hookr­   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r0   r´   rµ   s     r2   ri   z6AutogradCompilerInstance.post_hook.<locals>.<listcomp>ø   s   € Ð7Ð7Ð7¨!•{ 1‘~”~Ð7Ð7Ð7r1   r¶   )rS   Úoutputsr>   r¯   r¨   r    s         r2   r¸   z"AutogradCompilerInstance.post_hookî   s×   € ØÔÐ+Ð+Ð+ØÔ Ô(ˆØ×&Ò&ØØØØ!ð	 'ñ 
ô 
ˆõ )Ñ*Ô*ð 	;ð 	;Ø7Ð7¨wÐ7Ñ7Ô7ˆGØ×(Ò(¨°'Ñ:Ô:Ð:ð	;ð 	;ð 	;ñ 	;ô 	;ð 	;ð 	;ð 	;ð 	;ð 	;ð 	;øøøð 	;ð 	;ð 	;ð 	;ð ˆs   ¾#A-Á-A1Á4A1c                 ó4  — t          |t          j        ¦  «        sJ ‚| j        €J ‚| j        |         }|                      ||d¬¦  «        }t          ¦   «         5  t          |¦  «        g}|                      ||g¦  «         d d d ¦  «         n# 1 swxY w Y   |S )NÚpost_acc_grad_hookr­   )rW   r+   rX   rR   r©   r   r=   r|   )rS   Úinputr¯   r¨   r°   s        r2   r¼   z+AutogradCompilerInstance.post_acc_grad_hookü   së   € Ý˜%¥¤Ñ.Ô.Ð.Ð.Ð.ØÔÐ+Ð+Ð+ØÔ Ô(ˆØ×$Ò$ØØØ*ð %ñ 
ô 
ˆõ
 )Ñ*Ô*ð 	9ð 	9Ý  Ñ'Ô'Ð(ˆEØ×(Ò(¨°°Ñ8Ô8Ð8ð	9ð 	9ð 	9ñ 	9ô 	9ð 	9ð 	9ð 	9ð 	9ð 	9ð 	9øøøð 	9ð 	9ð 	9ð 	9ð ˆs   Á(BÂBÂBc                 ó¬  — i }d}t          |j        ¦  «        }|d         j        dk    sJ ‚|d         }t          |j                             ¦   «         ¦  «        }t          t          ¦  «        }||         |d         k    sJ ‚|t          |¦  «        z   dz
  }||         |d         k    sJ ‚t          |¦  «        D ]¸\  }	}
|s|
j        d         j	        j
        dk    rd}Œ%|
j        d         j	        j
        d	k    }t          |
j        d                              ¦   «         ¦  «        dk    }|rF|rDt          |
j                             ¦   «         ¦  «        }t          d
„ |D ¦   «         ¦  «        r|
||	<   Œ¹|r_|                     ¦   «         D ])}
|
j        d                              ¦   «         |
j        d<   Œ*t          |                     ¦   «         ¦  «        S g S )NFr   r>   ra   éÿÿÿÿrm   ÚcudaTÚcpuc              3   óz   K  — | ]6}t          |j        t          j        j        ¦  «        o|j        j        d v V — Œ7dS ))ÚprimsÚatenN)rW   r’   r+   Ú_opsÚ
OpOverloadÚ	namespace©rf   Úusers     r2   rg   zDAutogradCompilerInstance.move_graph_nodes_to_cuda.<locals>.<genexpr>$  s]   è è € ð ð ð õ ˜tœ{­E¬JÔ,AÑBÔBð CØœÔ-Ð1BÐBðð ð ð ð ð r1   )ÚlistÚnodesr’   ÚusersÚkeysÚlenry   r{   Úmetar˜   r‚   r•   ÚallÚvaluesrÀ   )rS   rw   Úto_moveÚhas_cuda_inputsrË   r>   Úinputs_usersÚfirst_getitem_idxÚlast_getitem_idxrª   ÚnodeÚis_cpuÚ	is_scalarÚ
node_userss                 r2   Úmove_graph_nodes_to_cudaz1AutogradCompilerInstance.move_graph_nodes_to_cuda  sø  € Ø,.ˆØˆÝ�U”[Ñ!Ô!ˆØ�QŒxŒ (Ò*Ð*Ð*Ð*Ø�q”ˆÝ˜FœL×-Ò-Ñ/Ô/Ñ0Ô0ˆåÕ 3Ñ4Ô4ÐØÐ&Ô'¨<¸¬?Ò:Ð:Ð:Ð:Ø,­s°<Ñ/@Ô/@Ñ@À1ÑDÐØÐ%Ô&¨,°rÔ*:Ò:Ð:Ð:Ð:Ý  Ñ.Ô.ð 	&ð 	&‰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øð ð 	(ØŸšÑ(Ô(ð ;ð ;�Ø#'¤9¨UÔ#3×#8Ò#8Ñ#:Ô#:�”	˜%Ñ Ð õ ˜Ÿš™œÑ'Ô'Ð'àˆ	r1   c                 óÐ   — t          |t          j        j        ¦  «        oG|j        dk    o<|j        t          j        j        j        j	        t          j        j        j
        j        fv S )Nr�   )rW   r+   ru   ÚNodeÚopr’   ÚopsrÄ   Úsym_sizer}   Ú	sym_numelÚdefault)rS   r×   s     r2   Úis_sym_nodez$AutogradCompilerInstance.is_sym_node7  sU   € å�t�UœXœ]Ñ+Ô+ð OØ”˜?Ò*ðOà”Ý”	”Ô'Ô+­U¬Y¬^Ô-EÔ-MÐNðOð	
r1   c                 ód  ‡— t          ¦   «         Št          | j        j                             d¬¦  «        ¦  «        D ]1\  }}‰                     |j                             ¦   «         ¦  «         Œ2|t          t          ¦  «        dz
  k    sJ ‚ˆfd„}| j        j         
                    |¦  «         d S )Nrd   )rÞ   ra   c                 ój   •— | ‰v p.| j         dk    p#| j         dk    p| j         dk    o| j        t          v S )Nrd   Úoutputr�   )rÞ   r’   Ú_impure_targets)r×   Úunpack_nodess    €r2   Ú	is_impurez/AutogradCompilerInstance.dce.<locals>.is_impureI  sN   ø€ à˜Ð$ð SØ”7˜mÒ+ðSà”7˜hÒ&ðSð ”G˜Ò.ÐQ°4´;Å/Ð3Qð	r1   )r%   r{   rP   rw   Ú
find_nodesÚupdaterÌ   rÍ   rÎ   ry   Úeliminate_dead_code)rS   rª   r×   ré   rè   s       @r2   ÚdcezAutogradCompilerInstance.dce?  s»   ø€ õ
 3=±,´,ˆÝ  ¤Ô!5×!@Ò!@ÀMÐ!@Ñ!RÔ!RÑSÔSð 	3ð 	3‰GˆAˆtØ×Ò ¤
§¢Ñ 1Ô 1Ñ2Ô2Ð2Ð2Ø•CÕ+Ñ,Ô,¨qÑ0Ò0Ð0Ð0Ð0ð	ð 	ð 	ð 	ð 	ð 	ŒÔ×0Ò0°Ñ;Ô;Ð;Ð;Ð;r1   c           	      ó  ‡‡— | j                              dt          j        di ¦  «         | j                             ¦   «          | j                              dd| j                              |                      |¦  «        ¦  «        fi ¦  «         |  	                    ¦   «          |  
                    ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          g Št#          ¦   «         r|                      | j         j        ¦  «        Št)          | j         j        | j         j        d¦  «        Št-          ‰dg¦  «         t/          d‰ddd¬¦  «        }t0                               d	|¦  «         t4                               d	|¦  «         t9          d
ˆfd„¬¦  «         ˆfd„}||                      ‰¦  «        fS )Nr�   r0   ræ   ÚCompiledAutogradr>   zCompiled autograd graphT)Úinclude_deviceÚinclude_strideÚcoloredz%sÚcompiled_autograd_graphc                  ó0   •— ‰                       d¬¦  «        S )NF)Úprint_output)Úprint_readable)rw   s   €r2   ú<lambda>z6AutogradCompilerInstance.end_capture.<locals>.<lambda>†  s   ø€ ˜u×3Ò3ÀÐ3ÑGÔG€ r1   )Ú
payload_fnc                 óú   •— 	 da ‰D ]3}||                              ¦   «                              d¬¦  «        ||<   Œ4t          ¦   «         5   | ||||¦  «        cd d d ¦  «         da S # 1 swxY w Y   	 da d S # da w xY w)NT)Únon_blockingF)Úin_compiled_autograd_regionÚ
pin_memoryrÀ   Ú_disable)Úcompiled_fnr>   r?   r@   rA   rª   Úruntime_inputs_to_moves         €r2   Úruntime_wrapperz=AutogradCompilerInstance.end_capture.<locals>.runtime_wrapper‰  sÿ   ø€ ð4Ø.2Ð+Ø/ð Oð O�AØ & q¤	× 4Ò 4Ñ 6Ô 6× ;Ò ;ÈÐ ;Ñ NÔ N�F˜1‘I�Iå‘Z”Zð Fð FØ&˜; v¨u°g¸uÑEÔEðFð Fð Fð Fñ Fô Fð Fð /4Ð+Ð+ðFð Fð Fð Føøøð Fð Fð Fð Fð Fð /4Ð+Ð+Ð+ø¨eÐ+Ð3Ð3Ð3Ð3s0   ƒAA6 Á	A&ÁA6 Á&A*Á*A6 Á-A*Á.A6 Á6A:)rP   re   r   Ú_exec_final_callbacks_stubrM   rN   Úcreate_nodeÚ
create_argr™   Úrename_aot_dispatcher_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Û   rw   r   rt   r   r   Úcompiled_autograd_logÚinfoÚverbose_logÚdebugr   rJ   )rS   rº   Úlazy_graph_coder   rw   rÿ   s       @@r2   Úend_capturez$AutogradCompilerInstance.end_captureS  s%  øø€ ØŒ×#Ò#ØÝ&ÔAØØñ		
ô 	
ð 	
ð 	Œ
×ÒÑÔÐØŒ×"Ò"ØØØŒ^×&Ò& t§}¢}°WÑ'=Ô'=Ñ>Ô>Ð@Øñ		
ô 	
ð 	
ð 	×(Ò(Ñ*Ô*Ð*Ø×*Ò*Ñ,Ô,Ð,Ø×4Ò4Ñ6Ô6Ð6Ø×*Ò*Ñ,Ô,Ð,Ø×2Ò2Ñ4Ô4Ð4Ø×-Ò-Ñ/Ô/Ð/Ø×$Ò$Ñ&Ô&Ð&ð 	�Š‰
Œ
ˆ
Ø,.ÐÝ%Ñ'Ô'ð 	YØ%)×%BÒ%BÀ4Ä>ÔCWÑ%XÔ%XÐ"åØŒNÔ ¤Ô!5Ð7Iñ
ô 
ˆõ 	˜E H :Ñ.Ô.Ð.Ý0Ø%ØØØØð
ñ 
ô 
ˆõ 	×"Ò" 4¨Ñ9Ô9Ð9Ý×Ò˜$ Ñ0Ô0Ð0ÝØ%ØGÐGÐGÐGð	
ñ 	
ô 	
ð 	
ð

	4ð 
	4ð 
	4ð 
	4ð 
	4ð  × 0Ò 0°Ñ 7Ô 7Ð7Ð7r1   c           	      óª  — | j         €dS dt          j        j        j        dt          j        j        j        fd„}| j                             ¦   «         D �]þ\  }}|d         }|d         }|d         j        }t          |j	        ¦  «        }t          |¦  «        }|€J ‚	 |j        dk    rt          |¦  «        }|j        dk    °n# t          $ r Y Œ}w xY w	 t          | j        j        j	        ¦  «        }	t          |¦  «        D ]}
t          |	¦  «         Œt          |	¦  «        }|j        d	k    r2 |||¦  «        s&t          |	¦  «        }|j        d	k    r |||¦  «        ¯&|j        d	k    r²|j        d	k    r§|j        st          |	¦  «        }Œ- |||¦  «        st          ‚d|› d
|j        › �|_        t#          |j        ¦  «        D ]"\  }}d|› d
|j        › �|j        |         _        Œ#t          |¦  «        }t          |	¦  «        }|j        d	k    r|j        d	k    °§�ŒÌ# t          $ r' t&                               d| j         |||¦  «         Y �Œüw xY wdS )z­
        Renames nodes as they appear in the AOTDispatcher backward graphs, prefixed by AOT id
        e.g. AOTDispatcher backward graph X's `sin_Y` -> `aotX_sin_Y`
        NÚcaÚaotc                 óœ  — | j         |j         k    }|sDt          | j         d¦  «        o.t          |j         d¦  «        o| j         j        |j         j        k    }|s©t          | j         d¦  «        r”t          |j         d¦  «        r|j                              ¦   «         dk    rbt          |j                             d¦  «        d¦  «        r:| j                              ¦   «         |j        d                              ¦   «         k    }|oI| j        |j        k    o9| j        |j        k    o)t          | j	        ¦  «        t          |j	        ¦  «        k    S )NÚ__name__r\   zaten::reshapeÚoriginal_aten)
r’   Úhasattrr  r\   rÏ   ÚgetrÞ   r‚   rÎ   Úall_input_nodes)r  r  Útarget_matchs      r2   Ú
is_similarzHAutogradCompilerInstance.rename_aot_dispatcher_nodes.<locals>.is_similarŸ  sI  € àœ9¨¬
Ò2ˆLØð õ ˜BœI zÑ2Ô2ð BÝ ¤
¨JÑ7Ô7ðBàœ	Ô*¨c¬jÔ.AÒAð ð !ðTå˜BœI vÑ.Ô.ðTõ ˜CœJ¨Ñ/Ô/ðTð ”J—O’OÑ%Ô%¨Ò8Ð8Ý˜CœHŸLšL¨Ñ9Ô9¸6ÑBÔBð 9ð  "œyŸ~š~Ñ/Ô/°3´8¸OÔ3L×3QÒ3QÑ3SÔ3SÒS�ð ð HØ”E˜SœV’OðHà”G˜sœxÒ'ðHõ ˜Ô*Ñ+Ô+­s°3Ô3FÑ/GÔ/GÒGð	r1   Úca_node_start_idxÚaot_idÚaot_gmr�   ræ   Ú_zIFailed to match %s%s (NodeCall %s) nodes with AOT backward graph %s nodes)rp   r+   ru   r×   rÝ   rq   Úitemsrw   ÚiterrË   ÚnextrÞ   ÚStopIterationrP   ÚrangerÌ   r\   r{   r  r  r  )rS   r  Únodecall_indexr  r  r  Ú	aot_graphÚaot_itÚaot_nodeÚca_itr  Úca_noderª   Úinps                 r2   r  z4AutogradCompilerInstance.rename_aot_dispatcher_nodes—  sÏ  € ð
 Ô"Ð*ØˆFð	�5œ8œ=Ô-ð 	µE´H´MÔ4Fð 	ð 	ð 	ð 	ð6 %)Ô$8×$>Ò$>Ñ$@Ô$@ð 5	ñ 5	Ñ ˆN˜DØ $Ð%8Ô 9ÐØ˜(”^ˆFØ˜XœÔ,ˆIõ ˜)œ/Ñ*Ô*ˆFÝ˜F‘|”|ˆHØÐ'Ð'Ð'ðØ”k _Ò4Ð4Ý# F™|œ|�Hð ”k _Ò4Ð4øøå ð ð ð Ø�ðøøøð&å˜Tœ^Ô1Ô7Ñ8Ô8�ÝÐ0Ñ1Ô1ð  ð  �AÝ˜‘K”K�K�KÝ˜u™+œ+�ð ”j HÒ,Ð,°Z°ZÀÈÑ5RÔ5RÐ,õ # 5™kœk�Gð ”j HÒ,Ð,°Z°ZÀÈÑ5RÔ5RÐ,ð ”k XÒ-Ð-°'´*ÀÒ2HÐ2HØ"œ=ð !å"& u¡+¤+˜Ø à%˜: g¨xÑ8Ô8ð ,õ ,Ð+à#A¨Ð#AÐ#A°(´-Ð#AÐ#A�G”LÝ"+¨HÔ,DÑ"EÔ"Eð Tð T™˜˜3Ø:SÀÐ:SÐ:SÈÌÐ:SÐ:S˜Ô/°Ô2Ô7Ð7å# F™|œ|�HÝ" 5™kœk�Gð! ”k XÒ-Ð-°'´*ÀÒ2HÐ2Hùøõ" !ð ð ð Ý×!Ò!Ø_ØÔ+ØØ"Øñô ð ð ñ ðøøøð]5	ð 5	s%   Â%CÃ
CÃCÃEHÈ-IÉIc                 ó   — d„ | D ¦   «         }|S )Nc                 óR   — g | ]$}t          |¦  «        t          j        j        u ¯"|‘Œ%S r0   )r‚   r+   ru   rÝ   )rf   Úns     r2   ri   z:AutogradCompilerInstance.get_all_nodes.<locals>.<listcomp>ô  s,   € Ð=Ð=Ð=�q¥D¨¡G¤G­u¬x¬}Ð$<Ð$<�Ð$<Ð$<Ð$<r1   r0   )r“   rË   s     r2   Úget_all_nodesz&AutogradCompilerInstance.get_all_nodesñ  s   € ð >Ð=˜DÐ=Ñ=Ô=ˆØˆr1   c                 óŒ   — | j         dk    s6| j         dk    r-| j        t          j        k    r| j        d         j         dk    rdS dS )Nrd   r�   r   TF)rÞ   r’   ÚoperatorÚgetitemr“   )r×   s    r2   Úis_placeholderz'AutogradCompilerInstance.is_placeholder÷  sI   € àŒ7�mÒ#Ð#ØŒG�Ò&Ð&Ø”�xÔ/Ò/Ð/Ø”	˜!”” =Ò0Ð0à�4Øˆur1   c                 ó¶  — | j         j                             dt          j        j        j        j        ¬¦  «        D ]�}|j        d         |j        d         }}d}|j	        t          j        k    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.
        r�   ©rÞ   r’   r   ra   N)rP   rw   rê   r+   rß   ÚinductorÚaccumulate_grad_râ   r“   r’   r1  r2  ÚmaxÚprevr3  rš   )rS   r×   Ú
param_nodeÚ	grad_nodeÚgetitem_nodeÚargs         r2   r  z6AutogradCompilerInstance.reorder_accumulate_grad_nodes  sã   € ð ”NÔ(×3Ò3Ø¥u¤yÔ'9Ô'JÔ'Rð 4ñ 
ô 
ð 	-ð 	-ˆDð %)¤I¨a¤L°$´)¸A´,˜	ˆJØˆLØÔ¥8Ô#3Ò3Ð3Ø(�Ø(Ô-¨aÔ0�	å�z 9Ð-Ñ.Ô.ˆCØ˜$œ)Ð#Ð#¨D×,?Ò,?ÀÑ,DÔ,DÐ#Ø—
’
˜4Ñ Ô Ð ØÐ+Ø—J’J˜|Ñ,Ô,Ð,øð	-ð 	-r1   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.
        r�   r5  r®   Nr¬   r   ra   )
rP   rw   rê   r   r”   r  r“   r9  r3  rš   )rS   r×   r<  Ú
input_nodes       r2   r  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Ñ)Ô)Ð)øð	*ð 	*r1   c                 ó  — | j         j                             dt          ¬¦  «        D �]b}|j                             dd¦  «        dk    rŒ#|j        d         }|                      |j        d         ¦  «        }g }g }|g}|D ]l}|j        dk    r_|j	        t          j        k    rJ|                     |j        d         ¦  «         |                     |¦  «         |                     |¦  «         Œmt          ||¦  «        D ]/\  }}	|                     |¦  «         |                     |	¦  «         Œ0t          |¦  «        }
|
|j        urD|                      |
¦  «        s/|
                     |¦  «         |D ]}|                     |¦  «         Œ�Œdd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.
        r�   r5  r®   Nr²   r   ra   )rP   rw   rê   r   r”   r  r“   r/  rÞ   r’   r1  r2  rš   ÚzipÚremover8  r9  r3  )rS   r×   r<  Úinput_nodesÚ	to_removeÚ	to_appendÚ
hook_blockr.  ÚaÚbr=  s              r2   r  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	+ð 	+r1   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J ‚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.
        r�   r5  r®   Nr²   r   c              3   óV   K  — | ]$}|j         d k    o|j        t          j        k    V — Œ%dS )r�   N)rÞ   r’   r1  r2  rÈ   s     r2   rg   zQAutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eager.<locals>.<genexpr>e  sL   è è € ð ð àð ”˜?Ò*ÐN¨t¬{½hÔ>NÒ/Nðð ð ð ð ð r1   )rP   rw   rê   r   r”   r  rš   Úreversedr“   rÊ   rÌ   rÍ   rÎ   rÐ   r"  r!  Úprepend)rS   Ú	pre_hooksr×   Úhook_getitem_noderÌ   Úregistered_noder2  s          r2   r  z>AutogradCompilerInstance.reorder_pre_hook_nodes_to_mimic_eagerN  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ð 	5r1   c                 óF  — g }| j         j                             dt          ¬¦  «        D ]7}|j                             dd¦  «        dk    rŒ"|                     |¦  «         Œ8t          |¦  «        D ]°}|j        d         }|j        d         }d}t          |j
                             ¦   «         ¦  «        D ]5}|j        dk    r(|j        t          j        j        j        j        k    r|} nŒ6|€
J 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.
        r�   r5  r®   Nr¼   r   ra   z8post_acc_grad_hook must have corresponding acc grad node)rP   rw   rê   r   r”   r  rš   rK  r“   rÊ   rÌ   rÍ   rÞ   r’   r+   rß   r6  r7  râ   )rS   Úpost_acc_grad_hooksr×   r<  r:  Úacc_grad_noder.  s          r2   r	  z9AutogradCompilerInstance.reorder_post_acc_grad_hook_nodesq  sM  € ð !ÐØ”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ð ð �à”D˜OÒ+Ð+Øœ¥E¤IÔ$6Ô$GÔ$OÒOÐOà$%�MØ�Eøð Ð)Ð)ØIñ *Ô)Ð)ð × Ò  Ñ.Ô.Ð.Ø×Ò Ñ%Ô%Ð%Ð%ð)	&ð 	&r1   c           	      ó’  ‡— 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"          j        j        j        j        k    r¢|j        d         }d}	t          |j                             ¦   «         ¦  «        D ]>}
|
j        dk    r1|
j        t          k    r!|
j                             dd¦  «        d
k    r|
}	Œ?|	�,|	                     |¦  «         |                     ‰¦  «         �ŒŒ|‰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.
        r�   r5  r®   Nr¸   r   ra   é   c              3   ó�   •K  — | ]@}|j         d k    r/|j        t          k    r‰j                             dd¦  «        dk    °<|V — ŒAdS )r�   r®   Nr¸   )rÞ   r’   r   r”   r  )rf   rÉ   r×   s     €r2   rg   zCAutogradCompilerInstance.reorder_post_hook_nodes.<locals>.<genexpr>²  sg   øè è € ð -ð -ààœ ?Ò2Ð2Ø œK­9Ò4Ð4Ø œKŸOšO¨K¸Ñ>Ô>À+ÒMÐMð ð
 NÐMÐMÐMð-ð -r1   r¼   )rP   rw   rê   r   r”   r  rš   rK  r“   rÎ   ÚextendrÊ   rÌ   rÍ   r8  rÞ   r’   r+   rß   r6  r7  râ   r9  r3  )rS   Ú
post_hooksr<  Úoutput_nodesrC  Úinput_nodes_and_usersr?  r=  r:  Úpost_acc_grad_hook_noder.  r×   s              @r2   r
  z0AutogradCompilerInstance.reorder_post_hook_nodes˜  st  ø€ ð ˆ
Ø”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à”˜/Ò)Ð)Ø”J¥%¤)Ô"4Ô"EÔ"MÒMÐMà œ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Ñ)Ô)Ð)ùðW+	*ð +	*r1   c                 óx  ‡ — |€d S t          |t          ¦  «        rˆ fd„|D ¦   «         S t          |t          ¦  «        rt          ˆ fd„|D ¦   «         ¦  «        S t          |t          j        ¦  «        sJ ‚t          ‰ j        |¦  «        }t          |t          j        j        j	        j
        ¦  «        sJ ‚|j        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r0   r¦   r§   s     €r2   ri   z5AutogradCompilerInstance.to_proxy.<locals>.<listcomp>Ø  s%   ø€ Ð0Ð0Ð0¨�D—M’M !Ñ$Ô$Ð0Ð0Ð0r1   c              3   óB   •K  — | ]}‰                      |¦  «        V — Œd S r5   r¦   r§   s     €r2   rg   z4AutogradCompilerInstance.to_proxy.<locals>.<genexpr>Ú  s/   øè è € Ð5Ð5¨a˜Ÿš qÑ)Ô)Ð5Ð5Ð5Ð5Ð5Ð5r1   )rW   rÊ   rœ   r+   rX   r   rP   ru   rƒ   Úproxy_tensorÚ_ProxyTensorr°   )rS   Útr^  s   `  r2   r™   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å˜!�Uœ\Ñ*Ô*Ð*Ð*Ð*Ý)¨$¬.¸!Ñ<Ô<ˆÝ˜,­¬Ô(=Ô(JÔ(WÑXÔXÐXÐXÐXØÔ!Ð!r1   c                 ó  ‡— t          ‰t          j        j        ¦  «        r­|rƒt	          |¦  «        t	          |¦  «        k    sJ ‚g }t          t	          |¦  «        ¦  «        D ]?}||         \  }}|                      ||d ¦  «         |                     ‰|         ¦  «         Œ@|Šn(ˆfd„t          t	          |¦  «        ¦  «        D ¦   «         Št	          |¦  «        t	          ‰¦  «        k    sJ ‚t          |‰d | j	        ¬¦  «         d S )Nc                 ó    •— g | ]
}‰|         ‘ŒS r0   r0   )rf   rª   r    s     €r2   ri   zDAutogradCompilerInstance.bind_tensors_to_proxies.<locals>.<listcomp>î  s   ø€ ÐCÐCÐC¨!˜7 1œ:ÐCÐCÐCr1   ©ÚconstantÚtracer)
rW   r+   ru   r'   rÎ   r$  Úset_node_originrš   r    rP   )rS   Útensorsr    r^   Úbound_proxiesrª   r%  Ú	node_names     `     r2   r|   z0AutogradCompilerInstance.bind_tensors_to_proxiesá  s  ø€ õ �g�uœxœ~Ñ.Ô.ð 
	DØð 	DÝ˜7‘|”|¥s¨7¡|¤|Ò3Ð3Ð3Ð3Ø "�Ý�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�å�7‰|Œ|�s 7™|œ|Ò+Ð+Ð+Ð+Ý˜' 7°TÀ$Ä.ÐQÑQÔQÐQÐQÐQr1   Úindexc                 ó~   — | j         €J ‚| j         |         }t          ¦   «         }t          ||d | j        ¬¦  «         |S )Nrc  )rR   r   r    rP   )rS   rj  r°   Úbw_states       r2   Úbind_backward_statez,AutogradCompilerInstance.bind_backward_stateó  sE   € ØÔÐ+Ð+Ð+ØÔ  Ô'ˆÝ ‘?”?ˆÝ˜( E°DÀÄÐPÑPÔPÐPØˆr1   ri  r%  Úpyobjc                 ót  — d}|�Y|j         }t          |d¦  «        rB|| _        |j        }t	          | j        j        j        ¦  «        ||j        j	        dœ| j
        |<   |› |› d|› d�}t          j        ¦   «                              ¦   «         d         }|                     d|¦  «        }t          |¦  «         d S )NÚ Ú_aot_id)r  r  r  z (NodeCall ú)r¿   z:raw_stack_trace = CapturedTraceback.extract().format()[-1])Ú_forward_clsr  rp   rq  rÎ   rP   rw   rË   Ú_lazy_backward_infoÚ	bw_modulerq   r&   ÚextractÚformatÚreplacer$   )	rS   ri  r%  rn  Úmaybe_aot_idÚforward_clsÚnew_codeÚraw_stack_traceÚnew_stack_traces	            r2   rf  z(AutogradCompilerInstance.set_node_originú  sØ   € ð ˆØÐØÔ,ˆKÝ�{ IÑ.Ô.ð à*3�Ô'Ø*Ô2�å),¨T¬^Ô-AÔ-GÑ)HÔ)HØ*Ø)Ô=ÔGð8ð 8�Ô$ ^Ñ4ð  ÐK ÐKÐK¸.ÐKÐKÐKˆÝ+Ô3Ñ5Ô5×<Ò<Ñ>Ô>¸rÔBˆØ)×1Ò1ØHÈ(ñ
ô 
ˆõ 	˜Ñ(Ô(Ð(Ð(Ð(r1   ©rD   Nr5   )+r  Ú
__module__Ú__qualname__rT   rZ   Ústaticmethodr   rV   r   r+   rX   r}   r	   r~   r   Ústrr�   r£   r©   r¬   r²   r¸   r¼   rÛ   rã   rí   r  r  r/  r3  r  r  r  r  r	  r
  r™   r   r|   rm  ÚautogradÚFunctionrf  r0   r1   r2   rC   rC   F   sá  € € € € € ð1ð 1ð 1ð 1ðCð Cð Cð ð5˜]ð 5ð 5ð 5ñ „\ð5ðG&à�U”\Ô"ðG&ð �CŒyðG&ð �e˜C ˜JÔ'Ô(ð	G&ð
 �d˜5  c œ?Ô+Ô,ðG&ð G&ð G&ð G&ðR!ð
 ð!ð !ð !ð !ðF	
ð 	
ð 	
ð°#ð ð ð ð ðð ð ðð ð ðð ð ð&&°°c´ð &ð &ð &ð &ðP
ð 
ð 
ð<ð <ð <ð(B8ð B8ð B8ðHXð Xð Xðt ðð ñ „\ðð
 ðð ñ „\ðð-ð -ð -ð**ð *ð *ð("+ð "+ð "+ðH!5ð !5ð !5ðF%&ð %&ð %&ðN:*ð :*ð :*ðx"ð "ð "ð LPðRð RØ)1°$°u¸SÀ#¸X´Ô2GÔ)HðRð Rð Rð Rð$¨ð ð ð ð ð)àð)ð ð)ð ˜œÔ/Ô0ð	)ð )ð )ð )ð )ð )r1   rC   Fc              #   ó¤  K  — |rt          |¦  «        t          u sJ ‚ddlm} |j        j        dk    rda	 d V — dad S # daw xY wdd l}|j        j	        j
                             t          j        t          | ¦  «        |¦  «        \  }}t          ¦   «         r)|j        j	        j
                             t"          ¦  «         da	 |j                             d¦  «        5  d V — d d d ¦  «         n# 1 swxY w Y   |sda|j        j	        j
                             ||¦  «         d S # |sda|j        j	        j
                             ||¦  «         w xY w)Nr   )Ú
eval_frameÚforce_eagerTF)r‚   ÚboolÚtorch._dynamor†  Ú_stanceÚstanceÚ%compiled_autograd_enabled_force_eagerÚtorch._inductor.cudagraph_treesÚ_CÚ_dynamor(   Úset_autograd_compilerÚ	functoolsÚpartialrC   r3   Úset_verbose_loggerr  Úcompiled_autograd_enabledrƒ  Úset_multithreading_enabled)rJ   Údynamicr†  r+   Úprior_compilerÚprior_dynamics         r2   Ú_enabler™    sî  è è € àð %Ý�G‰}Œ}¥Ð$Ð$Ð$Ð$à(Ð(Ð(Ð(Ð(Ð(àÔÔ  MÒ1Ð1ð 15Ð-ð	:ØˆEˆEˆEà49Ð1Ð1Ð1ø°EÐ1Ð9Ð9Ð9Ð9ð 	/Ð.Ð.Ð.ð
 ŒHÔÔ.×DÒDÝÔÕ6¸ÑDÔDÀgñ
ô 
ñ	
ØØõ ,Ñ-Ô-ð 	OØŒHÔÔ.×AÒAÅ+ÑNÔNÐNà$(Ð!ð	Ø”×:Ò:¸5ÑAÔAð ð Ø���ðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð "ð 2Ø,1Ð)ØŒHÔÔ.×DÒDØ ñô ð ð ð øð "ð 2Ø,1Ð)ØŒHÔÔ.×DÒDØ ñô ð ð øøøs9   ¶> ¾AÃD$ ÃC.Ã"D$ Ã.C2Ã2D$ Ã5C2Ã6D$ Ä$+Ec               #   ó4  K  — t           j        j        j                             d d¦  «        \  } }da	 d V — | rdat           j        j        j                             | |¦  «         d S # | rdat           j        j        j                             | |¦  «         w xY w)NFT)r+   rŽ  r�  r(   r�  r”  )r—  r˜  s     r2   rý   rý   I  s¿   è è € õ
 	ŒÔÔ*×@Ò@ÀÀuÑMÔMñØØð !&Ðð
Øˆˆˆàð 	-Ø(,Ð%ÝŒÔÔ*×@Ò@Ø˜Mñ	
ô 	
ð 	
ð 	
ð 	
øð ð 	-Ø(,Ð%ÝŒÔÔ*×@Ò@Ø˜Mñ	
ô 	
ð 	
ð 	
øøøs   ³A' Á'0BrD   c                  óÂ   — da t          rJ ‚t          j        j        j                             d d¦  «         t          j        j        j                             d ¦  «         d S )NF)r”  rû   r+   rŽ  r�  r(   r�  r“  r0   r1   r2   Úresetrœ  \  sT   € à %ÐÝ*Ð*Ð*Ð*Ý	„HÔÔ&×<Ò<¸TÀ5ÑIÔIÐIÝ	„HÔÔ&×9Ò9¸$Ñ?Ô?Ð?Ð?Ð?r1   )Fr~  )KrK   r‘  r1  Útypingr   r   r   r   r   r   r	   r+   Útorch._dynamo.external_utilsr
   r   r   Útorch._dynamo.sourcer   r   Útorch._dynamo.utilsr   r   r   Útorch._loggingr   r   Útorch._prims_commonr   Útorch._subclassesr   Útorch.fxr   Ú%torch.fx.experimental._backward_stater   Ú"torch.fx.experimental.proxy_tensorr   r   r   r   r   r   r    Ú%torch.fx.experimental.symbolic_shapesr!   r"   Útorch.fx.tracebackr#   r$   Útorch.utils._ordered_setr%   Útorch.utils._tracebackr&   Útorch.fx.proxyr'   r  r  r  r3   r:   r=   ry   r  rß   r6  r7  râ   rç   rC   r”  rŒ  rû   Úcontextmanagerr™  rý   rœ  r0   r1   r2   ú<module>r­     sA  ðà Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ IÐ Ià €€€ðð ð ð ð ð ð ð ð ð ð
 <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø  Ð  Ð  Ð  Ð  Ð  Ø ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð GÐ FÐ FÐ FÐ FÐ FÐ FÐ FØ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BØ /Ð /Ð /Ð /Ð /Ð /Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð ð %Ø$Ð$Ð$Ð$Ð$Ð$ð *Ð)¨(Ð4GÑHÔHÐ ØÐ Ð*EÑFÔF€ðð ð ð4ð 4ð 4ðð ð ð >Ð=Ð=Ð Ø�*àØØ"Ô=ØŒ	ÔÔ+Ô3ð	ñô €ðL)ð L)ð L)ð L)ð L)ñ L)ô L)ð L)ð` "Ð ð ).Ð %ð $Ð ð Ôð&ð &ð &ñ Ôð&ðR Ôð
ð 
ñ Ôð
ð$@ð @ð @ð @ð @ð @r1   