Enabling Dynamic Selection of Implementation Variants in Component-Based Parallel Programming for Heterogeneous Systems

Suejb Memeti
2023-11-07
Abstract:Heterogeneous systems, consisting of CPUs and GPUs, offer the capability to address the demands of compute- and data-intensive applications. However, programming such systems is challenging, requiring knowledge of various parallel programming frameworks. This paper introduces COMPAR, a component-based parallel programming framework that enables the exposure and selection of multiple implementation variants of components at runtime. The framework leverages compiler directive-based language extensions to annotate the source code and generate the necessary glue code for the StarPU runtime system. COMPAR provides a unified view of implementation variants and allows for intelligent selection based on runtime context. Our evaluation demonstrates the effectiveness of COMPAR through benchmark applications. The proposed approach simplifies heterogeneous parallel programming and promotes code reuse while achieving optimal performance.
Distributed, Parallel, and Cluster Computing,Programming Languages
What problem does this paper attempt to address?
The paper aims to address the challenging issues in programming heterogeneous systems (including CPU and GPU). Specifically, the authors propose a component-based parallel programming framework called COMPAR, which allows developers to expose and select multiple implementation variants at runtime. By extending compiler directives to annotate the source code and generating the necessary glue code to integrate with the StarPU runtime system, this approach simplifies heterogeneous parallel programming, promotes code reuse, and achieves performance optimization. The main contributions of COMPAR include: - Providing language extensions that enable developers to annotate source code and expose multiple implementation variants. - Developing a precompiler that performs syntax and semantic analysis and generates the necessary glue code. - Utilizing the StarPU runtime system to intelligently select the most suitable implementation variant at runtime. - Conducting empirical evaluations of the proposed solution using various benchmark applications.