OpenACC is an accelerator programming standard that enables scientific and technical Fortran, C and (increasingly) C++ programmers to easily take advantage of the power of heterogeneous CPU/accelerator systems.

OpenACC allows programmers to use simple compiler directives to identify which areas of code to accelerate, without requiring modification to the underlying code itself. By identifying parallel code segments, OpenACC directives allow the compiler to do the detailed work of mapping the computation onto the accelerator.

Industry-standard directives preserve a common code base that is multi-platform and multi-vendor compatible, offering an ideal way to preserve investment in legacy applications while enabling a low-risk path to accelerated computing. 

Who is developing the OpenACC standard?

Developed by PGI, Cray, and NVIDIA, the OpenACC directives are a shared vision of how directives can simplify the programming model for accelerators, where each vendor is committed to support a common programming standard.

Organizations committed to the OpenACC standard

Principal Benefits of OpenACC

  • Portland Group (PGI), Accelerator Compiler
  • Cray Corporation, Compilation Environment
  • Allinea
  • CSCS: The Swiss National Supercomputing Center
  • Edinburgh Parallel Computing Center
  • Georgia Tech
  • University of Houston
  • Indiana University
  • Louisiana State University
  • Mentor Graphics
  • National Oceanic and Atmospheric Administration(N0AA)
  • Oak Ridge National Laboratory
  • Rogue Wave
  • Sandia National Laboratories
  • Technical University Dresden
  • Tokyo Institute of Technology
  • Simple: insert directives as hints in your code
  • Open: run the accelerated code on CPU or, GPU, APU or coprocessor
  • Powerful: tap into the power of accelerators/coprocessor within minutes

Simple example – Calculating Pi

Fortran Version

  program picalc
      implicit none
      integer, parameter :: n=1000000
      integer :: i
      real(kind=8) :: t, pi
      pi = 0.0
  !$acc parallel loop reduction(+:pi)
      do i=0, n-1
          t = (i+0.5_8)/n
          pi = pi + 4.0/(1.0 + t*t)
      end do
  !$acc end parallel loop
      print *, 'pi=', pi/n
  end program picalc

C Version

  #include <stdio.h>
  #define N 1000000

  int main(void) {
  double pi = 0.0f; long i;
  #pragma acc parallel loop reduction(+:pi)
  for (i=0; i<N; i++) {
     double t= (double)((i+0.5)/N);
     pi +=4.0/(1.0+t*t);
  return 0;

Experience OpenACC for yourself

Get thousands of cores working for you with OpenACC accelerator directives for GPGPU, multi-core, and many-core systems. OpenACC compilers are a proven way for programmers to access the massively parallel processing power of accelerators. OpenACC is open, powerful, and makes accelerator computing more accessible than ever.. Try OpenACC directives today by downloading a free 30-day trial of the PGI Accelerator compiler.

Free Trial Programs from PGI

2X in 5 Steps

Most developers who try OpenACC see results two to ten times faster, following these five key steps to program an accelerator:

  1. Evaluate and plan
  2. Add parallel directives
  3. Add data movement directives
  4. Optimize data movement
  5. Optimize parallel scheduling

Watch the videos – and look at the OpenACC resources - to learn more about OpenACC programming.

Free online course featuring OpenACC
The upcoming Coursera Heterogeneous Parallel Programming Course offered by the University of Illinois will feature programming assignment options including OpenACC. While students will learn the fundamentals of programming heterogeneous parallel systems using CUDA, the course will offer them paths to practice their knowledge using related programming interfaces such as OpenACC. “This way, students understand the low-level challenges that an OpenACCcompiler must address. Students who have such insights tend to become much more effective users of productive programming tools such as OpenACC.” - Prof. Wen-mei Hwu, the instructor of the course..

OpenACC related video presentations


OpenACC on the Web