§
    ž²ÅjÂ  ã                   ó  — d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d d	lmZ  G d
„ de¦  «        Z e¦   «         Ze                     e¦  «        d„ ¦   «         Ze                     e¦  «        d„ ¦   «         Zej        d„ ¦   «         Z e                     ej        ¦  «         e	ed¬¦  «        ¦  «         e                     ej        ¦  «        d„ ¦   «         Zd„ Zed„ ¦   «         Zd„ Z dS )é    )ÚcontextmanagerN)ÚDispatchKey©Ústrict_mode)Úautograd_not_implemented)ÚHigherOrderOperator)ÚFakeTensorMode)ÚProxyTorchDispatchModeÚtrack_tensor_tree)Ú_pytreec                   ó(   ‡ — e Zd Zˆ fd„Zˆ fd„Zˆ xZS )ÚExportTracepointc                 óJ   •— t          ¦   «                              d¦  «         d S )NÚ_export_tracepoint)ÚsuperÚ__init__)ÚselfÚ	__class__s    €úGC:\Projects\Historical\venv\Lib\site-packages\torch/_export/wrappers.pyr   zExportTracepoint.__init__   s"   ø€ Ý‰Œ×ÒÐ-Ñ.Ô.Ð.Ð.Ð.ó    c                 ó6   •—  t          ¦   «         j        |i |¤ŽS ©N)r   Ú__call__)r   ÚargsÚkwargsr   s      €r   r   zExportTracepoint.__call__   s   ø€ Ø�u‰wŒwÔ Ð0¨Ð0Ð0Ð0r   )Ú__name__Ú
__module__Ú__qualname__r   r   Ú__classcell__)r   s   @r   r   r      sQ   ø€ € € € € ð/ð /ð /ð /ð /ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1r   r   c                 ó¾   — t          j        | j        j        ||f¦  «        \  }}| j                             dt
          ||¦  «        }t          ||d | j        ¬¦  «        S )NÚcall_function)ÚconstantÚtracer)ÚpytreeÚtree_mapr#   Úunwrap_proxyÚcreate_proxyr   r   )Úmoder   r   Úp_argsÚp_kwargsÚproxys         r   Úexport_tracepoint_dispatch_moder,      s]   € å” t¤{Ô'?À$ÈÀÑPÔPÑ€FˆHØŒK×$Ò$ØÕ+¨V°Xñô €Eõ ˜T 5°4ÀÄÐLÑLÔLÐLr   c                 ó>   — | 5  |cd d d ¦  «         S # 1 swxY w Y   d S r   © )r(   r   r   s      r   Ú"export_tracepoint_fake_tensor_moder/   #   so   € à	ð ð Øðð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð ð s   ƒ’™c                 óô   — |                       |¦  «        }|                       |¦  «        }|                      ¦   «         5  t          |i |¤Ž}|                      |¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r   )Úunwrap_tensorsÚredispatch_to_nextr   Úwrap_tensors)Úctxr   r   Úunwrapped_argsÚunwrapped_kwargsÚouts         r   Úexport_tracepoint_functionalr8   )   sÃ   € à×'Ò'¨Ñ-Ô-€NØ×)Ò)¨&Ñ1Ô1Ðà	×	Ò	Ñ	!Ô	!ð %ð %Ý  .ÐEÐ4DÐEÐEˆØ×Ò Ñ$Ô$ð%ð %ð %ð %ñ %ô %ð %ð %ð %ð %ð %ð %øøøð %ð %ð %ð %ð %ð %s   ¿!A-Á-A1Á4A1T)Údeferred_errorc                  ó   — | S r   r.   )r   r   s     r   Úexport_tracepoint_cpur;   8   s   € à€Kr   c                 ó‚  ‡‡‡	‡
— t          | t          j        j        ¦  «        sJ ‚‰dk    sJ ‚| }‰                     d¦  «        D ]4}t          ||¦  «        st          d‰› �¦  «        ‚t          ||¦  «        }Œ5ˆfd„Š
d„ Š	ˆ	ˆfd„}ˆ	ˆˆ
fd„}|                     |d¬	¦  «        }| 	                    |d¬	¦  «        }||fS )
NÚ ú.z Couldn't find submodule at path c                 óp   •— | ‰v r(‰|          d         |k    sJ ‚‰|          d         |k    sJ ‚||dœ‰| <   d S )NÚin_specÚout_spec)r@   rA   r.   )Úpathr@   rA   Úmodule_call_specss      €r   Úupdate_module_call_signaturesz6_wrap_submodule.<locals>.update_module_call_signaturesF   s^   ø€ ØÐ$Ð$Ð$Ø$ TÔ*¨9Ô5¸Ò@Ð@Ð@Ð@Ø$ TÔ*¨:Ô6¸(ÒBÐBÐBÐBØ.5À8Ð"LÐ"LÐ˜$ÑÐÐr   c           	      óž   — | D ]I}t          |t          j        t          t          t
          t          f¦  «        s|�t          d|› �¦  «        ‚ŒJd S )NzGOnly Tensors or scalars are supported as pytree flattened inputs, got: )Ú
isinstanceÚtorchÚTensorÚstrÚintÚfloatÚboolÚAssertionError)Ú	flat_argsÚas     r   Úcheck_flattenedz(_wrap_submodule.<locals>.check_flattenedL   s]   € Øð 	ð 	ˆAÝ˜q¥5¤<µµc½5Å$Ð"GÑHÔHð ÈAÈIÝ$ØaÐ^_ÐaÐañô ð øð	ð 	r   c                 óž   •— t          j        ||f¦  «        \  }} ‰|¦  «         t          |d‰dœŽ}t          j        ||¦  «        \  }}||fS )NÚmodule_call_inputs©ÚkindrB   ©r$   Útree_flattenr   Útree_unflatten)Úmoduler   r   rN   r@   rP   rB   s        €€r   Úpre_hookz!_wrap_submodule.<locals>.pre_hookS   sb   ø€ Ý#Ô0°$¸°Ñ@Ô@Ñˆ	�7Øˆ˜	Ñ"Ô"Ð"Ý&¨	Ð8LÐSWÐXÐXÐXˆ	ÝÔ,¨Y¸Ñ@Ô@‰ˆˆfØ�Vˆ|Ðr   c                 óØ   •— t          j        ||f¦  «        \  }}t          j        |¦  «        \  }} ‰|¦  «         t          |d‰	dœŽ} ‰
‰	||¦  «         t          j        ||¦  «        S )NÚmodule_call_outputsrS   rU   )rX   r   r   ÚresÚ_r@   Úflat_resrA   rP   rB   rD   s           €€€r   Ú	post_hookz"_wrap_submodule.<locals>.post_hookZ   s~   ø€ ÝÔ(¨$°¨Ñ8Ô8‰
ˆˆ7Ý#Ô0°Ñ5Ô5Ñˆ�(Øˆ˜Ñ!Ô!Ð!Ý% xÐ6KÐRVÐWÐWÐWˆØ%Ð% d¨G°XÑ>Ô>Ð>ÝÔ$ X¨xÑ8Ô8Ð8r   T)Úwith_kwargs)
rF   rG   ÚnnÚModuleÚsplitÚhasattrÚRuntimeErrorÚgetattrÚregister_forward_pre_hookÚregister_forward_hook)ÚmodrB   rC   Ú	submoduleÚnamerY   r_   Ú
pre_handleÚpost_handlerP   rD   s    ``      @@r   Ú_wrap_submodulern   =   s1  øøøø€ Ý�c�5œ8œ?Ñ+Ô+Ð+Ð+Ð+Ø�2Š:ˆ:ˆ:ˆ:Ø€IØ—
’
˜3‘”ð -ð -ˆÝ�y $Ñ'Ô'ð 	JÝÐHÀ$ÐHÐHÑIÔIÐIÝ˜I tÑ,Ô,ˆ	ˆ	ðMð Mð Mð Mð Mðð ð ðð ð ð ð ð ð9ð 9ð 9ð 9ð 9ð 9ð 9ð ×4Ò4°XÈ4Ð4ÑPÔP€JØ×1Ò1°)ÈÐ1ÑNÔN€KØ�{Ð"Ð"r   c              #   óØ   K  — g }	 |D ]&}|                      t          | ||¦  «        ¦  «         Œ'd V — |D ]}|                     ¦   «          Œd S # |D ]}|                     ¦   «          Œw xY wr   )Úextendrn   Úremove)ÚfÚpreserve_signatureÚmodule_call_signaturesÚhandlesrB   Úhandles         r   Ú_wrap_submodulesrw   g   sš   è è € à€GðØ&ð 	Mð 	MˆDØ�NŠN�?¨1¨dÐ4JÑKÔKÑLÔLÐLÐLØˆˆˆàð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOð	ð 	ø�gð 	ð 	ˆFØ�MŠM‰OŒOˆOˆOð	øøøs   †-A ÁA)c                 ó   — d„ }|| _         | S )Nc                 ó"   — t          | |¦  «        S r   r   )r   r   s     r   Úcallz'_mark_strict_experimental.<locals>.callu   s   € Ý˜4 Ñ&Ô&Ð&r   )r   )Úclsrz   s     r   Ú_mark_strict_experimentalr|   t   s   € ð'ð 'ð 'ð €C„LØ€Jr   )!Ú
contextlibr   rG   Útorch._custom_opsÚtorch._Cr   Ú#torch._higher_order_ops.strict_moder   Útorch._higher_order_ops.utilsr   Ú
torch._opsr   Útorch._subclasses.fake_tensorr	   Ú"torch.fx.experimental.proxy_tensorr
   r   Útorch.utilsr   r$   r   r   Úpy_implr,   r/   Úpy_functionalize_implr8   ÚAutogradÚCPUr;   rn   rw   r|   r.   r   r   ú<module>rŠ      s  ðà %Ð %Ð %Ð %Ð %Ð %à €€€Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø BÐ BÐ BÐ BÐ BÐ BØ *Ð *Ð *Ð *Ð *Ð *Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø XÐ XÐ XÐ XÐ XÐ XÐ XÐ XØ )Ð )Ð )Ð )Ð )Ð )ð1ð 1ð 1ð 1ð 1Ð*ñ 1ô 1ð 1ð &Ð%Ñ'Ô'Ð ð ×ÒÐ2Ñ3Ô3ðMð Mñ 4Ô3ðMð ×Ò˜NÑ+Ô+ðð ñ ,Ô+ðð
 Ô)ð%ð %ñ *Ô)ð%ð 1Ð × Ò ˜;Ô/Ñ 0Ô 0ØÐÐ/ÀÐEÑEÔEñô ð ð
 ×Ò˜KœOÑ,Ô,ðð ñ -Ô,ðð'#ð '#ð '#ðT ð	ð 	ñ „ð	ðð ð ð ð r   