International Journal of Parallel Programming

, Volume 45, Issue 2, pp 262–282

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

  • Rafael Sotomayor
  • Luis Miguel Sanchez
  • Javier Garcia Blas
  • Javier Fernandez
  • J. Daniel Garcia
Article

DOI: 10.1007/s10766-016-0425-6

Cite this article as:
Sotomayor, R., Sanchez, L.M., Garcia Blas, J. et al. Int J Parallel Prog (2017) 45: 262. doi:10.1007/s10766-016-0425-6
  • 197 Downloads

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.

Keywords

OpenCL C++ Multi-versioning Code generation 

Copyright information

© Springer Science+Business Media New York 2016

Authors and Affiliations

  • Rafael Sotomayor
    • 1
  • Luis Miguel Sanchez
    • 1
  • Javier Garcia Blas
    • 1
  • Javier Fernandez
    • 1
  • J. Daniel Garcia
    • 1
  1. 1.University Carlos III of MadridLeganesSpain

Personalised recommendations