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)

Cursos Relacionados

AMD GPU Programming

28 horas

Introduction to GPU Programming

21 horas

GPU Programming with CUDA

28 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

ROCm for Windows

21 horas

Categorías Relacionadas