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

Número de participantes



Precio por participante

Testimonios (1)

Cursos Relacionados

GPU Programming with CUDA

28 horas

GPU Programming - OpenCL vs CUDA vs ROCm

28 horas

ROCm for Windows

21 horas

Introduction to GPU Programming

21 horas

Categorías Relacionadas