Unidist Architecture
High-Level Execution View
The diagram below outlines the high-level view to the execution flow of unidist.
When calling an operation of the API provided by the framework unidist appeals to
the BackendProxy
object that dispatches the call to
the concrete backend class instance (MPIBackend
,
DaskBackend
,
RayBackend
,
PyMpBackend
or
PySeqBackend
).
These classes are childs of the Backend
interface and should override
operations declared in it. Then, the concrete backend performs passed operation and hands over the result back to
the BackendProxy
that postprocesses it if necessary and returns it to the user.
Class View
unidist performs operations using the following key base classes:
Module View
unidist modules layout is shown below. To deep dive into unidist internal implementation details just pick module you are interested in.
└───unidist ├─── api ├─── config └───core ├───backends | ├───common | │ └─── data_id | ├───dask | │ ├─── actor | │ ├─── backend | │ └─── remote_function | ├───mpi | | ├───core | │ │ ├─── async_operations | │ │ ├─── common | │ │ ├─── communication | │ │ ├─── controller | │ │ ├─── monitor | │ │ ├─── local_object_store | │ │ ├─── shared_object_store | │ │ ├─── serialization | │ │ └─── worker | │ ├─── actor | │ ├─── backend | │ └─── remote_function | ├───pymp │ | ├───core │ │ │ ├─── actor │ │ │ ├─── api │ │ │ ├─── object_store │ │ │ └─── process_manager │ │ ├─── actor │ │ ├─── backend │ │ └─── remote_function │ ├───pyseq │ | ├───core │ │ │ ├─── api │ │ │ └─── object_store │ │ ├─── actor │ │ ├─── backend │ │ └─── remote_function │ └───ray │ ├─── actor │ ├─── backend │ └─── remote_function └───base ├─── actor ├─── backend ├─── common ├─── object_ref └─── remote_function