x
1

OpenACC



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]

Alrededor del 2010, Los vendedores de compiladores empezaron a buscar directivas para las GPUs para simplificar la forma de programar GPU mediante el compilador. En sus inicios, OpenACC pretendía ser para todo tipo de aceleradores. Sin embargo, terminó soportando solo GPU de Nvidia.

OpenMP, que es un enfoque similar a OpenACC, tiene el objetivo de admitir todos los diferentes tipos de aceleradores. El estándar OpenACC fue lanzado en noviembre de 2011 en la conferencia Súper computación.[4]

Fue desarrollado por un grupo de compañías PGI, CAPS, NVDIA y CRAY con ideas muy similares a OpenMP. OpenACC 1.0 fue la primera versión y fue lanzada en noviembre de 2011, centrado únicamente en directivas de compilación para aceleradores, un enfoque descriptivo de la programación paralela con la portabilidad del rendimiento como una consideración primordial.[5]

Posteriormente, en 2013 aparece la versión 2.0, que brinda un mejor soporte a las estructuras de datos complejas. En los siguientes años se llega hasta la versión 2.7 (2018) que solucionan errores a versiones anteriores. Finalmente en 2019 llega la versión 3.0, en 2020 la versión 3.1 y la 3.2 en 2021, que es la más reciente.

Con el propósito de hacer las cosas más fáciles para que los programadores utilicen las ventajas de la computación paralela, NVIDIA junto a Cray Inc, The Portland Group (PGI) y CAPS Enterprise anunciaron el estándar de programación paralela denominado OpenACC.

En 1993 fue fundada por Jensen Huang, Chris Malachowsky y Curtis Priem. Para que las directivas de OpenACC se habiliten a la línea de comando del compilador, de manera predeterminada; los compiladores NVIDIA HPC paralelizarán y descargarán las regiones OpenACC a las GPU NVIDIA.

En 1972, el diseñador de ordenadores Seymour Cray, fundó Cray Research, Inc. “La tecnología Cray está diseñada para permitir que los científicos e ingenieros logren avances notables acelerando el rendimiento, mejorando la eficiencia y ampliando las capacidades de sus aplicaciones más exigentes” (NVIDIA, 2011).

Fundado en 1989, “es el principal proveedor de herramientas y compiladores paralelos de Fortran, C y C++ de alto rendimiento para estaciones de trabajo, servidores y clústeres basados en procesadores x64 de Intel y AMD, y aceleradores de GPU de NVIDIA” (NVIDIA, 2011). Los compiladores de PGI incorporan capacidades de optimización global, vectorización, canalización de software y paralelización de memoria compartida dirigidas a procesadores Intel y AMD.

Es un importante proveedor de soluciones orientadas a la migración e implementación de aplicaciones en procesadores de muchos núcleos.

Soporte de OpenACC está disponible en compiladores comerciales de PGI (desde versión 12.6), Cray, y CAPS.[2][6][7]

Para los entornos de desarrollo integrados se debe poder trabajar con C/C++ y/o Fortran, lenguajes con los que trabaja OpenACC. Los compiladores de OpenACC están diseñados y disponibles para su descarga desde múltiples proveedores y organizaciones académicas, los cuales son los siguientes.[8]

Hewlett Packard, SDK de HPC de NVIDIA y Centro Nacional de Supercomputación de Wuxi.

CCG 10.

Proyecto compilador Omni, Riken (Universidad de Tsukuba), OpenARC (Laboratorio nacional de Oak Ridge), OpenUH (Universidad de Houston, Universidad de Stony Brook) y ROSEACC (universidad de Delaware).

En una manera similar a OpenMP 3.x En sistemas homogéneos o el más antiguo OpenHMPP, el modo primario de programar en OpenACC es directivas.[9]​ Las especificaciones también incluyen una biblioteca de ejecución que define varias funciones de soporte. Para explotarlas, el usuario tendría que incluir "openacc.h" En C o "openacc_lib.h" En Fortran; y entonces llamar la función acc_init().[10]

OpenACC beneficia una amplia gama de programadores en los campos de química, biología, física, análisis de datos, tiempo y clima, inteligencia, por mencionar algunos.



Escribe un comentario o lo que quieras sobre OpenACC (directo, no tienes que registrarte)


Comentarios
(de más nuevos a más antiguos)


Aún no hay comentarios, ¡deja el primero!