Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
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.
Precio por grupo privado (formación online) desde 5800 € + IVA*
Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales