Está en la página 1de 10

Revista INGENIERA UC

ISSN: 1316-6832
revistaing@uc.edu.ve
Universidad de Carabobo
Venezuela

Vargas, Edwin; Flores, Enrique; Rey Lago, Demetrio


Paralelizacin de la factorizacin LDLT usando el lenguaje de programacin paralela ZPL
Revista INGENIERA UC, vol. 15, nm. 2, agosto, 2008, pp. 72-80
Universidad de Carabobo
Valencia, Venezuela

Disponible en: http://www.redalyc.org/articulo.oa?id=70712715009

Cmo citar el artculo


Nmero completo
Ms informacin del artculo
Pgina de la revista en redalyc.org

Sistema de Informacin Cientfica


Red de Revistas Cientficas de Amrica Latina, el Caribe, Espaa y Portugal
Proyecto acadmico sin fines de lucro, desarrollado bajo la iniciativa de acceso abierto

REVISTA INGENIERA UC. Vol. 15, No 2, 72-80, 2008

Paralelizacin de la factorizacin LDLT usando


el lenguaje de programacin paralela ZPL
Edwin Vargas, Enrique Flores, Demetrio Rey Lago
Instituto de Matemtica y Clculo Aplicado, Facultad de Ingeniera,
Universidad de Carabobo, Valencia, Venezuela
Email: vargase@uc.edu.ve ,evflores@uc.edu.ve, drey@uc.edu.ve

Resumen
Se muestra la implementacin de la factorizacin de una matriz simtrica positiva a la forma LDLT, usando
el Lenguaje de Programacin Paralela ZPL. Se hace una descripcin del lenguaje ZPL, se realizan pruebas a matrices, y se determina la aceleracin y la eficiencia variando la cantidad de procesadores. Se obtuvo como resultado la disminucin del tiempo de ejecucin del programa a medida que se aumenta el nmero de procesadores y se
determin que aproximadamente un 90% del tiempo de ejecucin se consume en el algoritmo de multiplicacin de
una matriz por un vector.
.
Palabras clave: Factorizacin LDLT, programacin paralela, ZPL.

Parallelization of the LDLT decomposition


with the ZPL programming language
Abstract
It is shown the parallelization of the LDLT factorization of a positive symmetrical matrix using the ZPL
Parallel Programming Language. A brief description of the language ZPL is made, and tests to matrices are made,
and acceleration and efficiency is determine varying the quantity of processors. The result obtained was a decreasing in the runtime of the program as it increases the number of processors and it was determined that approximately 90% of execution time is consumed in the algorithm of matrix - vector product.
Keywords: LDLT decomposition, parallel programming, ZPL.
1. INTRODUCCIN
La factorizacin de una matriz A de n x n, simtrica positiva, se realiza mediante el producto de tres
matrices; una matriz L, o triangular inferior unitaria,
una matriz D, o diagonal y una matriz LT, quedando
A = LDLT, es decir, la matriz triangular inferior transpuesta [1], como se ilustra a continuacin:
a11
a
21
a31

a41

a21 a31 a41 1 0 0


a22 a32 a42 L21 1 0
=
a32 a33 a43 L31 L32 1

a42 a43 a44 L41 L42 L43

0
0
0

d1 0 0 0
0 d 0 0
2

0 0 d3 0

0 0 0 d4

Este mtodo de factorizacin, es llamado la


Descomposicin de Cholesky. Para este mtodo la
Matriz A es expresada en la forma:
A = LDLT

(1)

Los elementos de las matrices L y D son determinados por medio de la ecuacin (1), el elemento
An(i,j) de la Matriz A, se calcula a travs de [2]:
j

An (i, j) = Lik dk L jk

1 j i 1

(2)

1 j i1

(3)

k =1

1 L21 L31 L41


0 1 L L
32
42

0 0 1 L43

0 0 0 1

72 Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

j1

Lijd j = An (i, j) Likdk Ljj


k=1

Vargas, Flores y Rey Lago

mientras que los elementos de la matriz diagonal D se


obtienen:
i

d i = An (i, i ) Lik d k Lik

(4)

k =1

i 1

d i = An (i, i ) Lik d k
2

i 2

(5)

k =1

con

d1 = An (1,1)

(6)

Una aplicacin de la factorizacin LDLT est


estrictamente ligada a la resolucin de sistemas de
ecuaciones. En matemtica y lgebra lineal, un sistema lineal de ecuaciones es un conjunto de ecuaciones
lineales sobre un cuerpo o un anillo conmutativo. El
problema de los sistemas lineales de ecuaciones es
uno de los ms antiguos de la matemtica y tiene una
infinidad de aplicaciones, como en procesamiento digital de seales, estimacin, prediccin y ms generalmente en programacin lineal as como en la aproximacin de problemas no lineales de anlisis numrico.
El desarrollo de la factorizacin de una matriz A de
tamao n por n simtrica positiva a travs de la descomposicin de Cholesky involucra gran cantidad de
operaciones con matrices y vectores.
Como el lenguaje de programacin ZPL es un
lenguaje orientado a operaciones con vectores y matrices que presenta buen desempeo tanto en computadoras secuenciales como en computadoras paralelas [3],
se utilizar para desarrollar un algoritmo para realizar
la mencionada factorizacin, se realizarn pruebas en
un cluster de computadores con el algoritmo desarrollado que muestren los tiempos de procesamiento, la
aceleracin y la eficiencia variando el tamao de las
matrices de prueba y la cantidad de procesadores en el
cluster.
2. PROGRAMACIN PARALELA Y UNA INTRODUCCIN AL LENGUAJE ZPL
La programacin paralela consiste en el uso de
mltiples computadores, o de computadores con mltiples procesadores internos, para resolver un problema a alta velocidad. El paralelismo puede enfocarse

hacia la arquitectura (procesadores de memoria compartida, multiprocesadores de paso de mensajes), o


hacia la programacin (paralelismo de datos, paralelismo de tareas). Las tcnicas de programacin en esta
rea pueden clasificarse en paralelismo explicito (el
programador es quien define el paralelismo dentro del
programa) o paralelismo implcito (es el lenguaje de
programacin quien define el paralelismo) [3].
En cuanto al lenguaje ZPL, se puede mencionar
que es un lenguaje de programacin que es especialmente efectivo para calcular problemas de ciencias e
ingeniera. Su intencin es reemplazar lenguajes como
Fortran y C en la computacin tcnica. Es un lenguaje
de programacin conveniente para clculos computacionales de ingeniera y ciencias [4], ZPL es un lenguaje de programacin implcitamente paralelo, fue
diseado para simplificar la programacin de computadoras paralelas, los programadores no necesitan especificar cmo se ejecutan concurrentemente los clculos, ni siquiera insertan comunicacin entre procesos. Los programas escritos en ZPL, muestran una
relativa simplicidad, lo que hace que sean fcil de leer
y entender, conservando an un modelo sofisticado de
paralelismo [5].
Los programas de ZPL escriben pocos ciclos y
realizan un mnimo de manipulacin de ndices. El
concepto principal de este lenguaje es la regin, la
cual es un conjunto de ndices de un rango fijo El rango r de una regin es el producto cartesiano de un nmero finito de secuencias enteras; los lmites superiores e inferiores son fijados por el programador.
Uno de los operadores ms utilizados en el manejo de matrices a travs del Lenguaje ZPL, es el operador Reduce (<<), el cual es una de las formas funcionales que pueden ser usadas en clculos globales.
Su funcin es reducir los arreglos a unos de menor
orden, o incluso escalares. El operador << es antecedido por otro operador aritmtico para llevar a cabo las
reducciones [4].
En este mismo orden de ideas, una de las caractersticas ms importantes de ZPL es la habilidad de
llenar una matriz con copias de una fila o columna, o
ms generalmente, el llenar un arreglo de dimensin
mayor con copias de otro arreglo de dimensin menor.
Esta operacin, llamada flooding en ZPL es una generalizacin de la idea de la promocin escalar [4].
Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

73

Paralelizacin de la factorizacin LDLT usando el lenguaje ZPL

3. ALGORITMO DE FACTORIZACIN LDLT


EN ZPL
La programacin de una aplicacin paralela en
ZPL consta de dos partes fundamentales, la configuracin y definicin de variables y regiones y la codificacin del algoritmo haciendo uso de los operadores
que hagan el uso ms eficiente de la mquina paralela.
3.1. Configuracin y definicin de variables y regiones.
La configuracin y definicin de variables se
observan en la Figura 1 y consta de cuatro secciones:
las variables de configuracin (config var), la definicin de las regiones, los tipos de datos a utilizar en el
programa (type) y las variables a usar en el programa
(var).

Luego se definieron tres regiones: la primera (R) conforma el espacio (filas y columnas) donde reside primariamente la matriz, luego se definieron dos regiones, una para la manipulacin de vectores tipo fila
(fila) y otra para el manejo de vectores tipo columna
(col). Y por ltimo, los tipos de datos a utilizar en el
programa (type) y las variables a usar en el programa (var).
3.2. Cdigo del algoritmo paralelo
El algoritmo para realizar la descomposicin de
Cholesky a una matriz A simtrica positiva, bajo el
lenguaje de programacin ZPL, es el mostrado en la
Figura 2.
4. EXPERIMENTACIN
4.1. Datos

Las variables de configuracin (config var)


son aquellos datos de entrada que se pueden modificar
en el momento de invocar la ejecucin del programa,
para este caso se defini como variable de configuracin: el orden la matriz cuadrada que se va a procesar.
program LDLt;
config var
n : integer = 1000;
region
R = [1..n,1..n];
fila = [1,1..n];
col = [1..n,1];

Las matrices a utilizar, se generaron aleatoriamente, con elementos de tipo double. La dimensin de
las mismas para los casos de prueba fueron: 100x100,
500x500 y 1000x1000.

-- Tamao de la matriz
-- Arreglo matricial de n por n
-- Arreglo tipo vector fila de n elementos
-- Arreglo tipo vector columna de n elementos

type dtype = double;


-- Dato de tipo real
var
f
: file;
-- Variable para lectura/escritura de archivos
A, L,D
: [R] dtype; -- Matriz de entrada simtrica, y matrices de salida
time
: double;
-- Tiempo de duracin del programa
-- Variables Auxiliares
V1
: [R] dtype;
V, Diag
:[fila] dtype;
j
: integer;
Lf
: [fila] dtype;
Lcf
: [R] dtype;
Mmv
: [R] dtype;
Mmv1, Lj1 : [col] dtype;
P1
: [fila] dtype;
den, valor : double;
Amaxj, Ajj, P : double;
Ac
: [col] dtype;
Figura 1. Definicin de las variables.
74 Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

Vargas, Flores y Rey Lago

for j := 1 to n do
if j > 1 then
-- Calculo de los elementos de la matriz D,
-- almacenados en Diag
[1,1..j-1]
[1,1..j-1]
[j,j]
[1,1..j-1]
[1,1..j-1]
[1,j]
[1,j]

Lf := >>[j,1..j-1]L;
V:= Lf*Diag;
Ajj := max<< A;
P1 := Lf*V;
P := +<< P1;
V := Ajj - P;
Diag := max<< V;

if j < n then
-- Calculo de los elementos de la columna j por debajo de
-- la diagonal de L
[1,j]
[j+1..n,1]

den := max<< V;
Ac := >>[j+1..n,j]A;
-- Inicio de la Multiplicacin de uma matriz por
-- un vector
Lcf := >>[j+1..n,1..j-1]L;
V1 := >>[1,1..j-1] V;
Mmv:= Lcf*V1;
Mmv1 := +<< [R] Mmv;
-- Fin de la Multiplicacin

[j+1..n,1..j-1]
[1..n,1..j-1]
[Ar]

[j+1..n,1]
[j+1..n,j]

Lj1 := (Ac - Mmv1)/den;


L:= >>[j+1..n,1] Lj1;
end;
else

-- Calculo del primer elemento de la diagonal y la primera


-- columna de L
[j,j]
[1,1]
[1,1]
[2..n,1]

Amaxj := max<< A;
V := Amaxj;
Diag := Amaxj;
L := A/Amaxj;
end;
L:= 1;
valor := max<< Diag;
D := valor;

[j,j]
[1,j]
[j,j]
end;

Figura 2. Implementacin del algoritmo de Factorizacin LDLT.

Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

75

Paralelizacin de la factorizacin LDLT usando el lenguaje ZPL

4.2. Plataforma computacional


Todas las pruebas se desarrollaron en el cluster
NIMBUS de la Facultad de Ingeniera de la Universidad de Carabobo, el cual posee un total de 8 nodos;
cuatro con un Procesador del tipo Intel PIV de 2.4
Ghz, 1000 MB de memoria RAM, y los cuatro restantes con un Procesador del tipo Intel PIV de 3.0 Ghz,
1000 MB de memoria RAM. Red de interconexin
entre nodos: 1 Gigabit ethernet.
La arquitectura del cluster en las pruebas hechas
es un arreglo (grid) de n por 1, siendo n el nmero
de procesadores, como se muestra en la Figura 3. El
valor de n est comprendido desde 1 hasta 8.

Figura 3. Arquitectura del cluster para las pruebas.

5. RESULTADOS
En las Tablas 1, 2 y 3 se observa el tiempo de
ejecucin, medido en segundo, la aceleracin y la eficiencia del algoritmo implementado, junto al tiempo
que tarda en realizar el producto matriz por vector y el
porcentaje de este tiempo en relacin al tiempo total
de ejecucin del programa.

Tabla 1. Matriz 100 x 100.


Grid

Procesos

Tiempo
Total (tt)

Aceleracin

Eficiencia

Tiempo Multiplicacin
de Matrices (tm)

Porcentaje de tm respecto a tt

1x1

0.1329

1.0000

1.000

0.1265

95.18%

2x1

0.1088

1.2215

0.6108

0.0715

65.72%

3x1

0.1822

0.7295

0.2431

0.0575

31.56%

4x1

0.1122

1.1845

0.2961

0.0496

44.20%

5x1

0.2356

0.5641

0.1128

0.1942

82.43%

6x1

0.2077

0.6399

0.1066

0.0789

37.99%

7x1

0.3465

0.3835

0.0548

0.1224

35.32%

8x1

0.2375

0.5596

0.0699

0.0539

22.69%

Tabla 2. Matriz 500 x 500.


Grid

Procesos

Tiempo
Total (tt)

Aceleracin

Eficiencia

Tiempo Multiplicacin de Matrices (tm)

Porcentaje de tm respecto a tt

1x1

18.1699

1.0000

1.000

18.0117

99.13%

2x1

9.4322

1.9263

0.9632

9.1037

96.52%

3x1

6.7872

2.6771

0.8924

6.3743

93.92%

4x1

5.3374

3.4043

0.8511

4.8805

91.44%

5x1

4.5771

3.9697

0.7939

3.9948

87.28%

6x1

3.8985

4.6607

0.7767

3.2239

82.69%

7x1

3.6435

4.9869

0.7124

2.8449

78.08%

8x1

3.1631

5.7443

0.7180

2.4069

76.09%

76 Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

Vargas, Flores y Rey Lago

donde se grfica el tiempo de ejecucin del programa


para una matriz de mayor dimensin, donde se observa claramente como dicho tiempo disminuye a medida
que se aumenta el nmero de procesadores, lo cual es
consistente con la reduccin del costo de comunicacin respecto al cmputo til del algoritmo sobre una
cantidad de datos mayor.

En las Figuras 4 , 5 y 6 se grafican los resultados de los tiempos de ejecucin mostrados en las Tablas 1, 2 y 3 respectivamente.
En la Figura 4 se evidencia que no existe una
tendencia clara a la reduccin del tiempo de ejecucin
del algoritmo a medida que se aumenta el nmero de
procesadores. Caso distinto se aprecia en la Figura 5,

Tabla 3. Matriz 1000 x 1000.


Grid

Procesos

Tiempo
Total (tt)

Aceleracin

Eficiencia

Tiempo Multiplicacin
de Matrices (tm)

Porcentaje de tm respecto a tt

1x1

146.7578

1.0000

1.000

146.1812

99.61%

2x1

74.9709

1.9575

0.9788

74.0881

98.82%

3x1

50.6524

2.8974

0.9658

49.6222

97.97%

4x1

38.8680

3.7758

0.8440

37.7918

97.23%

5x1

70.6600

2.0769

0.4154

69.2784

98.04%

6x1

60.0791

2.4427

0.4071

58.5078

97.38%

7x1

52.5722

2.7915

0.3988

50.6992

96.44%

8x1

46.6167

3.1482

0.3935

44.7769

96.05%

Tiem po de Ejecucin
0,4

Tiempo (s)

0,35
0,3
0,25
0,2
0,15
0,1
0,05
0
1

Nm ero de Procesadores

Figura 4. Tiempo de ejecucin Matriz 100x100.


Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

77

Paralelizacin de la factorizacin LDLT usando el lenguaje ZPL

En la Figura 6, donde se grafica el tiempo de


ejecucin del algoritmo versus el nmero de procesadores para una matriz de 1000x1000, se evidencia una
disminucin de dicho tiempo a medida que se aumenta
el nmero de procesadores. Aunque se observa que

cuando se utilizan 5 procesadores el tiempo de ejecucin aumenta de 38.686 segundos a 70.6600 segundos,
y luego comienza a disminuir nuevamente, esto se
debe a la heterogeneidad del cluster, ya que las primeras 4 pruebas se realizaron con los procesadores de

Tiempo (s)

Tiem po de Ejecucin
20
18
16
14
12
10
8
6
4
2
0
1

Nm ero de Procesadores

Figura 5. Tiempo de ejecucin Matriz 500x500

Tiempo de Ejecucin
160
140
Tiempo (s)

120
100
80
60
40
20
0
1

Nm ero de Procesadores

Figura 6. Tiempo de ejecucin Matriz 1000x1000.


78 Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

Vargas, Flores y Rey Lago

mayor velocidad (3.0 Ghz) mientras que una vez que


se comienzan a realizar las pruebas con ms de 4 procesadores, se toman los procesadores de menor velocidad (2.4 Ghz), haciendo que el tiempo de ejecucin
del algoritmo se rija por los procesadores de menor
velocidad, ya que los procesadores de mayor velocidad deben esperar a que los de menor velocidad efecten las operaciones y poder continuar con la ejecucin.
Tambin se destaca lo sealado en la Tabla 2,
en cuanto a la aceleracin, que aumenta a medida que
aumenta el nmero de procesadores. Por otro lado,
observando el porcentaje de tiempo que el algoritmo
tarda en realizar el ciclo de multiplicacin de matriz
por vector respecto al tiempo total de ejecucin del
algoritmo de factorizacin en las Tablas 1, 2 y 3, se
puede concluir que el mismo en muchos casos se encuentra por encima del 90%
8. CONCLUSIONES
Se present una primera versin de la factorizacin de una matriz A simtrica positiva a la forma
LDLT mediante un algoritmo basado en los conceptos
claves del lenguaje de programacin paralelo ZPL
como lo son el uso de regiones y los operadores paralelos.
Las curvas de tiempo de ejecucin de las matrices de prueba 100x100 no muestran una tendencia a
disminuir cuando se aumenta el nmero de procesadores del cluster Nimbus. Esto puede deberse al alto costo de la comunicacin entre los procesadores. En la
matrices de prueba de 500x500 y 1000x1000 s se observa una clara disminucin del tiempo de ejecucin a
medida que se aumenta el nmero de procesadores, lo
cual demuestra que la implementacin hace buen uso
de la comunicacin entre procesadores. Tambin se
puede evidenciar, que a medida que se aumenta el tamao de la matriz, ZPL permite mejorar el desempeo
en cuanto al factor de aceleracin.
En cuanto al tiempo de ejecucin del algoritmo
de factorizacin de la matriz A, se puede mencionar,
que la mayor parte del mismo se debe al tiempo que
tarda en realizar el proceso de multiplicar una matriz
por un vector. En el caso de la matriz 1000x1000, el
porcentaje del tiempo de ejecucin de la multiplicacin de una matriz por un vector, respecto al tiempo
total de la ejecucin del programa, se encuentra por

encima del 90%, como se evidencia en la Tabla 3.


9. RECOMENDACIONES
El algoritmo de factorizacin LDLT propuesto
puede mejorarse, ya que es una primera versin en la
que se muestra de manera muy sencilla dicha factorizacin, sera provechoso agregar rutinas que optimicen los clculos, como por ejemplo, haciendo uso de
las tcnicas de cmo el producto matriz-vector de la
manera que lo implementan las rutinas BLAS, slo
que debe considerarse para ello la utilizacin de operadores que tengan poca comunicacin para no degradar el rendimiento del algoritmo en arquitecturas multiprocesador.
Como continuacin de la presenta investigacin, se recomienda la implementacin de un algoritmo de multiplicacin de una matriz por un vector, con
la finalidad de disminuir los tiempos de ejecucin del
algoritmo de factorizacin de Cholesky.
Sera provechoso evaluar el algoritmo usando
un cluster o una supercomputadora con un mayor nmero de nodos y mayor capacidad de memoria, ya que
algunas grficas muestran una tendencia de disminucin del tiempo de ejecucin para un mayor nmero
de nodos en el caso de matrices de gran tamao. En
virtud que los nodos del cluster donde se hicieron las
pruebas no son iguales, tambin sera de inters hacer
las mismas pruebas con un cluster cuyos nodos sean
todos con las mismas caractersticas computacionales,
y comparar los resultados con los obtenidos en el presente trabajo.
10. REFERENCIAS
[1] Burden, R. y Faires, J. (2003) Anlisis Numrico.
Sptima Edicin. Editorial Thomson. Mxico.
[2] Rabiner, L. y Schafer, R. Digital Processing of
Speech Signals. Prentice-Hall. New Jersey. Estados Unidos.
[3] Rey, D. y Canning, J. (2007). Streams: Una
Librera de Habilitacin de Paralelismo Mixto
de Tareas en Cascada y Paralelismo de Datos
para el Lenguaje Paralelo de Alto Nivel ZPL.
Facultad de Ingeniera. Universidad de Carabobo.
Venezuela.
Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

79

Paralelizacin de la factorizacin LDLT usando el lenguaje ZPL

[4] Snyder, L. (1999). A programmers Guide to


ZPL. The MIT Press.
[5] Castellano, J., Ramrez, J. y Rey, D. (2007). Paralelizacin de la Factorizacin LU usando el
Lenguaje ZPL. Instituto de Matemtica y Clculo
Aplicado. Facultad de Ingeniera. Universidad de
Carabobo. Venezuela.

80 Rev. INGENIERA UC. Vol. 15, No 2, Agosto 2008

También podría gustarte