  Hardware heterogeneity is here to stay for high-performance computing.
Large-scale systems are currently equipped with multiple GPU accelerators per
compute node and are expected to incorporate more specialized hardware in the
future. This shift in the computing ecosystem offers many opportunities for
performance improvement; however, it also increases the complexity of
programming for such architectures. This work introduces a runtime framework
that enables effortless programming for heterogeneous systems while efficiently
utilizing hardware resources. The framework is integrated within a distributed
and scalable runtime system to facilitate performance portability across
heterogeneous nodes. Along with the design, this paper describes the
implementation and optimizations performed, achieving up to 300% improvement in
a shared memory benchmark and up to 10 times in distributed device
communication. Preliminary results indicate that our software incurs low
overhead and achieves 40% improvement in a distributed Jacobi proxy application
while hiding the idiosyncrasies of the hardware.
