next up previous contents
Next: 4.2.3 Implementación Up: 4.2 Implementación paralela Previous: 4.2.1 Elección de organización   Índice General


4.2.2 El algoritmo en paralelo

Se asume que en el cálculo participarán al menos dos nodos. La unidad de trabajo básica será el renglón, de forma que los nodos calculan los elementos resultado hasta completar un renglón, que se envía al nodo maestro para su consolidación, procediendo el nodo esclavo a calcular otro renglón.

El primer nodo se constituye como maestro, generando las matrices aleatorias y distribuyéndolas a los procesos esclavos por medio de un mecanismo de broadcast.

Los esclavos reciben las matrices a multiplicar, y determinan el número de procesos que participan en el cálculo, así como su lugar en la lista de procesos. Con esta información cada proceso puede decidir cuáles renglones debe resolver. En particular, los nodos se distribuyen equitativamente los renglones, dejando al último nodo los renglones restantes o residuo.

Como un ejemplo, si se tiene una matriz de $100\times 100$, y en el cálculo participan 7 nodos, se realiza la operación $100/7$, descartando la parte fraccionaria, obteniendo 14 renglones por cada nodo. Los dos renglones residuales se asignan automáticamente al último nodo. De esta forma la asignación de trabajo queda como sigue:

Nodo Renglones
1 0-13
2 14-27
3 28-41
4 42-55
5 56-69
6 70-83
7 84-99

Una vez habiendo recibido las matrices a operar y conociendo el bloque de renglones asignados, cada nodo esclavo procede a calcular, entregando los resultados parciales al nodo maestro, estos resultados se envían a través de un mensaje punto a punto (mecanismo send). El nodo maestro recibe estos resultados por medio de un mecanismo receive, contabilizando el número de renglones resueltos, y cuando se tiene la matriz completamente resuelta, el proceso se da por terminado.

Este programa realiza el mismo proceso de medición de tiempo de cálculo que se efectúa en la versión uniprocesador, a fin de tener valores para comparar el desempeño. Cabe hacer notar que el muestreo de tiempo toma en cuenta el tiempo empleado en la transmisión de las matrices (broadcast) pues este tiempo efectivamente forma parte de la realización del cálculo con paralelismo.


next up previous contents
Next: 4.2.3 Implementación Up: 4.2 Implementación paralela Previous: 4.2.1 Elección de organización   Índice General
2002-05-15