La multiplicación de matrices, es una de las operaciones interesantes para plantear la comparación de de programación secuencial y la programación paralela.
Por ejemplo, sabemos qué, para multiplicar 2 matrices, sean Amxn y Bwxp. Sólo es posible si n es igual a w.
Entonces Amxn y Bnxp si se pueden multiplicar.
Así pues, en la multiplicación de matrices los resultados de obtienen de la siguiente manera:
Dadas dos matrices A y B, tales que el número de columnas de la matriz A es igual al número de filas de la matriz B; es decir:
y
la multiplicación de A por B, que se denota
o simplemente AB, el resultado del producto es una nueva matriz C:
donde cada elemento ci,j está definido por:
es decir:
Para este estudio, vamos a trabajar siempre con matrices cuadradas. Así que hablaremos de la multiplicación de 2 matrices de orden (nxn), entonces Anxn y Bnxn que dará como resultado una tercera matriz Cnxn.
Para iniciar sus conocimientos en programación paralela, revise los siguientes enlaces:
https://sites.google.com/site/javaejercicios/home/hilos-introduccion
https://sites.google.com/site/javaejercicios/home/hilos-caballos
Para, proponer un escenario de simulación 1, necesitaremos:
PRIMERO: Una clase que defina la Multiplicación Secuencial de matrices.
SEGUNDO: Un clase para definir las Multiplicaciones paralelas fila por columna.
TERCERO: Un clase para realizar la simulación de las multiplicaciones secuencial y paralela.
Resultados: Podemos observar que la multiplicación secuencial se ejecuta de manera controlada, ordenada, sin embargo la programación paralela no siempre muestra un comportamiento que podamos controlar. Por ejemplo, los 3 primeros hilos resolvieron las tres primeras operaciones de la matriz resultado y después un cuarto hilo ejecuta la operación de la fila 2 y columna 2, siendo este un comportamiento impredecible.
Tarea:
Diseñe un entorno de simulación para matrices cuadradas desde 1x1 hasta 100x100(e incluso más), para obtener los tiempos que tarda la multiplicación secuencial y la multiplicación paralela. Obtenga los tiempos y grafique sus resultados usando GNUPlot.
Simulacion y comparación de Programacion Paralela y Programacion secuencia
para el caso de Multiplicación de matrices.
Entregable:
ADA_Lab04a_PATERNO_MATERNO_MulMat.zip
Simulacion.java
datos.dat (también puede ser secuencial.dat y paralela.dat)
Informe.pdf
Otros que considere en una carpeta "Anexos"