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 OpenACC?
- OpenACC frente a OpenCL, CUDA y SYCL.
- Descripción general de las características y la arquitectura de OpenACC.
- Configuración del entorno de desarrollo.
Primeros pasos
- Creación de un proyecto en Visual Studio Code con OpenACC.
- Exploración de la estructura del proyecto y sus archivos.
- Compilación y ejecución del programa.
- Muestra de salida mediante printf y fprintf.
Directivas y cláusulas de OpenACC
- Comprensión de las directivas y cláusulas de OpenACC.
- Uso de directivas parallel para crear regiones paralelas.
- Uso de directivas kernels para paralelismo administrado por el compilador.
- Uso de directivas loop para paralelizar bucles.
- Gestión del movimiento de datos con directivas data.
- Sincronización de datos con directivas update.
- Mejora de la reutilización de datos con directivas cache.
- Creación de funciones de dispositivo con directivas routine.
- Sincronización de eventos con directivas wait.
API de OpenACC
- Comprensión del papel de la API de OpenACC.
- Consulta de información y capacidades del dispositivo.
- Configuración del número y tipo de dispositivo.
- Gestión de errores y excepciones.
- Creación y sincronización de eventos.
Bibliotecas de OpenACC e interoperabilidad
- Comprensión de las bibliotecas de OpenACC y la interoperabilidad.
- Uso de las bibliotecas matemáticas, aleatorias y complejas.
- Integración con otros modelos (CUDA, OpenMP, MPI).
- Integración con bibliotecas GPU (cuBLAS, cuFFT).
Herramientas de OpenACC
- Comprensión de las herramientas de OpenACC en el desarrollo.
- Perfilado y depuración de programas con OpenACC.
- Análisis del rendimiento con PGI Compiler, NVIDIA Nsight Systems y Allinea Forge.
Optimización
- Factores que afectan al rendimiento de los programas con OpenACC.
- Optimización de la localidad de datos y reducción de transferencias.
- Optimización del paralelismo de bucles y fusión.
- Optimización del paralelismo de kernels y fusión.
- Optimización de la vectorización y el ajuste automático.
Resumen y próximos pasos
Requerimientos
- Comprensión del lenguaje C/C++ o Fortran y conceptos de programación paralela.
- Conocimientos básicos de arquitectura informática y jerarquía de memoria.
- Experiencia con herramientas de línea de comandos y editores de código.
Público objetivo
- Desarrolladores que desean aprender a usar OpenACC para programar dispositivos heterogéneos y explotar su paralelismo.
- Desarrolladores que desean escribir código portátil y escalable que pueda ejecutarse en distintas plataformas y dispositivos.
- Programadores que quieren explorar los aspectos de alto nivel de la programación heterogénea y optimizar la productividad de su código.
28 Horas