Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ISSN: 1316-6832
revistaing@uc.edu.ve
Universidad de Carabobo
Venezuela
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.
a41
0
0
0
d1 0 0 0
0 d 0 0
2
0 0 d3 0
0 0 0 d4
(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
0 0 1 L43
0 0 0 1
j1
(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)
73
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 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
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]
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;
75
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.
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%
Procesos
Tiempo
Total (tt)
Aceleracin
Eficiencia
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%
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,
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
77
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
Tiempo de Ejecucin
160
140
Tiempo (s)
120
100
80
60
40
20
0
1
Nm ero de Procesadores
79