cambiar a curso:   2016-17   2018-19


Grado en Ingeniería Informática


TRABAJOS FIN DE GRADO
curso: 2017-18

Batch BLAS sobre NVIDIA GPUs


Tecnologías Específicas

Ingeniería de Computadores
 


Descripcion y Objetivos

Dada la evolución de las actuales arquitecturas paralelas, en particular las GPUs, en donde la capacidad paralela es cada vez mayor, es hoy en día necesario un replanteamiento en la manera en la que estas arquitecturas masivamente paralelas son utilizadas. Debido a ello, en los últimos años se está viviendo una transformación de, no sólo, la potencia de estas máquinas, sino también de sus capacidades, siendo estas cada vez más flexibles y permitiendo nuevos usos que hace unos años era imposible o no eficientes. Es por todo ello, que se propone un estudio sobre estas nuevas capacidades, sobre algunos de los casos de uso más habitual dentro de High Performance Computing, computación y resolución de problemas de Álgebra Lineal sobre un alto número de matrices (Batch). Un batch de matrices se puede descomponer en una serie de matrices (resoluciones) independientes que se pueden ejecutar totalmente en paralelo. Estas resoluciones, aunque parecidas, tienen ciertas particularidades. Por ejemplo, algunas pueden ser ejecutadas de manera paralela, mientras que otras no. Este proyecto, se centraría en evaluar las capacidades de las actuales y nuevas GPUs, para la resolución eficiente de batch de matrices, evaluando diferentes enfoques. Los resultados obtenidos se compararían con las librerías y software de referencias somo cuBLAS, cuSparse, cuSolver o MAGMA.

Se pretende implementar una serie de rutinas de álgebra lineal para dar solución a un batch de matrices.

Para esto deben realizarse las siguientes actividades:

  1. Estudiar, analizar y entender el estado de arte de las estrategias ya implementadas e incorporadas en las librerías referencias como cuBLAS y cuSparse.
  2. Familiarizarse con el entorno de programación (CUDA) y arquitectura (NVIDIA GPUs) a utilizar.
  3. Implementación de una serie de prototipos para batch de matrices.
  4. Testar y evaluar el funcionamiento de los prototipos comparando el rendimiento con las librerías referencias.
 


Metodología y Competencias

Los dados por la secuencia de las actividades del punto anterior, en consecuencia, se propone una metodología en cascada de acuerdo a esta secuencia de objetivos. Esta propuesta metodológica es flexible, pudiendo ser modificada con el acuerdo de alumno y directores.

Se trabajan las Capacidades

  • [IC3] Capacidad de analizar y evaluar arquitecturas de computadores, incluyendo plataformas paralelas y distribuidas, así como desarrollar y optimizar software para las mismas
  • [IC5] Capacidad de analizar, evaluar y seleccionar las plataformas hardware y software más adecuadas para el soporte de aplicaciones empotradas y de tiempo real
  • [CM3] Capacidad para evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.
 


Medios a utilizar

 


Bibliografía

  • http://docs.nvidia.com/cuda/cublas/
  • http://docs.nvidia.com/cuda/cusparse/
  • http://docs.nvidia.com/cuda/cusolver/
  • https://github.com/pedrovalerolara/CUDA_BATCH_DGEMM_INTERLEAVED
  • https://pm.bsc.es/gitlab/imartin1/cuHinesBatch
  • https://pm.bsc.es/gitlab/imartin1/cuThomasBatch
 


Tutor


LÓPEZ PELAYO, FERNANDO
 

Alumno