Automatic CPU/GPU Generation of Multi-versioned OpenCL Kernels for C++ Scientific Applications Articles uri icon

publication date

  • April 2017

start page

  • 262

end page

  • 282

issue

  • 2

volume

  • 45

International Standard Serial Number (ISSN)

  • 0885-7458

Electronic International Standard Serial Number (EISSN)

  • 1573-7640

abstract

  • Parallelism has become one of the most extended paradigms used to improve performance. However, it forces software developers to adapt applications and coding mechanisms to exploit the available computing devices. Legacy source code needs to be re-written to take advantage of multi- core and many-core computing devices. Writing parallel applications in a traditional way is hard, expensive, and time consuming. Furthermore, there is often more than one possible transformation or optimization that can be applied to a single piece of legacy code. Therefore many parallel versions of the same original sequential code need to be considered. In this paper, we describe an automatic parallel source code generation workflow (REWORK) for parallel heterogeneous platforms. REWORK automatically identifies promising kernels on legacy C++ source code and generates multiple specific versions of kernels for improving C++ applications, selecting the most adequate version based on both static source code and target platform characteristics.