.. Copyright (C) 2021-2023 Modin authors SPDX-License-Identifier: Apache-2.0 Unidist Architecture """""""""""""""""""" High-Level Execution View ========================= The diagram below outlines the high-level view to the execution flow of unidist. .. image:: /img/execution_flow.svg :align: center .. toctree:: :hidden: /flow/unidist/api When calling an operation of the :doc:`API ` provided by the framework unidist appeals to the :py:class:`~unidist.core.base.backend.BackendProxy` object that dispatches the call to the concrete backend class instance (:py:class:`~unidist.core.backends.mpi.backend.MPIBackend`, :py:class:`~unidist.core.backends.dask.backend.DaskBackend`, :py:class:`~unidist.core.backends.ray.backend.RayBackend`, :py:class:`~unidist.core.backends.pymp.backend.PyMpBackend` or :py:class:`~unidist.core.backends.pyseq.backend.PySeqBackend`). These classes are childs of the :py:class:`~unidist.core.base.backend.Backend` interface and should override operations declared in it. Then, the concrete backend performs passed operation and hands over the result back to the :py:class:`~unidist.core.base.backend.BackendProxy` that postprocesses it if necessary and returns it to the user. Class View ========== unidist performs operations using the following key base classes: * :py:class:`~unidist.core.base.backend.BackendProxy` * :py:class:`~unidist.core.base.remote_function.RemoteFunction` * :py:class:`~unidist.core.base.actor.ActorClass` * :py:class:`~unidist.core.base.actor.Actor` * :py:class:`~unidist.core.base.actor.ActorMethod` * :py:class:`~unidist.core.base.object_ref.ObjectRef` Module View =========== unidist modules layout is shown below. To deep dive into unidist internal implementation details just pick module you are interested in. .. parsed-literal:: └───unidist ├─── :doc:`api ` ├─── :doc:`config ` └───core ├───backends | ├───common | │ └─── :doc:`data_id ` | ├───dask | │ ├─── :doc:`actor ` | │ ├─── :doc:`backend ` | │ └─── :doc:`remote_function ` | ├───mpi | | ├───core | │ │ ├─── :doc:`async_operations ` | │ │ ├─── :doc:`common ` | │ │ ├─── :doc:`communication ` | │ │ ├─── :doc:`controller ` | │ │ ├─── :doc:`monitor ` | │ │ ├─── :doc:`local_object_store ` | │ │ ├─── :doc:`shared_object_store ` | │ │ ├─── :doc:`serialization ` | │ │ └─── :doc:`worker ` | │ ├─── :doc:`actor ` | │ ├─── :doc:`backend ` | │ └─── :doc:`remote_function ` | ├───pymp │ | ├───core │ │ │ ├─── :doc:`actor ` │ │ │ ├─── :doc:`api ` │ │ │ ├─── :doc:`object_store ` │ │ │ └─── :doc:`process_manager ` │ │ ├─── :doc:`actor ` │ │ ├─── :doc:`backend ` │ │ └─── :doc:`remote_function ` │ ├───pyseq │ | ├───core │ │ │ ├─── :doc:`api ` │ │ │ └─── :doc:`object_store ` │ │ ├─── :doc:`actor ` │ │ ├─── :doc:`backend ` │ │ └─── :doc:`remote_function ` │ └───ray │ ├─── :doc:`actor ` │ ├─── :doc:`backend ` │ └─── :doc:`remote_function ` └───base ├─── :doc:`actor ` ├─── :doc:`backend ` ├─── :doc:`common ` ├─── :doc:`object_ref ` └─── :doc:`remote_function `