Managing Explicit Communications Within a Sequential Task Flow Paradigm
Résumé
Task-based runtime systems that follow the Sequential Task Flow (STF) paradigm rely on reconstructing a dependency graph from a sequential description of tasks. In the StarPU framework, which targets distributed memory systems, each MPI process inserts tasks sequentially, specifying how they access data (read, write, or read/write). From this description, StarPU infers the global Directed Acyclic Graph (DAG) of tasks and automatically determines the required inter-process communications. While this model offers simplicity and portability, it provides programmers with limited control over communication placement and behavior, sometimes at the expense of performance. In this work, we introduce starpu_mpi_data_cpy, a new routine that enables programmers to explicitly insert data transfers into the DAG. By specifying source and destination data handles on the relevant processes, applications can receive data directly in-place, thus avoiding the additional memory allocations normally introduced by implicit STF communications. This mechanism provides an effective way to improve efficiency in communication-intensive regions, while still being integrated into the task-based execution model. However, explicitly inserting communications disrupts the pure STF flow and risks introducing subtle anti-dependencies. We detail the mechanisms StarPU implements to reconcile these explicit operations with the inferred DAG, ensuring correctness despite the asynchronous nature of execution. We then evaluate the benefits of this approach on representative distributed workloads, showing that the additional control enabled by starpu_mpi_data_cpy can translate into substantial performance improvements when used judiciously.
| Origine | Fichiers produits par l'(les) auteur(s) |
|---|---|
| licence |
