etha.tensor_bus.pair_state
==========================

.. py:module:: etha.tensor_bus.pair_state

.. autoapi-nested-parse::

   State.



Classes
-------

.. autoapisummary::

   etha.tensor_bus.pair_state.M2MMap
   etha.tensor_bus.pair_state.PairState


Module Contents
---------------

.. py:class:: M2MMap

   Bases: :py:obj:`msgspec.Struct`


   Mesh to mesh topology using M2MMap (shape-independent).

   M2MMap structure: dict[src_rank, dict[src_idx, list[tuple[dst_rank, dst_idx]]]]


   .. py:attribute:: m2m_map
      :type:  dict[int, dict[tuple, list[tuple[int, tuple]]]] | None
      :value: None



   .. py:attribute:: source_num_slicers
      :type:  list[int] | None
      :value: None



   .. py:attribute:: source_partial_reductions
      :type:  list[tuple[int, str]]
      :value: []



   .. py:attribute:: target_num_slicers
      :type:  list[int] | None
      :value: None



.. py:class:: PairState

   Bases: :py:obj:`msgspec.Struct`


   State of a registered Pair.

   PairState is created once per pair via register_pair() and represents
   the communication topology. It contains NO tensor data or execution state.
   All tensor data and execution plans are now stored in BatchState.


   .. py:attribute:: local_group
      :type:  torch.distributed.ProcessGroup


   .. py:attribute:: local_is_first
      :type:  bool


   .. py:attribute:: local_name
      :type:  str


   .. py:attribute:: local_ranks
      :type:  list[int]


   .. py:attribute:: m2m_recv
      :type:  M2MMap | None
      :value: None



   .. py:attribute:: m2m_send
      :type:  M2MMap | None
      :value: None



   .. py:attribute:: pair_group
      :type:  torch.distributed.ProcessGroup


   .. py:attribute:: pair_name
      :type:  str


   .. py:attribute:: pair_size
      :type:  int


   .. py:attribute:: remote_name
      :type:  str


   .. py:attribute:: remote_ranks
      :type:  list[int]


   .. py:attribute:: source_partial_groups
      :type:  list[tuple[torch.distributed.ProcessGroup, str]] | None
      :value: None



