Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Testimonios (1)
Muy interactivo con varios ejemplos, con una buena progresión en complejidad entre el inicio y el final de la formación.
Jenny - Andheo
Curso - GPU Programming with CUDA and Python
Traducción Automática