Curso III: Nuevas tendencias en GPU y su programación
- 10 May 2016
RESPONSABLE: Dr. Manuel Ujaldon – Universidad de Málaga - España
DESTINATARIOS: Dirigido a estudiantes e investigadores interesados en la aceleración de códigos científicos utilizando procesadores gráficos (GPUs).
REQUISÍTOS: Nociones básicas de lenguaje C.
OBJETIVOS: En la década anterior fuimos testigos de la irrupción de las GPUs como aceleradores de todo tipo de aplicaciones, transformándose en procesadores mucho más polivalentes que la mera visualización gráfica. El éxito de un modelo cimentado sobre la forma más eficiente de procesar los píxeles de la pantalla y pensado para desplegar paralelismo de forma masiva ha provocado que hoy en día las GPUs sean indispensables en los supercomputadores más avanzados, siendo además responsables de un porcentaje creciente de su rendimiento. A lo largo de este curso conoceremos la arquitectura many-core de la GPU y aprenderemos a programarla con CUDA. Comenzaremos describiendo las GPUs por generaciones (Tesla, Fermi, Kepler, Maxwell y Pascal), para posteriormente explicar los pilares básicos de CUDA (kernels, bloques e hilos). A continuación implementaremos una serie de ejemplos de forma colectiva y describiremos técnicas de optimización. El último día se dedicará exclusivamente a las prácticas individuales, que cada alumno desarrollará utilizando una GPU en la nube proporcionada gratuitamente por Nvidia a través de servicios AWS de Amazon.
CONTENIDOS: Arquitectura de la GPU. Su hardware desglosado por generaciones. Diseños many-core. El paradigma de programación CUDA: Hilos, bloques, núcleos, mallas. Herramientas CUDA: Compilador, depurador, calculador de ocupación. Ejemplos CUDA: Suma de vectores, códigos patrón, invertir un vector, producto de matrices. Las generaciones Kepler y Maxwell. Paralelismo dinámico, Hyper-Q, memoria unificada. Sesiones de prácticas individuales en la nube utilizando GPUs proporcionadas por Nvidia.
RESUMEN: Este curso pretende familiarizar al estudiante sobre las posibilidades que actualmente ofrecen los procesadores gráficos para ejecutar aplicaciones de propósito general. Comenzando por el estudio de su arquitectura, se define un modelo escalable y eficiente, para después enseñar la implementación de códigos científicos sobre él. Para ello utilizaremos el paradigma CUDA, un modelo de paralelismo de datos SIMD que ha tenido una gran influencia en la aceleración de algoritmos sobre plataformas de alto desempeño. Finalizaremos con una serie de métodos y optimizaciones para maximizar el rendimiento de la computación científica en las plataformas actuales y futuras de la GPU.
SISTEMA DE EVALUACIÓN: Examen sobrelos contenidos teóricos y evaluación de los prácticos desarrollados por cada estudiante en su GPU en la nube.
Página Cacic 2016: http://cacic2016.unsl.edu.ar/
