What is the OpenACC API?

OpenACC is a directive-based HPC parallel programming model. OpenACC is designed for performance on -- and performance portability across -- many types of platforms (e.g., GPUs, many-core and multi-core). OpenACC is complementary to existing HPC programming models including OpenMP, MPI, CUDA and OpenCL.

How does the OpenACC API work?

Based on directives from the programmer -- in the form of Fortran comment statements and C/C++ pragmas -- that are ignored by other compilers, OpenACC compilers automatically map compute-intensive loops to parallel/vector execution units.  OpenACC compilers can manage data movement between CPU host memory and a separate memory on the accelerator. In addition, the OpenACC API provides the programmer with directives to override the compiler's mapping and data movement decisions when necessary.

What problem is the OpenACC API solving?

OpenACC is a high-level, performance portable programming model that helps developers to extend the performance of clustered MPI and shared-memory OpenMP-based applications to high-performance, energy-efficient acclerators running thousands or millions of lightweight threads. It defines a comprehensive set of directives for programming massively parallel systems in standard-compliant C, C++ and Fortran.

Who will the OpenACC API be important to?

Scientists interested in accelerators who can benefit from a simpler programming model.

Organizations with a significant investment in legacy production applications that have not yet been parallelized.

Which compilers support the OpenACC API today?

Compilers are shipping now from Cray and The Portland Group (PGI) with assistance from NVIDIA. We are also aware of several open source efforts that should come to fruition shortly.

How did the OpenACC specifications originate?

OpenACC was initially developed by PGI, Cray, and NVIDIA with support from CAPS entreprise, and is largely based on the PGI Accelerator programming model. Two versions of the specification have been ratified in its first three years, and the founders, along with several new member users, continue to aggressively push to refine and enhance the specification.

Is the OpenACC API only for HPC?

No. The OpenACC API is for anyone interested in a quick and straightforward approach to programming accelerators, whether they are doing science in traditional HPC or working in sectors with similar needs such as Oil and Gas, Finance and Manufactuing.

Will AMD/Intel/MS/XX support OpenACC?

We can’t speak to the rate of external adoption or participation.

Will the OpenACC API run on NVIDIA GPUs with CUDA?

Yes. Programmers may wish to develop one part of their application using directives (and call CUDA-accelerated libraries in another) while thoroughly optimizing some very computationally intense portions of their code using CUDA C or CUDA Fortran. For an example, see the Cray presentation at