C++ on GPUs Using OpenACC and the PGI Accelerator Compilers, webinar
The fastest supercomputers and clusters use a 64-bit host processor with one or more accelerators per node, most commonly GPUs. These compute accelerators exploit a high degree of parallelism to maximize performance and power efficiency. There are several challenges to effective and productive use of accelerators, the most important of which are managing data movement between host and device memories and exposing enough parallelism to benefit from the GPU or accelerator architecture.
The OpenACC API is a directive-based programming interface, similar to OpenMP, that allows a programmer to maintain a single source program for both host and host+accelerator systems. OpenACC allows the application to control data allocation and movement as well as computation placement.
There are several OpenACC implementations, which are mature and stable for C and Fortran, but C++ support has lagged, in part due to the complexities introduced with C++ classes, member functions, implicit ‘this’ pointer arguments, private data and templates. This webinar will present the latest support for C++ classes in the PGI Accelerator compilers. We will look at how to annotate classes and member functions with OpenACC directives to generate accelerated C++ programs. We will also discuss current limitations and the future directions that OpenACC is designing.