Mapple: A Domain-Specific Language for Mapping Distributed Programs
Anjiang Wei, Rohan Yadav, Hang Song, Wonchan Lee, Ke Wang, Alex Aiken
TL;DR
Mapple introduces a high-level DSL for mapping distributed task-based programs to processor hierarchies, addressing the core challenge of dimensionality mismatches between task and processor spaces. The approach centers on transformation primitives, especially decompose, to minimize inter-processor communication, with Mapple mappers translated to the Legion runtime. Empirical evaluation across nine applications shows Mapple achieves a 14× reduction in mapper code and up to 1.34× speedup over expert C++ mappers, while the decompose primitive yields up to 1.83× improvement over standard heuristics. These results demonstrate that Mapple can simplify high-performance mapper development and deliver competitive performance by balancing workload and reducing data movement in distributed environments.
Abstract
Optimizing parallel programs for distributed systems is a complex task, often requiring significant code modifications. Task-based programming systems improve modularity by separating performance decisions from application logic, but their mapping interfaces are low-level. We introduce Mapple, a high-level, declarative programming interface for mapping distributed applications. Mapple provides transformation primitives to resolve dimensionality mismatches between task and processor spaces, including a key primitive, decompose, that helps minimize communication volume. We implement Mapple on top of the Legion runtime by translating Mapple mappers into its low-level C++ interface. Across nine applications, including six matrix multiplication algorithms and three scientific computing workloads, Mapple reduces mapper code size by 14x and enables performance improvements of up to 1.34x over expert-written C++ mappers. In addition, the decompose primitive achieves up to 1.83x improvement over existing dimensionality-resolution heuristics.
