  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.
