¡Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto contigo en breve.
¡Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto contigo en breve.
Programa del Curso
Introducción
- ¿Qué es OpenACC?
- OpenACC vs OpenCL vs CUDA vs SYCL
- Descripción general de las características y la arquitectura de OpenACC
- Configuración del entorno de desarrollo
Empezar
- Creación de un proyecto OpenACC en código Visual Studio
- Exploración de la estructura y los archivos del proyecto
- Compilar y ejecutar el programa
- Visualización de la salida con printf y fprintf
Directivas y cláusulas de OpenACC
- Descripción de las directivas y cláusulas de OpenACC
- Uso de directivas paralelas para crear regiones paralelas
- Uso de directivas kernels para el paralelismo administrado 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 wait
OpenACC API
- Comprender el papel de la API de OpenACC
- Consulta de información y capacidades del dispositivo
- Configuración del número y tipo de dispositivo
- Control de errores y excepciones
- Creación y sincronización de eventos
Bibliotecas OpenACC e interoperabilidad
- Descripción de las bibliotecas OpenACC y la interoperabilidad
- Uso de bibliotecas matemáticas, aleatorias y complejas
- Integración con otros modelos (CUDA, OpenMP, MPI)
- Integración con GPU bibliotecas (cuBLAS, cuFFT)
Herramientas OpenACC
- Descripción de las herramientas OpenACC en desarrollo
- Generación de perfiles y depuración de programas OpenACC
- Análisis de rendimiento con PGI Compiler, NVIDIA Nsight Systems, Allinea Forge
Optimización
- Factores que afectan el rendimiento del programa OpenACC
- Optimización de la localidad de los datos y reducción de las transferencias
- Optimización del paralelismo y la fusión de bucles
- Optimización del paralelismo y la fusión del kernel
- 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 computadores y jerarquía de memoria
- Experiencia con herramientas de línea de comandos y editores de código
Audiencia
- Desarrolladores que deseen 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 diferentes plataformas y dispositivos
- Programadores que desean explorar los aspectos de alto nivel de la programación heterogénea y optimizar la productividad de su código
28 Horas
Testimonios (2)
Muy interactivo con varios ejemplos, con una buena progresión en complejidad entre el inicio y el final de la formación.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Traducción Automática
Entrenadores, energía y humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Traducción Automática