Unidist Architecture

High-Level Execution View

The diagram below outlines the high-level view to the execution flow of unidist.

../_images/execution_flow.svg

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