¿Qué es OpenCL?
El estándar OpenCL para la programación paralela ha sido desarrollado por el consorcio industrial Khronos Group para hacer frente a los retos de la programación de plataformas informáticas multinúcleo y heterogéneas. La especificación OpenCL define un único modelo de programación y un conjunto de abstracciones a nivel de sistema que son compatibles con todas las plataformas de hardware que se ajustan al estándar. Esto significa que un ingeniero de software puede aprender un único modelo de programación y utilizarlo directamente en dispositivos de múltiples proveedores.
OpenCL proporciona un lenguaje de programación y una API de tiempo de ejecución para apoyar el desarrollo de software cercano al metal que sea eficiente y portátil. Además, OpenCL proporciona abstracciones de hardware de bajo nivel que permiten a las implementaciones de OpenCL exponer muchos detalles del hardware subyacente. Estas abstracciones de bajo nivel son los modelos de plataforma, memoria y ejecuciones descritos en la especificación de OpenCL. Entender cómo estos conceptos se traducen en implementaciones físicas en una FPGA es necesario para la optimización de aplicaciones.
Este capítulo proporciona una revisión del modelo de plataforma OpenCL y sus extensiones a los dispositivos FPGA. Explica el mapeo de la plataforma OpenCL y el modelo de memoria en una implementación generada por SDAccel. Este capítulo también mencionará cómo se pueden aprovechar las FPGAs contemporáneas para lograr altos niveles de rendimiento utilizando la herramienta SDAccel de Xilinx®.