practica 1 - computación de altas prestaciones

4
Computaci´ on d’Altes Prestacions Escola d’Enginyeria Universitat Aut` onoma de Barcelona Pr´ actica OpenMP Introducci´ on El ejercicio se basa en paralelizar una aplicaci´ on que utiliza un solver de dos ecuaciones para la resoluci´ on num´ erica de las ecuaciones de aguas poco profundas mediante un m´ etodo de elementos finitos en dos dimensiones (2D). Aunque no es necesario entender al detalle los m´ etodos num´ ericos utilizados para resolver este ejercicio, puede encontrarse m´ as informaci´ on en esta direcci´ on: 2D Shallow Water Equations by Composite Schemes, by Richard Liska, Burton Wendroff El objetivo es llevar a cabo un proceso de an´ alisis y paralelizaci´ on del c´ odigo fuente proporcionado, medir el rendimiento de la soluci´ on paralela y ganar experiencia en arquitecturas multi-core. Algoritmo Para este ejercicio se resuelven las ecuaciones en un dominio cuadrado, utilizando un enfoque de divisi´ on dimensional simple: Primero se realiza una actualizaci´ on de los vol´ umenes Q con los flujos num´ ericos en en eje X y posteriormente se repite el proceso en el eje Y, tal y como se expresa en el siguiente pseudo-c´ odigo: 1 for each time step do 2 Apply boundary conditions 3 for each Q do 4 Calculate fluxes F in the x - direction 5 Update volume Q with fluxes F 6 end 7 for each Q do 8 Calculate fluxes G in the y - direction 9 Update volumes Q with fluxes G 10 end 11 end Dado que se trata de bucles anidados que contiene una gran cantidad de c´ alculos num´ ericos, una primera versi´ on paralela utilizando OpenMP es simple, obteniendo una cierta aceleraci´ on sin demasiado esfuerzo. Sin embargo, el reto es hacer un buen uso de todos los n´ ucleos disponibles. Recursos del laboratorio Es necesario conocer la arquitectura de las m´ aquinas del laboratorio para poder interpretar los resulta- dos de la ejecuci´ on del c´ odigo y los l´ ımites impuestos. Parte de las caracter´ ısticas pueden consultarse al sistema operativo, como por ejemplo: el modelo de procesador, n´ umero de cores, caracter´ ısticas habilitadas, aunque para encontrar m´ as detalle de la informaci´ on del hardware suele ser conveniente consultar al fabricante, en este caso Intel. 1

Upload: diegojimenezgallegos

Post on 13-Nov-2015

2 views

Category:

Documents


0 download

DESCRIPTION

Computación de altas prestaciones, Practica 1, Universidad autónoma de Barcelona

TRANSCRIPT

  • Computacion dAltes PrestacionsEscola dEnginyeriaUniversitat Auto`noma de Barcelona

    Practica OpenMP

    Introduccion

    El ejercicio se basa en paralelizar una aplicacion que utiliza un solver de dos ecuaciones para laresolucion numerica de las ecuaciones de aguas poco profundas mediante un metodo de elementosfinitos en dos dimensiones (2D). Aunque no es necesario entender al detalle los metodos numericosutilizados para resolver este ejercicio, puede encontrarse mas informacion en esta direccion:

    2D Shallow Water Equations by Composite Schemes, by Richard Liska, Burton Wendroff

    El objetivo es llevar a cabo un proceso de analisis y paralelizacion del codigo fuente proporcionado,medir el rendimiento de la solucion paralela y ganar experiencia en arquitecturas multi-core.

    Algoritmo

    Para este ejercicio se resuelven las ecuaciones en un dominio cuadrado, utilizando un enfoque dedivision dimensional simple: Primero se realiza una actualizacion de los volumenes Q con los flujosnumericos en en eje X y posteriormente se repite el proceso en el eje Y, tal y como se expresa en elsiguiente pseudo-codigo:

    1 for each time step do2 Apply boundary conditions3 for each Q do4 Calculate fluxes F in the xdirection5 Update volume Q with fluxes F6 end7 for each Q do8 Calculate fluxes G in the ydirection9 Update volumes Q with fluxes G

    10 end11 end

    Dado que se trata de bucles anidados que contiene una gran cantidad de calculos numericos, unaprimera version paralela utilizando OpenMP es simple, obteniendo una cierta aceleracion sin demasiadoesfuerzo. Sin embargo, el reto es hacer un buen uso de todos los nucleos disponibles.

    Recursos del laboratorio

    Es necesario conocer la arquitectura de las maquinas del laboratorio para poder interpretar los resulta-dos de la ejecucion del codigo y los lmites impuestos. Parte de las caractersticas pueden consultarseal sistema operativo, como por ejemplo: el modelo de procesador, numero de cores, caractersticashabilitadas, aunque para encontrar mas detalle de la informacion del hardware suele ser convenienteconsultar al fabricante, en este caso Intel.

    1

  • $ cat /proc/cpuinfoprocessor : 7vendor id : GenuineIntelcpu family : 6model : 26model name : Intel(R) Core(TM) i7 CPU 950 @ 3.07GHzstepping : 5cpu MHz : 1596.000cache size : 8192 KBflags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36

    clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall rdtscp lmconstant tsc arch perfmon pebs bts rep good xtopology nonstop tsc[...]

    Metodologa

    Se aconseja seguir una metodologa iterativa al llevar a cabo el proceso de paralelizacion, de esta formaireis obteniendo resultados parciales que os permitiran avanzar hacia la mejor solucion.

    Es importante analizar la ejecucion del programa para determinar las partes en la que se empleamas tiempo de ejecucion.

    Determinad que tipo de optimizaciones y estrategias de paralelizacion pueden llevarse a cabo enesta parte del codigo. Tened en cuenta los aspectos relevantes que pueden interferir o dificultarel proceso: dependencia de datos, posible overhead, zonas de exclusion mutua, etc.

    Trabajad en la nueva implementacion paralela/optimizada y comparad los resultados con laversion anterior. Es necesario comprobar que la nueva version mantiene la validez del resultadofinal.

    Lanzad un conjunto de ejecuciones rapidas que permitan evaluar el resultado del trabajo reali-zado e intentad determinar el resultado de la optimizacion: nuevos problemas, posibles cuellosde botella, etc.

    Iterad el proceso.

    Planificacion del trabajo

    Para agilizar la etapa de desarrollo y optimizar el uso del tiempo disponible, se aconseja dividir eltrabajo en dos fases: desarrollo y experimentacion.

    Desarrollo

    En la etapa de desarrollo se escogera un tamano de los datos de entrada para la aplicacion de forma queel tiempo de ejecucion sea representativo pero rapido ( > 10 segundos). Estas ejecuciones se realizaranen la propia maquina y serviran para:

    Analizar el codigo y desarrollar la implementacion paralela de la aplicacion.

    Identificar cuellos de botella y realizar las optimizaciones que se crean oportunas.

    Comprobar el correcto funcionamiento de la aplicacion asegurandose que el resultado final es elesperado.

    2

  • Experimentacion

    Una vez obtengais una version definitiva, podeis llevar a cabo la experimentacion para obtener losdatos finales que utilizareis para realizar el informe.

    Las ejecuciones realizaran en el cluster del laboratorio.

    Se ejecutara la aplicacion con un tamano de datos M=2500, N=2500.

    Se realizara la experimentacion con la version serie del programa (1 procesador) y con la versionparalela utilizando 2, 4, 8 procesadores.

    Para cada una de las ejecuciones se tomaran 5 muestras, se descartara en valor mnimo y maximo,obteniendo como resultado final la media de los tres valores restantes.

    Aunque disponeis de completa libertad para realizar el desarrollo la practica fuera del laboratorio, lapractica debe funcionar en ese entorno. La experimentacion final de la que extraereis los datospara realizar el informe se ha de realizar en las maquinas del laboratorio. Tenedlo en cuentacuando planifiqueis el trabajo a realizar en las sesiones.

    Presentacion de resultados

    Generad tablas y graficas con los resultados obtenidos que sean claras y significativas. Realizar unbosquejo rapido de las diferentes alternativas de grafica, valoradlas y dedicad tiempo a realizar lagrafica final solo cuando este claro que sera definitiva.

    Se trata de convertir datos en informacion: es necesario interpretar los resultados presentados enforma de grafica, explicarlos y proponer conclusiones. En definitiva, se trata de convertir informacionen conocimiento.

    Evaluacion

    Es imprescindible que la version optimizada de la aplicacion compile en el entorno de practicas,funcione y lo haga de forma correcta. Durante la correccion se utilizara el fichero de guiones en elentorno del laboratorio.

    Dentro del plazo de entrega, se debera presentar un informe sobre la practica donde se incluira elcodigo de su solucion como anexo. En dicho informe se debera realizar un analisis del rendimiento dela aplicacion, donde se prestara especial atencion en como se presentan los resultados y las conclu-siones obtenidas a lo largo del trabajo. El analisis se basara en el tiempo de ejecucion como metricamas importante, aunque tambien debera tener en cuenta como se utilizan los recursos disponibles,escalabilidad de la solucion, as como cualquier otro aspecto que se considere relevante.

    Se entregara el codigo fuente de la practicas comprimido en formato zip, cuyo nombre de ficheroseguira el patron PRACTICA-GRUPO.ziptodo en minuculas y sin caracteres especiales ( ni acentos,ni espacios, etc). Por ejemplo, para la primera practica el grupo G1 entregara el fichero practica1-omp g1.zip. Dicho fichero mantendra la estructura de directorios original, unicamente con el codigofuente y el fichero Makefile, sin binarios, ni codigo objeto.

    En la evaluacion se tendran en cuenta los siguientes aspectos:

    Correcta planificacion y uso del tiempo disponible. El tiempo disponible tambien es un recursoy debeis ser capaces de finalizar el trabajo asignado con los recursos disponibles.

    Es necesario demostrar que la practica funciona correctamente y presentar la documentacionasociada.

    3

  • Calidad de la implementacion y trabajo realizado sobre la aplicacion original. Debe quedarreflejado en la documentacion original.

    Analisis de rendimiento y eficiencia de la solucion. Esta parte es una de las mas importantes ydebe estar correctamente documentada.

    Calidad de la documentacion del trabajo realizado o memoria de practicas.

    Pregunta 1: Hoy en da, practicamente todas las plataformas de calculo cientfico disponende un planificador de tareas que arbitra el acceso a los recursos gestionando una cola de tareaspendientes. Al utilizar dichas plataformas, suele ser necesario especificar el numero de recur-sos que se utilizaran y durante cuanto tiempo. Por ejemplo, en el laboratorio de practicas esobligatorio especificar el tiempo maximo de ejecucion de trabajo.

    Debereis ser capaces de realizar una estimacion en funcion del tamano de los datos de entrada(N). Un metodo sencillo es generar una grafica utilizando valores de N, empezando con un valorrepresentativo (> 10 segundos). Generad una grafica para un mnimo de cuatro valores de N,donde representareis en el eje X los distintos valores de N y en el eje Y el tiempo de ejecucion.Comentad los resultados obtenidos.

    Pregunta 2: Como se crean y destruyen los threads en OpenMP? Que impacto puedetener en el rendimiento de la aplicacion? Teniendo en cuenta lo anterior, realizarais algunamodificacion en el siguiente pseudo-codigo?

    1 !$omp parallel do2 do i=1,n3 ...4 !$omp end parallel do5 !$omp parallel do6 do j=1,m7 ...8 !$omp end parallel do

    Pregunta 3: Medid el rendimiento paralelo. En este ejercicio, el rendimiento paralelo serefiere al aumento de velocidad (aceleracion o speedup) Sn =

    T1Tn

    , utilizando n threads. Medid eltiempo de ejecucion T para 1, 2, 4 y 8 hilos y calculad su speedup. Es lineal? Si no lo es, porque motivo? Es aceptable el speedup obtenido?

    4