• DocumentCode
    3585396
  • Title

    Achieving Portability and Performance through OpenACC

  • Author

    Herdman, J.A. ; Gaudin, W.P. ; Perks, O. ; Beckingsale, D.A. ; Mallinson, A.C. ; Jarvis, S.A.

  • Author_Institution
    High Performance Comput., AWE plc, Aldermaston, UK
  • fYear
    2014
  • Firstpage
    19
  • Lastpage
    26
  • Abstract
    OpenACC is a directive-based programming model designed to allow easy access to emerging advanced architecture systems for existing production codes based on Fortran, C and C++. It also provides an approach to coding contemporary technologies without the need to learn complex vendor-specific languages, or understand the hardware at the deepest level. Portability and performance are the key features of this programming model, which are essential to productivity in real scientific applications. OpenACC support is provided by a number of vendors and is defined by an open standard. However the standard is relatively new, and the implementations are relatively immature. This paper experimentally evaluates the currently available compilers by assessing two approaches to the OpenACC programming model: the "parallel" and "kernels" constructs. The implementation of both of these construct is compared, for each vendor, showing performance differences of up to 84%. Additionally, we observe performance differences of up to 13% between the best vendor implementations. OpenACC features which appear to cause performance issues in certain compilers are identified and linked to differing default vector length clauses between vendors. These studies are carried out over a range of hardware including GPU, APU, Xeon and Xeon Phi based architectures. Finally, OpenACC performance, and productivity, are compared against the alternative native programming approaches on each targeted platform, including CUDA, OpenCL, OpenMP 4.0 and Intel Offload, in addition to MPI and OpenMP.
  • Keywords
    application program interfaces; software performance evaluation; software portability; software standards; APU; C language; C++ language; CUDA; Fortran; GPU; Intel Offload; MPI; OpenACC features; OpenACC programming model; OpenCL; OpenMP; Xeon Phi based architectures; advanced architecture systems; directive-based programming model; kernels constructs; native programming approaches; open standard; parallel constructs; portability; production codes; real scientific applications; Acceleration; Computer architecture; Graphics processing units; Hardware; Kernel; Microprocessors; Programming;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Accelerator Programming using Directives (WACCPD), 2014 First Workshop on
  • Type

    conf

  • DOI
    10.1109/WACCPD.2014.10
  • Filename
    7081674