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 frente a CUDA frente a 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 de OpenACC en Visual Studio Code
- Exploración de la estructura y los archivos del proyecto
- Compilación y ejecución del programa
- Visualización de la salida con printf y fprintf
Directivas y cláusulas de OpenACC
- Comprensión de las directivas y cláusulas de OpenACC
- Uso de directivas paralelas para crear regiones paralelas
- Uso de directivas de kernels para el paralelismo gestionado por el compilador
- Uso de directivas de bucle para paralelizar bucles
- Gestión del movimiento de datos con directivas de datos
- Sincronización de datos con directivas de actualización
- Mejora de la reutilización de datos con directivas de caché
- Creación de funciones de dispositivo con directivas de rutina
- Sincronización de eventos con directivas de espera
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 e interoperabilidad de OpenACC
- Comprensión de las bibliotecas de OpenACC y la interoperabilidad
- Uso de bibliotecas matemáticas, aleatorias y complejas
- Integración con otros modelos (CUDA, OpenMP, MPI)
- Integración con bibliotecas de GPU (cuBLAS, cuFFT)
Herramientas de OpenACC
- Comprensión de las herramientas de OpenACC en el desarrollo
- Perfilado y depuración de programas de OpenACC
- Análisis del rendimiento con el compilador PGI, NVIDIA Nsight Systems y Allinea Forge
Optimización
- Factores que afectan el rendimiento de los programas de 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 de computadoras y jerarquía de memoria.
- Experiencia con herramientas de línea de comandos y editores de código.
Audiencia
- Desarrolladores que desean aprender a utilizar OpenACC para programar dispositivos heterogéneos y aprovechar su paralelismo.
- Desarrolladores que deseen escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos.
- Programadores que quieran explorar los aspectos de alto nivel de la programación heterogénea y optimizar la productividad de su código.
28 Horas