Composing Distributed Computations Through Task and Kernel Fusion
We introduce Diffuse, a system that dynamically performs task and kernel fusion in distributed, task-based runtime systems. The key component of Diffuse is an intermediate representation of distributed computation that enables the necessary analyses for the fusion of distributed tasks to be performed in a scalable manner. We pair task fusion with a JIT compiler to fuse together the kernels within fused tasks. We show empirically that Diffuse's intermediate representation is general enough to be a target for two real-world, task-based libraries (cuPyNumeric and Legate Sparse), letting Diffuse find optimization opportunities across function and library boundaries. Diffuse accelerates unmodified applications developed by composing task-based libraries by 1.86x on average (geo-mean), and by between 0.93x--10.7x on up to 128 GPUs. Diffuse also finds optimization opportunities missed by the original application developers, enabling high-level Python programs to match or exceed the performance of an explicitly parallel MPI library.
Authors
- Michael Garland (ORCID: https://orcid.org/0000-0001-6093-7602)
- Fredrik Kjølstad (ORCID: https://orcid.org/0000-0002-2267-903X)
- Rohan Yadav (ORCID: https://orcid.org/0000-0003-0746-066X)
- Shiv Sundram (ORCID: https://orcid.org/0000-0001-5228-1295)
- Michael Bauer (ORCID: https://orcid.org/0000-0001-8928-3032)
- Alex Aiken (ORCID: https://orcid.org/0000-0002-3723-9555)
- Wonchan Lee (ORCID: https://orcid.org/0000-0001-8364-5784)
Institutions
- Nvidia (United States) (US)
- Stanford University (US)
Publication Details
- Published
- 2025-02-06
- DOI
- https://doi.org/10.1145/3669940.3707216
- Primary Topic
- Parallel Computing and Optimization Techniques
- Type
- article
- Field-Weighted Citation Impact
- 0.00