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

Número de participantes


Precio por participante

Testimonios (2)

Próximos cursos