• No se han encontrado resultados

Algoritmos paralelos para la Multiplicación de Matrices

N/A
N/A
Protected

Academic year: 2021

Share "Algoritmos paralelos para la Multiplicación de Matrices"

Copied!
26
0
0

Texto completo

(1)

Algoritmos paralelos para la Multiplicación de

Matrices

Ginés David Guerrero Hernández

Universidad de Murcia - UM

(2)

Introducción Paralelizar Conclusiones Trabajo Bibliografía

Índice

1 Introducción Importancia Consideraciones Características Secuencial 2 Paralelizar Tipos Secuencial Bloques Cannon Fox DNS 3 Conclusiones 4 Trabajo 5 Bibliografía

(3)

Importancia de la Multiplicación de Matrices (MM)

Aparece en un gran número de algoritmos en el álgebra lineal (sistemas de ecuaciones, calculo de estructuras,

determinantes...).

Las ideas de optimización pueden ser usadas para otros problemas.

Los algoritmos de la MM son los más estudiados en la computación de altas prestaciones.

(4)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Consideraciones iniciales a tener en cuenta

Por simplicidad, todo el tiempo trabajaremos con matrices cuadradas de tamaño n x n.

Consideramos que el número de procesadores de los que disponen las másquinas paralelas es p.

Las matrices a multiplicar serán AyB, ambas tratadas como matrices densas (con pocos 0’s), el resultado lo

almacenaremos en la matrizC.

Tp se corresponde con el tiempo que empleanp para resolver el problema.

En el coste de las comunicaciones el tiempo para transmitir n datos entre dos procesadores conectados es dada por ts+ntw donde ts el el tiempo empleado para establecer la

comunicación y tw es el tiempo que tarda para transmitir un dato.

(5)

Características de la MM

Hay diversas características por las que la MM es apropiada para máquinas paralelas:

Cada elemento que se calcula de la matriz resultadoC (C(i,j)) es independiente de todos los demás elementos.

Siguen el modelo SPMD (Single Progam - Multiple Data). La cantidad y el tipo de operaciones a realizar es independiente de los datos mismos.

Regularidad de la organización de los datos y de las operaciones que se realizan sobre los datos.

(6)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Importancia Consideraciones Características Secuencial

Algoritmo secuencial

Básicamente está formado por tres bucles for.

Código for (i = 0; i < n; i++) { for (j = 0; i < n; j++) { C[i][j] = 0; for (k = 0; k < n; k++) { C[i][j] += A[i][k] * B[k][j] } } } O(n3).

(7)

Tipos de Algoritmos Paralelos

Según en el tipo de máquinas donde vaya a ser ejecutado podemos encontrar:

Algoritmos Paralelos para Multiprocesadores. Simple basado en el secuencial.

Divide y Vencerás recursivo.

Paralelización del método de Strassen. Algoritmos Paralelos para Multicomputadores.

Simple basado en el secuencial. Con particionamiento en bloques. Cannon.

Fox. DNS.

Los algoritmos nuevos que se presentan son los pertenecientes al segundo bloque, por lo que centraremos nuestro estudio en estos.

(8)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo simple basado en el secuencial

Podemos basarnos en el código secuencial. Es fácilmente paralelizable.

Cada procesador tendrá en memoria un conjunto de filas de la matriz Ay la matriz B por completo.

El uso de memoria es muy ineficiente.

P1 P1 P1 P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 A P1 P2 B = P1 P1 P1 P1 P1 P1 P1 P1 P2 P2 P2 P2 P2 P2 P2 P2 C

(9)

División en Bloques I

Estamos ante una topología lógica en malla de dos

dimensiones, donde p(i,j) el procesador de la filai y columnaj

y que la matrices están dividas en bloques.

Las matrices serán dividas en bloques de tamaño √n p x

n p. Cada procesador calculará un bloque de C.

Cada procesador tendrá√p submatrices correspondientes a la fila de bloques de la matriz Ay otras tantas correspondientes a la columna de bloques de la matrizB para así poder calcular un bloque deC.

El uso de memoria, aunque mejor que el algoritmo anterior, sigue siendo ineficiente.

(10)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

División en Bloques II

Los pasos que sigue el algoritmo son:

1 Inicialmente cada procesador tiene los bloquesA(i,j) yB(i,j) 2 El procesador que está situado en la fila(i,j)envía su bloque

deAa todos los elementos de la filai de la malla, y el bloque deB a todos los elementos de la columnaj.

3 Finalmente se realiza la multiplicación con los bloques de la

fila de bloquesi deAy los bloques de la columnaj de B, para así obtener el bloqueC(i,j).

Tp = n 3 p +logpts +2 n2 ptw P1 P1 P2 P2 P3 P3 P4 P4 A P1 P2 P3 P4 P1 P2 P3 P4 B = P1 P2 P3 P4 C

(11)

Algoritmo de Cannon I

Es una versión del anterior algoritmo que hace un uso más eficiente de la memoria.

Nuevamente estamos ante una topología lógica de malla de 2 dimensiones.

Se basa en ir desplazando bloques de la matriz Ahacia el procesador de la izquierda y los de la matrizB hacia el de arriba.

En cada paso un procesador sólo tiene un bloque de Ay otro deB en memoria.

(12)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Cannon II

1 El procesadorp(i,j) tiene los bloquesA(i,j) yB(i,j). 2 El bloque correspondiente a la fila i-ésima deAse envía

cíclicamente al procesador que estái filas a la izquierda en la malla, y la columna j-ésima deBse envía cíclicamente j

columnas hacia arriba. Así pues el bloqueA(i,j) será enviado al

procesador(i,(j+i)mod√p).

3 Cada procesador multiplica su par de bloques.

Repetir √p−1 veces:

4 De igual modo que en el punto 2, cada bloque deAse envía al

procesador que se encuentra a la izquierda en la malla, y cada bloque deBal de arriba.

5 Cada procesador multiplica su nuevo par de bloques, y suma el

resultado al anterior. Tp = n 3 p +2 pts+2n 2 ptw

(13)

Ejemplo I

3 2 0 2 1 4 3 2 1 A 2 0 2 1 4 1 3 2 4 B = 8 8 8 17 12 21 11 10 12 C Paso 1 Paso 2 3 2 0 2 1 4 3 2 1 A 2 0 2 1 4 1 3 2 4 B 3 2 0 1 4 2 1 3 2 A 2 4 4 1 2 2 3 0 1 B Paso 3 3 2 0 1 4 2 1 3 2 A 2 4 4 1 2 2 3 0 1 B 6 8 0 1 8 4 3 0 2 C

(14)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4 2 0 3 4 2 1 3 2 1 A 1 2 2 3 0 1 2 4 4 B 6 8 0 1 8 4 3 0 2 C Paso 5 2 0 3 4 2 1 3 2 1 A 1 2 2 3 0 1 2 4 4 B 8 8 6 13 6 5 9 8 6 C

(15)

Ejemplo III

Paso 4 0 3 2 2 1 4 2 1 3 A 3 0 1 2 4 4 1 2 2 B 8 8 6 13 8 5 9 8 6 C Paso 5 0 3 2 2 1 4 2 1 3 A 3 0 1 2 4 4 1 2 2 B 8 8 8 17 12 21 11 10 12 C

(16)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo de Fox

En este algoritmo mantiene la filosofía del algoritmo anterior. El algoritmo consiste en los siguientes pasos:

1 El procesadorp(i,j) tiene los bloquesA(i,j) yB(i,j).

Repetir √p:

2 La fila i-ésima de la malla de procesadores recibe el bloque A(i,(i+j)mod√p) en la j-ésima iteración.

3 Multiplicar el bloque recibido deApor el bloque residente de B.

4 Enviar el bloque deB al procesador directamente precedente

en la fila del procesador, y recibir un bloque deB desde el procesador de la fila posterior.

Tp = n 3 p +pts+2 n2 ptw

(17)

Ejemplo I

3 2 0 2 1 4 3 2 1 A 2 0 2 1 4 1 3 2 4 B = 8 8 8 17 12 21 11 10 12 C Paso 1 Paso 2 3 2 0 2 1 4 3 2 1 A 2 0 2 1 4 1 3 2 4 B 3 3 3 1 1 1 1 1 1 A 2 0 2 1 4 2 3 2 4 B Paso 3 3 3 3 1 1 1 1 1 1 A 2 0 2 1 4 1 3 2 4 B 6 0 6 1 4 1 3 2 4 C

(18)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Ejemplo II

Paso 4 3 3 3 2 2 2 3 3 3 A 1 4 1 3 2 4 2 0 2 B 6 0 6 1 4 1 3 2 4 C Pasos 2 y 3 2 2 2 4 4 4 3 3 3 A 1 4 1 3 2 4 2 0 2 B 8 8 8 13 12 17 9 2 10 C

(19)

Ejemplo III

Paso 4 2 2 2 4 4 4 3 3 3 A 3 2 4 2 0 2 1 4 1 B 8 8 8 13 12 17 9 2 10 C Pasos 2 y 3 0 0 0 2 2 2 2 2 2 A 3 2 4 2 0 2 1 4 1 B 8 8 8 17 12 21 11 10 12 C

(20)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS I

Usa un particionamiento 3D.

Visualiza el algoritmo de multiplicación de matrices como un cubo, las matrices AyB están en dos caras ortogonales y la matriz C resultante la almacena en otra cara.

Cada nodo en el cubo representa una operación de suma-multiplicación.

Originalmente necesita n x n x n procesadores.

Hay variaciones del algoritmo que permiten llevar a cabo el algoritmo con un menor número de procesadores.

La variación más común usan2≤p≤n3 procesadores. La variación GK usa 1≤p≤n3procesadores.

(21)

Algoritmo DNS II

El algoritmo, que puede ser observado gráficamente en las siguientes transparencias, está divido en las siguientes etapas:

1 Los elementos de las matricesAyBson distribuidos en losp

procesadores.

2 Se multiplican los elementos que contiene cada procesador. 3 Se suman todos los resultados parciales (situados a lo largo de

la dimensión k en la posterior figura).

En la versión original realiza el cómputo en un O(logn). En la versión que permite más de un elemento por procesador: Tp = n 3 p + 5 lognp2 +2np3(ts +tw) En la versión GK: Tp = n 3 p + 5 3logpts+ 5 3 n2 p23 ts

(22)

Introducción Paralelizar Conclusiones Trabajo Bibliografía Tipos Secuencial Bloques Cannon Fox DNS

Algoritmo DNS III

(23)

Algoritmo DNS IV

(24)

Introducción Paralelizar Conclusiones Trabajo Bibliografía

Conclusiones

Se puede comprobar que hay gran cantidad de algoritmos creados para realizar de manera lo más óptima posible la multiplicación de matrices.

Además de los algoritmos presentados hay muchos otros (Arreglo Sistólico, Berntsen...).

Muchos de los algoritmos que nos podemos encontrar son variaciones de los estudiados para adaptarlos a un tipo de máquina paralela concreta.

Todos los algoritmos paralelos comparten características comunes:

Adoptan el modelo de procesamiento SPMD.

Asumen que los nodos de procesamiento son homogéneos y aprovechan esta homogeneidad para obtener balance de carga.

(25)

Trabajo a realizar

Una vez adquiridos los conocimientos básicos sobre la paralelización de la MM el trabajo que se va a realizar será:

Implementación en MPI: Algoritmo de Cannon. Algoritmo de Fox.

Implementación en OpenMP:

Algoritmo simple a partir del Algoritmo Secuencial. Estudio Teórico-Práctico comparando:

1 Cannon vs Fox. 2 Simple vs Cannon. 3 Simple vs Fox.

(26)

Introducción Paralelizar Conclusiones Trabajo Bibliografía

Bibliografía

Ananth Grama, Anshul Gupta, Vipin Kumar, George Karypis.

Introduction to Parallel Computing: Design and Analysis of Algorithms

Ranshul Gupta, Vipin Kumar.

Scalability of Parallel Algorithms for Matrix Multiplication

Zhiao Shi.

Parallel Matrix Multiplication

Karen Walters.

Referencias

Documento similar

Se dispone de puerta de entrada y una de salida, activadas por motor para abrir y cerrar, sensores que permiten determinar si un vehículo entra o sale, una luz roja que indica si

Ambos conjuntos tienen igual número de elementos, dado que existe entre ellos la siguiente correspondencia biunívoca: (a,b,c,d,e,f) &lt;-&gt; (a,b-1,c-2,d-3,e-4,f-5) dónde

Coco Chanel como mujer libre, independiente y empresaria que diseñó la figura de la nueva mujer; Tamara de Lempicka, como máxima exponente de la pintura Art Déco, es recordada por

El árbol de Moringa oleífera es especialmente indicado para la modalidad de cultivo en callejones, conocida también como “Alley Cropping”, debido a ciertas

Sin embargo, estos dominios magnéticos tienen un determinado volumen, con un diámetro crítico asociado (C rítico ) dependiente de las propiedades intrínsecas

MEMORIA PARA OPTAR AL GRADO DE DOCTOR PRESENTADA POR. José Luis

Sin  perjuicio  de  lo  anterior,  contra  la  resolución  de  concesión,  que  agota  la  vía  administrativa,  podrá 

articulación de Shakespeare en la cultura popular contemporánea contrasta con el desarrollo reciente en ciertos sectores del mundo académico de lo que Pilar Hidalgo llama