Solicitar información

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.
Inversión

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

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

Próximos cursos

Categorías Relacionadas