El Diplomado en Paralelización con CUDA/OpenMP y Profiling se centra en el desarrollo de habilidades avanzadas en programación paralela, utilizando las tecnologías CUDA y OpenMP para optimizar el rendimiento de aplicaciones en hardware heterogéneo. El diplomado incluye el estudio del análisis de rendimiento (profiling) y la optimización de código para la aceleración en GPUs y CPUs multicore, abarcando desde la implementación de algoritmos paralelos hasta la depuración de código y la aplicación en cómputo de alto rendimiento (HPC). Se orienta a la aplicación práctica en áreas como simulaciones numéricas, procesamiento de datos y aprendizaje automático.
El programa proporciona experiencia práctica con herramientas de profiling y debugging, incluyendo el uso de NVIDIA Nsight y otras herramientas de optimización, preparándote para roles profesionales como desarrolladores de software paralelo, ingenieros de HPC, analistas de rendimiento y científicos de datos, fortaleciendo la empleabilidad en la industria tecnológica y de investigación.
Palabras clave objetivo (naturales en el texto): CUDA, OpenMP, programación paralela, profiling, GPUs, CPUs multicore, optimización, cómputo de alto rendimiento, HPC, desarrollo de software paralelo.
1.695 €
2. Optimización Avanzada de Código: CUDA/OpenMP y Profiling para Alto Rendimiento
Aprenderás a integrar todo el proceso de desarrollo de producto desde la concepción del modelo hasta su validación final, aplicando metodologías centradas en el usuario. Desarrollarás competencias en diseño paramétrico, ergonomía, simulación, materiales sostenibles, visualización 3D y gestión de manufactura, garantizando soluciones eficientes, seguras y alineadas con los estándares industriales actuales.
4. Implementación Experta de CUDA/OpenMP y Profiling para la Paralelización Efectiva
Aprenderás a integrar todo el proceso de desarrollo de producto desde la concepción del modelo hasta su validación final, aplicando metodologías centradas en el usuario. Desarrollarás competencias en diseño paramétrico, ergonomía, simulación, materiales sostenibles, visualización 3D y gestión de manufactura, garantizando soluciones eficientes, seguras y alineadas con los estándares industriales actuales.
Requisitos sugeridos: Se recomienda poseer conocimientos previos en áreas como aerodinámica, sistemas de control y análisis de estructuras. Se requiere un nivel de competencia lingüística ES/EN B2+/C1. Ofrecemos programas de apoyo (bridging tracks) para aquellos que necesiten reforzar conocimientos previos.
1.1 Introducción a la Arquitectura CUDA y OpenMP
1.2 Conceptos básicos de la programación paralela
1.3 Configuración del entorno de desarrollo CUDA y OpenMP
1.4 Introducción al Profiling: herramientas y metodologías
1.5 Primeros pasos en la creación de kernels CUDA
1.6 Directivas OpenMP: paralelización de bucles y secciones
1.7 Medición y análisis del rendimiento inicial
1.8 Identificación de cuellos de botella en el código
1.9 Estrategias básicas de optimización
1.10 Estudio de casos y ejemplos prácticos
2.2 Introducción a la arquitectura CUDA y OpenMP
2.2 Fundamentos de la programación paralela
2.3 Configuración del entorno de desarrollo
2.4 Primeros programas CUDA y OpenMP: “Hola Mundo”
2.5 Conceptos clave: hilos, bloques, grillas y directivas
2.6 Comparación de CUDA y OpenMP: fortalezas y debilidades
2.7 Estructura de un programa paralelo en CUDA y OpenMP
2.8 Tipos de datos y memoria en CUDA
2.9 Directivas de paralelismo y sincronización en OpenMP
2.20 Ejemplos prácticos y ejercicios básicos
2.2 Introducción al Profiling y su importancia
2.2 Herramientas de Profiling para CUDA y OpenMP (Nsight, gprof)
2.3 Interpretación de resultados de Profiling: métricas clave
2.4 Identificación de cuellos de botella en el código
2.5 Análisis de rendimiento de la memoria en CUDA
2.6 Optimización de transferencias de datos entre CPU y GPU
2.7 Técnicas de reducción de latencia y optimización del kernel
2.8 Estrategias para mejorar el uso de la memoria compartida
2.9 Casos de estudio: análisis y optimización de código
2.20 Ejercicios prácticos de Profiling y optimización
3.2 Modelos de memoria en CUDA y OpenMP
3.2 Optimización de la gestión de memoria en CUDA
3.3 Estrategias de paralelización: descomposición de problemas
3.4 Técnicas de optimización de kernel: coalescing, warp size
3.5 Sincronización eficiente en CUDA: barreras, atomics
3.6 Optimización de bucles y directivas en OpenMP
3.7 Diseño de algoritmos paralelos: divide y vencerás
3.8 Optimización de la comunicación entre hilos
3.9 Casos de estudio avanzados: aplicaciones reales
3.20 Evaluación del rendimiento y ajuste fino
4.2 Diseño e implementación de kernels CUDA eficientes
4.2 Optimización de la gestión de memoria global, compartida y constante
4.3 Implementación de técnicas de coalescing y global memory access patterns
4.4 Desarrollo de algoritmos paralelos complejos
4.5 Implementación de estructuras de datos paralelas
4.6 Integración de CUDA y OpenMP en aplicaciones existentes
4.7 Optimización de la comunicación entre CPU y GPU
4.8 Estrategias para la gestión de errores en CUDA
4.9 Desarrollo de aplicaciones con múltiples GPUs
4.20 Proyectos prácticos: implementación de aplicaciones reales
5.2 Métricas de rendimiento en CUDA y OpenMP: FLOPS, Throughput, Latencia
5.2 Análisis del rendimiento de la memoria: bandwidth, cache hits
5.3 Identificación de cuellos de botella: memory bound vs compute bound
5.4 Uso de herramientas de análisis de rendimiento (NVIDIA Visual Profiler)
5.5 Análisis del impacto de la sincronización en el rendimiento
5.6 Técnicas para medir el rendimiento en OpenMP
5.7 Optimización del rendimiento en aplicaciones multi-hilo
5.8 Casos de estudio: análisis de rendimiento de aplicaciones complejas
5.9 Estrategias para la evaluación comparativa de rendimiento
5.20 Informes de rendimiento y documentación
6.2 Integración del Profiling en el flujo de desarrollo
6.2 Uso de herramientas de Profiling para CUDA y OpenMP
6.3 Optimización basada en el análisis del Profiling
6.4 Estrategias para la optimización del código
6.5 Diseño de proyectos CUDA y OpenMP
6.6 Desarrollo de proyectos prácticos: implementación de algoritmos
6.7 Refactorización y optimización de código existente
6.8 Optimización de algoritmos paralelos
6.9 Evaluación de rendimiento y ajuste fino del código
6.20 Presentación de proyectos y resultados
7.2 Optimización del código CUDA/OpenMP
7.2 Implementación de técnicas de optimización avanzadas
7.3 Análisis de rendimiento en CUDA/OpenMP
7.4 Diseño de aplicaciones paralelas eficientes
7.5 Gestión de memoria y acceso
7.6 Sincronización y comunicación
7.7 Resolución de cuellos de botella
7.8 Implementación de algoritmos paralelos complejos
7.9 Integración con otras bibliotecas
7.20 Mejores prácticas y ejemplos prácticos
9.2 Metodologías de análisis de rendimiento
9.2 Métricas de rendimiento en CUDA y OpenMP
9.3 Identificación de cuellos de botella
9.4 Optimización de la gestión de memoria
9.5 Optimización de kernels y directivas
9.6 Optimización de la comunicación y sincronización
9.7 Análisis de casos de estudio
9.8 Técnicas de optimización de código
9.9 Evaluación y mejora continua del rendimiento
9.20 Documentación y reporte de resultados
3.3 Conceptos Fundamentales de CUDA/OpenMP
3.2 Arquitectura de Hardware y Paralelización
3.3 Introducción al Profiling: Herramientas y Técnicas
3.4 Estrategias de Optimización para CUDA
3.5 Estrategias de Optimización para OpenMP
3.6 Análisis de Rendimiento y Cuellos de Botella
3.7 Técnicas Avanzadas de Optimización de Memoria
3.8 Optimización de Algoritmos en Paralelo
3.9 Caso de Estudio: Optimización de un Proyecto Real
3.30 Herramientas y Metodologías para el Desarrollo de Alto Rendimiento
4.4 Introducción a la Implementación de CUDA/OpenMP
4.2 Fundamentos de CUDA y OpenMP: Revisión y repaso
4.3 Diseño de Algoritmos Paralelos: Estrategias y patrones
4.4 Implementación de CUDA: Kernels, memoria y gestión
4.5 Implementación de OpenMP: Directivas y regiones paralelas
4.6 Profiling y análisis de rendimiento: Herramientas y métricas
4.7 Optimización de código CUDA: Técnicas avanzadas
4.8 Optimización de código OpenMP: Ajustes y mejoras
4.9 Integración CUDA/OpenMP: Flujos de trabajo híbridos
4.40 Estudios de caso: Implementación y optimización de proyectos reales
6.5 Introducción al Profiling en CUDA/OpenMP
6.5 Herramientas de Profiling: NSight, Perf, gprof
6.3 Métricas Clave de Rendimiento: Latencia, Throughput, Ocupación
6.4 Identificación de Cuellos de Botella en CUDA
6.5 Identificación de Cuellos de Botella en OpenMP
6.6 Análisis de Rendimiento en Kernels CUDA
6.7 Análisis de Rendimiento en Regiones OpenMP
6.8 Optimización Basada en el Profiling: Estrategias
6.9 Diseño de Experimentos para la Optimización
6.50 Reporte y Documentación del Análisis de Rendimiento
6.6 Introducción a CUDA/OpenMP y Conceptos de Paralelización
6.2 Configuración del Entorno de Desarrollo para CUDA/OpenMP
6.3 Fundamentos de CUDA: Kernels, Hilos y Bloques
6.4 Fundamentos de OpenMP: Directivas de Paralelización
6.5 Profiling con CUDA: Herramientas y Técnicas
6.6 Profiling con OpenMP: Análisis de Rendimiento
6.7 Optimización del Rendimiento en CUDA: Memoria y Acceso
6.8 Optimización del Rendimiento en OpenMP: Sincronización
6.9 Implementación de un Proyecto Paralelizado con CUDA
6.60 Implementación de un Proyecto Paralelizado con OpenMP
7.7 Introducción al Profiling en CUDA/OpenMP: Herramientas y Metodologías
7.2 Identificación de Cuellos de Botella: Análisis de Rendimiento
7.3 Mediciones de Tiempo y Recursos: Técnicas Avanzadas
7.4 Interpretación de Resultados: Optimización Basada en Datos
7.7 Optimización de Memoria en CUDA: Impacto en el Rendimiento
7.6 Optimización de Hilos y Bloques en CUDA
7.7 Directivas de OpenMP: Análisis y Optimización
7.8 Diseño Paralelo y Escalabilidad: Estrategias Clave
7.9 Caso de Estudio: Análisis y Optimización de Proyectos Reales
7.70 Mejores Prácticas y Conclusiones
8.8 Introducción a CUDA y OpenMP: Conceptos Fundamentales
8.8 Arquitectura de Hardware para Paralelización: CPU y GPU
8.3 Modelos de Programación Paralela: CUDA y OpenMP
8.4 Profiling: Herramientas y Técnicas para el Análisis de Rendimiento
8.5 Optimización de Código: Estrategias y Mejores Prácticas
8.6 Análisis de Rendimiento: Identificación de Cuellos de Botella
8.7 Implementación de CUDA: Hilos, Bloques y Kernels
8.8 Implementación de OpenMP: Directivas y Regiones Paralelas
8.8 Optimización Avanzada: Memoria, Comunicación y Sincronización
8.80 Estudio de Casos: Aplicaciones Reales y Proyectos de Ejemplo
“`html
“`
“`html
“`
Consulta “Calendario & convocatorias”, “Becas & ayudas” y “Tasas & financiación” en el mega-menú de SEIUM
Nuestro equipo está listo para ayudarte. Contáctanos y te responderemos lo antes posible.