OpenACC (Para Aceleradores Abiertos) es un estándar de programación para la informática paralela desarrollada por Cray, CAPS, Nvidia y PGI. El estándar está diseñado para simplificar la programación paralela de sistemas heterogéneos de CPU/GPU.[1] Al igual que en OpenMP, OpenACC es un estándar de programación donde el programador de C, C++ o Fortran introduce directivas del compilador para acelerar el código.
En ISC'12 OpenACC fue demostrado que trabaja en aceleradores Nvidia, AMD y Intel, sin datos sobre su rendimiento.[2]
Versión 2.5 de la especificación fue publicada en octubre del 2015.[3]
El modelo de ejecución de OpenAcc permite a los usuarios tener cuatro niveles de paralelismo: thread, gang, worker y vector.[4]
Thread: Es el típico término usado en el paralelismo que es un proceso con un determinado ID y un ciclo de vida.
Gang: Los grupos de trabajadores se llaman gangs (Los programadores de CUDA reconocerán que un gang es otro nombre para un bloque de subprocesos de CUDA). Las Gangs funcionan independientemente unas de otras.[4]
Worker: Los grupos de subprocesos que pueden operar juntos en un SIMD de forma vectorial se denominan trabajadores. (Los programadores de CUDA reconocerán que un trabajador es solo el nombre de OpenAcc para una deformación).[4]
Vectors: Los vectores hacen que los subprocesos de trabajo funcionen al mismo tiempo cuando se ejecutan vectores o instrucciones SIMD.[4]
Se puede decir que es un herramienta de código para procesar tareas con dos partes: una forma secuencial por la CPU y partes que tienen funciones de cómputo intensivas, las cuales ameritan mayor procesamiento por parte de la GPU.