Solicitar información

Temario del curso

Introducción

  • ¿Qué es OpenCL?
  • OpenCL frente a CUDA y SYCL
  • Resumen de las características y la arquitectura de OpenCL
  • Configuración del entorno de desarrollo

Primeros pasos

  • Creación de un nuevo proyecto OpenCL mediante Visual Studio Code
  • Exploración de la estructura y los archivos del proyecto
  • Compilación y ejecución del programa
  • Visualización de resultados mediante printf y fprintf

API de OpenCL

  • Comprensión del papel que desempeña la API de OpenCL en el programa anfitrión
  • Uso de dicha API para consultar información y capacidades del dispositivo
  • Utilización de la API para crear contextos, colas de comandos, buffers, kernels y eventos
  • Uso de la API para insertar órdenes como lectura, escritura, copia, asignación o liberación de memoria, ejecución y espera
  • Manejo de errores y excepciones mediante la API de OpenCL

OpenCL C

  • Entendimiento del papel que desempeña el lenguaje OpenCL C en los programas ejecutados por el dispositivo
  • Escritura de kernels con OpenCL C para manipular datos en el dispositivo
  • Aplicación de tipos de datos, calificadores, operadores y expresiones propias del lenguaje OpenCL C
  • Uso de funciones predefinidas en OpenCL C, como matemáticas o relacionales
  • Incorporación de extensiones y bibliotecas disponibles en OpenCL C, como atomic, image o cl_khr_fp16

Modelo de memoria en OpenCL

  • Comprensión de las diferencias entre los modelos de memoria del anfitrión y el dispositivo
  • Empleo de espacios de memoria como global, local, constant o private en OpenCL
  • Uso de objetos de memoria como buffers, imágenes y pipes en el entorno OpenCL
  • Especificación de modos de acceso a la memoria como lectura únicamente, escritura exclusiva o ambas operaciones
  • Gestión del modelo de consistencia y los mecanismos de sincronización de OpenCL respecto a la memoria

Modelo de ejecución en OpenCL

  • Entendimiento de las diferencias entre los modelos de ejecución del anfitrión y el dispositivo
  • Definición del grado de paralelismo mediante elementos de trabajo, grupos de trabajo y gamas ND en OpenCL
  • Aplicación de funciones para identificar identificadores globales o locales como get_global_id o get_local_id
  • Utilización de operaciones especializadas en grupos de trabajo, como barrier o work_group_reduce
  • Aplicación de funciones a nivel del dispositivo para obtener información como el número total de grupos o el tamaño global/local

Depuración

  • Identificación de errores y fallos comunes en programas escritos con OpenCL
  • Empleo del depurador de Visual Studio Code para inspeccionar variables, puntos de interrupción o el stack de llamadas
  • Uso de CodeXL para analizar y depurar programas en OpenCL ejecutados sobre dispositivos AMD
  • Utilización de Intel VTune con el fin de inspeccionar e identificar problemas en aplicaciones OpenCL que funcionan en plataformas Intel
  • Empleo de NVIDIA Nsight para depurar y evaluar programas OpenCL destinados a dispositivos fabricados por NVIDIA

Optimización

  • Determinación de factores que influyen en el rendimiento final de los programas OpenCL
  • Aprovechamiento de tipos vectoriales y la técnica de vectorización para mejorar la velocidad de cálculos aritméticos
  • Implementación del despliegue de bucles o tiling como forma de reducir la sobrecarga y fomentar mayor localidad de datos
  • Empleo de memoria local y funciones especializadas para disminuir el consumo de ancho de banda en accesos a memoria
  • Uso del perfilado mediante herramientas adecuadas con el fin de medir tiempos y utilización de recursos, optimizando así su uso

Resumen y pasos siguientes

Requerimientos

  • Conocimiento del lenguaje C/C++ y de los conceptos básicos de programación paralela
  • Comprensión general de la arquitectura informática y de la jerarquía de memoria
  • Experiencia previa con herramientas de línea de comandos y editores de código

Público objetivo

  • Desarrolladores que deseen aprender a utilizar OpenCL para programar dispositivos heterogéneos y aprovechar su paralelismo.
  • Programadores interesados en crear código portable y escalable capaz de ejecutarse en distintas plataformas y dispositivos.
  • Personas que deseen explorar los aspectos más profundos de la programación heterogénea y optimizar el rendimiento de sus códigos.
 28 Horas

Formación Corporativa a Medida

Soluciones de formación diseñadas exclusivamente para empresas.

  • Contenido personalizado: Adaptamos el temario y los ejercicios prácticos a los objetivos y necesidades reales del proyecto.
  • Calendario flexible: Fechas y horarios adaptados a la agenda de su equipo.
  • Modalidad: Online (en directo), In-company (en sus oficinas) o Híbrida.
Inversión

Precio por grupo privado (formación online) desde 5800 € + IVA*

Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales

Próximos cursos

Categorías Relacionadas