Gracias por enviar su consulta! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Gracias por enviar su reserva! Uno de los miembros de nuestro equipo se pondrá en contacto con usted en breve.
Programa del Curso
Introducción
- ¿Qué es OpenCL?
- OpenCL frente a CUDA frente a SYCL
- Descripción general de OpenCL características y arquitectura
- Configuración del entorno de desarrollo
Empezar
- Creación de un nuevo proyecto OpenCL 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
OpenCL API
- Descripción de la función de la API OpenCL en el programa host
- Uso de la API OpenCL para consultar la información y las capacidades del dispositivo
- Uso de la API OpenCL para crear contextos, colas de comandos, búferes, kernels y eventos
- Uso de la API OpenCL para poner en cola comandos, como leer, escribir, copiar, asignar, anular asignación, ejecutar y esperar
- Uso de la API OpenCL para controlar errores y excepciones
OpenCL C
- Comprender el papel de OpenCL C en el programa del dispositivo
- Uso de OpenCL C para escribir kernels que se ejecutan en el dispositivo y manipulan datos
- Uso de tipos de datos, calificadores, operadores y expresiones OpenCL C
- Usando OpenCL funciones integradas en C, como matemáticas, geométricas, relacionales, etc.
- Uso de OpenCL extensiones y bibliotecas de C, como atomic, image, cl_khr_fp16, etc.
OpenCL Modelo de memoria
- Descripción de la diferencia entre los modelos de memoria de host y de dispositivo
- Uso de OpenCL espacios de memoria, como global, local, constante y privado
- Uso de OpenCL objetos de memoria, como búferes, imágenes y canalizaciones
- Uso de OpenCL modos de acceso a memoria, como solo lectura, solo escritura, lectura-escritura, etc.
- Uso de OpenCL modelo de coherencia de memoria y mecanismos de sincronización
OpenCL Modelo de ejecución
- Descripción de la diferencia entre los modelos de ejecución de host y dispositivo
- Uso de OpenCL elementos de trabajo, grupos de trabajo e intervalos ND para definir el paralelismo
- Uso de OpenCL funciones de elemento de trabajo, como get_global_id, get_local_id, get_group_id, etc.
- Uso de OpenCL funciones de grupo de trabajo, como barrera, work_group_reduce, work_group_scan, etc.
- Uso de OpenCL funciones del dispositivo, como get_num_groups, get_global_size, get_local_size, etc.
Depuración
- Comprender los errores y fallos comunes en los programas OpenCL
- Uso del depurador de código Visual Studio para inspeccionar variables, puntos de interrupción, pila de llamadas, etc.
- Uso de CodeXL para depurar y analizar OpenCL programas en dispositivos AMD
- Uso de Intel VTune para depurar y analizar OpenCL programas en dispositivos Intel
- Uso de NVIDIA Nsight para depurar y analizar OpenCL programas en dispositivos NVIDIA
Optimización
- Comprender los factores que afectan el rendimiento de los programas OpenCL
- Uso de OpenCL tipos de datos vectoriales y técnicas de vectorización para mejorar el rendimiento aritmético
- Uso de técnicas de desenrollado de bucles OpenCL y mosaicos de bucles para reducir la sobrecarga de control y aumentar la localidad
- Uso de OpenCL memoria local y funciones de memoria local para optimizar los accesos a la memoria y el ancho de banda
- Uso de OpenCL herramientas de generación de perfiles y generación de perfiles para medir y mejorar el tiempo de ejecución y la utilización de recursos
Resumen y próximos pasos
Requerimientos
- Comprensión del lenguaje C/C++ 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 OpenCL 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 bajo nivel de la programación heterogénea y optimizar el rendimiento de su código
28 Horas
Testimonios (2)
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
Entrenadores, energía y humor.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Curso - NVIDIA GPU Programming - Extended
Traducción Automática