Curso: Optimización y profiling de aplicaciones HPC usando herramientas libres

Objetivo del Curso: El objetivo del curso es proporcionar al alumno un entrenamiento básico en el uso de herramientas existentes en el mundo del Software Libre destinadas al análisis y optimización de código secuencial y paralelo.

Entre las herramientas que se estudiarán en este curso destacan las desarrolladas en el BSC (Barcelona Supercomputing Centre), Paraver, Extrae y Dimemas, además de herramientas clásicas muy útiles para el profiling y la optimización como gprof o callgrind/valgrind, todo ello sobre los compiladores GNU.

Prerequisitos: Se requiere saber programar aplicaciones secuenciales en lenguaje C/C++ o en Fortran. Unos conocimientos básicos de programación paralela mejorarán el seguimiento del curso.

Fecha: 19, 20 y 21 de noviembre de 2018 en horario de 9:00h a 14:00h. en el CESGA

Programa del curso:

– Día 1: En este primer día el objetivo será realizar una introducción al curso en general y a algunos conceptos comunes necesarios durante el mismo. Luego, optimizaremos nuestro código examinando las principales opciones presentes en los compiladores GNU y analizaremos su rendimiento usando el profiler de GNU, gprof, y las herramientas callgrind/valgrind para detectar cuellos de botella, identificando en qué partes del mismo debemos incidir a la hora de optimizarlo.

  • Breve introdución a las arquitecturas modernas y a las posibilidades de paralelización del código. Introducción a distintas alternativas libres disponibles para la depuración, análisis y optimización de código.
  • Uso de los compiladores GNU para mejorar el rendimiento de nuestro código.
  • Utilización de las herramientas GNU gprof y Callgrind/Valgrind para analizar el rendimiento y el uso de recursos.

– Día 2: En la segunda jornada del curso nos centraremos en las oportunidades de paralelización de código utilizando memoria compartida. En este caso nos centraremos en las posibilidades de vectorizar el código y en la posibilidad de extraer paralelismo usando pragmas OpenMP, que constituyen las dos formas más sencillas de poder extraer paralelismo en un código secuencial.

  • Como guías de este proceso utilizaremos las herramientas desarrolladas en el BSC: Paraver, Extrae y Dimemas.

– Día 3: En la tercer y última jornada del curso nos centraremos en las oportunidades de paralelizar nuestro código en memoria distribuida. En este caso utilizaremos como tecnología de referencia la librería de paso de mensajes MPI.

  • Nuevamente haremos uso de las herramientas del BSC: Paraver, Extrae y Dimemas.
  • Actividad en la que cada alumno podrá utilizar los conocimientos adquiridos durante el curso para empezar a optimizar un código propio.

Profesores: Diego Andrade y Basilio Fraguela son investigadores y profesores del Grupo de Arquitectura de Computadores de la Universidade da Coruña. Llevan más de 10 años impartiendo docencia e investigando en temas relacionados con el análisis y la optimización del rendimiento de aplicaciones, tanto en entornos secuenciales como paralelos.