Contacta con nosotros

Temario del curso

Introducción

  • ¿Qué es OpenACC?
  • OpenACC frente a OpenCL, CUDA y SYCL
  • Descripción general de las características y arquitectura de OpenACC
  • Configuración del entorno de desarrollo

Primeros pasos

  • Creación de un proyecto OpenACC en Visual Studio Code
  • Exploración de la estructura y los archivos del proyecto
  • 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 gestionado 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
  • Manejo de errores y excepciones
  • Creación y sincronización de eventos

Bibliotecas e interoperabilidad de OpenACC

  • Comprensión de las bibliotecas y la interoperabilidad de OpenACC
  • 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
  • Perfiles y depuración de programas de OpenACC
  • Análisis de rendimiento con PGI Compiler, 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 y la fusión de bucles
  • Optimización del paralelismo y la fusión de kernels
  • Optimización de la vectorización y el ajuste automático

Resumen y próximos pasos

Requerimientos

  • Conocimiento de los lenguajes C/C++ o Fortran y de los 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 deseen aprender a utilizar OpenACC para programar dispositivos heterogéneos y aprovechar su paralelismo.
  • Desarrolladores que deseen escribir código portátil y escalable ejecutable en diferentes plataformas y dispositivos.
  • Programadores que deseen explorar los aspectos de alto nivel de la programación heterogénea y optimizar su productividad en la escritura de código.
 28 Horas

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas