§
    M�’jÍ  ã                  ó  — d dl mZ d dlmZmZ d dlZerd dlmZ dd„Z e¦   «         r$ej	         
                    ¦   «         s ed¦  «        ‚ e¦   «         rd d	lmZmZmZmZmZmZmZmZmZmZmZ d
dgZ G d„ d
¦  «        ZdS )é    )Úannotations)ÚAnyÚTYPE_CHECKINGN)ÚTracebackTypeÚreturnÚboolc                 ó6   — t          t          j        d¦  «        S )NÚ_dist_autograd_init)ÚhasattrÚtorchÚ_C© ó    úQC:\Projects\DSCons\.venv\Lib\site-packages\torch\distributed\autograd\__init__.pyÚis_availabler      s   € Ý•5”8Ð2Ñ3Ô3Ð3r   z/Failed to initialize torch.distributed.autograd)Ú_current_contextÚ_get_debug_infoÚ_get_max_idÚ_initÚ_is_valid_contextÚ_new_contextÚ_release_contextÚ_retrieve_contextÚbackwardÚDistAutogradContextÚget_gradientsÚcontextr   c                  ó"   — e Zd ZdZdd„Zdd„ZdS )r   a!  
    Context object to wrap forward and backward passes when using
    distributed autograd. The ``context_id`` generated in the ``with``
    statement  is required to uniquely identify a distributed backward pass
    on all workers. Each worker stores metadata associated with this
    ``context_id``, which is required to correctly execute a distributed
    autograd pass.

    Example::
        >>> # xdoctest: +SKIP
        >>> import torch.distributed.autograd as dist_autograd
        >>> with dist_autograd.context() as context_id:
        >>>     t1 = torch.rand((3, 3), requires_grad=True)
        >>>     t2 = torch.rand((3, 3), requires_grad=True)
        >>>     loss = rpc.rpc_sync("worker1", torch.add, args=(t1, t2)).sum()
        >>>     dist_autograd.backward(context_id, [loss])
    r   Úintc                óZ   — t          ¦   «         | _        | j                             ¦   «         S ©N)r   Úautograd_contextÚ_context_id)Úselfs    r   Ú	__enter__zcontext.__enter__8   s#   € Ý ,¡¤ˆÔØÔ$×0Ò0Ñ2Ô2Ð2r   Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackúTracebackType | NoneÚNonec                óR   — t          | j                             ¦   «         ¦  «         d S r!   )r   r"   r#   )r$   r&   r(   r*   s       r   Ú__exit__zcontext.__exit__<   s'   € õ 	˜Ô.×:Ò:Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=r   N)r   r   )r&   r'   r(   r)   r*   r+   r   r,   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r%   r.   r   r   r   r   r   %   sF   € € € € € ðð ð$3ð 3ð 3ð 3ð>ð >ð >ð >ð >ð >r   )r   r   )Ú
__future__r   Útypingr   r   r   Útypesr   r   r   r
   ÚRuntimeErrorÚtorch._C._distributed_autogradr   r   r   r   r   r   r   r   r   r   r   Ú__all__r   r   r   r   ú<module>r9      sn  ðØ "Ð "Ð "Ð "Ð "Ð "à %Ð %Ð %Ð %Ð %Ð %Ð %Ð %à €€€ð ð $Ø#Ð#Ð#Ð#Ð#Ð#ð4ð 4ð 4ð 4ð €<�>„>ð J˜%œ(×6Ò6Ñ8Ô8ð JØ
ˆ,ÐHÑ
IÔ
IÐIà€<�>„>ð ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð �nÐ
%€ð>ð >ð >ð >ð >ñ >ô >ð >ð >ð >r   