§
    ž²ÅjÝ´  ã                   ó„  — d dl 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m	Z	m
Z
mZmZmZmZ d dlmZ d dlZddlmZmZ ddlmZmZ ddl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%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z. ddl/m0Z0 	 d dl1m2Z2 n# e3$ r dZ2Y nw xY werd dl4m5Z5 d dl6m7Z7m8Z8  ede¬¦  «        Z9d<d=d„Z:d=d„Z;de	e<e.f         fd„Z=d„ Z> G d„ de.¦  «        Z? G d„ de?¦  «        Z@ G d„ de@¦  «        ZA G d „ d!eA¦  «        ZB G d"„ d#e@¦  «        ZCd=d$„ZD G d%„ d&e?¦  «        ZE G d'„ d(e.¦  «        ZF G d)„ d*e.¦  «        ZGd+„ ZHd=d,„ZI G d-„ d.e@¦  «        ZJ G d/„ d0e.¦  «        ZK G d1„ d2e.¦  «        ZLd d3l6mMZMmNZN  G d4„ d5eN¦  «        ZO eO¦   «         ZP G d6„ d7e.¦  «        ZQ G d8„ d9e.¦  «        ZR G d:„ d;e.¦  «        ZSdS )>é    N)ÚAnyÚCallableÚDictÚListÚOptionalÚTupleÚTYPE_CHECKINGÚTypeVar)ÚNeveré   )Ú	polyfillsÚ	variables)Úcreate_call_functionÚcreate_rot_n)ÚunimplementedÚUnsupported)ÚGuardBuilderÚinstall_guard)Ú
AttrSourceÚConstantSourceÚDefaultsSourceÚGetItemSource)Úcheck_constant_argsÚcheck_unspec_or_constant_argsÚidentityÚis_functionÚis_wrapper_or_member_descriptorÚistypeÚ	make_cellé   )ÚtypestrÚValueMutationNewÚVariableTracker©ÚConstantVariable)Ú_fsdp_param_group)ÚInstructionTranslator)ÚTritonGridTypeÚTritonKernelTypeÚ_F)ÚboundÚtxr'   c                 óž   — t          |t          ¦  «        r|S |st          j        | |¦  «        S t          j                             ||¦  «        S ©N)Ú
isinstancer#   Úbuildr   ÚLazyVariableTrackerÚcreate)r,   ÚvalÚsources      úRC:\Projects\Historical\venv\Lib\site-packages\torch/_dynamo/variables/functions.pyÚwrap_bound_argr6   1   sQ   € å�#•Ñ'Ô'ð AØˆ
Øð AÝÔ$ R¨Ñ-Ô-Ð-õ Ô,×3Ò3°C¸Ñ@Ô@Ð@ó    c                 ó²   — t          |                     ¦   «         ¦  «        D ]4\  }}t          |t          t          f¦  «        rt          | |¦  «        ||<   Œ5d S r.   )ÚlistÚitemsr/   ÚtupleÚdictr6   )r,   ÚresultÚkÚvs       r5   Úwrap_args_kwargsr@   =   sY   € Ý�V—\’\‘^”^Ñ$Ô$ð .ð .‰ˆˆ1Ý�a�%¥˜Ñ'Ô'ð 	.å& r¨1Ñ-Ô-ˆF�1‰Iøð.ð .r7   r=   c                 ó¾   — | j         j        }|j        D ]H}|                     ¦   «         }||v r)|                     ||                     |¦  «        ¦  «         |||<   ŒIdS )zÇ
    Update `result` to add mapping from local name to new cells created
    directly by `code`, or update SideEffects in `parent` if the a local cell is
    already in `result` (cell argument).
    N)ÚoutputÚside_effectsÚco_cellvarsÚtrack_cell_newÚ
store_cellÚpop)Úparentr=   ÚcoderC   ÚnameÚnew_cells         r5   Úinit_cellvarsrL   D   ss   € ð ”=Ô-€LàÔ ð  ð  ˆØ×.Ò.Ñ0Ô0ˆØ�6ˆ>ˆ>ð ×#Ò# H¨f¯jªj¸Ñ.>Ô.>Ñ?Ô?Ð?Øˆˆt‰ˆð ð  r7   c                 óä   — ddl m}  || ||||¦  «        }||_        t          |t          ¦  «        rddlm}	 t           |	|¦  «        ¦  «        }|�t          |t          ¦  «        sJ ‚||_        |S )Nr   )ÚFunctionType©Úpairwise)	ÚtypesrN   Ú__kwdefaults__r/   r;   Ú	itertoolsrP   r<   Ú__annotations__)
rI   Ú	f_globalsrJ   ÚdefaultsÚclosureÚ
kwdefaultsÚannotationsrN   ÚfuncrP   s
             r5   Ú_create_nested_fnr[   U   sš   € ð #Ð"Ð"Ð"Ð"Ð"àˆ<˜˜i¨¨x¸ÑAÔA€DØ$€DÔå�+�uÑ%Ô%ð 2Ø&Ð&Ð&Ð&Ð&Ð&å˜8˜8 KÑ0Ô0Ñ1Ô1ˆð Ð¥*¨[½$Ñ"?Ô"?ÐÐÐ?Ø&€DÔà€Kr7   c                   óR   — e Zd Zd„ Zd„ Z	 	 	 	 	 	 	 	 dd„Zddded	efd„Zd„ Z	d„ Z
dS )ÚBaseUserFunctionVariablec                 ó4   — |                       ¦   «         j        S r.   )Úget_codeÚco_filename©Úselfs    r5   Úget_filenamez%BaseUserFunctionVariable.get_filenamej   s   € Ø�}Š}‰ŒÔ*Ð*r7   c                 ó4   — |                       ¦   «         j        S r.   )r_   Úco_namera   s    r5   Úget_namez!BaseUserFunctionVariable.get_namem   s   € Ø�}Š}‰ŒÔ&Ð&r7   r,   r'   ÚargsúList[VariableTracker]ÚkwargsúDict[str, VariableTracker]Úreturnr#   c                 ó\   — |                      | g |                      ¦   «         ¢|¢|¦  «        S r.   )Úinline_user_function_returnÚ	self_args©rb   r,   rg   ri   s       r5   Úcall_functionz&BaseUserFunctionVariable.call_functionp   s2   € ð ×-Ò-¨dÐ4N°d·n²nÑ6FÔ6FÐ4NÈÐ4NÐPVÑWÔWÐWr7   rJ   c                 óæ   — d}	 t          |                      ¦   «         |¦  «        }n-# t          $ r  |dk    rt          | t          ¦  «        rd}Y nw xY wt
          j                             |¦  «        S )NFÚ__name__T)ÚhasattrÚget_functionÚNotImplementedErrorr/   ÚNestedUserFunctionVariabler   r%   r2   ©rb   r,   rJ   r=   s       r5   Úcall_hasattrz%BaseUserFunctionVariable.call_hasattrx   s   € Øˆð	Ý˜T×.Ò.Ñ0Ô0°$Ñ7Ô7ˆFˆFøÝ"ð 	ð 	ð 	Ø�zÒ!Ð!¥j°Õ7QÑ&RÔ&RÐ!Ø�øøð	øøøõ Ô)×0Ò0°Ñ8Ô8Ð8s   „"' §'AÁAc                 ór   — t          t          j        |                      ¦   «         ¦  «        j        ¦  «        S r.   )r9   ÚinspectÚ	signaturert   Ú
parametersra   s    r5   Úinspect_parameter_namesz0BaseUserFunctionVariable.inspect_parameter_names‚   s*   € Ý•GÔ% d×&7Ò&7Ñ&9Ô&9Ñ:Ô:ÔEÑFÔFÐFr7   c                 ó   — i S r.   © )rb   r,   s     r5   Úclosure_varsz%BaseUserFunctionVariable.closure_vars…   ó   € Øˆ	r7   N©r,   r'   rg   rh   ri   rj   rk   r#   )rr   Ú
__module__Ú__qualname__rc   rf   rp   Ústrr#   rx   r}   r€   r   r7   r5   r]   r]   i   s¿   € € € € € ð+ð +ð +ð'ð 'ð 'ðXà#ðXð &ðXð -ð	Xð
 
ðXð Xð Xð Xð9Ð6ð 9¸cð 9Àoð 9ð 9ð 9ð 9ðGð Gð Gðð ð ð ð r7   r]   c                   óÜ   ‡ — e Zd ZdZddhej        £Zed„ ¦   «         Zddˆ fd„Zˆ fd	„Z	d
„ Z
d„ Zd„ Zd„ Zd„ Zd„ Zdeeef         fd„Zdddefd„Zdddedefd„Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚUserFunctionVariablez-Some unsupported user-defined global functionÚfnÚis_constantc                 ót   — t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S ©N©r4   )r   Ú
make_guardr   ÚCLOSURE_MATCH©ÚclsÚvaluer4   s      r5   Úcreate_with_sourcez'UserFunctionVariable.create_with_source’   s6   € å�f×'Ò'­Ô(BÑCÔCÑDÔDÐDØˆs�5 Ð(Ñ(Ô(Ð(r7   Frk   Nc                 óD  •—  t          ¦   «         j        di |¤Ž t          |dd¦  «        rd| _        nd| _        t	          |t
          j        t          j        j	        f¦  «        sJ dt          |¦  «        › d|› �¦   «         ‚t          j        |d|¦  «        }|| _        d S )NÚ_dynamo_marked_constantFTzexpected FunctionType found ú Ú_torchdynamo_inliner   )ÚsuperÚ__init__Úgetattrr‰   r/   rQ   rN   ÚtorchÚjitÚScriptFunctionr!   rz   Úgetattr_staticrˆ   )rb   rˆ   r‰   ri   Ú	__class__s       €r5   r˜   zUserFunctionVariable.__init__—   s»   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý�2Ð0°%Ñ8Ô8ð 	%à#ˆDÔÐà$ˆDÔåØ•Ô#¥U¤YÔ%=Ð>ñ
ô 
ð 	=ð 	=à<­'°"©+¬+Ð<Ð<¸Ð<Ð<ñ	=ô 	=ð 
õ Ô# BÐ(=¸rÑBÔBˆØ&(ˆŒˆˆr7   c                 ó|   •— t          | t          ¦  «        r| j        S t          ¦   «                              ¦   «         S r.   )r   r‡   rˆ   r—   Úas_python_constant©rb   rž   s    €r5   r    z'UserFunctionVariable.as_python_constant¨   s3   ø€ Ý�$Õ,Ñ-Ô-ð 	Ø”7ˆNå‰wŒw×)Ò)Ñ+Ô+Ð+r7   c                 ó   — g S r.   r   ra   s    r5   rn   zUserFunctionVariable.self_args®   r�   r7   c                 ó   — | j         S r.   ©rˆ   ra   s    r5   rt   z!UserFunctionVariable.get_function±   ó	   € ØŒwˆr7   c                 ó   — | j         j        S r.   )rˆ   Ú__code__ra   s    r5   r_   zUserFunctionVariable.get_code´   s   € ØŒwÔÐr7   c                 ó   — t           j        S r.   )rQ   rN   ra   s    r5   Úpython_typez UserFunctionVariable.python_type·   s   € ÝÔ!Ð!r7   c                 ó2   — t          | j        dd ¦  «        d uS )NÚ__self__)r™   rˆ   ra   s    r5   Úhas_selfzUserFunctionVariable.has_selfº   s   € Ý�t”w 
¨DÑ1Ô1¸Ð=Ð=r7   c                 ó   — | j         j        S r.   )rˆ   Ú__globals__ra   s    r5   Úget_globalsz UserFunctionVariable.get_globals½   s   € ØŒwÔ"Ð"r7   c                 óî  ‡ ‡‡— ‰ j         rJ ‚|j        j        }t          j        t
          |¬¦  «        Š‰ j        }|j        pg }ˆ fd„t          |¦  «        D ¦   «         }t          j
        |j        |j        |j        t          ˆfd„t          ||¦  «        D ¦   «         ¦  «        |j        ¦  «        }|j        r>ˆ fd„|j        D ¦   «         Šˆˆfd„|j                             ¦   «         D ¦   «         |_         t'          j        |¦  «        j        |i |¤Ž}	|	                     ¦   «          t/          |	j                             ¦   «         ¦  «        }
t3          ||
¦  «         t5          ||
|j        ¦  «         ‰ j        j        pd}t7          |¦  «        t7          ‰ j        j        j        ¦  «        k    sJ ‚t          t;          j        ¦   «         ‰ j        j        j        |¦  «        D �]\  }}}|j        j        }||v r	||         }nè‰ j         r‹tC          tE          ‰ j         d¦  «        |¦  «        }tE          |d¦  «        }	 tG          j$        ||j%        |¦  «        }n## tL          $ r tO          j(        ¦   «         }Y nw xY w| )                    |||¦  «        }nV	 tG          j$        ||j%        ¦  «        }n## tL          $ r tO          j(        ¦   «         }Y nw xY w| )                    d	||¦  «        }||
|<   �Œ|
S )
z—
        Assume `args` and `kwargs` are VariableTracker arguments for a call to
        this function, create new bindings for initial locals.
        )r,   c                 óR   •— g | ]#\  }}‰j         €d nt          ‰j         |¦  «        ‘Œ$S r.   ©r4   r   )Ú.0ÚidxÚ_rb   s      €r5   ú
<listcomp>z2UserFunctionVariable.bind_args.<locals>.<listcomp>Ë   sD   ø€ ð 
ð 
ð 
á��Qð ”KÐ'ˆDˆD­^¸D¼KÈÑ-MÔ-Mð
ð 
ð 
r7   c                 ó0   •— g | ]\  }} ‰||¬ ¦  «        ‘ŒS ©)r3   r4   r   )r³   Úargr4   Úwraps      €r5   r¶   z2UserFunctionVariable.bind_args.<locals>.<listcomp>Ô   s<   ø€ ð ð ð á#˜˜Vð �D˜S¨Ð0Ñ0Ô0ðð ð r7   c                 óR   •— i | ]#}|‰j         €d nt          ‰j         |d¬¦  «        “Œ$S )NT)Úis_kwr²   )r³   r>   rb   s     €r5   ú
<dictcomp>z2UserFunctionVariable.bind_args.<locals>.<dictcomp>Ü   sN   ø€ ð "ð "ð "ð ð à”{Ð*ð �Då'¨¬°Q¸dÐCÑCÔCð	"ð "ð "r7   c                 ó>   •— i | ]\  }}| ‰|‰|         ¬ ¦  «        “ŒS r¸   r   )r³   r>   r?   Úkwdefaults_sourcesrº   s      €€r5   r½   z2UserFunctionVariable.bind_args.<locals>.<dictcomp>ä   sD   ø€ ð (ð (ð (á�A�qð �4�4˜AÐ&8¸Ô&;Ð<Ñ<Ô<ð(ð (ð (r7   r   Ú__closure__Úcell_contentsN)*r‰   rB   Úroot_txÚ	functoolsÚpartialr6   rˆ   Ú__defaults__Ú	enumeraterQ   rN   r§   r®   rr   r;   ÚziprÀ   rR   r:   rz   r{   ÚbindÚapply_defaultsr<   Ú	argumentsr@   rL   ÚlenÚco_freevarsrS   ÚcountrC   r4   r   r   r#   r0   rÁ   Ú
ValueErrorr   ÚDeletedVariableÚtrack_cell_existing)rb   rH   rg   ri   rÂ   rˆ   rV   Údefaults_sourcesÚ	fake_funcr+   r=   rW   r´   rJ   ÚcellrC   Úcell_varÚclosure_cellÚclosure_cell_contentsÚcontents_varr¿   rº   s   `                   @@r5   Ú	bind_argszUserFunctionVariable.bind_argsÀ   s�  øøø€ ð
 Ô#Ð#Ð#Ð#Ø”-Ô'ˆÝÔ ¥°GÐ<Ñ<Ô<ˆà!%¤ˆØ”?Ð( bˆð
ð 
ð 
ð 
å# HÑ-Ô-ð
ñ 
ô 
Ðõ Ô&ØŒKØŒNØŒKÝðð ð ð å'*¨8Ð5EÑ'FÔ'Fðñ ô ñô ð ŒNñ
ô 
ˆ	ð Ôð 	ð"ð "ð "ð "ð Ô*ð"ñ "ô "Ðð(ð (ð (ð (ð (àÔ-×3Ò3Ñ5Ô5ð(ñ (ô (ˆIÔ$ð
 2•Ô! )Ñ,Ô,Ô1°4ÐB¸6ÐBÐBˆØ×ÒÑÔÐÝ�e”o×+Ò+Ñ-Ô-Ñ.Ô.ˆå˜ &Ñ)Ô)Ð)Ý�f˜f b¤kÑ2Ô2Ð2Ø”'Ô%Ð+¨ˆÝ�7‰|Œ|�s 4¤7Ô#3Ô#?Ñ@Ô@Ò@Ð@Ð@Ð@Ý"ÝŒOÑÔ˜tœwÔ/Ô;¸Wñ 
ô  
ð "	$ñ "	$‰OˆC��tð "œ=Ô5ˆLØ�|Ð#Ð#Ø'¨Ô-��à”ð VÝ,Ý˜tœ{¨MÑ:Ô:¸Cñ ô  �õ )3°<ÀÑ(QÔ(QÐ%ð?Ý#2Ô#8Ø Ô 2Ð4Iñ$ô $�L�Løõ "ð ?ð ?ð ?å#,Ô#<Ñ#>Ô#>�L�L�Lð?øøøð (×;Ò;Ø  $¨ñô ��ð?Ý#2Ô#8¸ÀÔASÑ#TÔ#T�L�LøÝ!ð ?ð ?ð ?å#,Ô#<Ñ#>Ô#>�L�L�Lð?øøøð (×;Ò;¸DÀ$ÈÑUÔU�à#ˆF�4‰L‰Làˆs$   ÉIÉI=É<I=ÊJ4Ê4KËKr,   r'   rJ   c                 ó.  — | j         ot          | j         |¦  «        }	 t          j        | j        |¦  «        }n'# t
          $ r t          j        | ||¬¦  «        cY S w xY w|r t          j         	                    ||¦  «        S t          j        ||¦  «        S r‹   )r4   r   rz   r�   rˆ   ÚAttributeErrorr   ÚGetAttrVariabler1   r2   r#   r0   )rb   r,   rJ   r4   Úsubobjs        r5   Úvar_getattrz UserFunctionVariable.var_getattr  s¨   € Ø”Ð>¥¨D¬K¸Ñ!>Ô!>ˆð	HÝÔ+¨D¬G°TÑ:Ô:ˆFˆFøÝð 	Hð 	Hð 	HÝÔ,¨T°4ÀÐGÑGÔGÐGÐGÐGð	Høøøàð 	HÝÔ0×7Ò7¸ÀÑGÔGÐGÝÔ$ R¨Ñ0Ô0Ð0s   ž9 ¹!AÁAc                 ój   — t          | j        |¦  «        }t          j                             |¦  «        S r.   )rs   rˆ   r   r%   r2   rw   s       r5   rx   z!UserFunctionVariable.call_hasattr!  s*   € Ý˜œ $Ñ'Ô'ˆÝÔ)×0Ò0°Ñ8Ô8Ð8r7   rg   rh   ri   rj   r#   c                 ó  •— | j         r*t          || j        |                      ¦   «         ||¦  «        S |j        j        j        r¡|j        j        j        s�	 ddlm	} n# t          $ r d }Y nw xY w|�t| j        |j        |j        fv r_t          j        j                             |¦  «        5  t!          ¦   «                              |||¦  «        cd d d ¦  «         S # 1 swxY w Y   t!          ¦   «                              |||¦  «        S )Nr   )Ú	FSDPState)r‰   Úinvoke_and_store_as_constantrˆ   rf   rB   Úcurrent_tracerÚunder_activation_checkpointÚ#allow_side_effects_under_checkpointÚ/torch.distributed.fsdp._fully_shard._fsdp_staterà   Ú	ExceptionÚ_pre_forwardÚ_post_forwardrš   Ú_dynamorC   r—   rp   )rb   r,   rg   ri   rà   rž   s        €r5   rp   z"UserFunctionVariable.call_function%  s{  ø€ ð Ôð 	Ý/Ø�D”G˜TŸ]š]™_œ_¨d°Fñô ð ð ŒIÔ$Ô@ð	Cà”IÔ,ÔPð	Cð!ØUÐUÐUÐUÐUÐUÐUøÝð !ð !ð !Ø �	�	�	ð!øøøàÐ$¨¬ØÔ&ØÔ'ð5ð *ð *õ ”]Ô/×SÒSÐTVÑWÔWð Cð CÝ ™7œ7×0Ò0°°T¸6ÑBÔBðCð Cð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cå‰wŒw×$Ò$ R¨¨vÑ6Ô6Ð6s$   ÁA ÁA,Á+A,Â*#CÃCÃ!C)F©rk   Nr‚   )rr   rƒ   r„   Ú__doc__r]   Ú_nonvar_fieldsÚclassmethodr’   r˜   r    rn   rt   r_   r©   r¬   r¯   r   r…   r#   rØ   rÝ   rx   rp   Ú__classcell__©rž   s   @r5   r‡   r‡   ‰   s®  ø€ € € € € Ø7Ð7ð 	Øðð 
"Ô	0ð€Nð ð)ð )ñ „[ð)ð)ð )ð )ð )ð )ð )ð )ð",ð ,ð ,ð ,ð ,ðð ð ðð ð ð ð  ð  ð"ð "ð "ð>ð >ð >ð#ð #ð #ðU°°c¸?Ð6JÔ1Kð Uð Uð Uð Uðn1Ð5ð 1¸Sð 1ð 1ð 1ð 1ð9Ð6ð 9¸cð 9Àoð 9ð 9ð 9ð 9ð7à#ð7ð &ð7ð -ð	7ð
 
ð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7r7   r‡   c                   ób   ‡ — e Zd ZdZdˆ fd„Zdefd„Zd„ Zd„ Z	 	 	 	 	 	 	 	 dˆ fd„Z	ˆ fd„Z
ˆ xZS )ÚUserMethodVariablez$Some unsupported user-defined methodrk   Nc                 óL   •—  t          ¦   «         j        dd|i|¤Ž || _        d S )Nrˆ   r   )r—   r˜   Úobj)rb   rˆ   ró   ri   rž   s       €r5   r˜   zUserMethodVariable.__init__C  s0   ø€ Ø�‰ŒÔÐ)Ð)˜BÐ) &Ð)Ð)Ð)ØˆŒˆˆr7   c                 ó@   — | j         j        › d| j        › d| j        › d�S )Nú(z, ú))rž   rr   rˆ   ró   ra   s    r5   Ú__repr__zUserMethodVariable.__repr__G  s*   € Ø”.Ô)ÐBÐB¨D¬GÐBÐB°t´xÐBÐBÐBÐBr7   c                 ó   — | j         gS r.   )ró   ra   s    r5   rn   zUserMethodVariable.self_argsJ  s   € Ø”ˆzÐr7   c                 ó   — t           j        S r.   )rQ   Ú
MethodTypera   s    r5   r©   zUserMethodVariable.python_typeM  s   € ÝÔÐr7   r,   r'   rg   rh   ri   rj   r#   c                 óØ  •— |j                              ¦   «         rˆt          | j        t          j        ¦  «        rit          | j        dd¦  «        }|�|                     d¦  «        r|dk    s| j	        r.| j         
                    || j        j        ||| j	        ¬¦  «        S nVt          �O| j        t          j        j        u r7t	          j        | j        ¦  «                             || j        g|¢R |¦  «        S | j	        rIt          | j        j        | j        j        ¦  «        }t%          |||                      ¦   «         ||¦  «        S t)          ¦   «                              |||¦  «        S )Nrƒ   Ú z	torch.nn.ztorch.nn.utils.parametrize)Úconstant)rB   Úis_root_tracerr/   ró   r   ÚNNModuleVariabler™   rˆ   Ú
startswithr‰   Úcall_methodrr   r&   ÚFSDPParamGroupÚuse_training_stateÚTorchCtxManagerClassVariablerp   r‘   rá   rf   r—   )rb   r,   rg   ri   Úmodule_attrrˆ   rž   s         €r5   rp   z UserMethodVariable.call_functionP  sp  ø€ ð$ Œ9×#Ò#Ñ%Ô%ð 	­*ØŒH•iÔ0ñ+
ô +
ð 	õ " $¤'¨<¸Ñ<Ô<ˆKð Ð'Ø×*Ò*¨;Ñ7Ô7ð (àÐ#?Ò?Ð?ØÔ#ð @ð ”x×+Ò+Ø˜œÔ(¨$°ÀÔAQð ,ñ ô ð ð @õ Ð)Ø”Õ,Ô;ÔNÐNÐNåÔ9¸$¼'ÑBÔB×PÒPØ�T”XÐ% Ð%Ð% vñô ð ð Ôð 	WÝ˜œœ¨¬Ô)9Ñ:Ô:ˆBÝ/°°B¸¿º¹¼ÈÈvÑVÔVÐVÝ‰wŒw×$Ò$ R¨¨vÑ6Ô6Ð6r7   c                 óT   •— t          ¦   «                              ¦   «         dd …         S )Nr    )r—   r}   r¡   s    €r5   r}   z*UserMethodVariable.inspect_parameter_names|  s"   ø€ Ý‰wŒw×.Ò.Ñ0Ô0°°°Ô4Ð4r7   rê   r‚   )rr   rƒ   r„   rë   r˜   r…   r÷   rn   r©   rp   r}   rî   rï   s   @r5   rñ   rñ   @  sß   ø€ € € € € Ø.Ð.ðð ð ð ð ð ðC˜#ð Cð Cð Cð Cðð ð ð ð  ð  ð*7à#ð*7ð &ð*7ð -ð	*7ð
 
ð*7ð *7ð *7ð *7ð *7ð *7ðX5ð 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5r7   rñ   c                   ó<   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚWrappedUserMethodVariablerk   Nc                 óÆ   •— |                      dd ¦  «         |                      dd ¦  «          t          ¦   «         j        |j        |j        fi |¤Ž || _        || _        d S ©Nrˆ   ró   )rG   r—   r˜   rˆ   ró   ÚwrappedÚcontext©rb   r  r  ri   rž   s       €r5   r˜   z"WrappedUserMethodVariable.__init__�  sb   ø€ Ø�
Š
�4˜ÑÔÐØ�
Š
�5˜$ÑÔÐØ�‰ŒÔ˜œ W¤[Ð;Ð;°FÐ;Ð;Ð;ØˆŒØˆŒˆˆr7   r,   r'   rg   rh   ri   rj   r#   c                 ó¶   •— | j                              |¦  «         t          ¦   «                              |||¦  «        }| j                              |¦  «         |S r.   ©r  Úenterr—   rp   Úexit©rb   r,   rg   ri   r=   rž   s        €r5   rp   z'WrappedUserMethodVariable.call_functionˆ  óQ   ø€ ð 	Œ×Ò˜2ÑÔÐÝ‘”×&Ò& r¨4°Ñ8Ô8ˆØŒ×Ò˜"ÑÔÐØˆr7   rê   r‚   ©rr   rƒ   r„   r˜   rp   rî   rï   s   @r5   r  r  €  ó�   ø€ € € € € ðð ð ð ð ð ð	à#ð	ð &ð	ð -ð		ð
 
ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	r7   r  c                   ó<   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚWrappedUserFunctionVariablerk   Nc                 óº   •— |                      dd ¦  «         |                      dd ¦  «          t          ¦   «         j        |j        fi |¤Ž || _        || _        d S r
  )rG   r—   r˜   rˆ   r  r  r  s       €r5   r˜   z$WrappedUserFunctionVariable.__init__•  s^   ø€ Ø�
Š
�4˜ÑÔÐØ�
Š
�5˜$ÑÔÐØ�‰ŒÔ˜œÐ.Ð. vÐ.Ð.Ð.ØˆŒØˆŒˆˆr7   r,   r'   rg   rh   ri   rj   r#   c                 ó¶   •— | j                              |¦  «         t          ¦   «                              |||¦  «        }| j                              |¦  «         |S r.   r  r  s        €r5   rp   z)WrappedUserFunctionVariable.call_functionœ  r  r7   rê   r‚   r  rï   s   @r5   r  r  ”  r  r7   r  c                 óÊ   ‡— d„ Šˆfd„|D ¦   «         }ˆfd„|                      ¦   «         D ¦   «         } ||i |¤Ž}| j                             ||t          |¦  «        ¬¦  «        S )Nc                 ó†   — t          | t          j        ¦  «        r|                      ¦   «         S |                      ¦   «         S r.   )r/   r   ÚTensorVariableÚget_real_valuer    )Úxs    r5   Úconvertz-invoke_and_store_as_constant.<locals>.convert©  s;   € Ý�a�Ô1Ñ2Ô2ð 	&Ø×#Ò#Ñ%Ô%Ð%Ø×#Ò#Ñ%Ô%Ð%r7   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r   r   )r³   r  r  s     €r5   r¶   z0invoke_and_store_as_constant.<locals>.<listcomp>®  s!   ø€ Ð%Ð%Ð%˜1ˆGˆG�A‰JŒJÐ%Ð%Ð%r7   c                 ó.   •— i | ]\  }}| ‰|¦  «        “ŒS r   r   )r³   r>   r?   r  s      €r5   r½   z0invoke_and_store_as_constant.<locals>.<dictcomp>¯  s'   ø€ Ð7Ð7Ð7¡  1ˆa��˜‘”Ð7Ð7Ð7r7   rŒ   )r:   rB   Úregister_attr_or_moduler   )r,   rˆ   rJ   rg   ri   Úresr  s         @r5   rá   rá   ¨  s’   ø€ ð&ð &ð &ð
 &Ð%Ð%Ð% Ð%Ñ%Ô%€DØ7Ð7Ð7Ð7¨¯ª©¬Ð7Ñ7Ô7€FØ
ˆ"ˆdÐ
�fÐ
Ð
€CØŒ9×,Ò,ØØÝ˜dÑ#Ô#ð -ñ ô ð r7   c                   ój   ‡ — e Zd Zdhej        £Z	 d	 dˆ fd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zˆ xZS )rv   rU   Nrk   c	                 ó†  •—  t          ¦   «         j        di |	¤Ž t          |                     ¦   «         t          ¦  «        sJ ‚t          |                     ¦   «         t
          j        ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|| _        || _	        || _
        || _        || _        || _        || _        || _        d S ©Nr   )r—   r˜   r/   r    r…   rQ   ÚCodeTyper<   Úfn_namerI   rU   rV   rX   rY   rW   Ú
wrapped_fn)rb   r(  rI   rU   rV   rX   rY   rW   r)  ri   rž   s             €r5   r˜   z#NestedUserFunctionVariable.__init__¾  s»   ø€ ð 	�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý˜'×4Ò4Ñ6Ô6½Ñ<Ô<Ð<Ð<Ð<Ý˜$×1Ò1Ñ3Ô3µU´^ÑDÔDÐDÐDÐDÝ˜)¥TÑ*Ô*Ð*Ð*Ð*ØˆŒØˆŒ	Ø"ˆŒØ ˆŒØ$ˆŒØ&ˆÔØˆŒØ5?ˆŒˆˆr7   c                 ó   — g S r.   r   ra   s    r5   rn   z$NestedUserFunctionVariable.self_argsÙ  r�   r7   c                 ó4   — | j                              ¦   «         S r.   )rI   r    ra   s    r5   r_   z#NestedUserFunctionVariable.get_codeÜ  s   € ØŒy×+Ò+Ñ-Ô-Ð-r7   c                 ó*  — | j         rt          ‚t          j        | j                             ¦   «         | j        | j                             ¦   «         ¦  «        }| j        r| j                             ¦   «         |_	        | j
        r| j
                             ¦   «         |_        | j        rj| j                             ¦   «         }t          |t          ¦  «        rddlm} t#           ||¦  «        ¦  «        }t          |t"          ¦  «        sJ ‚||_        |S )Nr   rO   )rW   ru   rQ   rN   rI   r    rU   r(  rV   rÅ   rX   rR   rY   r/   r;   rS   rP   r<   rT   )rb   rZ   rY   rP   s       r5   rt   z'NestedUserFunctionVariable.get_functionß  s  € ØŒ<ð 	&Ý%Ð%ÝÔ!ØŒI×(Ò(Ñ*Ô*ØŒNØŒL×+Ò+Ñ-Ô-ñ
ô 
ˆð
 Œ=ð 	CØ $¤× @Ò @Ñ BÔ BˆDÔØŒ?ð 	GØ"&¤/×"DÒ"DÑ"FÔ"FˆDÔØÔð 		/ØÔ*×=Ò=Ñ?Ô?ˆKÝ˜+¥uÑ-Ô-ð :Ø.Ð.Ð.Ð.Ð.Ð.å" 8 8¨KÑ#8Ô#8Ñ9Ô9�õ ˜k­4Ñ0Ô0Ð0Ð0Ð0Ø#.ˆDÔ Øˆr7   c                 ó   — | j         d uS r.   )rW   ra   s    r5   Úhas_closurez&NestedUserFunctionVariable.has_closure÷  s   € ØŒ| 4Ð'Ð'r7   c                 ó   — dS )NFr   ra   s    r5   r¬   z#NestedUserFunctionVariable.has_selfú  s   € Øˆur7   c                 ó   — | j         S r.   )rU   ra   s    r5   r¯   z&NestedUserFunctionVariable.get_globalsý  s
   € ØŒ~Ðr7   c                 ó&  — |                       ¦   «         }t          j        || j        | j                             ¦   «         | j        rt          | j        j        ¦  «        nd t          d„ t          t          |                       ¦   «         j        ¦  «        ¦  «        D ¦   «         ¦  «        ¦  «        }| j        r| j                             ¦   «         |_         t          j        |¦  «        j        |i |¤Ž}|                     ¦   «          t'          |j                             ¦   «         ¦  «        }t+          |j        j        |¦  «         t1          |||¦  «         t3          |j        ¦  «        D ]"\  }}	|	|vsJ ‚| j        j        |         }
|
||	<   Œ#|S )Nc              3   ó4   K  — | ]}t          d ¦  «        V — Œd S r.   )r   )r³   rµ   s     r5   ú	<genexpr>z7NestedUserFunctionVariable.bind_args.<locals>.<genexpr>  s(   è è € ÐSÐS a•)˜D‘/”/ÐSÐSÐSÐSÐSÐSr7   )r_   rQ   rN   rU   r(  r    rV   r;   r:   ÚrangerË   rÌ   rX   Úkeys_as_python_constantrR   rz   r{   rÈ   rÉ   r<   rÊ   r@   rB   rÂ   rL   rÆ   rW   )rb   rH   rg   ri   rI   rZ   r+   r=   r´   rJ   rÓ   s              r5   rØ   z$NestedUserFunctionVariable.bind_args   sr  € Ø�}Š}‰ŒˆÝÔ!ØØŒNØŒL×+Ò+Ñ-Ô-Ø*.¬-ÐA�E�$”-Ô%Ñ&Ô&Ð&¸TÝÐSÐS­5µ°T·]²]±_´_Ô5PÑ1QÔ1QÑ+RÔ+RÐSÑSÔSÑSÔSñ
ô 
ˆð Œ?ð 	LØ"&¤/×"IÒ"IÑ"KÔ"KˆDÔØ,•Ô! $Ñ'Ô'Ô,¨dÐ=°fÐ=Ð=ˆØ×ÒÑÔÐÝ�e”o×+Ò+Ñ-Ô-Ñ.Ô.ˆÝ˜œÔ.°Ñ7Ô7Ð7Ý�f˜f dÑ+Ô+Ð+å" 4Ô#3Ñ4Ô4ð 	 ð 	 ‰IˆC�Ø˜vÐ%Ð%Ð%Ð%Ø”<Ô% cÔ*ˆDØˆF�4‰LˆLàˆr7   c                 ó2  ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «         ‰                     ‰                     | j        ¦  «        g¦  «          ‰t          j        | j        j        j        ¦  «        ¦  «         | j	        r ‰| j	        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        r ‰| j        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        r ‰| j        ¦  «         n)‰                     ‰ 
                    d ¦  «        g¦  «         | j        rd	 | j                             ¦   «         }‰                     ‰                     |¦  «        g¦  «         nI# t          $ r  ‰| j        ¦  «         Y n-w xY w‰                     ‰ 
                    d ¦  «        g¦  «         ‰                     t!          dd¦  «        ¦  «         | j        r’‰                      ˆfd„¦  «          ‰| j        ¦  «         ‰                     t!          dd¦  «        ¦  «         ‰                     t%          d¦  «        ¦  «         ‰                     t!          dd¦  «        ¦  «         d S d S )Nc                  ó:   •— ‰                       t          d¦  «        S )Nr[   )Úload_import_fromrr   ©Úcodegens   €r5   ú<lambda>z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>  s   ø€ �G×,Ò,­XÐ7JÑKÔK€ r7   é   Fc                  ó0   •— ‰                       dd¦  «        S )NrÃ   Úwraps©r8  r9  s   €r5   r;  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>>  s   ø€ ˜×0Ò0°¸gÑFÔF€ r7   r    r   T)Úadd_push_nullrI   Úextend_outputÚcreate_load_const_uncheckedrU   r%   r2   r‘   re   rV   Úcreate_load_constrW   rX   rY   r    ru   r   r)  r   )rb   r:  rY   s    ` r5   Úreconstructz&NestedUserFunctionVariable.reconstruct  sÓ  ø€ Ø×ÒØKÐKÐKÐKñ	
ô 	
ð 	
ð 	ˆ�”	ÑÔÐØ×Ò˜w×BÒBÀ4Ä>ÑRÔRÐSÑTÔTÐTØˆÕ Ô'¨¬	¬Ô(?Ñ@Ô@ÑAÔAÐAàŒ=ð 	EØˆG�D”MÑ"Ô"Ð"Ð"à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàŒ<ð 	EØˆG�D”LÑ!Ô!Ð!Ð!à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàŒ?ð 	EØˆG�D”OÑ$Ô$Ð$Ð$à×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDàÔð 		Eð*Ø"Ô.×AÒAÑCÔC�Ø×%Ò%Ø×8Ò8¸ÑEÔEÐFñô ð ð øõ 'ð *ð *ð *Ø�˜Ô(Ñ)Ô)Ð)Ð)Ð)ð*øøøð ×!Ò! 7×#<Ò#<¸TÑ#BÔ#BÐ"CÑDÔDÐDà×ÒÕ2°1°eÑ<Ô<Ñ=Ô=Ð=àŒ?ð 	AØ×!Ò!ØFÐFÐFÐFñô ð ð ˆG�D”OÑ$Ô$Ð$Ø×!Ò!Õ"6°q¸%Ñ"@Ô"@ÑAÔAÐAØ×!Ò!¥,¨q¡/¤/Ñ2Ô2Ð2Ø×!Ò!Õ"6°q¸$Ñ"?Ô"?Ñ@Ô@Ð@Ð@Ð@ð	Að 	As   ÅAF ÆF/Æ.F/r.   rê   )rr   rƒ   r„   r]   rì   r˜   rn   r_   rt   r.  r¬   r¯   rØ   rD  rî   rï   s   @r5   rv   rv   ¸  sç   ø€ € € € € àðà	!Ô	0ð€Nð  ð@ð 
ð@ð @ð @ð @ð @ð @ð6ð ð ð.ð .ð .ðð ð ð0(ð (ð (ðð ð ðð ð ðð ð ð0+Að +Að +Að +Að +Að +Að +Ar7   rv   c                   ó®   ‡ — e Zd Zddhej        £Zddˆ fd„Zd„ Zed„ ¦   «         Ze	 e
j        d¦  «        d„ ¦   «         ¦   «         Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚSkipFunctionVariabler‘   ÚreasonNrk   c                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S r&  )r—   r˜   r‘   rG  )rb   r‘   rG  ri   rž   s       €r5   r˜   zSkipFunctionVariable.__init__M  s2   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ
ØˆŒˆˆr7   c                 ó   — | j         S r.   ©r‘   ra   s    r5   r    z'SkipFunctionVariable.as_python_constantR  s
   € ØŒzÐr7   c                 ó’   — t          |¦  «        s,t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S r‹   )r   r   r�   r   ÚFUNCTION_MATCHr�   s      r5   r’   z'SkipFunctionVariable.create_with_sourceU  sI   € å.¨uÑ5Ô5ð 	Jõ ˜&×+Ò+­LÔ,GÑHÔHÑIÔIÐIØˆs�5 Ð(Ñ(Ô(Ð(r7   c                  ó2   — t           j        t          j        iS r.   )ÚcollectionsÚ
namedtupler   ÚUserDefinedClassVariabler   r7   r5   Ú fold_through_function_to_wrapperz5SkipFunctionVariable.fold_through_function_to_wrapper^  s   € õ Ô"¥IÔ$Fð
ð 	
r7   r,   r'   rg   rh   ri   rj   r#   c                 ó   ‡— t          j        | j        dd¦  «        rt          d| j        › �¦  «         d S | j        |                      ¦   «                              ¦   «         v r†t          ‰|¦  «        rv | j        d„ ‰D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž} |                      ¦   «                              | j        ¦  «        |t          ¦   «         ¬¦  «        S | j        t          j        u r.|s,t          ‰¦  «        dk    rˆfd„}t          j        |¦  «        S 	 t          j        | j        ¦  «        }d	| j        j        › d
|› d�}nî# t"          $ rá ddh}| j        j        |v rd| j        j        › d| j        j        › d�}n®| j        j        �a| j        j                             d¦  «        rBd| j        j        › d| j        j        › d�}t(          j        j                             |¦  «         nAd| j        j        › d| j        j        › d�}t(          j        j                             |¦  «         Y nw xY w| j        j        dk    rd}|| j        rd| j        › d�ndz  }t          |¦  «         d S )NÚ_torchdynamo_disableFz.call torch._dynamo.disable() wrapped function c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©r    ©r³   r  s     r5   r¶   z6SkipFunctionVariable.call_function.<locals>.<listcomp>t  s$   € Ð7Ð7Ð7¨Q�!×&Ò&Ñ(Ô(Ð7Ð7Ð7r7   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r   rU  ©r³   r>   r?   s      r5   r½   z6SkipFunctionVariable.call_function.<locals>.<dictcomp>u  s*   € ÐHÐHÐH±°°A�1�a×*Ò*Ñ,Ô,ÐHÐHÐHr7   )Úmutation_typer    c                 óš   •— t          | t          j        ¦  «        r|                      ‰d         ¬¦  «        S t	          d| › d�¦  «         d S )Nr   )r)  zfunctools.wraps(rö   )r/   r   rv   Úcloner   )rˆ   rg   s    €r5   r>  z1SkipFunctionVariable.call_function.<locals>.wraps|  sP   ø€ Ý˜b¥)Ô"FÑGÔGð 8ØŸ8š8¨t°A¬w˜8Ñ7Ô7Ð7ÝÐ6°Ð6Ð6Ð6Ñ7Ô7Ð7Ð7Ð7r7   z'skip function z	 in file ú'Ú_abcÚ	_warningsz.Graph break due to unsupported Python builtin ú.zM. Please file an issue on GitHub so the PyTorch team can add support for it. Úoptreez)Graph break for an optree C/C++ function zj. Consider using torch.utils._pytree - https://github.com/pytorch/pytorch/blob/main/torch/utils/_pytree.pyz'Graph break due to unsupported builtin a  . This function is either a Python builtin (e.g. _warnings.warn) or a third-party C/C++ Python extension (perhaps created with pybind). If it is a Python builtin, please file an issue on GitHub so the PyTorch team can add support for it and see the next case for a workaround. If it is a third-party C/C++ Python extension, please either wrap it into a PyTorch-understood custom operator (see https://pytorch.org/tutorials/advanced/custom_ops_landing_page.html for more details) or, if it is traceable, use torch.compiler.allow_in_graph.Úallow_in_graphz”Found an allow_in_graph decorator to a function which is created inside the parent function that is getting compiled. This is not supported for now.z', rü   )rz   r�   r‘   r   rQ  Úkeysr   r:   Úgetr"   rÃ   r>  rË   r   ÚLambdaVariableÚgetfiler„   Ú	TypeErrorrƒ   r   rš   ré   ÚutilsÚ	warn_oncerG  )	rb   r,   rg   ri   r‘   r>  ÚpathÚmsgÚknown_python_builtin_moduless	     `      r5   rp   z"SkipFunctionVariable.call_functione  s   ø€ õ Ô! $¤*Ð.DÀeÑLÔLð D	ÝÐWÈ4Ì:ÐWÐWÑXÔXÐXÐXÐXð ŒJ˜$×?Ò?ÑAÔA×FÒFÑHÔHÐHÐHÝ# D¨&Ñ1Ô1ð Ið �D”JØ7Ð7°$Ð7Ñ7Ô7ðàHÐH¸¿º¹¼ÐHÑHÔHðð ˆEð K�4×8Ò8Ñ:Ô:×>Ò>¸t¼zÑJÔJØÕ%5Ñ%7Ô%7ðñ ô ð ð ŒZ�9œ?Ð*Ð*°6Ð*½cÀ$¹i¼iÈ1ºn¸nð8ð 8ð 8ð 8ð 8õ
 Ô+¨EÑ2Ô2Ð2ð$7Ý” t¤zÑ2Ô2�ØQ¨¬
Ô(?ÐQÐQÈ$ÐQÐQÐQ��øÝð !7ð !7ð !7Ø06¸Ð/DÐ,Ø”:Ô(Ð,HÐHÐHðHÈÌÔI^ð Hð HÐaeÔakÔaxð Hð Hð Hð �Cð ”JÔ)Ð5Øœ
Ô-×8Ò8¸ÑBÔBð 6ð_ÀDÄJÔDYð _ð _Ð\`Ô\fÔ\sð _ð _ð _ð õ ”MÔ'×1Ò1°#Ñ6Ô6Ð6Ð6ð	:À$Ä*ÔBWð 	:ð 	:ÐZ^ÔZdÔZqð 	:ð 	:ð 	:ð õ ”MÔ'×1Ò1°#Ñ6Ô6Ð6øøðC!7øøøðD ŒzÔ&Ð*:Ò:Ð:ð?ð ð
 ¨4¬;Ð>Ð'˜œÐ'Ð'Ð'Ð'¸BÑ>ˆCÝ˜#ÑÔÐÐÐs   Ä+,E ÅC(IÉIr.   rê   r‚   )rr   rƒ   r„   r#   rì   r˜   r    rí   r’   ÚstaticmethodrÃ   Ú	lru_cacherQ  rp   rî   rï   s   @r5   rF  rF  F  sÿ   ø€ € € € € àØðð 
Ô	'ð€Nðð ð ð ð ð ð ð
ð ð ð ð)ð )ñ „[ð)ð Ø€YÔ˜ÑÔð
ð 
ñ Ôñ „\ð
ð
Jà#ðJð &ðJð -ð	Jð
 
ðJð Jð Jð Jð Jð Jð Jð Jr7   rF  c                   óH   ‡ — e Zd ZdZdˆ fd„Zdˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚWrapperUserFunctionVariablea3  
    Used to represent a wrapper object that contains the actual callable as an
    attribute. For example, torch.jit.script/trace have the original function at
    their _torchdynamo_inline attribute. Similarly, functions with
    __script_if_tracing_wrapper have the original attr at "__original_fn".
    rk   Nc                 óV   •—  t          ¦   «         j        di |¤Ž || _        || _        d S r&  )r—   r˜   Úwrapper_objÚattr_to_trace)rb   rq  rr  ri   rž   s       €r5   r˜   z$WrapperUserFunctionVariable.__init__º  s6   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø&ˆÔØ*ˆÔÐÐr7   r,   r'   c                 óö   •— || j         k    rLt          | j        | j         ¦  «        }| j        ot	          | j        |¦  «        }t          j        |||¦  «        S t          ¦   «                              ||¦  «        S r.   )	rr  r™   rq  r4   r   r#   r0   r—   rÝ   )rb   r,   rJ   r3   r4   rž   s        €r5   rÝ   z'WrapperUserFunctionVariable.var_getattr¿  sm   ø€ Ø�4Ô%Ò%Ð%Ý˜$Ô*¨DÔ,>Ñ?Ô?ˆCØ”[ÐB¥Z°´¸TÑ%BÔ%BˆFÝ"Ô(¨¨S°&Ñ9Ô9Ð9å‰wŒw×"Ò" 2 tÑ,Ô,Ð,r7   rg   rh   ri   rj   r#   c                 óž   — t          j        t          j        ¦  «                             || t          j        | j        ¦  «        g|¢|¦  «        S r.   )r   r‡   r   Úgetattr_and_tracerp   r%   rr  ro   s       r5   rp   z)WrapperUserFunctionVariable.call_functionÇ  sM   € õ Ô-ÝÔ'ñ
ô 
ç
Š-Ø�•yÔ1°$Ô2DÑEÔEÐMÈÐMÈvñ
ô 
ð	
r7   rê   ©r,   r'   r‚   )rr   rƒ   r„   rë   r˜   rÝ   rp   rî   rï   s   @r5   ro  ro  ²  sŸ   ø€ € € € € ðð ð+ð +ð +ð +ð +ð +ð
-ð -ð -ð -ð -ð -ð

à#ð

ð &ð

ð -ð	

ð
 
ð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

r7   ro  c                  óR   — t           j                             ¦   «         rddlm}  | S i S )Nr   ©Útraceable_collective_remaps)rš   ÚdistributedÚis_availableÚ)torch.distributed._functional_collectivesry  rx  s    r5   Ú_traceable_collective_remapsr}  Ô  sD   € åÔ×%Ò%Ñ'Ô'ð +ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð +Ð*Ø€Ir7   c                 óò   — t           j                             ¦   «         s
J d¦   «         ‚|t          ¦   «                              ¦   «         v sJ ‚|j        }|                      d¦  «        }t          ||¦  «        S )NzIllegal invocation.z)torch.distributed._functional_collectives)rš   rz  r{  r}  Úvaluesrr   Úimport_sourcer   )r,   rˆ   Ú
inner_nameÚpath_sources       r5   Ú_traceable_collectives_sourcerƒ  ß  su   € ÝÔ×)Ò)Ñ+Ô+ÐBÐBÐ-BÑBÔBÐ+ØÕ-Ñ/Ô/×6Ò6Ñ8Ô8Ð8Ð8Ð8Ð8à”€JØ×"Ò"Ð#NÑOÔO€KÝ�k :Ñ.Ô.Ð.r7   c                   ó‚   ‡ — e Zd ZdZdˆ fd„Zedd„¦   «         Zed„ ¦   «         Zedd	„¦   «         Z	 	 	 	 	 	 	 	 dd„Z	ˆ xZ
S )Ú!CollectiveFunctionRewriteVariablea÷  
    Some of the torch.distributed.* collective APIs are possible to rewrite to 'traceable' collectives.

    This class provides both a way to check if a function is remappable, and perform the remapping.

    In the case that a function is 'remappable' but only for some combinations of call-time arguments,
    we check the args at `call_function` time and fall back to graph-breaking if needed.  This is no worse
    than status-quo as we currently graph-break on all distributed.* collectives.
    rk   Nc                óx   •—  t          ¦   «         j        |fi |¤Ž t          |t          ¦  «        sJ ‚|| _        d S r.   )r—   r˜   r/   r‡   Úreplacement_var)rb   rˆ   r‡  ri   rž   s       €r5   r˜   z*CollectiveFunctionRewriteVariable.__init__ó  sG   ø€ Ø�‰ŒÔ˜Ð&Ð&˜vÐ&Ð&Ð&Ý˜/Õ+?Ñ@Ô@Ð@Ð@Ð@Ø.ˆÔÐÐr7   r,   r'   c                 óx   — t                                | |¦  «        \  }}t          |ft          |fd|i|¤Ž|dœ|¤ŽS )Nr4   )r‡  r4   )r…  Úrewriter‡   )r,   Úold_fnr4   ÚoptionsÚnew_fnÚ
new_sources         r5   r2   z(CollectiveFunctionRewriteVariable.createø  s`   € å>×FÒFÀrÈ6ÑRÔRÑˆ�
Ý0Øð
å0°ÐVÐVÀ
ÐVÈgÐVÐVØð
ð 
ð ð	
ð 
ð 	
r7   c                 óJ   — t          j        | ¦  «        o| t          ¦   «         v S r.   )rz   Ú
isfunctionr}  )Úvariables    r5   Úcan_rewritez-CollectiveFunctionRewriteVariable.can_rewrite  s(   € õ Ô˜xÑ(Ô(ÐW¨XÕ9UÑ9WÔ9WÐ-Wð	
r7   c                 óN   — t          ¦   «         |         }|t          | |¦  «        fS r.   )r}  rƒ  )r,   rˆ   rŒ  s      r5   r‰  z)CollectiveFunctionRewriteVariable.rewrite  s(   € å-Ñ/Ô/°Ô3ˆØÕ4°R¸Ñ@Ô@Ð@Ð@r7   rg   rh   ri   rj   r#   c                 óB  — dd l m} ddlm} t	          j        | j        ¦  «        }t           |j        |i |¤Žj	        ¦  «        }d}d|v r1|d          
                    ¦   «         rt          d| j        › �¦  «         | j        |j        |j        |j        fv rn|                     d¦  «        }|�|j        n|j        d         j        }||vrt'          d|› �¦  «        ‚t(          j                             ||         ¦  «        |d<   | j                             |||¦  «        S )Nr   )ÚREDUCE_OP_TO_STRr   Úasync_opzBCollectiveFunctionRewriteVariable can't support async_op=True for ÚopzUnsupported all_reduce op: )Útorch.distributedrz  r|  r”  rz   r{   rˆ   r<   rÈ   rÊ   r    r   Ú
all_reduceÚreduce_scatter_tensorÚ_reduce_scatter_baserc  r‘   r|   ÚdefaultrÎ   r   r%   r2   r‡  rp   )	rb   r,   rg   ri   Údistr”  r{   Úreduce_op_varÚ	reduce_ops	            r5   rp   z/CollectiveFunctionRewriteVariable.call_function  sj  € ð 	)Ð(Ð(Ð(Ð(Ð(ØNÐNÐNÐNÐNÐNõ Ô% d¤gÑ.Ô.ˆ	Ý�n�i”n dÐ5¨fÐ5Ð5Ô?Ñ@Ô@ˆØˆà˜ÐÐ F¨:Ô$6×$IÒ$IÑ$KÔ$KÐÝØ^ÐUYÔU\Ð^Ð^ñô ð ð Œ7ØŒOØÔ&ØÔ%ð
ð 
ð 
ð
 #ŸJšJ tÑ,Ô,ˆMð !Ð,ð Ô#Ð#àÔ)¨$Ô/Ô7ð ð
 Ð 0Ð0Ð0Ý Ð!J¸yÐ!JÐ!JÑKÔKÐKÝ$Ô5×<Ò<Ø  Ô+ñô ˆF�4‰Lð Ô#×1Ò1°"°d¸FÑCÔCÐCr7   rê   rv  r‚   )rr   rƒ   r„   rë   r˜   rl  r2   r‘  r‰  rp   rî   rï   s   @r5   r…  r…  è  sì   ø€ € € € € ðð ð/ð /ð /ð /ð /ð /ð
 ð
ð 
ð 
ñ „\ð
ð ð
ð 
ñ „\ð
ð
 ðAð Að Añ „\ðAð'Dà#ð'Dð &ð'Dð -ð	'Dð
 
ð'Dð 'Dð 'Dð 'Dð 'Dð 'Dð 'Dð 'Dr7   r…  c                   ól   ‡ — e Zd Zdeddfˆ fd„Zd„ Zd„ Z	 	 	 	 	 	 	 	 dd„Zdddedefd„Z	d„ Z
d„ Zˆ xZS )ÚFunctoolsPartialVariablerZ   rk   Nc                 óÀ   •—  t          ¦   «         j        di |¤Ž || _        t          |t          ¦  «        sJ ‚|| _        t          |t          ¦  «        sJ ‚|| _        d S r&  )r—   r˜   rZ   r/   r9   rg   r<   Úkeywords)rb   rZ   rg   r¢  ri   rž   s        €r5   r˜   z!FunctoolsPartialVariable.__init__8  se   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	Ý˜$¥Ñ%Ô%Ð%Ð%Ð%ØˆŒ	Ý˜(¥DÑ)Ô)Ð)Ð)Ð)Ø ˆŒˆˆr7   c                 ó^  ‡— ‰                      ˆfd„¦  «          ‰| j        ¦  «         | j        r‰                     | j        ¦  «         | j        s:‰                     t          t          | j        ¦  «        dz   d¦  «        ¦  «         d S ‰                     | j                             ¦   «         ¦  «         t          | j         
                    ¦   «         ¦  «        }‰                     ‰                     t          |¦  «        t          | j        ¦  «        z   dz   |d¦  «        ¦  «         d S )Nc                  ó0   •— ‰                       dd¦  «        S )NrÃ   rÄ   r?  r9  s   €r5   r;  z6FunctoolsPartialVariable.reconstruct.<locals>.<lambda>A  s   ø€  g×&>Ò&>¸{ÈIÑ&VÔ&V€ r7   r    F)r@  rZ   rg   Úforeachr¢  rA  r   rË   r  r;   rb  Úcreate_call_function_kw)rb   r:  rb  s    ` r5   rD  z$FunctoolsPartialVariable.reconstruct@  s  ø€ Ø×ÒÐVÐVÐVÐVÑWÔWÐWØˆ�”	ÑÔÐØŒ9ð 	'Ø�OŠO˜DœIÑ&Ô&Ð&ØŒ}ð 	Ø×!Ò!Õ"6µs¸4¼9±~´~ÈÑ7IÈ5Ñ"QÔ"QÑRÔRÐRØˆFà�Š˜œ×,Ò,Ñ.Ô.Ñ/Ô/Ð/Ý�T”]×'Ò'Ñ)Ô)Ñ*Ô*ˆØ×ÒØ×+Ò+­C°©I¬I½¸D¼I¹¼Ñ,FÈÑ,JÈDÐRWÑXÔXñ	
ô 	
ð 	
ð 	
ð 	
r7   c                 ó*   — |                       ¦   «         S r.   rU  ra   s    r5   rt   z%FunctoolsPartialVariable.get_functionO  ó   € Ø×&Ò&Ñ(Ô(Ð(r7   r,   r'   rg   rh   ri   rj   r#   c                 ód   — | j         |z   }i | j        ¥|¥}| j                             |||¦  «        S r.   )rg   r¢  rZ   rp   )rb   r,   rg   ri   Úmerged_argsÚmerged_kwargss         r5   rp   z&FunctoolsPartialVariable.call_functionR  s;   € ð ”i $Ñ&ˆØ3˜4œ=Ð3¨FÐ3ˆØŒy×&Ò& r¨;¸ÑFÔFÐFr7   rJ   c                 óŠ   — t           j                             t          t	          j        t          ¦  «        |¦  «        ¦  «        S r.   )r   r%   r2   rs   rÃ   rÄ   r   )rb   r,   rJ   s      r5   rx   z%FunctoolsPartialVariable.call_hasattr\  s5   € åÔ)×0Ò0Ý•IÔ%¥hÑ/Ô/°Ñ6Ô6ñ
ô 
ð 	
r7   c                 óº   — t          j        | j                             ¦   «         gd„ | j        D ¦   «         ¢R i d„ | j                             ¦   «         D ¦   «         ¤ŽS )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   rU  )r³   r¹   s     r5   r¶   z?FunctoolsPartialVariable.as_python_constant.<locals>.<listcomp>e  s$   € Ð<Ð<Ð<¨3ˆc×$Ò$Ñ&Ô&Ð<Ð<Ð<r7   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r   rU  rX  s      r5   r½   z?FunctoolsPartialVariable.as_python_constant.<locals>.<dictcomp>f  s*   € ÐKÐKÐK©T¨Q°ˆq�!×&Ò&Ñ(Ô(ÐKÐKÐKr7   )rÃ   rÄ   rZ   r    rg   r¢  r:   ra   s    r5   r    z+FunctoolsPartialVariable.as_python_constantb  sq   € ÝÔ ØŒI×(Ò(Ñ*Ô*ð
à<Ð<°$´)Ð<Ñ<Ô<ð
ð 
ð 
ð LÐK°T´]×5HÒ5HÑ5JÔ5JÐKÑKÔKð
ð 
ð 	
r7   c                 óº   — t          j        | j                             ¦   «         gd„ | j        D ¦   «         ¢R i d„ | j                             ¦   «         D ¦   «         ¤ŽS )zcSimilar to as_python_constant(), but add ID_MATCH guards to try to force things to become constantsc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©Úguard_as_python_constant)r³   r?   s     r5   r¶   zEFunctoolsPartialVariable.guard_as_python_constant.<locals>.<listcomp>m  s$   € Ð>Ð>Ð>¨qˆa×(Ò(Ñ*Ô*Ð>Ð>Ð>r7   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r   r²  rX  s      r5   r½   zEFunctoolsPartialVariable.guard_as_python_constant.<locals>.<dictcomp>n  s*   € ÐQÐQÐQ±4°1°aˆq�!×,Ò,Ñ.Ô.ÐQÐQÐQr7   )rÃ   rÄ   rZ   r³  rg   r¢  r:   ra   s    r5   r³  z1FunctoolsPartialVariable.guard_as_python_constanti  sq   € åÔ ØŒI×.Ò.Ñ0Ô0ð
à>Ð>°D´IÐ>Ñ>Ô>ð
ð 
ð 
ð RÐQ¸4¼=×;NÒ;NÑ;PÔ;PÐQÑQÔQð
ð 
ð 	
r7   r‚   )rr   rƒ   r„   r#   r˜   rD  rt   rp   r…   rx   r    r³  rî   rï   s   @r5   r   r   7  só   ø€ € € € € ð!˜_ð !È4ð !ð !ð !ð !ð !ð !ð
ð 
ð 
ð)ð )ð )ðGà#ðGð &ðGð -ð	Gð
 
ðGð Gð Gð Gð
Ð6ð 
¸cð 
Àoð 
ð 
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð 
r7   r   c                   ó"  ‡ — e Zd Zdddhej        £Ze ej        d¦  «        dee	de
f         ej        f         fd„¦   «         ¦   «         Zed„ ¦   «         Zdeddfˆ fd	„Zedefd
„¦   «         Zd„ Zd„ Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dd„Zd„ Zˆ xZS )ÚPolyfilledFunctionVariablerˆ   r)  Útraceable_fnNrk   .c                 ó   — i S r.   r   )r�   s    r5   Ú_get_polyfill_handlersz1PolyfilledFunctionVariable._get_polyfill_handlersz  s	   € ð ˆ	r7   c                 ót   — t          |                     t          j        ¦  «        ¦  «          | ||¬¦  «        S r‹   )r   r�   r   rL  r�   s      r5   r’   z-PolyfilledFunctionVariable.create_with_source  s6   € å�f×'Ò'­Ô(CÑDÔDÑEÔEÐEàˆs�5 Ð(Ñ(Ô(Ð(r7   c                 ór  •—  t          ¦   «         j        di |¤Ž || _        |                      ¦   «                              ||¦  «        }t          |¦  «        sJ d|› d|› �¦   «         ‚dD ]*}t          ||d ¦  «        }|rt          |¦  «        sJ ‚|} nŒ+t          d|› d�¦  «        ‚|| _        || _	        d S )NzPolyfill handler z is not callable for )Ú__torch_dynamo_polyfill__Ú__python_implementation__z# does not have a traceable functionr   )
r—   r˜   rˆ   r¹  rc  Úcallabler™   ÚRuntimeErrorr)  r·  )rb   rˆ   ri   ÚhandlerÚcandidate_attrÚ	candidater·  rž   s          €r5   r˜   z#PolyfilledFunctionVariable.__init__…  sþ   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒà×-Ò-Ñ/Ô/×3Ò3°B¸Ñ;Ô;ˆÝ˜Ñ Ô ÐXÐXÐ"X°gÐ"XÐ"XÐTVÐ"XÐ"XÑXÔXÐ ð
ð 	ð 	ˆNõ   ¨¸Ñ>Ô>ˆIØð Ý 	Ñ*Ô*Ð*Ð*Ð*Ø(�Ø�ðõ
 ØP GÐPÐPÐPñô ð ð &ˆŒØ ,ˆÔÐÐr7   c                 ó   — | j         S r.   )r·  ra   s    r5   Úpolyfill_fnz&PolyfilledFunctionVariable.polyfill_fnœ  s   € àÔ Ð r7   c                 ó.   — t          | j        dd¦  «        S )NÚ*__torch_dynamo_can_constant_fold_through__F)r™   r)  ra   s    r5   Úcan_constant_fold_throughz4PolyfilledFunctionVariable.can_constant_fold_through   s   € ÝØŒOÐIÈ5ñ
ô 
ð 	
r7   c                 ó*   — |                       ¦   «         S r.   rU  ra   s    r5   rt   z'PolyfilledFunctionVariable.get_function¥  r¨  r7   r,   r'   rg   rh   ri   rj   r#   c                 óN  — |                       ¦   «         rXt          ||¦  «        rH | j        d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤Ž}t	          j        ||¦  «        S | j        t          j        u röt          |¦  «        dk    rã|sát          |d         t          j        t          j        f¦  «        rµt          d„ |d         j        D ¦   «         ¦  «        r‘t          j                             ||j                             dt$          j        t)          d„ |d         j        D ¦   «         ¦  «        fi ¦  «        t%          j        d„ |d         j        D ¦   «         ¦  «        ¬	¦  «        S t	          j        || j        ¦  «        }|                     |||¦  «        S )
Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   rU  rV  s     r5   r¶   z<PolyfilledFunctionVariable.call_function.<locals>.<listcomp>³  s$   € Ð;Ð;Ð;°�a×*Ò*Ñ,Ô,Ð;Ð;Ð;r7   c                 ó>   — i | ]\  }}||                      ¦   «         “ŒS r   rU  rX  s      r5   r½   z<PolyfilledFunctionVariable.call_function.<locals>.<dictcomp>´  s*   € ÐLÐLÐL±T°Q¸�q˜!×.Ò.Ñ0Ô0ÐLÐLÐLr7   r    r   c              3   óè   K  — | ]m}t          |t          j        ¦  «        rt          |j        t          ¦  «        p4t          |t          j        ¦  «        o|                     ¦   «         t          u V — Œnd S r.   )r/   r   r%   r‘   ÚintÚSymNodeVariabler©   rV  s     r5   r3  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>¿  s€   è è € ð ð ð õ ˜A�yÔ9Ñ:Ô:ÐW½zÈ!Ì'ÕSVÑ?WÔ?Wð YÝ˜q¥)Ô";Ñ<Ô<ÐWÀÇÂÁÄÕTWÐAWðð ð ð ð ð r7   rp   c              3   ó>   K  — | ]}|                      ¦   «         V — Œd S r.   ©Úas_proxy)r³   Úas     r5   r3  z;PolyfilledFunctionVariable.call_function.<locals>.<genexpr>Ê  s*   è è € Ð?Ð?¨A˜1Ÿ:š:™<œ<Ð?Ð?Ð?Ð?Ð?Ð?r7   c                 ó^   — g | ]*}t          |t          j        ¦  «        r|j        n|j        ‘Œ+S r   )r/   r   r%   r‘   Úsym_numrV  s     r5   r¶   z<PolyfilledFunctionVariable.call_function.<locals>.<listcomp>Î  sG   € ð ð ð ð õ  *¨!­YÔ-GÑHÔHð+˜AœG˜Gà!"¤ð	ð ð r7   )rÔ  )rÇ  r   rˆ   r:   r#   r0   ÚbuiltinsÚsumrË   r/   r   ÚListVariableÚTupleVariableÚallrÎ  r2   rB   Úcreate_proxyrš   Úsym_sumr;   r·  rp   )rb   r,   rg   ri   r=   Útraceable_function_variables         r5   rp   z(PolyfilledFunctionVariable.call_function¨  sÙ  € ð ×)Ò)Ñ+Ô+ð 		5Õ0MØ�&ñ1
ô 1
ð 		5ð �”Ø;Ð;°dÐ;Ñ;Ô;ðàLÐL¸V¿\º\¹^¼^ÐLÑLÔLðð ð õ #Ô(¨¨VÑ4Ô4Ð4ð ŒG•x”|Ð#Ð#Ý�D‘	”	˜Q’�Øð å˜4 œ7¥YÔ%;½YÔ=TÐ$UÑVÔVð õ ð ð ð ˜aœœðñ ô ñ ô ð õ Ô,×3Ò3ØØ”	×&Ò&Ø#Ý”MÝÐ?Ð?°°a´´Ð?Ñ?Ô?Ñ?Ô?ÐAØñ	ô õ œðð ð "& a¤¤ðñ ô ñ	ô 	ð 4ñ ô ð õ( '6Ô&;¸BÀÔ@QÑ&RÔ&RÐ#Ø*×8Ò8¸¸TÀ6ÑJÔJÐJr7   c                 óh  — |dk    r|                       |||¦  «        S t          | j        |d ¦  «        }|€J d|› d| j        › �¦   «         ‚t          |¦  «        sJ d|› d| j        › �¦   «         ‚i }| j        rt          | j        |¦  «        |d<   t          |fi |¤Ž}|                      |||¦  «        S )NÚ__call__zMember z not found in z is not callable in r4   )rp   r™   rˆ   r   r4   r   r¶  )rb   r,   rJ   rg   ri   Úmethodr‹  Úpolyfilled_method_variables           r5   r  z&PolyfilledFunctionVariable.call_methodÜ  sã   € ð �:ÒÐØ×%Ò% b¨$°Ñ7Ô7Ð7å˜œ $¨Ñ-Ô-ˆØÐ!Ð!Ð#J¨TÐ#JÐ#JÀÄÐ#JÐ#JÑ!Ô!Ð!Ý˜6Ñ"Ô"ÐQÐQÐ$Q¨dÐ$QÐ$QÈÌÐ$QÐ$QÑQÔQÐ"ØˆØŒ;ð 	>Ý *¨4¬;¸Ñ =Ô =ˆG�HÑÝ%?ÀÐ%RÐ%RÈ'Ð%RÐ%RÐ"Ø)×7Ò7¸¸DÀ&ÑIÔIÐIr7   c                 ó   — | j         S r.   r¤   ra   s    r5   r    z-PolyfilledFunctionVariable.as_python_constantï  r¥   r7   r‚   ©rg   rh   ri   rj   rk   r#   )rr   rƒ   r„   r#   rì   rí   rÃ   rm  r   r   r   rQ   rN   r¹  r’   r*   r˜   ÚpropertyrÄ  rÇ  rt   rp   r  r    rî   rï   s   @r5   r¶  r¶  r  s¨  ø€ € € € € àØØðð 
Ô	'ð	€Nð Ø€YÔ˜ÑÔð t¨H°S¸#°XÔ,>ÀÔ@RÐ,RÔ'Sð ð ð ñ Ôñ „[ðð ð)ð )ñ „[ð)ð
-˜2ð -¨Dð -ð -ð -ð -ð -ð -ð. ð!˜Rð !ð !ð !ñ „Xð!ð
ð 
ð 
ð
)ð )ð )ð2Kà#ð2Kð &ð2Kð -ð	2Kð
 
ð2Kð 2Kð 2Kð 2KðhJð &ð	Jð
 -ðJð 
ðJð Jð Jð Jð&ð ð ð ð ð ð r7   r¶  )ÚTMADescriptorMetadataÚTritonHOPifierc                   óŠ   — e Zd Zdedefd„Zdedefd„Zdedefd„Z	de
ej        j        j        df         fd	„Zd
„ Zdefd„ZdS )ÚDynamoTritonHOPifierrj  rk   c                 ó    — t          |¦  «        ‚r.   )r   )rb   rj  s     r5   Úraise_unsupportedz&DynamoTritonHOPifier.raise_unsupportedú  s   € Ý˜#ÑÔÐr7   Úmaybe_callablec                 ó:   — t          |t          t          f¦  «        S r.   )r/   rv   r‡   )rb   rê  s     r5   Úis_callablez DynamoTritonHOPifier.is_callableý  s    € ÝØÕ7Õ9MÐNñ
ô 
ð 	
r7   r3   c                 ó   — |j         S r.   rJ  )rb   r3   s     r5   Ú	get_valuezDynamoTritonHOPifier.get_value  s
   € ØŒyÐr7   .c                 ó˜   — ddl m} t          ||¦  «        r|                     ¦   «         S t	          dt          |¦  «        › �¦  «         d S )Nr    )ÚBaseListVariablezgrid for the triton kernel is )Úlistsrð  r/   rÑ  r   Útype)rb   Úgridrð  s      r5   Ú
check_gridzDynamoTritonHOPifier.check_grid  sY   € Ø+Ð+Ð+Ð+Ð+Ð+å�dÐ,Ñ-Ô-ð 	IØ—=’=‘?”?Ð"åÐG½4À¹:¼:ÐGÐGÑHÔHÐHÐHÐHr7   c                 ór   — d„ |                      ¦   «         D ¦   «         }|                     ||gi ¦  «        }|S )Nc                 óT   — i | ]%\  }}t           j                             |¦  «        |“Œ&S r   ©r   r%   r2   rX  s      r5   r½   z2DynamoTritonHOPifier.call_grid.<locals>.<dictcomp>  s/   € ÐQÐQÐQ¹D¸A¸q•	Ô*×1Ò1°!Ñ4Ô4°aÐQÐQÐQr7   )r:   rp   )rb   ró  Úmetar,   s       r5   Ú	call_gridzDynamoTritonHOPifier.call_grid  s;   € ØQÐQÀDÇJÂJÁLÄLÐQÑQÔQˆØ×!Ò! " t f¨bÑ1Ô1ˆØˆr7   c                 ó�  ‡— ddl mŠ ddlm} i }t	          |                     ¦   «         ¦  «        D ]E}||         }t          |t          ¦  «        r&|                     ¦   «         ||<   |j	        j
        ||<   ŒFd„ |                     ¦   «         D ¦   «         }	ddlm}
m} ˆfd„|                     ¦   «         D ¦   «         }ˆfd„|	                     ¦   «         D ¦   «         }|                     ¦   «         D ]b}|                     ¦   «         }t          |t"          j        t"          j        f¦  «        s&|                      d	t+          |¦  «        › d
�¦  «         Œc|
                     |¦  «        } ||t.          ¦  «        }|j                             d|d|j        ||||                     ¦   «         dœ¦  «         t#          j        d ¦  «        S )Nr    r$   )ÚConstDictVariablec                 óT   — i | ]%\  }}t           j                             |¦  «        |“Œ&S r   r÷  rX  s      r5   r½   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>"  s?   € ð 
ð 
ð 
á��1õ Ô&×-Ò-¨aÑ0Ô0°!ð
ð 
ð 
r7   r   )Úkernel_side_tableÚtriton_kernel_wrapper_mutationc                 ó`   •— i | ]*\  }}t          |‰¦  «        ¯||                     ¦   «         “Œ+S r   )r/   r    ©r³   r>   r?   r%   s      €r5   r½   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>/  sL   ø€ ð 
ð 
ð 
á��1Ý˜!Ð-Ñ.Ô.ð
Øˆq×#Ò#Ñ%Ô%ð
ð 
ð 
r7   c                 ó<   •— i | ]\  }}t          |‰¦  «        °||“ŒS r   )r/   r   s      €r5   r½   z1DynamoTritonHOPifier.call_HOP.<locals>.<dictcomp>4  s@   ø€ ð 
ð 
ð 
á��1Ý˜aÐ!1Ñ2Ô2ð
Øˆqð
ð 
ð 
r7   z.Unexpected argument type for a Triton kernel: r_  rp   r   )Ú
kernel_idxÚconstant_args_idxró  Útma_descriptor_metadatari   )rý   r%   Údictsrû  r9   rb  r/   ÚTMADescriptorVariableÚto_metadataÚdata_ptrÚfrom_tensorr:   Ú*torch._higher_order_ops.triton_kernel_wraprý  rþ  r  Úrealizer   r  rÎ  ré  ÚreprÚadd_constant_argsr<   rB   rÚ  r  rÑ  )rb   r�  ÚgridsÚcombined_args_rawr,   rû  r  r>   r?   Úcombined_argsrý  rþ  Úconstant_argsÚnon_constant_argsr  rø  r%   s                   @r5   Úcall_HOPzDynamoTritonHOPifier.call_HOP  sM  ø€ Ø.Ð.Ð.Ð.Ð.Ð.Ø,Ð,Ð,Ð,Ð,Ð,ð :<ÐÝÐ'×,Ò,Ñ.Ô.Ñ/Ô/ð 	>ð 	>ˆAØ! !Ô$ˆAÝ˜!Õ2Ñ3Ô3ð >Ø-.¯]ª]©_¬_Ð'¨Ñ*Ø'(¤zÔ'=Ð! !Ñ$øð
ð 
à)×/Ò/Ñ1Ô1ð
ñ 
ô 
ˆð
	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð
ð 
ð 
ð 
à)×/Ò/Ñ1Ô1ð
ñ 
ô 
ˆð

ð 
ð 
ð 
à%×+Ò+Ñ-Ô-ð
ñ 
ô 
Ðð #×)Ò)Ñ+Ô+ð 	ð 	ˆAØ—	’	‘”ˆAÝ˜a¥)Ô":½IÔ<UÐ!VÑWÔWð Ø×&Ò&ØOÅTÈ!ÁWÄWÐOÐOÐOñô ð øð .×?Ò?ÀÑNÔNÐØ Ð Ð!2µDÑ9Ô9ˆØ
Œ	×ÒØØ*Øà&Ô1Ø%6ØØ+BØŸ-š-™/œ/ðð ñ		
ô 	
ð 	
õ Ô)Øñ
ô 
ð 	
r7   N)rr   rƒ   r„   r…   r   ré  r   Úboolrì  rî  r   rš   ÚfxÚproxyÚProxyrô  rù  r%   r  r   r7   r5   rç  rç  ù  sÝ   € € € € € ð Sð ¨Uð ð ð ð ð
¨#ð 
°$ð 
ð 
ð 
ð 
ð
˜Sð  Sð ð ð ð ðI %¨¬¬Ô(<¸cÐ(AÔ"Bð Ið Ið Ið Iðð ð ð
@
ÐBRð @
ð @
ð @
ð @
ð @
ð @
r7   rç  c                   óŒ   ‡ — e Zd ZU ded<   ded<   ee         ed<   dˆ fd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dˆ fd„Zde	de	fd„Z
ˆ xZS )ÚTritonKernelVariabler(   ró  r)   Úkernelr  rk   Nc                 ót   •—  t          ¦   «         j        di |¤Ž t                               | |||¦  «         d S r&  )r—   r˜   Ú dynamo_triton_hopifier_singletonÚinit_variable)rb   r  r  ró  ri   rž   s        €r5   r˜   zTritonKernelVariable.__init__]  sA   ø€ Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ý(×6Ò6°t¸VÀZÐQUÑVÔVÐVÐVÐVr7   r,   r'   rg   rh   ri   rj   r#   c                 ó<   — t                                | |||¦  «        S r.   )r  Úcall_triton_kernelro   s       r5   rp   z"TritonKernelVariable.call_functiona  s%   € õ 0×BÒBØ�$˜ ñ
ô 
ð 	
r7   c                 óÔ   •— |dk    rt                                | |¦  «        S |dk    rt                                | |||¦  «        S t          ¦   «                              ||||¦  «        S )NÚ__getitem__Úrun)r  Úcall_getitemÚcall_runr—   r  )rb   r,   rJ   rg   ri   rž   s        €r5   r  z TritonKernelVariable.call_methodk  sj   ø€ ð �=Ò Ð Ý3×@Ò@ÀÀtÑLÔLÐLØ�UŠ]ˆ]Ý3×<Ò<¸TÀ4ÈÐQSÑTÔTÐTõ ‰wŒw×"Ò" 2 t¨T°6Ñ:Ô:Ð:r7   r¹   c                 ó‚   — ddl m} ddlm} t	          ||¦  «        r" |j        |                     ¦   «         ¦  «        S |S )Nr    r$   )rÎ  )rý   r%   ÚtensorrÎ  r/   r2   Úevaluate_expr)rb   r¹   r%   rÎ  s       r5   Úspecialize_symbolicz(TritonKernelVariable.specialize_symbolicz  s`   € Ø.Ð.Ð.Ð.Ð.Ð.Ø+Ð+Ð+Ð+Ð+Ð+õ �c˜?Ñ+Ô+ð 	@Ø*Ð#Ô*¨3×+<Ò+<Ñ+>Ô+>Ñ?Ô?Ð?Øˆ
r7   rê   r‚   râ  )rr   rƒ   r„   rT   r   rÍ  r˜   rp   r  r   r(  rî   rï   s   @r5   r  r  X  s  ø€ € € € € € Ø
ÐÐÑØÐÐÑØ˜”ÐÐÑðWð Wð Wð Wð Wð Wð
à#ð
ð &ð
ð -ð	
ð
 
ð
ð 
ð 
ð 
ð;ð &ð	;ð
 -ð;ð 
ð;ð ;ð ;ð ;ð ;ð ;ð sð ¨sð ð ð ð ð ð ð ð r7   r  c                   ó<   ‡ — e Zd Z	 	 	 	 	 	 	 	 dˆ fd„Zd	„ Zd
„ Zˆ xZS )r  r  úvariables.DataPtrVariableÚdimsúList[ConstantVariable]Ú
block_dimsÚelement_sizer%   c                 óª   •— t          |t          j        ¦  «        sJ ‚ t          ¦   «         j        di |¤Ž || _        || _        || _        || _        d S r&  )	r/   r   ÚDataPtrVariabler—   r˜   r  r+  r-  r.  )rb   r  r+  r-  r.  ri   rž   s         €r5   r˜   zTMADescriptorVariable.__init__…  s^   ø€ õ ˜(¥IÔ$=Ñ>Ô>Ð>Ð>Ð>Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"Ø ˆŒØˆŒ	Ø$ˆŒØ(ˆÔÐÐr7   c                 óv   — d„ | j         D ¦   «         d„ | j        D ¦   «         | j                             ¦   «         fS )Nc                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   rÐ  ©r³   Údims     r5   r¶   z5TMADescriptorVariable.to_metadata.<locals>.<listcomp>–  s    € Ð1Ð1Ð1 ˆS�\Š\‰^Œ^Ð1Ð1Ð1r7   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r   rÐ  r3  s     r5   r¶   z5TMADescriptorVariable.to_metadata.<locals>.<listcomp>—  s    € Ð7Ð7Ð7 ˆS�\Š\‰^Œ^Ð7Ð7Ð7r7   )r+  r-  r.  rÑ  ra   s    r5   r  z!TMADescriptorVariable.to_metadata”  sD   € à1Ð1 t¤yÐ1Ñ1Ô1Ø7Ð7 t¤Ð7Ñ7Ô7ØÔ×&Ò&Ñ(Ô(ð
ð 	
r7   c                 ó  ‡ ‡— ‰                      ˆˆ fd„¦  «         ‰ j                             ‰¦  «         g ‰ j        ¢‰ j        ¢‰ j        ‘}‰                     |¦  «         ‰                     t          |¦  «        dz   d¦  «         d S )Nc                  ó\   •— ‰                       ddt          ‰j        ¦  «        › d�¦  «        S )Nz$triton.tools.experimental_descriptorÚcreate_Úd_tma_descriptor)r8  rË   r+  )r:  rb   s   €€r5   r;  z3TMADescriptorVariable.reconstruct.<locals>.<lambda>�  s0   ø€ �G×,Ò,Ø6Ø:�#˜dœi™.œ.Ð:Ð:Ð:ñô € r7   r    F)	r@  r  rD  r+  r-  r.  r¥  rp   rË   )rb   r:  rg   s   `` r5   rD  z!TMADescriptorVariable.reconstruct›  s    øø€ Ø×Òðð ð ð ð ñ	
ô 	
ð 	
ð 	Œ×!Ò! 'Ñ*Ô*Ð*Ø@�”Ð@˜Tœ_Ð@¨dÔ.?Ð@ˆØ�Š˜ÑÔÐØ×Ò�c $™iœi¨!™m¨UÑ3Ô3Ð3Ð3Ð3r7   )r  r*  r+  r,  r-  r,  r.  r%   )rr   rƒ   r„   r˜   r  rD  rî   rï   s   @r5   r  r  „  s�   ø€ € € € € ð)à-ð)ð 'ð)ð -ð	)ð
 )ð)ð )ð )ð )ð )ð )ð
ð 
ð 
ð
4ð 
4ð 
4ð 
4ð 
4ð 
4ð 
4r7   r  c                   ó@   ‡ — e Zd Zdeddfˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚCreateTMADescriptorVariableÚrankrk   Nc                 óT   •— |dv sJ ‚ t          ¦   «         j        di |¤Ž || _        d S )N)r    r   r   )r—   r˜   r<  )rb   r<  ri   rž   s      €r5   r˜   z$CreateTMADescriptorVariable.__init__©  s:   ø€ ð
 �vˆ~ˆ~ˆ~ˆ~Ø�‰ŒÔÐ"Ð"˜6Ð"Ð"Ð"ØˆŒ	ˆ	ˆ	r7   r,   r'   rg   rh   ri   rj   r#   c                 ó|  — d|v r|d         n|d         }t          |t          j        ¦  «        st          d| j        › d�¦  «        ‚| j        dk    rPt          |¦  «        t          |¦  «        z   dk    sJ ‚d|v r|d         n|d         g}d|v r|d         n|d	         g}nut          |¦  «        t          |¦  «        z   d
k    sJ ‚d|v r|d         n|d         d|v r|d         n|d	         g}d|v r|d         n|d         d|v r|d         n|d         g}d|v r|d         n|d         }t          ||||¬¦  «        S )NÚptrr   z8Please ensure there were no graph breaks between create_z3d_tma_descriptor and the upstream .data_ptr() call.r    é   r4  Ú	block_dimr   é   Údim1Údim0Ú
block_dim1é   Ú
block_dim0r.  éÿÿÿÿ)r  r+  r-  r.  )r/   r   r0  r   r<  rË   r  )rb   r,   rg   ri   r?  r+  r-  r.  s           r5   rp   z)CreateTMADescriptorVariable.call_function²  s°  € ð  %¨˜˜ˆf�UŒmˆm°D¸´Gˆå˜#�yÔ8Ñ9Ô9ð 	Ýð$Øœ)ð$ð $ð $ñô ð ð Œ9˜Š>ˆ>Ý�t‘9”9�s 6™{œ{Ñ*¨aÒ/Ð/Ð/Ð/à!&¨&  ��u”�°d¸1´gðˆDð (3°fÐ'<Ð'<��{Ô#Ð#À$ÀqÄ'ðˆJˆJõ �t‘9”9�s 6™{œ{Ñ*¨aÒ/Ð/Ð/Ð/à"(¨FÐ"2Ð"2��v”�¸¸Q¼Ø"(¨FÐ"2Ð"2��v”�¸¸Q¼ðˆDð
 )5¸Ð(>Ð(>��|Ô$Ð$ÀDÈÄGØ(4¸Ð(>Ð(>��|Ô$Ð$ÀDÈÄGðˆJð 2@À6Ð1IÐ1I�v˜nÔ-Ð-ÈtÐTVÌxˆå$ØØØ!Ø%ð	
ñ 
ô 
ð 	
r7   r‚   )rr   rƒ   r„   rÍ  r˜   rp   rî   rï   s   @r5   r;  r;  ¨  s‰   ø€ € € € € ðàðð 
ð	ð ð ð ð ð ð(
à#ð(
ð &ð(
ð -ð	(
ð
 
ð(
ð (
ð (
ð (
ð (
ð (
ð (
ð (
r7   r;  r.   rv  )TrÕ  rN  rÃ   rz   rS   rQ   Útypingr   r   r   r   r   r   r	   r
   Útyping_extensionsr   rš   rü   r   r   Úbytecode_transformationr   r   Úexcr   r   Úguardsr   r   r4   r   r   r   r   rg  r   r   r   r   r   r   r   Úbaser!   r"   r#   rý   r%   Ú#torch.distributed.fsdp._fully_shardr&   ÚModuleNotFoundErrorÚtorch._dynamo.symbolic_convertr'   r
  r(   r)   r*   r6   r@   r…   rL   r[   r]   r‡   rñ   r  r  rá   rv   rF  ro  r}  rƒ  r…  r   r¶  rä  rå  rç  r  r  r  r;  r   r7   r5   ú<module>rR     sð  ðð €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø €€€Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UÐ UØ #Ð #Ð #Ð #Ð #Ð #à €€€à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ HØ ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð =Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø &Ð &Ð &Ð &Ð &Ð &ðØEÐEÐEÐEÐEÐEÐEøØð ð ð ØÐÐÐðøøøð ð ØDÐDÐDÐDÐDÐDðð ð ð ð ð ð ð ð €WˆT˜Ð"Ñ"Ô"€ð	Að 	Að 	Að 	Að 	Að.ð .ð .ð .ð  $ s¨OÐ';Ô"<ð  ð  ð  ð  ð"ð ð ð(ð ð ð ð ˜ñ ô ð ð@t7ð t7ð t7ð t7ð t7Ð3ñ t7ô t7ð t7ðn=5ð =5ð =5ð =5ð =5Ð-ñ =5ô =5ð =5ð@ð ð ð ð Ð 2ñ ô ð ð(ð ð ð ð Ð"6ñ ô ð ð(ð ð ð ð KAð KAð KAð KAð KAÐ!9ñ KAô KAð KAð\ið ið ið ið i˜?ñ iô ið iðX
ð 
ð 
ð 
ð 
 /ñ 
ô 
ð 
ðDð ð ð/ð /ð /ð /ðLDð LDð LDð LDð LDÐ(<ñ LDô LDð LDð^8
ð 8
ð 8
ð 8
ð 8
˜ñ 8
ô 8
ð 8
ðv~ð ~ð ~ð ~ð ~ ñ ~ô ~ð ~ðBð ð ð ð ð ð ð ðY
ð Y
ð Y
ð Y
ð Y
˜>ñ Y
ô Y
ð Y
ðx $8Ð#7Ñ#9Ô#9Ð  ð)ð )ð )ð )ð )˜?ñ )ô )ð )ðX!4ð !4ð !4ð !4ð !4˜Oñ !4ô !4ð !4ðH2
ð 2
ð 2
ð 2
ð 2
 /ñ 2
ô 2
ð 2
ð 2
ð 2
s   ÂB ÂBÂB