Automating task interdependencies using `DataFlowTasks.jl`
12-01, 15:25–15:55 (Europe/Amsterdam), Ernst-Curie

DataFlowTasks.jl is a Julia package dedicated to parallel programming on multi-core shared memory CPUs. From user annotations (READ, WRITE, READWRITE) on program data, DataFlowTasks.jl automatically infers dependencies between parallel tasks. Behind the scenes, the user annotations are used to automatically infer task dependencies by constructing and analyzing a directed acyclic graph based on how tasks access the underlying data. The premise is that, for certain kinds of algorithms where constant re-use of data is of paramount importance for performance, it is simpler to specify how tasks depend on data than to directly specify how tasks depend on each other (e.g. manually adding synchronization primitives such as wait, fetch, etc).


During this talk, we will discuss the main design principles of DataFlowTasks, as well as when and how DataFlowTasks can be used to effortlessly implement parallel algorithms. We will illustrate the use of DataFlowTasks to parallelize complex, real-life problems, such as:
- Computation of the longest common subsequence
- Block Cholesky factorization of dense matrix
- LU factorization of a hierarchical matrix

After a PhD with the French CEA ("Commissariat à l'Energie Atomique") and 12 years as a researcher with the R&D division of EDF ("Electricité de France"), François co-founded in 2019 TriScale innov (www.triscale-innov.com), a startup dedicated to High Performance Computing.