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 la programación con GPU?
- ¿Por qué optar por la programación en este tipo de unidades gráficas?
- Desafíos y aspectos críticos que hay que tener presentes al utilizarlas.
- Los principales marcos de trabajo e instrumentos disponibles para el desarrollo de aplicaciones GPU.
- Criterios para elegir adecuadamente el marco y herramientas según cada necesidad concreta.
OpenCL
- Descripción general de OpenCL como plataforma multiplataforma.
- Ventajas e inconvenientes más relevantes de utilizarlo.
- Paso a paso para configurar el entorno adecuado al desarrollo con este sistema.
- Ejemplo práctico: creación de un programa mínimo que realice la suma de vectores mediante OpenCL.
- Uso exhaustivo de su API para consultar datos del hardware, administrar memoria local e intermedia, trasvasar información y coordinar el inicio y finalización de procesos en paralelo.
- Aprendizaje básico del lenguaje OpenCL C, necesario para escribir kernels que se ejecuten sobre las unidades gráficas y gestionen eficientemente los datos.
- Introducción a sus funciones predefinidas, variables típicas y librerías, útiles para simplificar diversos procesos habituales.
- Métodos recomendados para aplicar espacios de memoria como global o local con el propósito de maximizar la eficacia en transferencias de datos.
- Descripción y aplicación del modelo de ejecución basado en work-items, grupos de trabajo y rangos ND que permiten controlar el paralelismo.
- Técnicas para depurar código y verificar resultados mediante herramientas especializadas como CodeXL.
- Estrategias fundamentales para optimizar cualquier programa usando OpenCL, entre ellas la agrupación de accesos a memoria, el almacenamiento en caché o el prefetching.
CUDA
- Puntos básicos sobre CUDA como plataforma propietaria orientada estrictamente a hardware NVIDIA.
- Ventajas e inconvenientes típicos de su empleo en proyectos informáticos.
- Cómo establecer y configurar un entorno desarrollista propicio para trabajar con CUDA.
- Ejemplo claro: cómo generar programas simples que realicen la suma de vectores utilizando esta plataforma.
- Aplicación práctica de su API específica, permitiendo obtener detalles del hardware instalado, gestionar dinámicamente memoria local e intermediaria, intercambiar información y controlar la ejecución simultánea de múltiples procesos.
- Introducción al lenguaje CUDA C/C++, necesario para desarrollar kernels que operan directamente sobre hardware NVIDIA manipulando datos con total libertad.
- Presentación y manejo adecuado de sus funciones predefinidas, variables útiles y librerías especiales destinadas a facilitar el trabajo del programador.
- Técnicas recomendadas para emplear espacios de memoria como global o compartida con el fin de mejorar sustancialmente la comunicación de datos entre host y dispositivo gráfico.
- Explicación detallada del modelo de ejecución basado en hilos, bloques y grids para una gestión óptima del paralelismo dentro de los programas.
- Métodos avanzados para analizar y diagnosticar posibles errores mediante herramientas como CUDA-GDB, CUDA-MEMCHECK o NVIDIA Nsight.
- Principios clave para optimizar cualquier aplicación basada en esta tecnología: agrupación de accesos a memoria, prefetching u otros métodos probados.
ROCm
- Bases fundamentales sobre ROCm como plataforma abierta desarrollada por AMD para hardware de este fabricante.
- Principales ventajas e inconvenientes del uso de dicho sistema en el desarrollo software.
- Cómo configurar correctamente un entorno de desarrollo orientado a ROCm y sus dependencias esenciales.
- Ejemplo básico ilustrativo: creación de programas mínimos que realicen la suma vectorial aprovechando ROCm.
- Empleo integral de su API específica para gestionar dinámicamente información del hardware, memoria o datos, controlando eficientemente la transmisión de operaciones hacia el dispositivo y coordinando procesos en paralelo.
- Introducción al lenguaje ROCm C/C++ destinado a desarrollar kernels capaces de manipular datos sobre hardware AMD.
- Explicación acerca de funciones básicas, variables predefinidas y librerías propias que facilitan diversos cálculos y operaciones frecuentes.
- Técnicas adecuadas para utilizar espacios de memoria global o local con el objetivo de optimizar eficazmente las comunicaciones entre host y hardware gráfico.
- Descripción minuciosa del modelo de ejecución característico basado en hilos, bloques y grids que permite una distribución óptima de tareas en paralelo.
- Métodos recomendados para depurar código o probarlo mediante instrumentos específicos como ROCm Debugger o ROCm Profiler.
- Procedimientos válidos y comprobados para optimizar los programas, usando técnicas similares a la agrupación de accesos a memoria, el prefetching u otros procedimientos reconocidos.
HIP
- Definición elemental sobre HIP como interfaz cómoda y eficiente para facilitar la portabilidad entre código C/C++ orientado a CUDA e implementaciones compatibles con AMD ROCm.
- Puntos fuertes e inconvenientes que su uso aporta al desarrollo de software.
- Procedimientos necesarios para preparar un entorno adecuado al programar usando esta interfaz.
- Ejemplo práctico claro: generación rápida de programas básicos que realicen la suma vectorial combinando técnicas propias tanto de CUDA como ROCm.
- Utilización del lenguaje HIP para diseñar kernels eficientes, permitiendo manipular datos directamente en el hardware gráfico sin complejidades innecesarias.
- Métodos para aprovechar funciones predefinidas, variables útiles y librerías propias, facilitando así cálculos y operaciones diversas de forma más ágil.
- Aplicación correcta de espacios de memoria global o compartida que favorecen un intercambio óptimo de información entre host y hardware gráfico.
- Explicación práctica del modelo de ejecución característico basado en hilos, bloques y grids para una distribución justa y eficaz de tareas paralelas.
- Técnicas adecuadas para depurar código o comprobar su comportamiento usando herramientas similares a ROCm Debugger o ROCm Profiler.
- Procedimientos validados para optimizar programas basados en HIP: agrupación de accesos a memoria, almacenamiento en caché u otros métodos eficaces.
Comparativa
- Criterios específicos para contrastar entre sí las capacidades técnicas, el rendimiento real y la compatibilidad de OpenCL, CUDA, ROCm e HIP.
- Formas adecuadas para valorar objetivamente programas GPU a través de métricas precisas o pruebas estandarizadas.
- Pautas útiles y consejos valiosos que facilitan un desarrollo más exitoso con cualquier plataforma elegida.
- Análisis generales sobre tendencias actuales e inminentes en el campo del procesamiento gráfico así como los desafíos pendientes de abordar en futuras implementaciones.
Resumen final y pasos próximos a seguir
Requerimientos
- Conocimientos básicos del lenguaje C/C++ y comprensión de los principios básicos de la programación paralela
- Dominio elemental sobre arquitectura informática y jerarquía de memorias
- Experiencia previa en el uso de herramientas de línea de comandos así como editores de código fuente
Público objetivo
- Desarrolladores que deseen aprender los fundamentos de la programación con GPU y conocer los marcos de trabajo clave para su desarrollo.
- Programadores interesados en crear código portátil y escalable capaz de ejecutarse en diversas plataformas y dispositivos.
- Técnicos que quieran explorar a fondo las ventajas, inconvenientes y estrategias óptimas para optimizar aplicaciones basadas en GPU.
21 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 4350 € + IVA*
Contáctenos para obtener un presupuesto exacto y conocer nuestras promociones actuales