Contacta con nosotros

Temario del curso

Introducción

  • ¿Qué es OpenACC?
  • OpenACC vs. OpenCL vs. CUDA vs. SYCL
  • Visió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.
  • Visualización de resultados con 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 la paralelización gestionada 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.
  • Consultación 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 su 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 en OpenACC.
  • Análisis de rendimiento con el compilador PGI, NVIDIA Nsight Systems y Allinea Forge.

Optimización

  • Factores que afectan el rendimiento de los programas en 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 autoajuste.

Resumen y próximos pasos

Requerimientos

  • Conocimiento del lenguaje C/C++ o Fortran y conceptos de programación paralela.
  • Conocimientos básicos sobre arquitectura de computadoras y jerarquía de memoria.
  • Experiencia con herramientas de línea de comandos y editores de código.

Público objetivo

  • Desarrolladores que deseen aprender a utilizar OpenACC para programar dispositivos heterogéneos y explotar su paralelismo.
  • Desarrolladores que deseen escribir código portable 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

Número de participantes


Precio por participante

Próximos cursos

Categorías Relacionadas