Ë
    P/æjÏ¡  ã                   ó¼  — 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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,m-Z- 	 d dl.m/Z/ erd dl1m2Z2 d dl3m4Z4  ede¬«      Z5d4d5d„Z6d5d„Z7d„ Z8d„ Z9 G d„ de+«      Z: G d„ de:«      Z; G d„ de;«      Z< G d„ de<«      Z= G d„ de;«      Z>d5d „Z? G d!„ d"e:«      Z@ G d#„ d$e+«      ZA G d%„ d&e+«      ZBd'„ ZCd5d(„ZD G d)„ d*e;«      ZE G d+„ d,e+«      ZF G d-„ d.e+«      ZGd d/lHmIZI  G d0„ d1eI«      ZJ eJ«       ZK G d2„ d3e+«      ZLy# e0$ r dZ/Y ŒØw xY w)6é    N)ÚAnyÚCallableÚDictÚListÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnioné   )Ú	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é   )ÚMutableLocalÚtypestrÚVariableTracker©ÚConstantVariable)Ú_fsdp_param_group)ÚInstructionTranslator)ÚSourceÚ_F)Úboundc                 óš   — t        |t        «      r|S |sddlm} |j	                  | |«      S t
        j                  j	                  ||«      S ©Nr   ©ÚSourcelessBuilder)Ú
isinstancer"   Útorch._dynamo.variables.builderr-   Úcreater   ÚLazyVariableTracker)ÚtxÚvalÚsourcer-   s       úd/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_dynamo/variables/functions.pyÚwrap_bound_argr6   ,   sE   € ä�#”Ô'Øˆ
ÙÝEà ×'Ñ'¨¨CÓ0Ð0ô ×,Ñ,×3Ñ3°C¸Ó@Ð@ó    c                 ó’   — t        |j                  «       «      D ]+  \  }}t        |t        t        f«      sŒt        | |«      ||<   Œ- y ©N)ÚlistÚitemsr.   ÚtupleÚdictr6   )r2   ÚresultÚkÚvs       r5   Úwrap_args_kwargsrA   :   s>   € Ü�V—\‘\“^Ó$ò .‰ˆˆ1Ü�aœ%¤˜Õ'ä& r¨1Ó-ˆF�1ŠIñ.r7   c                 óÐ   — i }| j                   j                  }|j                  D ]>  }|j                  «       ||<   ||v sŒ|j	                  ||   |j                  |«      «       Œ@ |S r9   )ÚoutputÚside_effectsÚco_cellvarsÚtrack_cell_newÚ
store_cellÚpop)Úparentr>   ÚcodeÚclosure_cellsrD   Únames         r5   Úinit_cellvarsrM   A   so   € Ø€MØ—=‘=×-Ñ-€Lð × Ñ ò KˆØ*×9Ñ9Ó;ˆ�dÑØ�6Š>Ø×#Ñ# M°$Ñ$7¸¿¹ÀDÓ9IÕJðKð
 Ðr7   c                 ó¼   — ddl m}  || ||||«      }||_        t        |t        «      rddlm}	 t         |	|«      «      }|�t        |t        «      sJ ‚||_        |S )Nr   )ÚFunctionType©Úpairwise)	ÚtypesrO   Ú__kwdefaults__r.   r<   Ú	itertoolsrQ   r=   Ú__annotations__)
rJ   Ú	f_globalsrL   ÚdefaultsÚclosureÚ
kwdefaultsÚannotationsrO   ÚfuncrQ   s
             r5   Ú_create_nested_fnr\   N   sa   € õ #á˜˜i¨¨x¸ÓA€DØ$€DÔä�+œuÔ%Ý&ä™8 KÓ0Ó1ˆð Ð¤*¨[¼$Ô"?Ð?Ð?Ø&€DÔà€Kr7   c                   óP   — e Zd Zd„ Zd„ Z	 	 	 	 	 	 	 	 dd„Zdddedefd„Zd	„ Z	d
„ Z
y)ÚBaseUserFunctionVariablec                 ó6   — | j                  «       j                  S r9   )Úget_codeÚco_filename©Úselfs    r5   Úget_filenamez%BaseUserFunctionVariable.get_filenamec   s   € Ø�}‰}‹×*Ñ*Ð*r7   c                 ó6   — | j                  «       j                  S r9   )r`   Úco_namerb   s    r5   Úget_namez!BaseUserFunctionVariable.get_namef   s   € Ø�}‰}‹×&Ñ&Ð&r7   r2   r&   Úreturnc                 óL   — |j                  | g | j                  «       ¢|¢|«      S r9   )Úinline_user_function_returnÚ	self_args©rc   r2   ÚargsÚkwargss       r5   Úcall_functionz&BaseUserFunctionVariable.call_functioni   s,   € ð ×-Ñ-¨dÐ4N°d·n±nÓ6FÐ4NÈÐ4NÐPVÓWÐWr7   rL   c                 óÆ   — d}	 t        | j                  «       |«      }t
        j                  j                  |«      S # t        $ r |dk(  rt        | t        «      rd}Y ŒAw xY w)NFÚ__name__T)ÚhasattrÚget_functionÚNotImplementedErrorr.   ÚNestedUserFunctionVariabler   r$   r0   ©rc   r2   rL   r>   s       r5   Úcall_hasattrz%BaseUserFunctionVariable.call_hasattrq   sc   € Øˆð	Ü˜T×.Ñ.Ó0°$Ó7ˆFô ×)Ñ)×0Ñ0°Ó8Ð8øô #ò 	Ø�zÒ!¤j°Ô7QÔ&RØ�ùð	ús   „= ½ A ÁA c                 ón   — t        t        j                  | j                  «       «      j                  «      S r9   )r:   ÚinspectÚ	signaturers   Ú
parametersrb   s    r5   Úinspect_parameter_namesz0BaseUserFunctionVariable.inspect_parameter_names{   s'   € Ü”G×%Ñ% d×&7Ñ&7Ó&9Ó:×EÑEÓFÐFr7   c                 ó   — i S r9   © )rc   r2   s     r5   Úclosure_varsz%BaseUserFunctionVariable.closure_vars~   ó   € Øˆ	r7   N©r2   r&   rm   úList[VariableTracker]rn   úDict[str, VariableTracker]rh   r"   )rq   Ú
__module__Ú__qualname__rd   rg   ro   Ústrr"   rw   r|   r   r~   r7   r5   r^   r^   b   sb   „ ò+ò'ðXà#ðXð &ðXð -ð	Xð
 
óXð9Ð6ð 9¸cð 9Àoó 9ò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„ Z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                 óf   — t        |j                  t        j                  «      «        | ||¬«      S ©N©r4   )r   Ú
make_guardr   ÚCLOSURE_MATCH©ÚclsÚvaluer4   s      r5   Úcreate_with_sourcez'UserFunctionVariable.create_with_source‹   s(   € ä�f×'Ñ'¬×(BÑ(BÓCÔDÙ�5 Ô(Ð(r7   rh   c                 ó,  •— t        ‰| �  di |¤Ž t        |dd«      rd| _        nd| _        t	        |t
        j                  t        j                  j                  f«      sJ dt        |«      › d|› �«       ‚t        j                  |d|«      }|| _        y )NÚ_dynamo_marked_constantFTzexpected FunctionType found ú Ú_torchdynamo_inliner~   )ÚsuperÚ__init__ÚgetattrrŠ   r.   rR   rO   ÚtorchÚjitÚScriptFunctionr!   ry   Úgetattr_staticr‰   )rc   r‰   rŠ   rn   Ú	__class__s       €r5   r™   zUserFunctionVariable.__init__�   s“   ø€ Ü‰ÑÑ"˜6Ò"Ü�2Ð0°%Ô8à#ˆDÕà$ˆDÔäØ”×#Ñ#¤U§Y¡Y×%=Ñ%=Ð>ô
ð 	=à)¬'°"«+¨°a¸°tÐ<ó	=ð 
ô ×#Ñ# BÐ(=¸rÓBˆØ&(ˆ�r7   c                 óX   •— t        | t        «      r| j                  S t        ‰| �  «       S r9   )r   rˆ   r‰   r˜   Úas_python_constant©rc   rŸ   s    €r5   r¡   z'UserFunctionVariable.as_python_constantŸ   s%   ø€ Ü�$Ô,Ô-Ø—7‘7ˆNä‰wÑ)Ó+Ð+r7   c                 ó   — g S r9   r~   rb   s    r5   rk   zUserFunctionVariable.self_args¥   r€   r7   c                 ó   — | j                   S r9   ©r‰   rb   s    r5   rs   z!UserFunctionVariable.get_function¨   ó   € Ø�w‰wˆr7   c                 ó.   — | j                   j                  S r9   )r‰   Ú__code__rb   s    r5   r`   zUserFunctionVariable.get_code«   s   € Ø�w‰w×ÑÐr7   c                 ó"   — t         j                  S r9   )rR   rO   rb   s    r5   Úpython_typez UserFunctionVariable.python_type®   s   € Ü×!Ñ!Ð!r7   c                 ó4   — t        | j                  dd «      d uS )NÚ__self__)rš   r‰   rb   s    r5   Úhas_selfzUserFunctionVariable.has_self±   s   € Ü�t—w‘w 
¨DÓ1¸Ð=Ð=r7   c                 ó.   — | j                   j                  S r9   )r‰   Ú__globals__rb   s    r5   Úget_globalsz UserFunctionVariable.get_globals´   s   € Ø�w‰w×"Ñ"Ð"r7   c                 ón  — | j                   rJ ‚|j                  j                  }t        j                  t
        |¬«      }| j                  }|j                  xs g }t        |«      D ��	cg c])  \  }}	| j                  €d nt        | j                  |«      ‘Œ+ }
}}	t        j                  |j                  |j                  |j                  t!        t#        ||
«      D ��cg c]  \  }} |||¬«      ‘Œ c}}«      |j$                  «      }|j&                  r||j&                  D �ci c])  }|| j                  €d nt        | j                  |d¬«      “Œ+ }}|j&                  j)                  «       D ��ci c]  \  }}| ||||   ¬«      “Œ c}}|_         t+        j,                  |«      j.                  |i |¤Ž}|j1                  «        t3        |j4                  j)                  «       «      }t7        ||«       t9        |||j                  «      }| j                  j$                  xs d}t;        |«      t;        | j                  j                  j<                  «      k(  sJ ‚t#        t?        j@                  «       | j                  j                  j<                  |«      D �]Z  \  }}}|dk(  rI| j                  rtC        | j                  d«      nd }tE        jF                  |jH                  |¬«      ||<   ŒV|jK                  ||«      }|�|||<   Œp| j                  rºdd	l&m'} |j                  jP                  }||v r||   }n�tS        tC        | j                  d
«      |«      }tC        |d«      }	   |||«      |jH                  «      }|jY                  «       |jZ                  vr|||<   �Œ|j]                  ||«      }|j_                  ||«       |||<   �Œ6ddl&m0} |jc                  ||jH                  «      ||<   �Œ] ||fS c c}	}w c c}}w c c}w c c}}w # tT        $ r tE        jV                  «       }Y Œ°w xY w)N)r2   )r3   r4   T)Úis_kwr~   rŸ   r�   r   ©ÚVariableBuilderÚ__closure__Úcell_contentsr,   )2rŠ   rC   Úroot_txÚ	functoolsÚpartialr6   r‰   Ú__defaults__Ú	enumerater4   r   rR   rO   r¨   r¯   rq   r<   Úziprµ   rS   r;   ry   rz   ÚbindÚapply_defaultsr=   Ú	argumentsrA   rM   ÚlenÚco_freevarsrT   Úcountr   r   ÚUserDefinedClassVariabler¶   Úmatch_nested_cellÚbuilderr´   rD   r   Ú
ValueErrorÚDeletedVariablerL   Úmutated_closure_cell_contentsÚtrack_cell_existingrG   r-   r0   )rc   rI   rm   rn   r2   Úwrapr‰   rW   ÚidxÚ_Údefaults_sourcesÚargr4   Ú	fake_funcr?   Úkwdefaults_sourcesr@   r)   r>   rK   rX   rL   ÚcellÚvarr´   rD   ÚoutÚclosure_cellÚclosure_cell_contentsÚcontents_varr-   s                                  r5   Ú	bind_argszUserFunctionVariable.bind_args·   s	  € Ø×#Ò#Ð#Ð#Ø�]‰]×"Ñ"ˆÜ× Ñ ¤°BÔ7ˆà!%§¡ˆØ—?‘?Ò( bˆô $ HÓ-÷
á��Qð —K‘KÐ'‰D¬^¸D¿K¹KÈÓ-MÑMð
Ðñ 
ô ×&Ñ&Ø�K‰KØ�N‰NØ�K‰KÜô (+¨8Ð5EÓ'F÷á#˜˜Vñ ˜S¨Ö0óóð �N‰Nó
ˆ	ð ×Òð
 ×*Ñ*ö	"ð ð Ø—;‘;Ð&ñ ä# D§K¡K°¸$Ô?ñ@ð"Ðð "ð ×-Ñ-×3Ñ3Ó5÷(á�A�qð ‘4˜AÐ&8¸Ñ&;Ô<Ñ<ó(ˆIÔ$ð
 2”×!Ñ! )Ó,×1Ñ1°4ÐB¸6ÑBˆØ×ÑÔÜ�e—o‘o×+Ñ+Ó-Ó.ˆä˜˜VÔ$Ü% f¨f°b·k±kÓBˆØ—'‘'×%Ñ%Ò+¨ˆÜ�7‹|œs 4§7¡7×#3Ñ#3×#?Ñ#?Ó@Ò@Ð@Ð@Ü"Ü�O‰OÓ˜tŸw™w×/Ñ/×;Ñ;¸Wó 
ó ?	T‰OˆC��tð �{Ò"ØAEÇÂœ D§K¡K°Ô=ÐRV�Ü(×AÑAØ×&Ñ&Ø!ô ��t’ð
 ×*Ñ*¨4°Ó6�Ø�?à#&�F˜4’LØ—[’[Ý8à#)§=¡=×#=Ñ#=�LØ˜|Ñ+Ø*¨4Ñ0™ä'4Ü& t§{¡{°MÓBÀCó(˜ô 1;Ø(¨/ó1Ð-ðGð,©?Ø &Ð(=ó,à"×0Ñ0ó,2˜Lð 2×6Ñ6Ó8Ø#%×#CÑ#CñDð ,8˜F 4™LÙ$ð +×>Ñ>¸|ÈTÓR˜Ø$×/Ñ/ØØ(ôð
 $'�F˜4“Lõ ;à#4×#;Ñ#;¸BÀ×@RÑ@RÓ#S�F˜4“Lð?	TðB �}Ð$Ð$ùóK
ùóùò"ùó(øôX  *ò Gä+4×+DÑ+DÓ+FšLðGús*   Á*.O=ÃPÄ$.P	Å1PÍ*PÐP4Ð3P4c                  ó   — y r9   r~   )rc   rI   Úchilds      r5   Úexport_freevarsz$UserFunctionVariable.export_freevars%  s   € Ør7   r2   r&   rL   c                 óT  — | j                   rt        | j                   |«      nd }	 t        j                  | j                  |«      }|r t        j                  j                  ||«      S ddl
m} |j                  ||«      S # t
        $ r d|i}t        j                  | |fi |¤ŽcY S w xY w)Nr4   r   r,   )r4   r   ry   rž   r‰   ÚAttributeErrorr   ÚGetAttrVariabler1   r0   rÅ   r-   )rc   r2   rL   r4   ÚsubobjÚoptionsr-   s          r5   Úvar_getattrz UserFunctionVariable.var_getattr(  sŸ   € Ø26·+²+”˜DŸK™K¨Ô.À4ˆð	DÜ×+Ñ+¨D¯G©G°TÓ:ˆFñ Ü×0Ñ0×7Ñ7¸ÀÓGÐGÝ.à ×'Ñ'¨¨FÓ3Ð3øô ò 	DØ Ð(ˆGÜ×,Ñ,¨T°4ÑC¸7ÑCÒCð	Dús   ¦ B  Â $B'Â&B'c                 ól   — t        | j                  |«      }t        j                  j	                  |«      S r9   )rr   r‰   r   r$   r0   rv   s       r5   rw   z!UserFunctionVariable.call_hasattr5  s)   € Ü˜Ÿ™ $Ó'ˆÜ×)Ñ)×0Ñ0°Ó8Ð8r7   c                 óŒ   •— | j                   r't        || j                  | j                  «       ||«      S t        ‰| �  |||«      S r9   )rŠ   Úinvoke_and_store_as_constantr‰   rg   r˜   ro   )rc   r2   rm   rn   rŸ   s       €r5   ro   z"UserFunctionVariable.call_function9  sF   ø€ ð ×ÒÜ/Ø�D—G‘G˜TŸ]™]›_¨d°Fóð ô ‰wÑ$ R¨¨vÓ6Ð6r7   )F©rh   Nr�   )rq   r„   r…   Ú__doc__r^   Ú_nonvar_fieldsÚclassmethodr“   r™   r¡   rk   rs   r`   rª   r­   r°   r×   rÚ   r†   rà   r"   rw   ro   Ú__classcell__©rŸ   s   @r5   rˆ   rˆ   ‚   sÌ   ø„ Ù7ð 	Øðð 
"×	0Ñ	0ð€Nð ñ)ó ð)ö)ô,òòò ò"ò>ò#òl%ò\ð4Ð5ð 4¸Só 4ð9Ð6ð 9¸cð 9Àoó 9ð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 methodrh   c                 ó6   •— t        ‰| �  dd|i|¤Ž || _        y )Nr‰   r~   )r˜   r™   Úobj)rc   r‰   rí   rn   rŸ   s       €r5   r™   zUserMethodVariable.__init__J  s   ø€ Ü‰ÑÑ)˜BÐ) &Ò)Øˆ�r7   c                 óh   — | j                   j                  › d| j                  › d| j                  › d�S )Nú(z, ú))rŸ   rq   r‰   rí   rb   s    r5   Ú__str__zUserMethodVariable.__str__N  s.   € Ø—.‘.×)Ñ)Ð*¨!¨D¯G©G¨9°B°t·x±x°jÀÐBÐBr7   c                 ó   — | j                   gS r9   )rí   rb   s    r5   rk   zUserMethodVariable.self_argsQ  s   € Ø—‘ˆzÐr7   c                 ó"   — t         j                  S r9   )rR   Ú
MethodTyperb   s    r5   rª   zUserMethodVariable.python_typeT  s   € Ü×ÑÐr7   c                 ó"  •— |j                   j                  «       r�t        | j                  t        j
                  «      ryt        | j                  dd«      }|�|j                  d«      r|dk7  s| j                  r¨| j                  j                  || j                  j                  ||| j                  ¬«      S t        �d| j                  t        j                  j                  u r>t	        j                  | j                  «      j!                  || j                  g|¢­|«      S | j                  rQt        | j                  j"                  | j                  j                  «      }t%        ||| j'                  «       ||«      S t(        ‰| �A  |||«      S )Nr„   Ú z	torch.nn.ztorch.nn.utils.parametrize)Úconstant)rC   Úis_root_tracerr.   rí   r   ÚNNModuleVariablerš   r‰   Ú
startswithrŠ   Úcall_methodrq   r%   ÚFSDPParamGroupÚuse_training_stateÚTorchCtxManagerClassVariablero   r’   rã   rg   r˜   )rc   r2   rm   rn   Úmodule_attrr‰   rŸ   s         €r5   ro   z UserMethodVariable.call_functionW  sJ  ø€ ð$ �9‰9×#Ñ#Ô%¬*Ø�H‰H”i×0Ñ0ô+
ô " $§'¡'¨<¸Ó<ˆKð Ð'Ø×*Ñ*¨;Ô7ØÐ#?Ò?Ø×#Ò#à—x‘x×+Ñ+Ø˜Ÿ™×(Ñ(¨$°À×AQÑAQð ,ó ð ô Ð)Ø—‘Ô,×;Ñ;×NÑNÑNä×9Ñ9¸$¿'¹'ÓB×PÑPØ�T—X‘XÐ% Ñ% vóð ð ×ÒÜ˜Ÿ™Ÿ™¨¯©×)9Ñ)9Ó:ˆBÜ/°°B¸¿¹»ÈÈvÓVÐVÜ‰wÑ$ R¨¨vÓ6Ð6r7   c                 ó&   •— t         ‰| �  «       dd  S )Nr   )r˜   r|   r¢   s    €r5   r|   z*UserMethodVariable.inspect_parameter_namesƒ  s   ø€ Ü‰wÑ.Ó0°°Ð4Ð4r7   rä   r�   )rq   r„   r…   rå   r™   r†   rñ   rk   rª   ro   r|   rè   ré   s   @r5   rë   rë   G  sY   ø„ Ù.õðC˜ó Còò ð*7à#ð*7ð &ð*7ð -ð	*7ð
 
õ*7÷X5ð 5r7   rë   c                   ó<   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚWrappedUserMethodVariablec                 ó´   •— |j                  dd «       |j                  dd «       t        ‰| �  |j                  |j                  fi |¤Ž || _        || _        y ©Nr‰   rí   )rH   r˜   r™   r‰   rí   ÚwrappedÚcontext©rc   r  r  rn   rŸ   s       €r5   r™   z"WrappedUserMethodVariable.__init__ˆ  sI   ø€ Ø�
‰
�4˜ÔØ�
‰
�5˜$ÔÜ‰Ñ˜Ÿ™ W§[¡[Ñ;°FÒ;ØˆŒØˆ�r7   c                 ó–   •— | j                   j                  |«       t        ‰| �  |||«      }| j                   j	                  |«       |S r9   ©r  Úenterr˜   ro   Úexit©rc   r2   rm   rn   r>   rŸ   s        €r5   ro   z'WrappedUserMethodVariable.call_function�  óA   ø€ ð 	�‰×Ñ˜2ÔÜ‘Ñ& r¨4°Ó8ˆØ�‰×Ñ˜"ÔØˆr7   rä   r�   ©rq   r„   r…   r™   ro   rè   ré   s   @r5   r  r  ‡  ó8   ø„ õð	à#ð	ð &ð	ð -ð		ð
 
÷	ñ 	r7   r  c                   ó<   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚWrappedUserFunctionVariablec                 óž   •— |j                  dd «       |j                  dd «       t        ‰| �  |j                  fi |¤Ž || _        || _        y r  )rH   r˜   r™   r‰   r  r  r  s       €r5   r™   z$WrappedUserFunctionVariable.__init__œ  sC   ø€ Ø�
‰
�4˜ÔØ�
‰
�5˜$ÔÜ‰Ñ˜Ÿ™Ñ. vÒ.ØˆŒØˆ�r7   c                 ó–   •— | j                   j                  |«       t        ‰| �  |||«      }| j                   j	                  |«       |S r9   r	  r  s        €r5   ro   z)WrappedUserFunctionVariable.call_function£  r  r7   rä   r�   r  ré   s   @r5   r  r  ›  r  r7   r  c                 óø   — d„ }|D �cg c]
  } ||«      ‘Œ }}|j                  «       D ��ci c]  \  }}| ||«      “Œ }}} ||i |¤Ž}	| j                  j                  |	|t        |«      ¬«      S c c}w c c}}w )Nc                 óv   — t        | t        j                  «      r| j                  «       S | j	                  «       S r9   )r.   r   ÚTensorVariableÚget_real_valuer¡   )Úxs    r5   Úconvertz-invoke_and_store_as_constant.<locals>.convert°  s0   € Ü�aœ×1Ñ1Ô2Ø×#Ñ#Ó%Ð%Ø×#Ñ#Ó%Ð%r7   r�   )r;   rC   Úregister_attr_or_moduler   )
r2   r‰   rL   rm   rn   r  r  r?   r@   Úress
             r5   rã   rã   ¯  s†   € ò&ð
 !%Ö%˜1‰G�A�JÐ%€DÐ%Ø(.¯©«×7¡  1ˆa‘˜“‰mÐ7€FÑ7Ù
ˆdÐ
�fÑ
€CØ�9‰9×,Ñ,ØØÜ˜dÓ#ð -ó ð ùò &ùÛ7s
   ˆA1¬A6c                   ó|   ‡ — e Zd Zd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d„ Zˆ xZS )ru   Úclosure_scoperV   c
                 ób  •— t        ‰| �  di |
¤Ž t        |j                  «       t        «      sJ ‚t        |j                  «       t
        j                  «      sJ ‚t        |t        «      sJ ‚|| _        || _	        || _
        || _        || _        || _        || _        |€d }|| _        |	| _        y ©Nr~   )r˜   r™   r.   r¡   r†   rR   ÚCodeTyper=   Úfn_namerJ   rV   rW   rY   rZ   rX   r  Úwrapped_reconstructible)rc   r!  rJ   rV   rW   rY   rZ   rX   r  r"  rn   rŸ   s              €r5   r™   z#NestedUserFunctionVariable.__init__Æ  s¬   ø€ ô 	‰ÑÑ"˜6Ò"Ü˜'×4Ñ4Ó6¼Ô<Ð<Ð<Ü˜$×1Ñ1Ó3´U·^±^ÔDÐDÐDÜ˜)¤TÔ*Ð*Ð*ØˆŒØˆŒ	Ø"ˆŒØ ˆŒØ$ˆŒØ&ˆÔØˆŒØˆ?Ø ˆMØ*ˆÔð $ð 	Õ$r7   c                 ó   — g S r9   r~   rb   s    r5   rk   z$NestedUserFunctionVariable.self_argsæ  r€   r7   c                 ó6   — | j                   j                  «       S r9   )rJ   r¡   rb   s    r5   r`   z#NestedUserFunctionVariable.get_codeé  s   € Ø�y‰y×+Ñ+Ó-Ð-r7   c                 óD  — | j                   rt        ‚t        j                  | j                  j                  «       | j                  | j                  j                  «       «      }| j                  r| j                  j                  «       |_	        | j                  r| j                  j                  «       |_        | j                  rZ| j                  j                  «       }t        |t        «      rddlm} t#         ||«      «      }t        |t"        «      sJ ‚||_        |S )Nr   rP   )rX   rt   rR   rO   rJ   r¡   rV   r!  rW   rº   rY   rS   rZ   r.   r<   rT   rQ   r=   rU   )rc   r[   rZ   rQ   s       r5   rs   z'NestedUserFunctionVariable.get_functionì  sØ   € Ø�<Š<Ü%Ð%Ü×!Ñ!Ø�I‰I×(Ñ(Ó*Ø�N‰NØ�L‰L×+Ñ+Ó-ó
ˆð
 �=Š=Ø $§¡× @Ñ @Ó BˆDÔØ�?Š?Ø"&§/¡/×"DÑ"DÓ"FˆDÔØ×ÒØ×*Ñ*×=Ñ=Ó?ˆKÜ˜+¤uÔ-Ý.ä"¡8¨KÓ#8Ó9�ô ˜k¬4Ô0Ð0Ð0Ø#.ˆDÔ Øˆr7   c                 ó   — | j                   d uS r9   )rX   rb   s    r5   Úhas_closurez&NestedUserFunctionVariable.has_closure  s   € Ø�|‰| 4Ð'Ð'r7   c                  ó   — y)NFr~   rb   s    r5   r­   z#NestedUserFunctionVariable.has_self  s   € Ør7   c                 ó   — | j                   S r9   )rV   rb   s    r5   r°   z&NestedUserFunctionVariable.get_globals
  s   € Ø�~‰~Ðr7   c                 óD  — ddl m} | j                  «       }t        j                  || j
                  | j                  j                  «       | j                  rt        | j                  j                  «      nd t        d„ t        t        | j                  «       j                  «      «      D «       «      «      }| j                  r| j                  j                  «       |_         t#        j$                  |«      j&                  |i |¤Ž}|j)                  «        t+        |j,                  j                  «       «      }t/        |j0                  j2                  |«       t5        |||«      }	t7        |j                  «      D ]Ÿ  \  }
}| j8                  j                  |
   }||vsJ ‚t;        ||«      rS|}|r+||j<                  vr|j>                  }|r||j<                  vrŒ|€tA        d|› d�«      ‚|j<                  |   ||<   Œ„| j8                  j                  |
   |	|<   Œ¡ ||	fS )Nr   )ÚInlinedClosureVariablec              3   ó2   K  — | ]  }t        d «      –— Œ y ­wr9   )r   )Ú.0rÌ   s     r5   ú	<genexpr>z7NestedUserFunctionVariable.bind_args.<locals>.<genexpr>  s   è ø€ ÒS a”)˜D—/ÑSùs   ‚zCouldn't find z7 in the symbolic_locals of the inline interpreter stack)!Úmiscr+  r`   rR   rO   rV   r!  r¡   rW   r<   r;   ÚrangerÀ   rÁ   rY   Úkeys_as_python_constantrS   ry   rz   r½   r¾   r=   r¿   rA   rC   r·   rM   r»   rX   r.   Úsymbolic_localsrI   ÚRuntimeError)rc   rI   rm   rn   r+  rJ   r[   r)   r>   rK   rË   rL   rÑ   Úcands                 r5   r×   z$NestedUserFunctionVariable.bind_args  sÕ  € Ý0à�}‰}‹ˆÜ×!Ñ!ØØ�N‰NØ�L‰L×+Ñ+Ó-Ø*.¯-ª-ŒE�$—-‘-×%Ñ%Ô&¸TÜÑS¬5´°T·]±]³_×5PÑ5PÓ1QÓ+RÔSÓSó
ˆð �?Š?Ø"&§/¡/×"IÑ"IÓ"KˆDÔØ,”×!Ñ! $Ó'×,Ñ,¨dÐ=°fÑ=ˆØ×ÑÔÜ�e—o‘o×+Ñ+Ó-Ó.ˆÜ˜Ÿ™×.Ñ.°Ô7Ü% f¨f°dÓ;ˆä" 4×#3Ñ#3Ó4ò 	>‰IˆC�Ø—<‘<×%Ñ% cÑ*ˆDØ˜vÑ%Ð%Ð%Ü˜$Ð 6Ô7ð �Ù˜t¨4×+?Ñ+?Ñ?ØŸ;™;�Dñ ˜t¨4×+?Ñ+?Ò?à�<Ü&Ø(¨¨Ð.eÐfóð ð  $×3Ñ3°DÑ9��t’à&*§l¡l×&8Ñ&8¸Ñ&=�˜dÒ#ð'	>ð* �}Ð$Ð$r7   c                 óœ   — | j                  «       }|j                  D ]-  }||j                  v sŒ|j                  |   |j                  |<   Œ/ y r9   )r`   rÁ   r2  )rc   rI   rÙ   rJ   rÒ   s        r5   rÚ   z*NestedUserFunctionVariable.export_freevars7  sM   € Ø�}‰}‹ˆØ×#Ñ#ò 	IˆCØ�e×+Ñ+Ò+Ø.3×.CÑ.CÀCÑ.H�×&Ñ& sÒ+ñ	Ir7   c                 óì  ‡— ‰j                  ˆfd„«        ‰| j                  «       ‰j                  ‰j                  | j                  «      g«        ‰t        j                  | j                  j                  j                  «      «       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  r ‰| j                  «       n!‰j                  ‰j                  d «      g«       | j                  r=	 | j                  j                  «       }‰j                  ‰j                  |«      g«       n!‰j                  ‰j                  d «      g«       ‰j                  t!        dd«      «       | j"                  rw‰j                  ˆfd„«        ‰| j"                  «       ‰j                  t!        dd«      «       ‰j                  t%        d«      «       ‰j                  t!        dd«      «       y y # t        $ r  ‰| j                  «       Y Œ¼w xY w)Nc                  ó0   •— ‰ j                  t        d«      S )Nr\   )Úload_import_fromrq   ©Úcodegens   €r5   ú<lambda>z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>?  s   ø€ �G×,Ñ,¬XÐ7JÓK€ r7   é   Fc                  ó(   •— ‰ j                  dd«      S )Nr¸   Úwraps©r8  r9  s   €r5   r;  z8NestedUserFunctionVariable.reconstruct.<locals>.<lambda>a  s   ø€ ˜×0Ñ0°¸gÓF€ r7   r   r   T)Úadd_push_nullrJ   Úextend_outputÚ_create_load_constrV   r$   r0   r’   rf   rW   Úcreate_load_constrX   rY   rZ   r¡   rt   r   r"  r   )rc   r:  rZ   s    ` r5   Úreconstructz&NestedUserFunctionVariable.reconstruct=  sï  ø€ Ø×ÑÛKô	
ñ 	�—	‘	ÔØ×Ñ˜w×9Ñ9¸$¿.¹.ÓIÐJÔKÙÔ ×'Ñ'¨¯	©	¯©×(?Ñ(?Ó@ÔAà�=Š=Ù�D—M‘MÕ"à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�<Š<Ù�D—L‘LÕ!à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà�?Š?Ù�D—O‘OÕ$à×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà×Òð*Ø"×.Ñ.×AÑAÓC�Ø×%Ñ% w×'AÑ'AÀ+Ó'NÐ&OÕPð ×!Ñ! 7×#<Ñ#<¸TÓ#BÐ"CÔDà×ÑÔ2°1°eÓ<Ô=à×'Ò'Ø×!Ñ!ÛFôñ �D×0Ñ0Ô1Ø×!Ñ!Ô"6°q¸%Ó"@ÔAØ×!Ñ!¤,¨q£/Ô2Ø×!Ñ!Ô"6°q¸$Ó"?Õ@ð (øô 'ò *Ù˜×(Ñ(Ö)ð*ús   Å;I ÉI3É2I3r9   rä   )rq   r„   r…   r^   ræ   r™   rk   r`   rs   r'  r­   r°   r×   rÚ   rD  rè   ré   s   @r5   ru   ru   ¿  se   ø„ àØðð 
"×	0Ñ	0ð€Nð  !%ð$ð 
õ$ò@ò.òò0(òòò(%òTIö)Ar7   ru   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’   ÚreasonNc                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r  )r˜   r™   r’   rG  )rc   r’   rG  rn   rŸ   s       €r5   r™   zSkipFunctionVariable.__init__p  s!   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ
Øˆ�r7   c                 ó   — | j                   S r9   ©r’   rb   s    r5   r¡   z'SkipFunctionVariable.as_python_constantu  s   € Ø�z‰zÐr7   c                 ó|   — t        |«      s(t        |j                  t        j                  «      «        | ||¬«      S rŒ   )r   r   rŽ   r   ÚFUNCTION_MATCHr�   s      r5   r“   z'SkipFunctionVariable.create_with_sourcex  s2   € ä.¨uÔ5ô ˜&×+Ñ+¬L×,GÑ,GÓHÔIÙ�5 Ô(Ð(r7   c                  óB   — t         j                  t        j                  iS r9   )ÚcollectionsÚ
namedtupler   rÃ   r~   r7   r5   Ú fold_through_function_to_wrapperz5SkipFunctionVariable.fold_through_function_to_wrapper�  s   € ô ×"Ñ"¤I×$FÑ$Fð
ð 	
r7   c                 ó”  ‡— t        j                  | j                  dd«      rt        d| j                  › �«       y | j                  | j	                  «       j                  «       v r£t        ‰|«      r— | j                  ‰D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž} | j	                  «       j                  | j                  «      |t        «       ¬«      S | j                  t        j                  u ra|s_t        ‰«      dk(  rQ‰d   j                  €(‰d   j                  |j                   j"                  «      rˆfd„}t%        j&                  |«      S 	 t        j(                  | j                  «      }	d| j                  j*                  › d	|	› d
�}
|
| j:                  rd| j:                  › d
�ndz  }
t        |
«       y c c}w c c}}w # t,        $ �rB ddh}| j                  j.                  |v r2d| j                  j.                  › d| j                  j*                  › d�}
nð| j                  j.                  �€| j                  j.                  j1                  d«      r[d| j                  j.                  › d| j                  j*                  › d�}
t2        j4                  j6                  j9                  |
«       nZd| j                  j.                  › d| j                  j*                  › d�}
t2        j4                  j6                  j9                  |
«       Y �Œƒw xY w)NÚ_torchdynamo_disableFz.call torch._dynamo.disable() wrapped function )Úmutable_localr   r   c                 óÄ   •— t        | t        j                  «      r6‰d   j                  r‰d   j                  }n‰d   }| j	                  |¬«      S t        d| › d�«       y )Nr   )r"  zfunctools.wraps(rð   )r.   r   ru   r4   Úcloner   )r‰   Úreconstructiblerm   s     €r5   r>  z1SkipFunctionVariable.call_function.<locals>.wraps¦  sW   ø€ Ü˜b¤)×"FÑ"FÔGØ˜A‘w—~’~Ø*.¨q©'¯.©.™à*.¨q©'˜ØŸ8™8¸O˜8ÓLÐLÜÐ 0°°°AÐ6Õ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.z', rö   )ry   rž   r’   r   rP  Úkeysr   r¡   r;   Úgetr    r¸   r>  rÀ   r4   Úcan_reconstructrC   r·   r   ÚLambdaVariableÚgetfiler…   Ú	TypeErrorr„   rú   r›   Ú_dynamoÚutilsÚ	warn_oncerG  )rc   r2   rm   rn   r  r?   r@   r’   r>  ÚpathÚmsgÚknown_python_builtin_moduless     `         r5   ro   z"SkipFunctionVariable.call_functionˆ  så  ø€ ô ×!Ñ! $§*¡*Ð.DÀeÔLÜÐJÈ4Ï:É:È,ÐWÕXð �J‰J˜$×?Ñ?ÓA×FÑFÓHÑHÜ# D¨&Ô1à�D—J‘JØ26Ö7¨Q�!×&Ñ&Õ(Ò7ðà9?¿¹»×H±°°A�1�a×*Ñ*Ó,Ñ,ÓHñˆEð K�4×8Ñ8Ó:×>Ñ>¸t¿z¹zÓJØ¤\£^ôð ð �J‰Jœ)Ÿ/™/Ñ)ÙÜ�D“	˜Q’à�Q‘—‘Ð*¨d°1©g×.EÑ.EÀbÇiÁi×FWÑFWÔ.Xô8ô ×+Ñ+¨EÓ2Ð2ð$7Ü—‘ t§z¡zÓ2�Ø'¨¯
©
×(?Ñ(?Ð'@À	È$ÈÈqÐQ�ðF ¨4¯;ª;�S˜Ÿ™˜ QÑ'¸BÑ>ˆCÜ˜#ÕùòA 8ùÛHøô8 ó !7Ø06¸Ð/DÐ,Ø—:‘:×(Ñ(Ð,HÑHàHÈÏÉ×I^ÑI^ÐH_Ð_`Ðae×akÑak×axÑaxÐ`yð zGð Hñ ð —J‘J×)Ñ)Ð5ØŸ
™
×-Ñ-×8Ñ8¸ÔBð DÀDÇJÁJ×DYÑDYÐCZÐZ[Ð\`×\fÑ\f×\sÑ\sÐ[tð u^ð _ð ô —M‘M×'Ñ'×1Ñ1°#Õ6ð BÀ$Ç*Á*×BWÑBWÐAXÐXYÐZ^×ZdÑZd×ZqÑZqÐYrð 	s9ð 	:ð ô —M‘M×'Ñ'×1Ñ1°#Ô6úðC!7ús   ÂG0Â/G5Æ<G; Ç;EMÍMr9   rä   r�   )rq   r„   r…   r"   ræ   r™   r¡   rç   r“   Ústaticmethodr¸   Ú	lru_cacherP  ro   rè   ré   s   @r5   rF  rF  i  s—   ø„ àØðð 
×	'Ñ	'ð€Nöò
ð ñ)ó ð)ð Ø€Y×Ñ˜Óñ
ó ó ð
ð
Oà#ðOð &ðOð -ð	Oð
 
÷O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".
    c                 ó@   •— t        ‰| �  di |¤Ž || _        || _        y r  )r˜   r™   Úwrapper_objÚattr_to_trace)rc   rm  rn  rn   rŸ   s       €r5   r™   z$WrapperUserFunctionVariable.__init__â  s#   ø€ Ü‰ÑÑ"˜6Ò"Ø&ˆÔØ*ˆÕr7   c                 ó  •— || j                   k(  rmt        | j                  | j                   «      }| j                  r)ddlm}   ||t        | j                  |«      «      |«      S ddlm} |j                  ||«      S t        ‰| �)  ||«      S )Nr   r³   r,   )rn  rš   rm  r4   rÅ   r´   r   r-   r0   r˜   rà   )rc   r2   rL   r3   r´   r-   rŸ   s         €r5   rà   z'WrapperUserFunctionVariable.var_getattrç  sz   ø€ Ø�4×%Ñ%Ò%Ü˜$×*Ñ*¨D×,>Ñ,>Ó?ˆCØ�{Š{Ý4àI‘ r¬:°d·k±kÀ4Ó+HÓIÈ#ÓNÐNå6à(×/Ñ/°°CÓ8Ð8ä‰wÑ" 2 tÓ,Ð,r7   c                 ó¬   — t        j                  t        j                  «      j	                  || t        j
                  | j                  «      g|¢|«      S r9   )r   rˆ   r   Úgetattr_and_tracero   r$   rn  rl   s       r5   ro   z)WrapperUserFunctionVariable.call_functionõ  sL   € ô ×-Ñ-Ü×'Ñ'ó
ç
‰-Ø�”y×1Ñ1°$×2DÑ2DÓEÐMÈÐMÈvó
ð	
r7   rä   ©r2   r&   r�   )rq   r„   r…   rå   r™   rà   ro   rè   ré   s   @r5   rk  rk  Ú  s=   ø„ ñõ+õ
-ð

à#ð

ð &ð

ð -ð	

ð
 
÷

r7   rk  c                  óR   — t         j                  j                  «       rddlm}  | S i S )Nr   ©Útraceable_collective_remaps)r›   ÚdistributedÚis_availableÚ)torch.distributed._functional_collectivesru  rt  s    r5   Ú_traceable_collective_remapsry    s&   € ä×Ñ×%Ñ%Ô'õ	
ð +Ð*Ø€Ir7   c                 óÖ   — t         j                  j                  «       sJ d«       ‚|t        «       j	                  «       v sJ ‚|j
                  }| j                  d«      }t        ||«      S )NzIllegal invocation.z)torch.distributed._functional_collectives)r›   rv  rw  ry  Úvaluesrq   Úimport_sourcer   )r2   r‰   Ú
inner_nameÚpath_sources       r5   Ú_traceable_collectives_sourcer    sb   € Ü×Ñ×)Ñ)Ô+ÐBÐ-BÓBÐ+ØÔ-Ó/×6Ñ6Ó8Ñ8Ð8Ð8à—‘€JØ×"Ñ"Ð#NÓO€KÜ�k :Ó.Ð.r7   c                   óp   ‡ — 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.
    c                óX   •— t        ‰| �  |fi |¤Ž t        |t        «      sJ ‚|| _        y r9   )r˜   r™   r.   rˆ   Úreplacement_var)rc   r‰   rƒ  rn   rŸ   s       €r5   r™   z*CollectiveFunctionRewriteVariable.__init__!  s.   ø€ Ü‰Ñ˜Ñ&˜vÒ&Ü˜/Ô+?Ô@Ð@Ð@Ø.ˆÕr7   c                 ój   — t         j                  | |«      \  }}t        |ft        |fd|i|¤Ž|dœ|¤ŽS )Nr4   )rƒ  r4   )r�  Úrewriterˆ   )r2   Úold_fnr4   rß   Únew_fnÚ
new_sources         r5   r0   z(CollectiveFunctionRewriteVariable.create&  sM   € ä>×FÑFÀrÈ6ÓRÑˆ�
Ü0Øð
ä0°ÑVÀ
ÐVÈgÑVØñ
ð ñ	
ð 	
r7   c                 óH   — t        j                  | «      xr | t        «       v S r9   )ry   Ú
isfunctionry  )Úvariables    r5   Úcan_rewritez-CollectiveFunctionRewriteVariable.can_rewrite0  s%   € ô ×Ñ˜xÓ(ÒW¨XÔ9UÓ9WÐ-Wð	
r7   c                 ó8   — t        «       |   }|t        | |«      fS r9   )ry  r  )r2   r‰   r‡  s      r5   r…  z)CollectiveFunctionRewriteVariable.rewrite6  s"   € ä-Ó/°Ñ3ˆØÔ4°R¸Ó@Ð@Ð@r7   c                 óz  — dd l m} ddlm} t	        j
                  | j                  «      }t         |j                  |i |¤Žj                  «      }d}d|v r+|d   j                  «       rt        d| j                  › �«       | j                  |j                  |j                  |j                  fv ro|j                  d«      }|�|j                   n|j"                  d   j$                  }||vrt'        d|› �«      ‚t(        j*                  j-                  ||   «      |d<   | j.                  j1                  |||«      S )Nr   )ÚREDUCE_OP_TO_STRr~   Úasync_opzBCollectiveFunctionRewriteVariable can't support async_op=True for ÚopzUnsupported all_reduce op: )Útorch.distributedrv  rx  r�  ry   rz   r‰   r=   r½   r¿   r¡   r   Ú
all_reduceÚreduce_scatter_tensorÚ_reduce_scatter_baser]  r’   r{   ÚdefaultrÆ   r   r$   r0   rƒ  ro   )	rc   r2   rm   rn   Údistr�  rz   Úreduce_op_varÚ	reduce_ops	            r5   ro   z/CollectiveFunctionRewriteVariable.call_function;  s<  € õ 	)ÝNô ×%Ñ% d§g¡gÓ.ˆ	Ü�n�i—n‘n dÐ5¨fÑ5×?Ñ?Ó@ˆØˆà˜Ñ F¨:Ñ$6×$IÑ$IÔ$KÜØTÐUY×U\ÑU\ÐT]Ð^ôð �7‰7Ø�O‰OØ×&Ñ&Ø×%Ñ%ð
ñ 
ð
 #ŸJ™J tÓ,ˆMð !Ð,ð ×#Ò#à×)Ñ)¨$Ñ/×7Ñ7ð ð
 Ð 0Ñ0Ü Ð#>¸y¸kÐ!JÓKÐKÜ$×5Ñ5×<Ñ<Ø  Ñ+óˆF�4‰Lð ×#Ñ#×1Ñ1°"°d¸FÓCÐCr7   rä   rr  r�   )rq   r„   r…   rå   r™   rh  r0   rŒ  r…  ro   rè   ré   s   @r5   r�  r�    s{   ø„ ñõ/ð
 ò
ó ð
ð ñ
ó ð
ð
 òAó ðAð'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 )ÚFunctoolsPartialVariabler[   rh   Nc                 ó–   •— t        ‰| �  di |¤Ž || _        t        |t        «      sJ ‚|| _        t        |t        «      sJ ‚|| _        y r  )r˜   r™   r[   r.   r:   rm   r=   Úkeywords)rc   r[   rm   r�  rn   rŸ   s        €r5   r™   z!FunctoolsPartialVariable.__init__f  sH   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒ	Ü˜$¤Ô%Ð%Ð%ØˆŒ	Ü˜(¤DÔ)Ð)Ð)Ø ˆ�r7   c                 ó<  ‡— ‰j                  ˆfd„«        ‰| j                  «       | j                  r‰j                  | j                  «       | j                  s2‰j                  t        t        | j                  «      dz   d«      «       y ‰j                  | j                  j                  «       «       t        | j                  j                  «       «      }‰j                  ‰j                  t        |«      t        | j                  «      z   dz   |d«      «       y )Nc                  ó(   •— ‰ j                  dd«      S )Nr¸   r¹   r?  r9  s   €r5   r;  z6FunctoolsPartialVariable.reconstruct.<locals>.<lambda>o  s   ø€  g×&>Ñ&>¸{ÈIÓ&V€ r7   r   F)r@  r[   rm   Úforeachr�  rA  r   rÀ   r{  r<   r\  Úcreate_call_function_kw)rc   r:  r\  s    ` r5   rD  z$FunctoolsPartialVariable.reconstructn  sÉ   ø€ Ø×ÑÓVÔWÙ�—	‘	ÔØ�9Š9Ø�O‰O˜DŸI™IÔ&Ø�}Š}Ø×!Ñ!Ô"6´s¸4¿9¹9³~ÈÑ7IÈ5Ó"QÔRØà�‰˜Ÿ™×,Ñ,Ó.Ô/Ü�T—]‘]×'Ñ'Ó)Ó*ˆØ×ÑØ×+Ñ+¬C°«I¼¸D¿I¹I»Ñ,FÈÑ,JÈDÐRWÓXõ	
r7   c                 ó"   — | j                  «       S r9   ©r¡   rb   s    r5   rs   z%FunctoolsPartialVariable.get_function}  ó   € Ø×&Ñ&Ó(Ð(r7   r2   r&   c                 óz   — | j                   |z   }i | j                  ¥|¥}| j                  j                  |||«      S r9   )rm   r�  r[   ro   )rc   r2   rm   rn   Úmerged_argsÚmerged_kwargss         r5   ro   z&FunctoolsPartialVariable.call_function€  s>   € ð —i‘i $Ñ&ˆØ3˜4Ÿ=™=Ð3¨FÐ3ˆØ�y‰y×&Ñ& r¨;¸ÓFÐFr7   rL   c                 ó‚   — t         j                  j                  t        t	        j
                  t        «      |«      «      S r9   )r   r$   r0   rr   r¸   r¹   r   )rc   r2   rL   s      r5   rw   z%FunctoolsPartialVariable.call_hasattrŠ  s0   € ä×)Ñ)×0Ñ0Ü”I×%Ñ%¤hÓ/°Ó6ó
ð 	
r7   c                 ó:  — t        j                  | j                  j                  «       g| j                  D �cg c]  }|j                  «       ‘Œ c}¢­i | j
                  j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤ŽS c c}w c c}}w r9   )r¸   r¹   r[   r¡   rm   r�  r;   )rc   rÎ   r?   r@   s       r5   r¡   z+FunctoolsPartialVariable.as_python_constant�  s   € Ü× Ñ Ø�I‰I×(Ñ(Ó*ð
à26·)±)Ö<¨3ˆc×$Ñ$Õ&Ò<ò
ð 6:·]±]×5HÑ5HÓ5J×K©T¨Q°ˆq�!×&Ñ&Ó(Ñ(ÓKñ
ð 	
ùâ<ùÛKó   ¸B
Á1Bc                 ó:  — t        j                  | j                  j                  «       g| j                  D �cg c]  }|j                  «       ‘Œ c}¢­i | j
                  j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤ŽS c c}w c c}}w )zcSimilar to as_python_constant(), but add ID_MATCH guards to try to force things to become constants)r¸   r¹   r[   Úguard_as_python_constantrm   r�  r;   )rc   r@   r?   s      r5   r¬  z1FunctoolsPartialVariable.guard_as_python_constant—  s€   € ä× Ñ Ø�I‰I×.Ñ.Ó0ð
à48·I±IÖ>¨qˆa×(Ñ(Õ*Ò>ò
ð <@¿=¹=×;NÑ;NÓ;P×Q±4°1°aˆq�!×,Ñ,Ó.Ñ.ÓQñ
ð 	
ùâ>ùÛQrª  r�   )rq   r„   r…   r"   r™   rD  rs   ro   r†   rw   r¡   r¬  rè   ré   s   @r5   r›  r›  e  su   ø„ ð!˜_ð !È4õ !ò
ò)ð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‰   Ú
wrapped_fnÚtraceable_fnNrh   .c                 ó   — i S r9   r~   )r‘   s    r5   Ú_get_polyfill_handlersz1PolyfilledFunctionVariable._get_polyfill_handlers¨  s	   € ð ˆ	r7   c                 óf   — t        |j                  t        j                  «      «        | ||¬«      S rŒ   )r   rŽ   r   rL  r�   s      r5   r“   z-PolyfilledFunctionVariable.create_with_source­  s(   € ä�f×'Ñ'¬×(CÑ(CÓDÔEá�5 Ô(Ð(r7   c                 ó*  •— t        ‰| �  di |¤Ž || _        | j                  «       j	                  ||«      }t        |«      sJ d|› d|› �«       ‚dD ]"  }t        ||d «      }|sŒt        |«      sJ ‚|} n t        d|› d�«      ‚|| _        || _	        y )NzPolyfill handler z is not callable for )Ú__torch_dynamo_polyfill__Ú__python_implementation__z# does not have a traceable functionr~   )
r˜   r™   r‰   r²  r]  Úcallablerš   r3  r¯  r°  )rc   r‰   rn   ÚhandlerÚcandidate_attrÚ	candidater°  rŸ   s          €r5   r™   z#PolyfilledFunctionVariable.__init__³  sÀ   ø€ Ü‰ÑÑ"˜6Ò"ØˆŒà×-Ñ-Ó/×3Ñ3°B¸Ó;ˆÜ˜Ô ÐXÐ$5°g°YÐ>SÐTVÐSWÐ"XÓXÐ ð
ò 	ˆNô   ¨¸Ó>ˆIÚÜ 	Ô*Ð*Ð*Ø(�Ùð	ô Ø# G 9Ð,OÐPóð ð &ˆŒØ ,ˆÕr7   c                 ó   — | j                   S r9   )r°  rb   s    r5   Úpolyfill_fnz&PolyfilledFunctionVariable.polyfill_fnÊ  s   € à× Ñ Ð r7   c                 ó0   — t        | j                  dd«      S )NÚ*__torch_dynamo_can_constant_fold_through__F)rš   r¯  rb   s    r5   Úcan_constant_fold_throughz4PolyfilledFunctionVariable.can_constant_fold_throughÎ  s   € ÜØ�O‰OÐIÈ5ó
ð 	
r7   c                 ó"   — | j                  «       S r9   r£  rb   s    r5   rs   z'PolyfilledFunctionVariable.get_functionÓ  r¤  r7   c                 óš  — ddl m} | j                  «       r|t        ||«      rp | j                  |D �cg c]  }|j                  «       ‘Œ c}i |j                  «       D ��ci c]  \  }}||j                  «       “Œ c}}¤Ž}|j                  ||«      S |j                  || j                  «      }	|	j                  |||«      S c c}w c c}}w r+   )
r/   r-   r¿  r   r‰   r¡   r;   r0   r°  ro   )
rc   r2   rm   rn   r-   r  r?   r@   r>   Útraceable_function_variables
             r5   ro   z(PolyfilledFunctionVariable.call_functionÖ  sÃ   € õ 	Fà×)Ñ)Ô+Ô0MØ�&ô1
ð �—‘Ø6:Ö;°�a×*Ñ*Õ,Ò;ðà=C¿\¹\»^×L±T°Q¸�q˜!×.Ñ.Ó0Ñ0ÓLñð ð %×+Ñ+¨B°Ó7Ð7à&7×&>Ñ&>¸rÀ4×CTÑCTÓ&UÐ#Ø*×8Ñ8¸¸TÀ6ÓJÐJùò <ùÛLs   ³CÁ Cc                 ób  — |dk(  r| j                  |||«      S t        | j                  |d «      }|€J d|› d| j                  › �«       ‚t        |«      sJ d|› d| j                  › �«       ‚i }| j                  rt        | j                  |«      |d<   t        |fi |¤Ž}|j                  |||«      S )NÚ__call__zMember z not found in z is not callable in r4   )ro   rš   r‰   r   r4   r   r®  )rc   r2   rL   rm   rn   Úmethodrß   Úpolyfilled_method_variables           r5   rû   z&PolyfilledFunctionVariable.call_methodì  sÀ   € ð �:ÒØ×%Ñ% b¨$°Ó7Ð7ä˜Ÿ™ $¨Ó-ˆØÐ!ÐJ W¨T¨F°.ÀÇÁÀ	Ð#JÓJÐ!Ü˜6Ô"ÐQ g¨d¨VÐ3GÈÏÉÀyÐ$QÓQÐ"ØˆØ�;Š;Ü *¨4¯;©;¸Ó =ˆG�HÑÜ%?ÀÑ%RÈ'Ñ%RÐ"Ø)×7Ñ7¸¸DÀ&ÓIÐIr7   c                 ó   — | j                   S r9   r¥   rb   s    r5   r¡   z-PolyfilledFunctionVariable.as_python_constantÿ  r¦   r7   r�   ©rm   r‚   rn   rƒ   rh   r"   )rq   r„   r…   r"   ræ   rç   r¸   ri  r   r   r   rR   rO   r²  r“   r(   r™   Úpropertyr¼  r¿  rs   ro   rû   r¡   rè   ré   s   @r5   r®  r®     s  ø„ àØØðð 
×	'Ñ	'ð	€Nð Ø€Y×Ñ˜Óð t¨H°S¸#°XÑ,>À×@RÑ@RÐ,RÑ'Sò ó ó ðð ñ)ó ð)ð
-˜2ð -¨Dõ -ð. ð!˜Rò !ó ð!ò
ò
)ðKà#ðKð &ðKð -ð	Kð
 
óKð,Jð &ð	Jð
 -ðJð 
óJö&r7   r®  )ÚTritonHOPifierc                   ó0   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚDynamoTritonHOPifierc                 ó   — t        |«      ‚r9   )r   )rc   rf  s     r5   Úraise_unsupportedz&DynamoTritonHOPifier.raise_unsupported  s   € Ü˜#ÓÐr7   c                 ó.   — t        |t        t        f«      S r9   )r.   ru   rˆ   )rc   Úmaybe_callables     r5   Úis_callablez DynamoTritonHOPifier.is_callable
  s   € ÜØÔ7Ô9MÐNó
ð 	
r7   c                 ó   — |j                   S r9   rJ  )rc   r3   s     r5   Ú	get_valuezDynamoTritonHOPifier.get_value  s   € Ø�y‰yÐr7   c                 óv   — ddl m} t        ||«      r|j                  «       S t	        dt        |«      › �«       y )Nr   )ÚBaseListVariablezgrid for the triton kernel is )ÚlistsrÕ  r.   Úas_proxyr   Útype)rc   ÚgridrÕ  s      r5   Ú
check_gridzDynamoTritonHOPifier.check_grid  s0   € Ý+ä�dÐ,Ô-Ø—=‘=“?Ð"äÐ:¼4À»:¸,ÐGÕHr7   c                 óº   — |j                  «       D ��ci c]%  \  }}t        j                  j                  |«      |“Œ' }}}|j	                  ||gi «      }|S c c}}w r9   )r;   r   r$   r0   ro   )rc   rÙ  Úmetar2   r?   r@   s         r5   Ú	call_gridzDynamoTritonHOPifier.call_grid  sV   € ØDHÇJÁJÃL×Q¹D¸A¸q”	×*Ñ*×1Ñ1°!Ó4°aÑ7ÐQˆÑQØ×!Ñ! " t f¨bÓ1ˆØˆùó Rs   ”*Ac           
      ó‚  — ddl m} ddlm} |j	                  «       D ��ci c]%  \  }}t
        j                  j                  |«      |“Œ' }	}}ddlm}
m	} |j	                  «       D ��ci c]"  \  }}t        ||«      r||j                  «       “Œ$ }}}|	j	                  «       D ��ci c]  \  }}t        ||«      s||“Œ }}}|
j                  |«      } ||t        «      }|j                  j                  d|d|j                   |||j#                  «       dœ«       t        j                  d «      S c c}}w c c}}w c c}}w )	Nr   r#   )ÚConstDictVariabler   )Úkernel_side_tableÚtriton_kernel_wrapper_mutationro   r~   )Ú
kernel_idxÚconstant_args_idxrÙ  rn   )r÷   r$   Údictsrß  r;   r   r0   Ú*torch._higher_order_ops.triton_kernel_wraprà  rá  r.   r¡   Úadd_constant_argsr=   rC   Úcreate_proxyrâ  r×  )rc   r‹  ÚgridsÚcombined_args_rawr2   r$   rß  r?   r@   Úcombined_argsrà  rá  Úconstant_argsÚnon_constant_argsrã  rÜ  s                   r5   Úcall_HOPzDynamoTritonHOPifier.call_HOP  sP  € Ý.Ý,ð *×/Ñ/Ó1÷
á��1ô ×&Ñ&×-Ñ-¨aÓ0°!Ñ3ð
ˆñ 
÷
	
ð *×/Ñ/Ó1÷
á��1Ü˜!Ð-Ô.ð ˆq×#Ñ#Ó%Ñ%ð
ˆñ 
ð &×+Ñ+Ó-÷
á��1Ü˜aÐ!1Ô2ð ˆq‰Dð
Ðñ 
ð .×?Ñ?ÀÓNÐÙ Ð!2´DÓ9ˆØ
�	‰	×ÑØØ*Øà&×1Ñ1Ø%6ØØŸ-™-›/ñ	ô	
	
ô ×)Ñ)Øó
ð 	
ùóM
ùó
ùó

s    *D/Á('D5Â%D;N)	rq   r„   r…   rÎ  rÑ  rÓ  rÚ  rÝ  rí  r~   r7   r5   rÌ  rÌ    s!   „ òò
ò
òIòó
,
r7   rÌ  c                   óP   ‡ — e Zd Zdˆ fd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 dˆ fd„Zˆ xZS )ÚTritonKernelVariablec                 óT   •— t        ‰| �  di |¤Ž t        j                  | |||«       y r  )r˜   r™   Ú dynamo_triton_hopifier_singletonÚinit_variable)rc   Úkernelrâ  rÙ  rn   rŸ   s        €r5   r™   zTritonKernelVariable.__init__R  s(   ø€ Ü‰ÑÑ"˜6Ò"Ü(×6Ñ6°t¸VÀZÐQUÕVr7   c                 ó2   — t         j                  | |||«      S r9   )rñ  Úcall_triton_kernelrl   s       r5   ro   z"TritonKernelVariable.call_functionV  s    € ô 0×BÑBØ�$˜ ó
ð 	
r7   c                 ó˜   •— |dk(  rt         j                  | |«      S |dk(  rt         j                  | |||«      S t        ‰| �  ||||«      S )NÚ__getitem__Úrun)rñ  Úcall_getitemÚcall_runr˜   rû   )rc   r2   rL   rm   rn   rŸ   s        €r5   rû   z TritonKernelVariable.call_method`  sW   ø€ ð �=Ò Ü3×@Ñ@ÀÀtÓLÐLØ�UŠ]Ü3×<Ñ<¸TÀ4ÈÐQSÓTÐTô ‰wÑ" 2 t¨T°6Ó:Ð:r7   rä   r�   rÈ  )rq   r„   r…   r™   ro   rû   rè   ré   s   @r5   rï  rï  Q  s\   ø„ õWð
à#ð
ð &ð
ð -ð	
ð
 
ó
ð;ð &ð	;ð
 -ð;ð 
÷;ñ ;r7   rï  r9   rr  )MrN  r¸   ry   rT   rR   Útypingr   r   r   r   r   r   r	   r
   r›   rö   r   r   Úbytecode_transformationr   r   Úexcr   r   Úguardsr   r   r4   r   r   r   r   rc  r   r   r   r   r   r   r   Úbaser    r!   r"   r÷   r$   Ú"torch.distributed._composable.fsdpr%   ÚModuleNotFoundErrorÚtorch._dynamo.symbolic_convertr&   Útorch._guardsr'   r(   r6   rA   rM   r\   r^   rˆ   rë   r  r  rã   ru   rF  rk  ry  r  r�  r›  r®  rå  rÊ  rÌ  rñ  rï  r~   r7   r5   ú<module>r     sx  ðó Û Û Û Û ß U× UÓ Uã ç #ß Hß ,ß 0ß NÓ N÷÷ ñ ÷ 9Ñ 8Ý &ðÝDñ
 ÝDÝ$ñ ˆT˜Ô"€ôAó.ò
òô(˜ô ô@B7Ð3ô B7ôJ=5Ð-ô =5ô@Ð 2ô ô(Ð"6ô ó(ô gAÐ!9ô gAôTn˜?ô nôb%
 /ô %
òPó/ôLDÐ(<ô LDô^8
˜ô 8
ôv` ô `õF FôE
˜>ô E
ñP $8Ó#9Ð  ô;˜?õ ;øðc! ò ØÒðús   Á<E ÅEÅE