Contemplating a Lightweight Communication Interface for Asynchronous Many-Task Systems
Jiakun Yan, Marc Snir
TL;DR
The paper addresses the mismatch between asynchronous, fine-grained communication in AMTs and traditional BSP-style MPI libraries. It proposes a next-generation C++ binding for the Lightweight Communication Interface (LCI), centered on a resources-and-operations model and the objectized flexible function idiom to provide a concise yet highly tunable API. Key contributions include a detailed interface design with devices, packet pools, matching engines, and completion objects, along with per-resource attributes, optional remote completions, and explicit progress controls, plus a C++ binding that supports flexible argument passing and reusability. Preliminary evaluation shows the C++ binding delivers competitive thread-based performance relative to the existing C binding while enabling greater flexibility, signaling potential for improved AMT performance with continued optimization and broader adoption.
Abstract
Asynchronous Many-Task Systems (AMTs) exhibit different communication patterns from traditional High-Performance Computing (HPC) applications, characterized by asynchrony, concurrency, and multithreading. Existing communication libraries usually do not support AMTs' communication requirements in the most direct and efficient ways. The Lightweight Communication Interface (LCI) is an experimental communication library aiming to push for efficient communication support for AMTs. This paper presents the design for a new LCI C++ interface and its rationale. With a new C++ \emph{objectized flexible functions} idiom, the new interface aims for the following features: (a) a concise but expressive interface for all common point-to-point communication primitives and completion mechanisms, (b) a fine-grained resource mapping scheme for library interoperation, multithreaded performance isolation, and flexibility (c) a set of optional parameters and overridable classes for users to incrementally fine-tune the runtime behavior.
