Close

Presentation

Enhancing HPX with FleCSI: Automatic Detection of Implicit Task Dependencies
DescriptionFleCSI is a compile-time-configurable programming model designed to support performance-portable parallel application development. In the programming model provided by FleCSI, tasks execute in parallel according to data dependencies specified by a directed acyclic graph. FleCSI natively supports distributed data structures and data access patterns commonly used by computational-science methods.

Without any code modifications, an application built using FleCSI can target one of three communication backends: MPI, Legion, and most recently, HPX. This paper presents the design and implementation of the HPX backend. Specifically, it shows how FleCSI's Legion-like programming model can be mapped efficiently onto HPX's semantically different programming model. The paper explains how FleCSI's task graph can be implemented in terms of HPX futures and introduces a novel optimization for minimizing the number of (costly) communicators HPX needs to create for inter-task communication. An empirical performance study quantifies the benefit of this optimization on two physics applications.