-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
Description
At the moment, each Op is passed a datum and one or more keys to broadcast along with the data. However, the new ttg::broadcast allows broadcasting to multiple output terminals, resulting in Ops connected to each output terminal broadcasting individually. In POTRF, that means that we're sending the same data up to three times (from TRSM to SYRK and to two instances of GEMM).
I propose a new entity that sits on top of the output terminals and broadcasts the data first to each relevant process and from there to each Op. That requires the following additions:
- Output terminals have to provide key-process-mapping and the op_id from the Op to the broadcast entity (extension to interface between
ttg::Outand the Op). - Backends that support distributed execution have to expose either a broadcasting capability (could use PaRSEC's broadcast API for that) with callbacks back into the broadcast entity at the targets or an AM layer to implement broadcasts manually.
- This can be made optional such that at compile-time we decide whether to use the centralized broadcast or not, depending on whether the backend provides what we need. If not, we fall back to what we have today.