ac_enunciado_lab1_2014_v1.0
description
Transcript of ac_enunciado_lab1_2014_v1.0
-
rea de Arquitectura y Tecnologa de Computadores
Universidad Carlos III de Madrid
Arquitectura de Computadores Laboratorio 1. Tcnicas de paralelizacin en arquitecturas de
memoria compartida. OpenMP.
Grado en Ingeniera Informtica
Curso 2014/2015
-
1. Objetivos
El objetivo de esta prctica es la introduccin de tcnicas de paralelizacin en
arquitecturas de memoria compartida. Este tcnica permite aprovechar de manera ms
ptima el hardware actual, especialmente las computadoras multi-ncleo y multi-core.
Como ejemplo de aplicacin de paralelizacin, el alumno deber paralelizar un
cdigo secuencial utilizando OpenMP.
2. Descripcin
En esta prctica se deber implementar una versin paralela del problema de N-
cuerpos.
Este problema implica simular el movimiento de N cuerpos movindose bajo las
fuerzas gravitatorias que ejerce cada cuerpo sobre todos los dems. El cmputo se de-
bera discretizar en el tiempo, es decir, la simulacin implica varios pasos de tiempo.
En cada paso de tiempo, el programa calcula las fuerzas gravitatorias que se
ejercen sobre cada cuerpo por todas las dems y actualiza la posicin y velocidad de
cada uno de los cuerpos.
La fuerza gravitatoria se calcula con la siguiente frmula:
F = K * m1 * m2 / ( r * r )
donde m1 y m2 son las masas de los dos cuerpos y r es la distancia que las separa.
La fuerza gravitatoria se usa para actualizar la nueva posicin y velocidad de los
cuerpos de la siguiente forma: para cada cuerpo i, la fuerza F se calcula y descompone en sus componentes Fxi y Fyi. Estas componentes se suman, obtenindose la fuerza gravi-tatoria total que se aplica a un cuerpo, Fx y Fy. A partir de estos valores se calculan las correspondientes aceleraciones, ax y ay, y velocidades, vx y vy, a lo largo de los ejes X e Y (ax = fx / m y vx = ax * t), donde t es el paso de tiempo.
La simulacin se realiza en un espacio bidimensional. Los valores de entrada de
la simulacin se proporcionan en un fichero que consiste de dos partes:
Una cabecera que contiene los parmetros globales: n: el nmero de cuerpos. k: la constante gravitatoria K. t: el intervalo de tiempo entre pasos. nsteps: el nmero de pasos de la simulacin. d: el umbral de distancia mnimo (explicado a continuacin). xmax: X mxima (explicado a continuacin).
ymax: Y mxima (explicado a continuacin).
-
Una regin de datos con la lista de cuerpos que formarn parte del experimento, cada uno descrito por los siguientes parmetros:
x: la posicin inicial en el eje X.
y: la posicin inicial en el eje Y.
vx: la velocidad inicial en la direccin del eje X (puede ser negativa).
vy: la velocidad inicial en la direccin del eje Y (puede ser negativa).
m: la masa del cuerpo.
Suposiciones:
Dos cuerpos que estn cerca, por debajo de un umbral d, no se atraen mutuamente (se asume as para simplificar el tratamiento de la colisin de
los cuerpos). Por tanto, el cuerpo continuar movindose con la misma
velocidad que antes.
El espacio es finito: la esquina inferior izquierda es (0, 0) y la superior derecha es (xmax, ymax). Si la posicin actualizada del cuerpo est fuera del
espacio, consideraremos que colisiona con el borde exterior y cambia la
direccin con el mismo ngulo que el ngulo de impacto.
-
3. Requisitos de programacin
Se debe implementar un programa paralelo en OpenMP que realice eficientemente
los clculos. Se proporciona una versin secuencial del programa, que toma como
parmetro un fichero que contiene los parmetros de la simulacin y una lista de
atributos de cuerpos como se explic anteriormente.
El programa recibir tres argumentos:
./nbody
Siendo:
ruta del fichero con la distribucin inicial de
cuerpos.
ruta del fichero resultante con la distribucin final
de cuerpos.
X11_0 si el funcionamiento es en modo texto y X11_1
si es grfico.
Se podr modificar el fichero nbody.c tanto como se desee siempre que el
programa paralelo conserve exactamente la misma funcionalidad que el programa
secuencial independientemente del nmero de hilos con que se ejecute y, al menos,
mejore el rendimiento del programa secuencial cuando se ejecute con ms de un hilo.
La calidad de la paralelizacin del cdigo determinar la calificacin de este apartado.
El cdigo no deber utilizar la funcin set_num_threads(). El nmero de
hilos de OpenMP depender siempre de la variable de entorno OMP_NUM_THREADS.
-
4. Requisitos de la memoria
4.1 Descripcin del cdigo
En este apartado se detallar el diseo de la estrategia de paralelizacin implementada en el cdigo. Deber contener, al menos, la explicacin general del
diseo de la paralelizacin as como la explicacin y justificacin de cada uno de los
pragmas de OpenMP utilizados: por qu es necesario, por qu est situado en esa
posicin, qu ventajas aporta y/o qu problemas resuelve, etc.
4.2 Evaluacin de rendimiento
Se proporcionan tres ficheros de entrada distintos input1, input2, input3 con
distintas caractersticas. Se debe analizar el contenido de los ficheros y realizar varias
ejecuciones evaluando los resultados de rendimiento.
4.2.1 Ejercicios a realizar 1.- Ejecute el programa paralelo con 1, 2, 4, 8 y 16 threads para cada uno de los conjuntos de entrada. Represente los tiempos de forma grfica y comente los resultados. Cul es la evolucin de rendimiento? Por qu? Qu diferencias hay entre los distintos conjuntos de entrada? Cmo afectan estas diferencias al rendimiento? 2.- Calcule el speedup obtenido en el apartado anterior para cada uno de los casos y represntelo de forma grfica. Comente los resultados. 3.- Tome tiempos con 4 threads variando el tipo de scheduling del bucle que ms afecte al rendimiento del programa. Ejecute las pruebas con static, dynamic y guided para cada uno de los conjuntos de entrada. Represente los tiempos obtenidos de forma grfica y comente los resultados. Cul es la evolucin de rendimiento? Por qu? Qu diferencias hay entre los distintos conjuntos de entrada? Cmo afectan estas diferencias al rendimiento? Qu planificador se comporta mejor en cada uno de los casos? Justifquelo rzonadamente. 4.- Averige y justifique razonadamente cul es el tamao de chunk ptimo para cada uno de los tres casos propuestos. NOTA: Las mediciones de las pruebas de evaluacin se realizarn en las aulas del departamento de informtica. EN NINGN CASO SE PUEDE UTILIZAR
GUERNIKA COMO PLATAFORMA DE PRUEBAS.
-
4.2.2 Ejercicios opcionales 1.- Realice de nuevos los puntos 1 y 2 del anterior apartado en una mquina externa a
las aulas de los laboratorios de informtica. Se debe especificar el tipo de procesador
utilizado y justificar las diferencias de rendimiento con respecto al original en caso de
que las hubiera.
2.- Por qu en algunas ocasiones los resultados de salida de la aplicacin varan entre
ejecuciones consecutivas con ms de un hilo sin modificar los parmetros de ejecucin?
Por qu esta variacin tiene ms impacto cuanto mayor es el nmero de iteraciones?
Por qu slo ocurre con la versin paralela y no con la versin secuencial?
Se recomienda la lectura del artculo: What every computer scientist should know about floating-point arithmetic de David Goldberg, disponible en http://dl.acm.org/citation.cfm?id=103163 a travs de la suscripcin de la biblioteca de la
universidad.
-
5. Entrega
La entrega del cdigo y de la memoria se llevar a cabo mediante aula global
utilizando los entregadores disponibles para cdigo y memoria respectivamente.
Cdigo
Se debe entregar un archivo en formato zip con el nombre
infoac_openmp_code_AAAAAAAAA_BBBBBBBBB.zip donde AA y BB son los NIAs de los integrantes del grupo. El fichero contendr:
nbody.c (configurado con scheduler static).
Makefile
Memoria
Se debe entregar un archivo en formato pdf con el nombre
infoac_openmp_AAAAAAAAA_BBBBBBBBB.pdf donde AA y BB son los NIAs de los integrantes del grupo.
Es necesario que la memoria contenga los siguientes apartados:
Portada con los datos de los autores (Nombre completo, NIA y grupo)
ndice
La memoria deber tener un apartado por cada requisito de la memoria.
Respuesta a las preguntas planteadas en cada apartado. Es necesario copiar el enunciado de la pregunta antes de responder a la misma.
Conclusiones
No descuide la calidad de su memoria, ya que ser el elemento principal utilizado
para su calificacin. Todas las respuestas debern estar correctamente justificadas.
Normas
1) Las prcticas que no compilen o que no se ajusten a los requisitos, obtendrn una calificacin de 0.
2) Cualquier warning que aparezca durante la compilacin podr afectar a la calificacin del cdigo.
3) Un programa que no se ajuste a los requisitos planteados, obtendr una calificacin de 0.
4) Todo cdigo entregado deber contener comentarios explicativos, en caso contrario, la calificacin podr verse afectada.
-
5) El cdigo deber funcionar en las instalaciones del departamento de informtica (laboratorios y/o guernika). Es responsabilidad del alumno
asegurarse de que el cdigo entregado funciona correctamente en dichas
instalaciones.
6) La entrega de la prctica se realizar a travs de Aula Global. No se permite la entrega a travs de correo electrnico sin autorizacin previa.
7) Todos los resultados y grficas que se expongan en la prctica debern ser presentados de una forma fcilmente legible y debern estar comentados.
8) La calidad de los comentarios de los resultados y grficas son tan importantes como los resultados en s mismos. El objetivo de la memoria es
aplicar los conocimientos adquiridos en la asignatura a un caso prctico real.
9) Se prestar especial atencin a la originalidad de las prcticas. En caso de detectarse copia completa o parcial del cdigo o la memoria se obtendr una
calificacin de 0 y, por tanto, se suspender la parte prctica de la asignatura
a los grupos involucrados. Adicionalmente, se podr sancionar mediante el
procedimiento administrativo establecido por la universidad.