Programación de Alto desempeño en GPU

Curso de Postgrado

El procesador gráfico, GPU, surge como una alternativa válida para la computación de alto desempeño de aplicaciones de propósito general. Las GPU comienzan a ser una alternativa de bajo costo para el desarrollo de aplicaciones de muy alto rendimiento que tradicionalmente han sido exclusivas de los supercomputadoras. Así mismo, con la aparición del lenguaje CUDA, la programación de las GPU para el desarrollo de aplicaciones de propósito general se ha facilitado enormemente. Son objetivos de este curso: conocer la potencia actual del procesador gráfico y su utilización para la ejecución de aplicaciones de propósito general. Familiarizarse con las formas más actuales de programación gráfica para propósito general: CUDA y OpenCL. Descubrir el mundo del multiprocesador y la supercomputación gráfica.

Dictado por la Dra. María Fabiana Piccoli de la Universidad Nacional de San Luis

Semana del 12 al 16 de diciembre de 2011

Crédito Horario: 60hs.

Horario: A determinar.

Lugar: Sala de Postgrado, Dpto Informática.

Informes e Inscripciones: mfpiccoli@gmail.com

PROGRAMA:

Unidad temática 1: GPU: Introducción a GPGPU

  • GPU Programación y  Arquitectura
  • Características de la GPU.
  • Arquitectura de GPU: N-vidia, Ati, Tesla, Fermi...
  • Pipeline Gráfico
  • GPGPU: Computación de Propósito General en GPU.
  • Paradigmas de Computación Paralela: Modelo de Memoria Compartida, Paralelismo de Datos.

Unidad temática 2: Programación de GPU a través de CUDA

  • Introducción a CUDA
  • Modelo de programación de CUDA
  • Características Básica.
  • Diseño de programas en GPU
  • Threading.
  • Thread, Bloques, Grid.
  • Sincronización de Threads
  • Ejemplos.

Unidad temática 3: Modelo de Memoria de GPU

  • Modelo de Memoria de GPU.
  • Jerarquías de Memoria: Registros, Memoria Compartida, Memoria constante, Texturas, Memoria Global.
  • Estructuras de datos básicas.
  • Creación de Estructuras de datos en la GPU.
  • Ejemplos.

Unidad temática 4: Modelo GPU-CPU

  • Modelo CPU-GPU.
  • Transferencia de datos GPU-CPU.
  • Modelos de programación paralela en GPU: Reducciones, Map, Scan.
  • Ejemplos

Unidad temática 5: Performance en GPU

  • Optimización de la performance.
  • Colisiones de Memoria
  • Accesos a Memoria Coallesed.

Unidad temática 6: Otros Lenguajes de Programación de GPU

  • Otros modelos de programación GPGPU: OpenCL