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 nuevo proyecto OpenACC con código Visual Studio
  • Exploración de la estructura y los archivos del proyecto
  • Compilación y ejecución del programa
  • Visualización de la salida mediante printf y fprintf

Directivas y cláusulas de OpenACC

  • Comprender el papel de las directivas y cláusulas de OpenACC en el código de host y dispositivo
  • Uso de la directiva y las cláusulas paralelas de OpenACC para crear regiones paralelas y especificar el número de bandas, trabajadores y vectores
  • Uso de la directiva y las cláusulas de los núcleos de OpenACC para crear regiones de los núcleos y dejar que el compilador decida el paralelismo
  • Uso de la directiva y las cláusulas de bucle OpenACC para paralelizar bucles y especificar la distribución, la contracción, la reducción y el mosaico del bucle
  • Uso de la directiva de datos y las cláusulas de OpenACC para administrar el movimiento de datos y las regiones de datos
  • Uso de la directiva de actualización y las cláusulas de OpenACC para sincronizar datos entre el host y el dispositivo
  • Uso de la directiva y las cláusulas de caché de OpenACC para mejorar la reutilización y la localidad de los datos
  • Uso de la directiva de rutina y las cláusulas de OpenACC para crear funciones de dispositivo y especificar el tipo de función y la longitud del vector
  • Uso de la directiva de espera y las cláusulas de OpenACC para sincronizar eventos y dependencias

OpenACC API

  • Comprender el papel de la API de OpenACC en el programa host
  • Uso de la API de OpenACC para consultar información y capacidades del dispositivo
  • Uso de la API de OpenACC para establecer el número y el tipo de dispositivo
  • Uso de la API de OpenACC para controlar errores y excepciones
  • Uso de la API de OpenACC para crear y sincronizar eventos

Bibliotecas OpenACC e interoperabilidad

  • Comprender el papel de las bibliotecas OpenACC y las características de interoperabilidad en el programa de dispositivos
  • Uso de bibliotecas OpenACC, como matemáticas, aleatorias y complejas, para realizar tareas y operaciones comunes
  • Uso de las funciones de interoperabilidad de OpenACC, como deviceptr, use_device y acc_memcpy, para integrar OpenACC con otros modelos de programación, como CUDA, OpenMP y MPI
  • Uso de las funciones de interoperabilidad de OpenACC, como host_data y declare, para integrar OpenACC con GPU bibliotecas, como cuBLAS y cuFFT

Herramientas OpenACC

  • Comprender el papel de las herramientas OpenACC en el proceso de desarrollo
  • Uso de herramientas OpenACC para perfilar y depurar programas OpenACC e identificar cuellos de botella y oportunidades de rendimiento
  • Uso de herramientas OpenACC, como PGI Compiler, NVIDIA Nsight Systems y Allinea Forge, para medir y mejorar el tiempo de ejecución y la utilización de recursos

Optimización

  • Comprender los factores que afectan el rendimiento de los programas OpenACC
  • Uso de directivas y cláusulas OpenACC para optimizar la localidad de los datos y reducir las transferencias de datos
  • Uso de directivas y cláusulas OpenACC para optimizar el paralelismo y la fusión de bucles
  • Uso de directivas y cláusulas OpenACC para optimizar el paralelismo y la fusión del kernel
  • Uso de directivas y cláusulas OpenACC para optimizar la vectorización y el ajuste automático

Resumen y próximos pasos

Requerimientos

  • Comprensión del lenguaje C/C++ o Fortran y de los 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 deseen escribir código portátil y escalable que pueda ejecutarse en diferentes plataformas y dispositivos
  • Programadores que deseen 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 (1)

Categorías Relacionadas