Cross-Platform Performance Portability Using Highly Parametrized SYCL
  Kernels
  Over recent years heterogeneous systems have become more prevalent across HPC
systems, with over 100 supercomputers in the TOP500 incorporating GPUs or other
accelerators. These hardware platforms have different performance
characteristics and optimization requirements. In order to make the most of
multiple accelerators a developer has to provide implementations of their
algorithms tuned for each device. Hardware vendors provide libraries targeting
their devices specifically, which provide good performance but frequently have
different API designs, hampering portability.
  The SYCL programming model allows users to write heterogeneous programs using
completely standard C++, and so developers have access to the power of C++
templates when developing compute kernels. In this paper we show that by
writing highly parameterized kernels for matrix multiplies and convolutions we
achieve performance competitive with vendor implementations across different
architectures. Furthermore, tuning for new devices amounts to choosing the
combinations of kernel parameters that perform best on the hardware.
