Você está na página 1de 8

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 Ncuerpos.
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 debera 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 gravitatoria 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 <fichero_entrada> <fichero_salida> <X11_0 |1>
Siendo:
<fichero_entrada> ruta del fichero con la distribucin inicial de
cuerpos.
<fichero_salida> ruta del fichero resultante con la distribucin final
de cuerpos.
<X11_0|X11_1> 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.

Você também pode gostar