You are on page 1of 4

ARQUITECTURA E INGENIERA DE COMPUTADORES PRCTICA DE LA 2 PARTE CURSO ACADMICO 2010-2011

1. INTRODUCCIN Con excepcin de este documento, todo el material necesario para la realizacin de la prctica lo tiene disponible en el curso virtual de la asignatura. El material que necesita es: Enunciado de la prctica (este documento). Paquete PVM 3.4. Documentacin de PVM.

Se recomienda la realizacin de la prctica utilizando un sistema operativo Linux. En lo que respecta a este punto, si no se tiene acceso a un ordenador con Linux pero s con Windows, existen varias posibilidades: La ms recomendada es instalar sobre Windows una mquina virtual y en ella una distribucin Linux. Mquinas VMware virtuales gratuitas son VirtualBox (http://es.wikipedia.org/wiki/Virtualbox), (http://es.wikipedia.org/wiki/VMware) o QEMU (http://es.wikipedia.org/wiki/QEMU). En la pgina de material complementario est disponible un fichero para VirtualBox con la instalacin de PVM en un sistema Ubuntu. Utilizar un Linux Live CD (http://es.wikipedia.org/wiki/LiveCD), es decir, una distribucin Linux que no necesita instalacin el el disco duro. Una posibilidad es Knoppix (http://es.wikipedia.org/wiki/Knoppix). Otra Knoppix Live es PelicanHPC (http://idea.uab.es/mcreel/ParallelKnoppix/) que est especialmente diseada para temas de programacin paralela y construccin de clsters. Recurrir a CYGWin (http://es.wikipedia.org/wiki/Cygwin) aunque la instalacin es compleja y no est muy bien documentada, por lo que se desaconseja. La realizacin de la prctica es TOTALMENTE VOLUNTARIA. Habr nicamente dos niveles de calificacin: APTO y NO APTO. Las prcticas que consigan el APTO contribuirn a la nota final de la segunda parte de la asignatura con 1 punto. Salvo casos excepcionales, la prctica no servir para aprobar la segunda prueba presencial, ya que slo se evala si previamente se ha aprobado el examen. En caso de que no se aprobase el examen de la segunda prueba presencial, esta prctica se guardar hasta septiembre con el objeto de evaluarla si se superase el correspondiente examen en esa convocatoria. No se permiten grupos de trabajo. Las prcticas se realizarn individualmente. Lea detalladamente el resto de la memoria ya que se le indica claramente la forma de realizar la entrega de la prctica y los plazos de que dispone para ello. 2. ENUNCIADO La prctica a realizar consiste en programar, utilizando el lenguaje C y rutinas de PVM, un versin paralela de un algoritmo para la obtencin del coste del camino mnimo entre dos nodos o vrtices cualesquiera de un grafo no dirigido, es decir, lo que se conoce como all-pairs shortest paths problem. Para ello, se va a utilizar como base el algoritmo de Dijkstra que, en su formulacin bsica, sirve nicamente para encontrar los caminos mnimos desde un vrtice dado a los restantes vrtices que componen el grafo. Versin secuencial del algoritmo de Dijkstra El algoritmo de Dijkstra es un algoritmo de complejidad (n2), donde n es el nmero de vrtices, que sirve para encontrar el camino de coste mnimo desde un nodo origen a todos los dems nodos del grafo. Fue diseado por el holands Edsger Wybe Dijkstra en 1959. DPTO. INFORMTICA Y AUTOMTICA. UNED. VERSIN 1.0

Dado un grafo a cuyos arcos se han asociado una serie de pesos, se define el camino de coste mnimo de un vrtice u a otro v, como el camino donde la suma de los pesos de los arcos que lo forman es la ms baja entre las de todos los caminos posibles de u a v. El fundamento sobre el que se asienta este algoritmo es el principio de optimalidad de Bellmann: si el camino ms corto entre los vrtices u y v pasa por el vrtice w, entonces la parte del camino que va de w a v debe ser el camino ms corto entre todos los caminos que van de w a v (Figura 1).

Figura 1: Ejemplo. De esta manera, se van construyendo sucesivamente los caminos de coste mnimo desde un vrtice inicial hasta cada uno de los vrtices del grafo, y se utilizan los caminos conseguidos como parte de los nuevos caminos. Para comprender el algoritmo se adjunta un pseudocdigo cuyo seguimiento ayuda a entender su funcionamiento.

G = (V, E) donde V es el conjunto de vrtices y E el de arcos. A es la matriz de adyacencia. Es una matriz simtrica en la que la posicin A(i, j) almacenada el peso del arco existente entre los vrtices i y j. Cuando no existe arco entre dos vrtices, el valor que se almacena es infinito. VT es el conjunto de vrtices cuyos caminos ms cortos al origen han sido ya determinados. V-VT es el resto de vrtices. s es el vrtice sobre el que se calculan los caminos ms cortos a los restantes vrtices. l es el array con las estimaciones de los caminos ms cortos desde s a los restantes vrtices. procedure DIJKSTRA_SECUENCIAL (V, E, A, s) begin VT := {s}; for all v (V-VT ) do d[v] := A(s, v); while VT V do begin encuentra un vrtice u tal que d[u] := min {d[v] v (V-VT )}; VT := VT {u}; for all v (V- VT ) do d[v] := min {d[v], d[u] + A(u, v)}; end while; end DIJKSTRA_SECUENCIAL;

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Formulacin paralela del problema La formulacin paralela del problema all-pairs shortest paths problem puede ser realizada dividiendo el conjunto de vrtices del grafo entre n procesos y cada proceso Pi calcula los caminos de coste mnimo del subconjunto de vrtices Vi que le hayan correspondido utilizando la versin secuencial del algoritmo de Dijkstra. Esta aproximacin se conoce como formulacin basada en el particionamiento de la fuente y no requiere comunicacin entre los procesos, salvo la correspondiente para que la matriz de adyacencia A est en poder de todas los procesos y el envo de resultados. Programa PVM a realizar La prctica a realizar consiste en la programacin de la resolucin paralela del problema all-pairs shortest paths utilizando el lenguaje C y rutinas PVM.

DPTO. INFORMTICA Y AUTOMTICA. UNED.

VERSIN 1.0

La introduccin del grafo al programa se realizar mediante un fichero de texto, y la respuesta, es decir, la matriz de costes mnimos, se mostrar por pantalla. La primera lnea del fichero contendr un valor entero con el nmero n de vrtices del grafo y, a continuacin, en cada lnea se colocar una fila de la matriz de adyacencias A. Por definicin, la matriz tiene que ser simtrica y sus elementos deben ser nmeros reales positivos mayores o iguales que cero. Como ejemplo para un grafo de 3 vrtices el fichero tendr el siguiente aspecto: 3 A00 A01 A 02 A 10 A 11 A 12 A 20 A 21 A 22 El programa principal a realizar debe leer de la lnea de comandos un nico parmetro: el nombre del fichero de entrada con la definicin del grafo. Por lo tanto, la sintaxis para ejecutar la prctica tiene que ser OBLIGATORIAMENTE la siguiente:
practicaPVM nombre_fichero_entrada

Como salida se obtendr una matriz simtrica con los costes de los caminos mnimos entre los vrtices o nodos del grafo. Desde el punto de vista del diseo de la prctica debe crear tres ficheros con cdigo C: programa principal, programa maestro PVM y programa esclavo PVM. Fichero practicaPVM: Programa principal que ser el encargado de leer el fichero en el que se define el grafo, llamar a la funcin dijkstraMasterPVM y presentar los resultados en pantalla. Fichero dijkstraMasterPVM.c: dijkstraMasterPVM Funcin que contiene el cdigo del maestro PVM, es decir, la funcin

Fichero dijkstraClientePVM.c: Programa que contiene el cdigo del esclavo PVM. El cdigo del esclavo debe implementar la versin secuencial del algoritmo de Dijkstra.

La sintaxis de la funcin dijkstraMasterPVM debe ser OBLIGATORIAMENTE la siguiente:


info = dijkstraMasterPVM (double *A, double *x, int n);

siendo:
A. x.

Array que contiene los coeficientes de la matriz de adyacencias A. Su tamao debe ser sizeof(double)*n*n. Array en el que se devuelven los costes calculados. Su tamao debe ser sizeof(double)*n*n. Valor del tipo int con informacin sobre la ejecucin de la rutina:

n. Nmero de vrtices del sistema.


info.

0 : La rutina se ha ejecutado con xito. -1: Se ha producido algn tipo de error en la funcin pvm_spawn. -2: Se ha producido algn tipo de error en el intercambio de informacin con los esclavos. Algunas aspectos que debe tener en cuenta OBLIGATORIAMENTE se detallan a continuacin: El nmero de vrtices que corresponde a cada proceso no debe ser inferior a 3. Por ejemplo, para un grafo con diez nodos debe crear cuatro procesos: tres procesos resuelven el problema para tres vrtices y el cuarto para uno slo. La matriz de adyacencias se tiene que enviar desde el proceso maestro a todos los esclavos utilizando la rutina
pvm_mcast.

No utilice en esta formulacin las rutinas para operaciones colectivas. Recurra al empleo de las funciones normales para el envo y recepcin de mensajes.

DPTO. INFORMTICA Y AUTOMTICA. UNED.

VERSIN 1.0

En la memoria debe explicar paso a paso la lgica del programa, indicando qu trabajo realiza el proceso maestro y el proceso esclavo. Explique el motivo por el que utiliza las sentencias PVM y cmo ha resuelto el intercambio de informacin entre los procesos. 3. FORMATO DE LA MEMORIA La memoria debe constar de los siguientes apartados: 1. 2. 3. Portada con nombre, direccin, nmero de DNI y telfono. Memoria descriptiva del trabajo realizado, incluyendo los listados de los ficheros que se hayan escrito. Conclusiones, opiniones y mejoras relacionadas con la prctica.

4. FORMAS DE ENTREGA Enviar todo el material en un nico archivo comprimido en formato ZIP y libre de virus por correo electrnico a la direccin aic@dia.uned.es 5. PLAZOS DE PRESENTACIN Convocatoria de junio: Hasta el da 20 de junio Convocatoria de septiembre: Hasta el 19 de septiembre.

DPTO. INFORMTICA Y AUTOMTICA. UNED.

VERSIN 1.0

You might also like