Ë
    P/æj3�  ã                   óð  — d dl Z d dlZd dlZd dlmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZ d dlZd dlmc mZ d dlmc mZ d dlmZ d dlmZ d dlmZ d dlm Z m!Z!m"Z"m#Z# ejH                  jK                  e&d«      Z'd	„ Z( G d
„ dejR                  «      Z* G d„ de#«      Z+e jX                  d„ «       Z- e+«       fde+fd„Z. G d„ de«      Z/ G d„ de/«      Z0 G d„ de/«      Z1 G d„ de/«      Z2dejR                  fd„Z3y)é    N)ÚABCÚabstractmethod)ÚAnyÚCallableÚContextManagerÚDictÚListÚOptionalÚTupleÚUnion)Ú$_functionalization_reapply_views_tls)Ú_get_dispatch_mode_pre_dispatch)Úis_sparse_any)Ú_detect_infra_modeÚ_disable_infra_modeÚreturn_and_correct_aliasingÚTorchDispatchModeÚnot_implementedc                  ó   ‡ — ˆ fd„}|S )Nc                 ó0   •—  | j                   |i i |¥‰¥¤ŽS ©N)Úto)ÚselfÚargsÚkwargsÚextra_kwargss      €úf/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/torch/_subclasses/functional_tensor.pyÚ_z&_conversion_method_template.<locals>._(   s$   ø€ Øˆt�w‰w˜Ð;Ð : 6Ð :¨\Ð :Ñ;Ð;ó    © )r   r   s   ` r   Ú_conversion_method_templater!   '   s   ø€ ô<ð €Hr   c                   óv  ‡ — e Zd ZU dZej
                  ed<   ej                  j                  j                  Z
ej                  j                  j                  ej                  j                  j                  «      Zej                   j"                  j$                  j&                  ej                   j"                  j$                  j(                  ej                   j"                  j*                  j&                  ej                   j"                  j,                  j&                  ej                   j"                  j.                  j&                  ej                   j"                  j0                  j&                  ej                   j"                  j2                  j&                  ej                   j"                  j4                  j&                  ej                   j"                  j6                  j&                  ej                   j"                  j8                  j&                  ej                   j"                  j:                  j&                  ej                   j"                  j<                  j&                  ej                   j"                  j>                  j&                  ej                   j@                  jB                  j&                  gZ"ej                   j"                  jF                  j&                  ej                   j"                  jH                  j&                  ej                   j"                  jJ                  j&                  ej                   j"                  jL                  j&                  ej                   j"                  jN                  j&                  ej                   j"                  jP                  j&                  ej                   j"                  jR                  j&                  ej                   j"                  jT                  j&                  ej                   j"                  jV                  j&                  ej                   j"                  jX                  j&                  ej                   j"                  jZ                  j&                  ej                   j"                  j\                  j&                  ej                   j"                  j^                  j&                  ej                   j"                  j`                  j&                  ej                   j"                  jb                  j&                  gZ2dZ3e4d    ed<   d„ Z5dd„Z6d„ Z7e8d„ «       Z9d	„ Z:d
e;fd„Z<dd„Z=dd„Z>dd„Z?dd„Z@d
eAfd„ZBˆ fd„ZCdd„ZD eEejŒ                  ¬«      ZG eE ejB                  d«      ¬«      ZH eEej’                  ¬«      ZI eEej”                  ¬«      ZK eEej˜                  ¬«      ZM eEejœ                  ¬«      ZO eEejv                  ¬«      Z; eEej                   ¬«      ZQ eEej¤                  ¬«      ZS eEej¨                  ¬«      ZUd„ ZVeWd„ «       ZXˆ xZYS )ÚFunctionalTensoraF  
    Functional tensors represent tensors that will remove mutations
    from a program. If you perform a mutable operation on a functional tensor,
    it will re-dispatch to the functional variant of that operation.

    Historically, functionalization is implemented in C++ in the dispatcher.
    This class is a lightweight python shim around the C++ functionalization logic.

    FunctionalTensor is required to be used with a corresponding
    FunctionalTensormode active, because it relies
    on using the mode for dispatch (which can properly handle factory functions).
    ÚelemNÚ_inference_mode_basec                 ól  — t        j                  |«      sJ ‚t        j                  t         j                  j                  |«      z  }t         j                  j                  | |j                  t        |«      s|j                  «       nd t        |«      s|j                  «       nd d |j                  |j                  |j                  d|j                  d dd|«      }t         j                  j!                  |«       ||_        t        j$                  «       ržt         j&                  j(                  j*                  rz|j-                  «       r0d |_        ||j0                  |j"                  j3                  «       <   |S |j0                  |j"                  j3                  «          |_        |j.                  €J ‚|S ©NF)ÚtorchÚ_is_functional_tensorr#   Ú_extra_dispatch_keysÚ_CÚ_dispatch_keysÚTensorÚ_make_wrapper_subclassÚshaper   ÚstrideÚstorage_offsetÚdtypeÚlayoutÚdeviceÚrequires_gradÚ_set_throw_on_mutable_data_ptrr$   Úis_inference_mode_enabledÚ	_inductorÚconfigÚenable_auto_functionalized_v2Úis_base_tensorr%   Ú_storage_to_baseÚuntyped_storage)Úclsr$   ÚmodeÚextra_dispatch_keysÚouts        r   Ú__new__zFunctionalTensor.__new__v   si  € Ü×*Ñ*¨4Ô0Ð0Ð0ô& ×1Ñ1´E·H±H×4KÑ4KÈDÓ4QÑQð 	ô �l‰l×1Ñ1ð
 Ø�J‰JÜ!.¨tÔ!4ˆD�K‰KŒM¸$ä-:¸4Ô-@�×#Ñ#Ô%ÀdàØ�J‰JØ�K‰KØ�K‰KØØ×ÑØØØØó)
ˆô, 	�‰×/Ñ/°Ô4ØˆŒô ×+Ñ+Ô-Ü—‘×&Ñ&×DÒDà×!Ñ!Ô#Ø+/�Ô(ð EH�×%Ñ% c§h¡h×&>Ñ&>Ó&@ÑAð ˆ
ð	 ,0×+@Ñ+@Ø—H‘H×,Ñ,Ó.ñ,�Ô(ð ×/Ñ/Ð;Ð;Ð;Øˆ
r   c                 ó  — |D �cg c]5  }|t         j                  t         j                  j                  t        fvr|‘Œ7 }}|rt
        j                  d|«       t        S |€i }|t        j                  v �rt        |«      dk(  sJ ‚|t         j                  j                  j                  j                  t         j                  j                  j                  j                  fv rOt        |«      dk(  rt!        |d   t        «      sJ ‚ |t        j"                  |d   j$                  «      |d   «      S t        |«      dk(  rt!        |d   t        «      sJ ‚ |t        j"                  |d   j$                  «      «      S t'        d«      ‚c c}w )Nú.FunctionalTensor unrecognized subclass(es): %sr   é   é   zqAttempting to use FunctionalTensor on its own. Instead, please use it with a corresponding FunctionalTensorMode())r(   r-   Ú_subclassesÚ
FakeTensorr#   Únot_implemented_logÚdebugÚNotImplementedÚmetadata_fnsÚlenÚopsÚatenÚis_strides_like_formatÚdefaultÚis_contiguousÚmemory_formatÚ
isinstanceÚ_from_functional_tensorr$   ÚRuntimeError)r   ÚfuncÚtypesr   r   ÚtÚunrecognized_typess          r   Ú__torch_dispatch__z#FunctionalTensor.__torch_dispatch__¶   sg  € ð ö
àØœŸ™¤u×'8Ñ'8×'CÑ'CÔEUÐVÑVò ð
Ðð 
ñ
 Ü×%Ñ%Ø@ÐBTôô "Ð!àˆ>ØˆFð
 Ô#×0Ñ0Ò0ô �v“; !Ò#Ð#Ð#ØÜ—	‘	—‘×5Ñ5×=Ñ=Ü—	‘	—‘×,Ñ,×:Ñ:ðñ ô ˜4“y A’~¬*°T¸!±WÔ>NÔ*OÐOÐOÙœE×9Ñ9¸$¸q¹'¿,¹,ÓGÈÈaÉÓQÐQÜ�t“9 ’>¤j°°a±Ô:JÔ&KÐKÐKáœ×5Ñ5°d¸1±g·l±lÓCÓDÐDô Øó
ð 	
ùòM
s   …:F	c                 ó4   — dt        | j                  «      › d�S )NzFunctionalTensor(ú))Úreprr$   ©r   s    r   Ú__repr__zFunctionalTensor.__repr__á   s   € Ø"¤4¨¯	©	£?Ð"3°1Ð5Ð5r   c                 ó`  — t        j                  | «      rJ ‚t        j                  | «      }t        t         j                  j
                  j                  «      }|€J ‚|5  t        j                  | |«       t        ||«      }t        j                  ||«       d d d «       |S # 1 sw Y   S xY wr   )	r(   r)   Ú_to_functional_tensorr   r+   Ú_TorchDispatchModeKeyÚ
FUNCTIONALÚ_mirror_autograd_meta_tor#   )ÚxÚx_functionalÚfunctional_moderA   s       r   Úto_functionalzFunctionalTensor.to_functionalä   sŸ   € ô ×.Ñ.¨qÔ1Ð1Ð1ô
 ×2Ñ2°1Ó5ˆô -¬U¯X©X×-KÑ-K×-VÑ-VÓWˆØÐ*Ð*Ð*àñ 	>Ü×*Ñ*¨1¨lÔ;Ü" <°ÓAˆCÜ×*Ñ*¨<¸Ô=÷	>ð ˆ
÷		>ð ˆ
ús   Á 9B#Â#B-c                 ój   — t        j                  | «       t        j                  | j                  «      S r   )r(   Ú_syncrU   r$   r_   s    r   Úfrom_functionalz FunctionalTensor.from_functionalý   s#   € Ü�‰�DÔÜ×,Ñ,¨T¯Y©YÓ7Ð7r   Úreturnc                 ó@   — t        j                  | j                  «      S r   )r(   Ú_is_functional_tensor_baser$   r_   s    r   r;   zFunctionalTensor.is_base_tensor  s   € Ü×/Ñ/°·	±	Ó:Ð:r   c                 óD   — t        j                  | j                  |«       y r   )r(   Ú_functionalize_replacer$   )r   Úoutputs     r   Úreplace_zFunctionalTensor.replace_  s   € Ü×$Ñ$ T§Y¡Y°Õ7r   c                 óB   — t        j                  | j                  «       y r   )r(   Ú_functionalize_commit_updater$   r_   s    r   Úcommit_updatezFunctionalTensor.commit_update  s   € Ü×*Ñ*¨4¯9©9Õ5r   c                 óB   — t        j                  | j                  «       y r   )r(   Ú_functionalize_syncr$   r_   s    r   ÚsynczFunctionalTensor.sync
  s   € Ü×!Ñ! $§)¡)Õ,r   c                 óB   — t        j                  | j                  «       y r   )r(   Ú1_functionalize_mark_mutation_hidden_from_autogradr$   r_   s    r   Ú"mark_mutation_hidden_from_autogradz3FunctionalTensor.mark_mutation_hidden_from_autograd  s   € Ü×?Ñ?ÀÇ	Á	ÕJr   c                 ó^  — | j                   j                  «       dk(  r| j                   j                  «       S | j                   j                  «       dk(  r(| j                   D �cg c]  }|j                  «       ‘Œ c}S | j                   D �cg c]  }|j                  «       ‘Œ c}S c c}w c c}w )Nr   rF   )r$   ÚdimÚitemÚtolist)r   r$   s     r   r€   zFunctionalTensor.tolist  su   € Ø�9‰9�=‰=‹?˜aÒØ—9‘9—>‘>Ó#Ð#Ø�Y‰Y�]‰]‹_ Ò!Ø,0¯I©IÖ6 D�D—I‘I•KÒ6Ð6à.2¯i©iÖ8 d�D—K‘K•MÒ8Ð8ùò 7ùâ8s   Á#B%ÂB*c           	      ó  •— t        t        j                  j                  j                  «      j
                  rBt        |D �cg c]  }t        |t        «      sŒ|‘Œ c}«      dk  rt        ‰| �(  |i i |¥ddi¥¤ŽS t        ‰| �(  |i |¤ŽS c c}w )NrF   ÚcopyT)r   r(   r+   rc   rd   ÚexportrM   rT   ÚboolÚsuperr   )r   r   r   ÚargÚ	__class__s       €r   r   zFunctionalTensor.to  s}   ø€ ÜœeŸh™h×<Ñ<×GÑGÓH×OÒOä 4ÖA˜C¬:°c¼4Õ+@’CÒAÓBÀaÒGÜ‘w‘z 4ÐDÐ+C¨fÐ+C°f¸dÑ+CÑDÐDÜ‰w‰z˜4Ð* 6Ñ*Ð*ùò Bs   ÁB
ÁB
c                 ó¶   — |xs t         j                  j                  «       }t        |«      dkD  r | j                  |g|¢­i |¤ŽS  | j                  dd|i|¤ŽS )Nr   r4   r    )r(   ÚcudaÚcurrent_devicerM   r   )r   r4   r   r   s       r   r‰   zFunctionalTensor.cuda  sX   € ØÒ6œ5Ÿ:™:×4Ñ4Ó6ˆÜˆt‹9�qŠ=Ø�4—7‘7˜6Ð3 DÒ3¨FÑ3Ð3à�4—7‘7Ñ3 &Ð3¨FÑ3Ð3r   )r2   Úcpu)r4   c                 ó6   — | j                   j                  «       S r   )r$   Úto_denser_   s    r   r�   zFunctionalTensor.to_dense2  s   € Ø�y‰y×!Ñ!Ó#Ð#r   c                 ó.   — | j                   j                  S r   )r$   r3   r_   s    r   r3   zFunctionalTensor.layout5  s   € à�y‰y×ÑÐr   ©r    N©rm   Nr   )ZÚ__name__Ú
__module__Ú__qualname__Ú__doc__r(   r-   Ú__annotations__r+   rc   rd   Ú	_mode_keyÚ,_additional_keys_to_prop_for_wrapper_tensorsÚaddÚDispatchKeyÚ
ZeroTensorr*   rN   rO   rR   rQ   rS   rP   Úis_non_overlapping_and_denseÚsizeÚsym_sizer0   Ú
sym_strider1   Úsym_storage_offsetÚnumelÚ	sym_numelr~   Úprimr4   rL   ÚdropoutÚ
batch_normÚnative_batch_normÚ_batch_norm_impl_indexÚcudnn_batch_normÚmiopen_batch_normÚ
atleast_1dÚ
atleast_2dÚ
atleast_3dÚcartesian_prodÚconj_physicalÚalpha_dropoutÚfeature_dropoutÚfeature_alpha_dropoutÚunsafe_chunkÚmaybe_aliasing_or_mutating_opsr%   r
   rB   r[   r`   Ústaticmethodri   rl   r„   r;   rs   rv   ry   r|   r   r€   r   r‰   r!   Úint8Úcharr‹   Úbfloat16Úuint8ÚbyteÚfloat64ÚdoubleÚfloat32ÚfloatÚfloat16ÚhalfÚint32ÚintÚint64Úlongr�   Úpropertyr3   Ú__classcell__©r‡   s   @r   r#   r#   .   s+  ø… ñð �,‰,Óð —‘×.Ñ.×9Ñ9€Ið !Ÿ8™8×PÑP×TÑTØ�‰×Ñ×'Ñ'óÐð 	�	‰	�‰×$Ñ$×,Ñ,Ø�	‰	�‰×$Ñ$×2Ñ2Ø�	‰	�‰×-Ñ-×5Ñ5Ø�	‰	�‰×3Ñ3×;Ñ;Ø�	‰	�‰×Ñ×#Ñ#Ø�	‰	�‰×Ñ×'Ñ'Ø�	‰	�‰×Ñ×%Ñ%Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×%Ñ%×-Ñ-Ø�	‰	�‰×)Ñ)×1Ñ1Ø�	‰	�‰×Ñ×$Ñ$Ø�	‰	�‰× Ñ ×(Ñ(Ø�	‰	�‰×Ñ×"Ñ"Ø�	‰	�‰×Ñ×%Ñ%ð€Lð( 	�	‰	�‰×Ñ×&Ñ&Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×(Ñ(×0Ñ0Ø�	‰	�‰×-Ñ-×5Ñ5Ø�	‰	�‰×'Ñ'×/Ñ/Ø�	‰	�‰×(Ñ(×0Ñ0Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×!Ñ!×)Ñ)Ø�	‰	�‰×%Ñ%×-Ñ-Ø�	‰	�‰×$Ñ$×,Ñ,Ø�	‰	�‰×$Ñ$×,Ñ,Ø�	‰	�‰×&Ñ&×.Ñ.Ø�	‰	�‰×,Ñ,×4Ñ4Ø�	‰	�‰×#Ñ#×+Ñ+ð&Ð"ð& :>Ð˜(Ð#5Ñ6Ó=ò>ó@)
òV6ð ñó ðò08ð; ó ;ó8ó6ó-óKð9˜ó 9ô+ó4ñ '¨U¯Z©ZÔ8€DÙ
%¨\¨U¯\©\¸%Ó-@Ô
A€CÙ*°·±Ô@€HÙ&¨U¯[©[Ô9€DÙ(¨u¯}©}Ô=€FÙ'¨e¯m©mÔ<€EÙ&¨U¯Z©ZÔ8€DÙ&¨U¯]©]Ô;€DÙ
%¨E¯K©KÔ
8€CÙ&¨U¯[©[Ô9€Dò$ð ñ ó ô r   r#   c                   óR   ‡ — e Zd Zdˆ fd„	Zˆ fd„Zˆ fd„Zdd„Zedefd„«       Z	ˆ xZ
S )	ÚFunctionalTensorModec                 ób  •— t         ‰| �  «        || _        d| _        g | _        t
        j                  j                  j                  | _	        || _
        |r$t
        j                  j                  j                  nd | _        i | _        i | _        || _        t#        j$                  «       | _        y r'   )r…   Ú__init__rƒ   Úis_on_stackÚenter_stackr(   r+   rc   rd   r–   Úpre_dispatchr™   ÚPreDispatchÚ_dispatch_keyÚ_tokensÚ_tokens_forward_outputÚ_allow_token_discoveryÚweakrefÚWeakKeyDictionaryr<   )r   rÌ   rƒ   rÑ   r‡   s       €r   rÉ   zFunctionalTensorMode.__init__;  s˜   ø€ Ü‰ÑÔØˆŒØ ˆÔØˆÔô Ÿ™×7Ñ7×BÑBˆŒØ(ˆÔáAMœUŸX™X×1Ñ1×=Ò=ÐSWˆÔð 13ˆŒð @BˆÔ#ð '=ˆÔ#ô ×%Ñ%Ó'ð 	Õr   c                 óª   •‡ — ˆ fd„} |«       €)‰ j                   j                  d«       t        ‰‰ �  «       S ‰ j                   j                  d«       ‰ S )Nc                  óB  •— ‰ j                   t        j                  j                  j                  k(  r-t        t        j                  j                  j                  «      S t        j                  j                  t        j                  j                  j                  «      S r   )	rÎ   r(   r+   r™   rÍ   r   rc   rd   Ú_get_dispatch_moder_   s   €r   Ú_get_prev_modez6FunctionalTensorMode.__enter__.<locals>._get_prev_mode\  sm   ø€ Ø×!Ñ!¤U§X¡X×%9Ñ%9×%EÑ%EÒEÜ6Ü—H‘H×2Ñ2×=Ñ=óð ô —8‘8×.Ñ.Ü—‘×.Ñ.×9Ñ9óð r   TF)rË   Úappendr…   Ú	__enter__)r   r×   r‡   s   ` €r   rÙ   zFunctionalTensorMode.__enter__[  sN   ù€ ô	ñ ÓÐ#Ø×Ñ×#Ñ# DÔ)Ü‘7Ñ$Ó&Ð&à×Ñ×#Ñ# EÔ*ØˆKr   c                 ób   •— | j                   j                  «       }|rt        ‰| �  |||«       y y r   )rË   Úpopr…   Ú__exit__)r   ÚaÚbÚcrÊ   r‡   s        €r   rÜ   zFunctionalTensorMode.__exit__l  s0   ø€ Ø×&Ñ&×*Ñ*Ó,ˆÙÜ‰GÑ˜Q  1Õ%ð r   c                 óP  ‡ — |€i }‰ j                   �rN|t        j                  j                  j                  j
                  k(  rR|j                  dd «       ‰ j                  t        j                  j                  j                  j                  |||«      S |t        j                  j                  j                  j                  k(  ršt        d„ |j                  j                  D «       «      }t        |dd  |dd  «      D ]
  \  }}|||<   Œ |j                  dd «       ‰ j                  t        j                  j                  j                  j                  ||d d |«      S |D �cg c]@  }t        |t        j                   j"                  «      s|t        j$                  t&        fvr|‘ŒB }	}|	rt(        j+                  d|	«       t,        S ˆ fd„}
|t&        j.                  vrf |
|«      r^t        j0                  j3                  |j5                  «       «      r1‰ 5   |j6                  |i |¤Ž}|t,        ur|cd d d «       S 	 d d d «       ˆ fd„}d„ }dd	lm}m}m}  ||«      r€t        j0                  jA                  |j5                  «       t        j0                  jB                  jD                  «      s0‰ j                   stF        jH                  s
 ||||«      S  ||||«      S dd
l%m&}m'}  ||||«      rrt        j0                  jA                  |j5                  «       t        j0                  jB                  jD                  «      rJ ‚ |‰ jP                  ‰ jR                  |||«      S tU        jV                  t&        |||f«      \  }}t        j0                  jY                  t        j0                  jB                  jD                  «      }t        j0                  j[                  t        j0                  jB                  jD                  «      }|s|rJ ‚t        j0                  j]                  «       t        j0                  j_                  t        j0                  jB                  jD                  «      z  }t        j0                  ja                  «       jc                  t        j0                  jB                  jD                  «      t&        jd                  z
  }t        j0                  jg                  ||«      5  	 t        jh                  d«      }|t&        j.                  v r. ||i |¤Ž}tU        jV                  t        j$                  ||«      }nÜ |jj                  t        j0                  jB                  jD                  g|¢­i |¤Ž}‰ j                   rs|t        j                  j                  jl                  j                  t        j                  j                  j                  j                  fv rt        jn                  |«       tU        jV                  t        j$                  ||«      }t        jp                  «        t        jh                  |«       	 d d d «       t        j0                  jY                  t        j0                  jB                  jD                  «      }t        j0                  j[                  t        j0                  jB                  jD                  «      }|s|rJ ‚ts        d„ tU        jt                  «      D «       «      r1|t        j                  j                  jv                  j                  k(  r|S t        jx                  jz                  |j|                  v ri|t        j                  j                  j~                  j€                  ur9t        j‚                  j„                  j‡                  «       5   ||i |¤Ž d d d «       t‰        ||||«      S c c}w # 1 sw Y   �Œ—xY w# t        jp                  «        t        jh                  «       w xY w# 1 sw Y   �ŒÇxY w# 1 sw Y   ŒdxY w)Nr‚   c              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Úname©Ú.0r†   s     r   ú	<genexpr>z:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>~  s   è ø€ ÒJ¨C˜sŸx�xÑJùó   ‚rF   rD   c                 óÆ  •— ‰j                   r2| t        j                  j                  j                  j
                  k(  ry| t        j                  v ryt        d„ | j                  j                  D «       «      }|s| j                  j                  ry‰j                   s‰j                  r8| j                  «       r(| j                  dvrt        j                   d| › d�«       yy)NFTc              3   ó4   K  — | ]  }|j                   –— Œ y ­wr   )Ú
alias_inforã   s     r   rå   zRFunctionalTensorMode.__torch_dispatch__.<locals>._can_decompose.<locals>.<genexpr>¡  s   è ø€ Ò$V¸ S§^¥^Ñ$Vùræ   )rO   r¢   z˜At pre-dispatch tracing, we assume that any custom op marked with CompositeImplicitAutograd and have functional schema are safe to not decompose. Found z to be one such op.)rƒ   r(   rN   rO   r£   rQ   r#   r²   ÚanyÚ_schemaÚ	argumentsÚ
is_mutablerÌ   Ú_can_decomposeÚ	namespaceÚwarningsÚwarn)rW   Úalias_info_presentr   s     €r   rî   z?FunctionalTensorMode.__torch_dispatch__.<locals>._can_decompose“  s¾   ø€ ð �{Š{˜t¤u§y¡y§~¡~×'=Ñ'=×'EÑ'EÒEØð Ô'×FÑFÑFØô "%Ñ$V¸t¿|¹|×?UÑ?UÔ$VÓ!VÐÙ! T§\¡\×%<Ò%<Øð —’˜t×0Ò0°d×6IÑ6IÔ6KØ—>‘>Ð)9Ñ9ä—M‘Mð!à!% Ð&9ð;ôð
 ð r   c                 ó¢   •— t        | t        «      rJ ‚t        | t        j                  «      r!t        j                  | «      rt        | ‰«      S | S r   )rT   r#   r(   r-   r)   )rf   r   s    €r   Úwrapz5FunctionalTensorMode.__torch_dispatch__.<locals>.wrapÀ  sC   ø€ ô " !Ô%5Ô6Ð6Ð6Ü˜!œUŸ\™\Ô*¬u×/JÑ/JÈ1Ô/MÜ'¨¨4Ó0Ð0ØˆHr   c                 ó   — | j                   S r   )r$   )rf   s    r   Úunwrapz7FunctionalTensorMode.__torch_dispatch__.<locals>.unwrapÉ  s   € Ø—6‘6ˆMr   r   )Úcan_auto_functionalizeÚdo_auto_functionalizeÚdo_auto_functionalize_v2)Úhandle_effectsÚhas_effectsTc              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr   )rT   r#   )rä   rf   s     r   rå   z:FunctionalTensorMode.__torch_dispatch__.<locals>.<genexpr>3  s    è ø€ ò àô ˜1Ô.×/ñùs   ‚)Erƒ   r(   rN   rO   r   Údtype_layoutrÛ   r[   Ú_to_copyrQ   r2   Útuplerë   rì   ÚzipÚ
issubclassrG   rH   r-   r#   rI   rJ   rK   rL   r+   Ú_dispatch_has_kernelrâ   Ú	decomposeÚ*torch._higher_order_ops.auto_functionalizer÷   rø   rù   Ú%_dispatch_has_kernel_for_dispatch_keyr™   ÚFunctionalizeÚinductor_configr:   Útorch._higher_order_ops.effectsrú   rû   rÑ   rÏ   ÚpytreeÚtree_map_onlyÚ&_dispatch_tls_is_dispatch_key_includedÚ&_dispatch_tls_is_dispatch_key_excludedÚ_dispatch_tls_local_include_setÚDispatchKeySetÚ_dispatch_tls_local_exclude_setÚremover*   Ú_ForceDispatchKeyGuardÚ#_functionalize_enable_reapply_viewsÚ_op_dkr£   Ú_freeze_functional_tensorÚ_disable_functionalizationrê   Útree_leavesÚ
lift_freshÚTagÚinplace_viewÚtagsÚset_Úsource_TensorÚutilsÚ_mode_utilsÚno_dispatchr   )r   rW   rX   r   r   Úschemar†   râ   rY   rZ   rî   Úrrô   rö   r÷   rø   rù   rú   rû   Úargs_unwrappedÚkwargs_unwrappedÚis_includedÚis_excludedÚinclude_to_setÚexclude_to_setÚold_apply_viewsÚouts_unwrappedÚouts_wrappeds   `                           r   r[   z'FunctionalTensorMode.__torch_dispatch__q  s}  ø€ Øˆ>ØˆFà�;‹;ð ”u—y‘y—~‘~×(Ñ(×5Ñ5Ò5Ø—
‘
˜6 4Ô(Ø×.Ñ.Ü—I‘I—N‘N×+Ñ+×3Ñ3°U¸DÀ&óð ð ”u—y‘y—~‘~×(Ñ(×.Ñ.Ò.ÜÑJ°4·<±<×3IÑ3IÔJÓJ�Ü!$ T¨!¨" X¨v°a°b¨zÓ!:ò '‘I�C˜Ø#&�F˜4’Lð'à—
‘
˜6 4Ô(Ø×.Ñ.Ü—I‘I—N‘N×+Ñ+×3Ñ3°U¸DÀÀ!¸HÀfóð ð ö
àÜ˜a¤×!2Ñ!2×!=Ñ!=Ô>Øœ%Ÿ,™,Ô(8Ð9Ñ9ò ð
Ðð 
ñ Ü×%Ñ%Ø@ÐBTôô "Ð!ô	ðD Ô(×5Ñ5Ñ5Ù˜tÔ$ô —‘×-Ñ-¨d¯i©i«kÔ:àñ Ø"�D—N‘N DÐ3¨FÑ3�ØœNÑ*Ø÷ñ à*÷ô
	ò	÷	
ñ 	
ñ "Øô
ä—(‘(×@Ñ@Ø�I‰I‹KœŸ™×-Ñ-×;Ñ;ô
ð �{Š{¤/×"OÒ"OÙ,¨T°4¸Ó@Ð@á/°°d¸FÓCÐCçOá�t˜T 6Ô*Ü—x‘x×EÑEØ—	‘	“œUŸX™X×1Ñ1×?Ñ?ôð ð ñ "Ø×+Ñ+¨T¯\©\¸4ÀÀvóð ô ,2×+?Ñ+?Ü˜f t¨V nó,
Ñ(ˆÐ(ô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆñ ¡+Ð-Ð-ä�H‰H×4Ñ4Ó6Ü�h‰h×%Ñ%¤e§h¡h×&:Ñ&:×&HÑ&HÓIñJð 	ô
 �H‰H×4Ñ4Ó6×=Ñ=Ü—‘×$Ñ$×2Ñ2óô ×3Ñ3ñ4ð 	ô �X‰X×,Ñ,¨^¸^ÓLñ #	Kð"Kä"'×"KÑ"KÈDÓ"Q�ð Ô+×8Ñ8Ñ8Ù%)¨>Ð%NÐ=MÑ%N�NÜ#)×#7Ñ#7ÜŸ™ d¨Nó$‘Lð &1 T§[¡[ÜŸ™×,Ñ,×:Ñ:ð&à'ò&ð +ñ&�Nð —{’{ØÜ!ŸI™IŸN™N×2Ñ2×:Ñ:Ü!ŸI™IŸN™N×3Ñ3×;Ñ;ð$ñ ô "×;Ñ;¸NÔKÜ#)×#7Ñ#7ÜŸ™ d¨Nó$�Lô ×0Ñ0Ô2Ü×9Ñ9¸/ÕJ÷G#	KôJ —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆô —h‘h×EÑEÜ�H‰H× Ñ ×.Ñ.ó
ˆñ ¡+Ð-Ð-ô ñ ä×+Ñ+¨LÓ9ôô ð ”u—y‘y—~‘~×0Ñ0×8Ñ8Ò8àÐô �I‰I×"Ñ" d§i¡iÑ/ØœEŸI™IŸN™N×/Ñ/×=Ñ=Ñ=ä—‘×(Ñ(×4Ñ4Ó6ñ &Ù�dÐ%˜fÒ%÷&ô +¨4°°v¸|ÓLÐLùòG
÷jñ ûôV ×0Ñ0Ô2Ü×9Ñ9¸/ÕJú÷G#	Kñ #	Kú÷~&ð &úsD   Å%A_È_Ó-`Ó/D1_!Ø )`Þ0	`ß_ß!+`à`à`à`%rm   c                  ó   — y)NTr    )r>   s    r   Úis_infra_modez"FunctionalTensorMode.is_infra_modeK  s   € àr   )FFFr�   )r‘   r’   r“   rÉ   rÙ   rÜ   r[   Úclassmethodr„   r,  rÄ   rÅ   s   @r   rÇ   rÇ   :  s6   ø„ õ(ô@ô"&ó
XMðt ð˜dò ó ôr   rÇ   c                  ó\   — t        t        j                  j                  j                  «      S r   )r   r(   r+   rc   rd   r    r   r   Údisable_functional_moder/  P  s   € äœuŸx™x×=Ñ=×HÑHÓIÐIr   r?   c                 ó*   ‡ ‡‡‡— d„ Šd„ Šˆˆ ˆˆfd„}|S )Nc                 ód   — t        | t        j                  «      rt        j	                  | «      S | S r   )rT   r(   r-   r#   ri   ©rY   s    r   Úto_funz&dispatch_functionalize.<locals>.to_fun_  s&   € Ü�aœŸ™Ô&Ü#×1Ñ1°!Ó4Ð4Øˆr   c                 óð   — t        | t        «      s3t        | t        j                  «      rt        j                  | «      rJ ‚| S t        j
                  | «       t        j                  | j                  «      S r   )rT   r#   r(   r-   r)   rk   rU   r$   r2  s    r   Úfrom_funz(dispatch_functionalize.<locals>.from_fund  sT   € Ü˜!Ô-Ô.ä˜!œUŸ\™\Ô*Ü ×6Ñ6°qÔ9Ð9Ð9ØˆHÜ�‰�AŒÜ×,Ñ,¨Q¯V©VÓ4Ð4r   c                  ó  •— t         j                  j                  t         j                  j                  t         j                  j                  j
                  «      «      }|5  ‰	5  t        j                  t         j                  ‰
| «      }t        j                  t         j                  ‰
|«      } ‰|i |¤Ž}t        j                  t        ‰|«      }|cd d d «       cd d d «       S # 1 sw Y   nxY wd d d «       y # 1 sw Y   y xY wr   )
r(   r+   Ú_ExcludeDispatchKeyGuardr  r™   r  r	  r
  r-   r#   )r   r   Údisable_aboveÚ	func_argsÚfunc_kwargsÚfunc_outputsÚoutputsr5  rW   r?   r3  s          €€€€r   Úinnerz%dispatch_functionalize.<locals>.innerm  sÆ   ø€ ÜŸ™×9Ñ9Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ˆð ñ 	˜Dñ 	Ü×,Ñ,¬U¯\©\¸6À4ÓHˆIÜ ×.Ñ.¬u¯|©|¸VÀVÓLˆKÙ Ð:¨kÑ:ˆLÜ×*Ñ*Ô+;¸XÀ|ÓTˆGà÷	÷ 	÷ 	ó 	ú÷ 	÷ 	ñ 	ús%   Á"C<Á%A/C'Ã	C<Ã'C0	Ã,C<Ã<Dr    )rW   r?   r=  r5  r3  s   `` @@r   Údispatch_functionalizer>  ]  s   û€ òò
5÷
ð €Lr   c                   ó   — e Zd Zedee   dee   fd„«       Zedeej                  eej                  df   f   defd„«       Z
ededefd„«       Zedefd„«       Zedd
„«       Zedd„«       Zedd„«       Zedd„«       Zy	)ÚBaseFunctionalizeAPIr   rm   c                  ó   — y r   r    ©r   r   s     r   Úwrap_tensorsz!BaseFunctionalizeAPI.wrap_tensors}  ó   € àr   .c                  ó   — y r   r    rB  s     r   Úunwrap_tensorsz#BaseFunctionalizeAPI.unwrap_tensors�  s   € ð 	r   Úinner_fc                  ó   — y r   r    ©r   rG  s     r   Úfunctionalizez"BaseFunctionalizeAPI.functionalize‡  rD  r   c                  ó   — y r   r    r_   s    r   Úredispatch_to_nextz'BaseFunctionalizeAPI.redispatch_to_next‹  rD  r   Nc                  ó   — y r   r    ©r   Úinput_tensorÚoutput_tensors      r   ÚreplacezBaseFunctionalizeAPI.replace�  rD  r   c                  ó   — y r   r    ©r   Útensors     r   rv   z"BaseFunctionalizeAPI.commit_update“  rD  r   c                  ó   — y r   r    rS  s     r   ry   zBaseFunctionalizeAPI.sync—  rD  r   c                  ó   — y r   r    rS  s     r   r|   z7BaseFunctionalizeAPI.mark_mutation_hidden_from_autograd›  rD  r   r�   )r‘   r’   r“   r   r   r   rC  r   r(   r-   rF  r   rJ  r   rL  rQ  rv   ry   r|   r    r   r   r@  r@  |  s÷   „ Øð  s¡ð °°c±
ò ó ðð ðØ˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAðà	òó ðð
 ð Xð °(ò ó ðð ð Nò ó ðð òó ðð òó ðð òó ðð òó ñr   r@  c                   óö   ‡ — e Zd Z	 ddee   deddfˆ fd„Zdee   dee   fd„Z	de
ej                  eej                  df   eej                     f   defd	„Zd
edefd„Zdefd„Zdd„Zdd„Zdd„Zdd„Zˆ xZS )ÚPythonFunctionalizeAPINr?   rÌ   rm   c                 óV   •— t         ‰| �  «        |r|n	t        «       | _        || _        y r   )r…   rÉ   rÇ   r?   rÌ   )r   r?   rÌ   r‡   s      €r   rÉ   zPythonFunctionalizeAPI.__init__¡  s'   ø€ ô 	‰ÑÔÙ ‘DÔ&:Ó&<ˆŒ	Ø(ˆÕr   r   c                 óÔ   — | j                   5  t        j                  j                  j	                  t        j
                  t        j                  |«      cd d d «       S # 1 sw Y   y xY wr   )r?   r(   r  Ú_pytreer
  r-   r#   ri   rB  s     r   rC  z#PythonFunctionalizeAPI.wrap_tensors¨  sH   € Ø�Y‰Yñ 	Ü—;‘;×&Ñ&×4Ñ4Ü—‘Ô.×<Ñ<¸dó÷	÷ 	ò 	ús   �AAÁA'.c                 ó|   — t         j                  j                  j                  t        t        j
                  |«      S r   )r(   r  r[  r
  r#   rl   rB  s     r   rF  z%PythonFunctionalizeAPI.unwrap_tensors®  s/   € ô �{‰{×"Ñ"×0Ñ0ÜÔ.×>Ñ>Àó
ð 	
r   rG  c                 ó.   — t        || j                  «      S r   )r>  r?   rI  s     r   rJ  z$PythonFunctionalizeAPI.functionalizeµ  s   € Ü% g¨t¯y©yÓ9Ð9r   c                 ó*   — t        j                  «       S r   )Ú
contextlibÚnullcontextr_   s    r   rL  z)PythonFunctionalizeAPI.redispatch_to_next¸  s   € ô ×%Ñ%Ó'Ð'r   c                 ón   — t        |t        «      sJ ‚t        |t        «      rJ ‚|j                  |«       y r   )rT   r#   rs   rN  s      r   rQ  zPythonFunctionalizeAPI.replaceÀ  s2   € Ü˜,Ô(8Ô9Ð9Ð9Ü˜mÔ-=Ô>Ð>Ð>Ø×Ñ˜mÕ,r   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rT   r#   rv   rS  s     r   rv   z$PythonFunctionalizeAPI.commit_updateÅ  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø×ÑÕr   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rT   r#   ry   rS  s     r   ry   zPythonFunctionalizeAPI.syncÉ  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø�‰�r   c                 óH   — t        |t        «      sJ ‚|j                  «        y r   )rT   r#   r|   rS  s     r   r|   z9PythonFunctionalizeAPI.mark_mutation_hidden_from_autogradÍ  s   € Ü˜&Ô"2Ô3Ð3Ð3Ø×1Ñ1Õ3r   r'   r�   )r‘   r’   r“   r
   rÇ   r„   rÉ   r   r   rC  r   r(   r-   r	   rF  r   rJ  r   rL  rQ  rv   ry   r|   rÄ   rÅ   s   @r   rX  rX     s³   ø„ àPUñ)ØÐ1Ñ2ð)ØIMð)à	õ)ð  s¡ð °°c±
ó ð
Ø˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@À$ÀuÇ|Á|ÑBTÐTÑUð
à	ó
ð: Xð :°(ó :ð( Nó (ó-ó
ó÷4r   rX  c                   óì   — e Zd Zdee   dee   fd„Zdeej                  eej                  df   f   deej                  eej                  df   f   fd„Z	de
de
fd„Zdefd„Zdd
„Zdd„Zdd„Zdd„Zy	)ÚCppFunctionalizeAPIr   rm   c                 ó"   — ddl m}  ||d¬«      S ©Nr   )Ú_wrap_all_tensors_to_functional)Úlevel)Ú!torch._functorch.eager_transformsri  ©r   r   ri  s      r   rC  z CppFunctionalizeAPI.wrap_tensorsÓ  s   € ÝUá.¨t¸1Ô=Ð=r   .c                 ó2   — ddl m}  ||t        «       ¬«      S ©Nr   )Ú#_unwrap_all_tensors_from_functional)Úreapply_views)rk  ro  Ú_reapply_views©r   r   ro  s      r   rF  z"CppFunctionalizeAPI.unwrap_tensorsØ  s   € õ	
ñ 3°4Ä~ÓGWÔXÐXr   rG  c                 ó@   — t         j                  j                  |«      S r   )r(   rW   rJ  rI  s     r   rJ  z!CppFunctionalizeAPI.functionalizeá  s   € Ü�z‰z×'Ñ'¨Ó0Ð0r   c                 ó¾   — t         j                  j                  t         j                  j                  t         j                  j                  j
                  «      «      S r   )r(   r+   r7  r  r™   r  r_   s    r   rL  z&CppFunctionalizeAPI.redispatch_to_nextä  s;   € Ü�x‰x×0Ñ0Ü�H‰H×#Ñ#¤E§H¡H×$8Ñ$8×$FÑ$FÓGó
ð 	
r   Nc                 ó0   — t        j                  ||«       y r   ©r(   rq   rN  s      r   rQ  zCppFunctionalizeAPI.replaceé  ó   € Ü×$Ñ$ \°=ÕAr   c                 ó.   — t        j                  |«       y r   ©r(   ru   rS  s     r   rv   z!CppFunctionalizeAPI.commit_updateì  ó   € Ü×*Ñ*¨6Õ2r   c                 ó.   — t        j                  |«       y r   ©r(   rx   rS  s     r   ry   zCppFunctionalizeAPI.syncï  ó   € Ü×!Ñ! &Õ)r   c                 ó.   — t        j                  |«       y r   ©r(   r{   rS  s     r   r|   z6CppFunctionalizeAPI.mark_mutation_hidden_from_autogradò  ó   € Ü×?Ñ?ÀÕGr   r�   )r‘   r’   r“   r   r   rC  r   r(   r-   rF  r   rJ  r   rL  rQ  rv   ry   r|   r    r   r   rf  rf  Ò  s¢   „ ð>  s¡ð >°°c±
ó >ð
YØ˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAðYà	ˆu�|‰|˜U 5§<¡<°Ð#4Ñ5Ð5Ñ	6óYð1 Xð 1°(ó 1ð
 Nó 
ó
Bó3ó*ôHr   rf  c                   óò   — e Zd Zd„ Zdee   dee   fd„Zdeej                  eej                  df   f   deej                  eej                  df   f   fd„Z
dedefd„Zdefd	„Zdd„Zdd„Zdd„Zdd„Zy
)ÚFunctorchFunctionalizeAPIc                 ó   — || _         y r   )Úinterpreter)r   r„  s     r   rÉ   z"FunctorchFunctionalizeAPI.__init__÷  s
   € Ø&ˆÕr   r   rm   c                 óR   — ddl m}  ||| j                  j                  «       ¬«      S rh  )rk  ri  r„  rj  rl  s      r   rC  z&FunctorchFunctionalizeAPI.wrap_tensorsú  s!   € ÝUá.¨t¸4×;KÑ;K×;QÑ;QÓ;SÔTÐTr   .c                 óR   — ddl m}  ||| j                  j                  «       ¬«      S rn  )rk  ro  r„  Úfunctionalize_add_back_viewsrr  s      r   rF  z(FunctorchFunctionalizeAPI.unwrap_tensorsÿ  s*   € õ	
ñ 3Ø × 0Ñ 0× MÑ MÓ Oô
ð 	
r   rG  c                 ó†   — t         j                  j                  || j                  j	                  «       rd¬«      S d¬«      S )NÚmutations_and_viewsÚ	mutations)r  )r(   rW   rJ  r„  r‡  rI  s     r   rJ  z'FunctorchFunctionalizeAPI.functionalize
  sN   € Ü�z‰z×'Ñ'Øð ×#Ñ#×@Ñ@ÔBð &ð (ó 
ð 	
ð
 !ð (ó 
ð 	
r   c                 ó6   — | j                   j                  «       S r   )r„  Úlowerr_   s    r   rL  z,FunctorchFunctionalizeAPI.redispatch_to_next  s   € Ø×Ñ×%Ñ%Ó'Ð'r   Nc                 ó0   — t        j                  ||«       y r   rv  rN  s      r   rQ  z!FunctorchFunctionalizeAPI.replace  rw  r   c                 ó.   — t        j                  |«       y r   ry  rS  s     r   rv   z'FunctorchFunctionalizeAPI.commit_update  rz  r   c                 ó.   — t        j                  |«       y r   r|  rS  s     r   ry   zFunctorchFunctionalizeAPI.sync  r}  r   c                 ó.   — t        j                  |«       y r   r  rS  s     r   r|   z<FunctorchFunctionalizeAPI.mark_mutation_hidden_from_autograd   r€  r   r�   )r‘   r’   r“   rÉ   r   r   rC  r   r(   r-   rF  r   rJ  r   rL  rQ  rv   ry   r|   r    r   r   r‚  r‚  ö  s§   „ ò'ðU  s¡ð U°°c±
ó Uð
	
Ø˜%Ÿ,™,¨¨e¯l©l¸CÐ.?Ñ(@Ð@ÑAð	
à	ˆu�|‰|˜U 5§<¡<°Ð#4Ñ5Ð5Ñ	6ó	
ð
 Xð 
°(ó 
ð( Nó (óBó3ó*ôHr   r‚  rT  c                 ód   — t        | t        «      rt        j                  | j                  «      S | S r   )rT   r#   r(   rU   r$   )rT  s    r   Úmb_unwrap_functional_tensorr’  $  s'   € Ü�&Ô*Ô+Ü×,Ñ,¨V¯[©[Ó9Ð9Ø€Mr   )4r_  rð   rÒ   Úabcr   r   Útypingr   r   r   r   r	   r
   r   r   r(   Útorch._inductor.configr8   r9   r  Útorch.utils._pytreer  r[  r	  Útorch._Cr   rq  Ú
torch._opsr   Útorch._subclasses.meta_utilsr   Útorch.utils._python_dispatchr   r   r   r   Ú_loggingÚgetArtifactLoggerr‘   rI   r!   r-   r#   rÇ   Úcontextmanagerr/  r>  r@  rX  rf  r‚  r’  r    r   r   ú<module>rž     sû   ðã Û Û ß #ß T× TÓ Tã ß 0Ð 0ß $Ð $Ý KÝ 6Ý 6÷ó ð —n‘n×6Ñ6°xÐARÓSÐ ò"ôI �u—|‘|ô I ôXSÐ,ô Sðl ×ÑñJó ðJñ ?SÓ>Tñ Ð';ó ô>!˜3ô !ôH/4Ð1ô /4ôd!HÐ.ô !HôH+HÐ 4ô +Hð\¨¯©ô r   