Академический Документы
Профессиональный Документы
Культура Документы
1.
Introduccin
51
2. Inversa de una matriz
Para calcular la inversa de la matriz A= (a1; ;
an)T Se aplica el Algoritmo 2.1 a las filas de A,
usando una matriz inicial no singular V0, se
obtienen las matrices Vj para j = 1,n,
mediante las transformaciones.
Vj+1= Vj Mi-1 (2.1) donde j= 0,.., n-1,
Donde Mi es definida como Mi = (e1,,ei-1, ti,
ei+1,,en) T Entonces se satisface que:
ajT Vn = ajT Vj Mi-1 Mi+1-1.. Mn-1
= tjT Mj-1 Mj+1-1. Mn-1
= ejT Mj-1 Mj+1-1. Mn-1 = ejT (2.2)
Esto prueba que A-1 = Vn, es decir, la inversa de
A es la matriz cuyas columnas estn en la tabla
final, obtenida utilizando el Algoritmo 2.1.
como
el
como su
complemento.
2.1.
Complejidad
Fase
Iter. 1
Iter.2
Iter. n
Total
n2
n( n - 1)
n( n - 1)
Nor
mali
0
zaci
n
Pivot
aje
n( n - 1)
n2( n - 1)
Sumas
Pivot
aje
( n - 1)2
( n - 1)2
(n -1)2
(n3-2n2+n)
52
as, se tiene:
Productos o divisiones
Fase
Iter.
1
Iter.2
Iter. n
Total
Prod.
Escala
n( n - 1)
(n3 - n2)/2
(n2 + n)/2
n-1
2 (n - 1)
res
3. Procesamiento Paralelo
En las ciencias de la computacin, un algoritmo
paralelo, en oposicin a los algoritmos clsicos o
algoritmos secuenciales, puede ejecutarse por
partes en el mismo instante de tiempo por varias
unidades de procesamiento, para que finalmente
se agrupen todas las partes y se obtenga el
resultado correcto.
Algunos algoritmos se dividen fcilmente en
partes; como por ejemplo, un algoritmo que
obtenga todos los nmeros primos entre 1 y 100,
donde se podra dividir los nmeros originales
en subconjuntos y calcular los primos para cada
uno de los subconjuntos de los nmeros
originales, al final, se uniran todos los
resultados y se tendra la solucin final del
algoritmo.
Por el contrario, a veces los problemas no se
paralelizan fcilmente, de ah que estos
problemas se conocen como problemas
inherentemente secuenciales [4]. Como ejemplo
de estos mtodos se tienen los mtodos
numricos iterativos, como el mtodo de
Newton o el problema de los tres cuerpos.
Los algoritmos paralelos son importantes,
porque se tratan grandes tareas de computacin
ms rpidamente mediante la paralelizacin, que
a travs de tcnicas secuenciales. sta es la
forma como se trabaja en el desarrollo de los
procesadores modernos, ya que es ms difcil
incrementar la capacidad de procesamiento con
un nico procesador, que aumentar su capacidad
de cmputo mediante la inclusin de unidades
en paralelo, logrando as la ejecucin de varios
flujos de instrucciones dentro del procesador.
Pero se debe mantener cautela con la excesiva
paralelizacin de algoritmos, ya que existe
siempre una parte secuencial en cada algoritmo
paralelo, y debido a esto, se puede llegar a un
punto de saturacin [3]. Por tanto, a partir de
cierto nivel de paralelismo, en caso de que se
adicionen ms unidades de procesamiento, solo
se obtiene el incremento de coste y la disipacin
de calor.
Norm
alizaci
n
Pivota
je
n( n - 1)
(n3 - n)/2
Sumas
Fase
Iter. 1
Iter.2
Iter. n
n-1
(n -1)2
Prod.
Escala
res
Pivota
je
n-1
(n -1)
Total
(n32n2+n)/2
(n32n2+n)/2
53
distribuidos, son algoritmos que trabajan en
entornos tipo cluster y de computacin
distribuida, donde se utilizan otras tcnicas,
fuera del alcance de los algoritmos paralelos
clsicos.
La idea bsica detrs del procesamiento paralelo
es que varios dispositivos (procesadores),
ejecuten simultnea y coordinadamente las
tareas, para que puedan rendir ms que un nico
dispositivo. El problema fundamental son las
innovaciones tecnolgicas que se requieren para
obtener ese rendimiento mejorado.
Si bien el procesamiento paralelo ofrece una
ventaja definitiva en cuanto a costos, su
principal beneficio, la escalabilidad (capacidad
de crecimiento), puede ser difcil de alcanzar.
Esto se debe a que conforme se adicionen
procesadores, las disputas por los recursos
compartidos se intensifican. [5].
3.3
3.2. Herramienta
Paralela:
de
la
Programacin
Paso de Mensajes
El paradigma de paso de mensajes es utilizado
en sistemas dbilmente acoplados, representados
por la arquitectura basada en memoria
distribuida (clusters), en donde cada procesador
tiene acceso solamente a su memoria local y, por
consiguiente, la comunicacin necesariamente se
lleva a cabo por medio de una red de
interconexin [12].
Conceptualmente, la idea de paso de mensajes,
es totalmente independiente del hardware,
sistema operativo, lenguaje de programacin, y
bibliotecas. Durante el desarrollo de un
MPI
54
industrias. El proceso de estandarizacin
comenz en el taller de estndares para el paso
de mensajes en un ambiente de memoria
distribuida, patrocinado por el Centro de
Investigacin en Computacin Paralela en
Williamsbur, Virginia. Se lleg a una propuesta
preliminar conocida como MPI1, enfocada
principalmente en comunicaciones punto a punto
sin incluir rutinas para comunicacin colectiva y
no presentaba tareas seguras. El estndar final
para el MPI fue presentado en la conferencia de
Supercomputacin en Noviembre de 1993, y se
constituy as el foro para el MPI [10,12].
Las implementaciones en MPI consisten en un
conjunto de bibliotecas de rutinas que pueden
ser utilizadas en programas escritos en los
lenguajes de programacin C, C++, Fortran y
Ada, Java etc. [12].
Las arquitecturas de computacin paralela
pueden verse como una extensin de las
arquitecturas convencionales que permiten la
cooperacin y comunicacin entre elementos de
procesos.
Actualmente existen 2 paradigmas en las
arquitecturas de computacin paralela.
4.
Implementacin
Implementacin Secuencial
55
{
Leer matriz A generada desde el archivo
mat.dat
Cargar la matriz identidad C
Mientras el nro. de columnas sea menor al
contador{
Colocar la primera fila de A en el vector
B
Hallar los productos escalares y colocar
los resultados en el vector TIJ
Hallar el pivote y la columna pivote
Dividir los elementos de la columna
pivote por el pivote
Multiplicar la columna pivote por el
producto escalar correspondiente a la
columna y restar del valor actual de C
en dicha columna
}Fin del mientras
Cargar la matriz resultado en el archivo
mat.dat
}Fin
Nodos Esclavos
Nodo Maestro
Nodos Esclavos
Figura 4. Topologa del Cluster
56
Main
Almacenar el resultado final en mat.dat
} Fin Para
} Fin
//programa principal
{
Definir variales tipo double t_inicial_par,
t_final_par;
Asignar valor a mpierr;
Para mpierr<0
{
Imprimir error de inicializacin
}
Caso Contrario
{
Leer matriz A generada desde el archivo mat.dat
Cargar la matriz identidad C
Mientras contador<iteraciones
{
Colocar la primera fila de A en el vector
B
Hallar los productos escalares y colocar los
resultados en el vector TIJ
Hallar el pivote y la columna pivote
Dividir los elementos de la columna pivote
por el pivote
Multiplicar la columna pivote por el
producto escalar correspondiente a la
columna y restar del valor actual de C en
dicha columna
Construir el vector CP
Construir la matriz PLL
Enviar el vector PLL a cada proceso i
Enviar el vector CP a cada proceso i
Enviar PTIJ
Enviar el tamao de la matriz t
Enviar el nmero de iteraciones i
Esperar que los procesadores devuelvan los
resultados parciales
Si todas las multiplicaciones parciales fueron
recibidas, cargar los vectores resultados en la matriz
C.
} Fin Mientras
5.
Resultados
Secuencial
de
la
implementacin
Tiem po de Ejecucion
600
500
400
300
200
100
0
10
15
50
70
100
150
180
Tamao de Matriz
57
Como se pudo observar, al aumentar el tamao
de la matriz de entrada, el tiempo de ejecucin
del Algoritmo de Ortogonalizacin de Jubete
aumenta, llegando a un punto en que este tiempo
se vuelve excesivamente largo. Esta limitacin,
imposibilit que las pruebas del Algoritmo sean
realizadas con matrices de mayor tamao
6. Resultados de la implementacin paralela
(5.1)
t_par
58
del Algoritmo de Ortogonalizacin de Jubete, al
contar con un ambiente de programacin de bajo
costo que permite la resolucin del problema en
tiempos de procesamiento aceptables.
8. Propuestas para trabajos futuros
7. Conclusiones
El objetivo de este trabajo consisti en la
implementacin, tanto secuencial como paralela,
del Algoritmo de Ortogonalizacin de Jubete,
para hallar la inversa de matrices no singulares,
y como resultado final se obtuvo un tiempo
aceptable, comparado al obtenido al aplicarlo en
su forma secuencial.
Estos objetivos fueron logrados, pues como se
pudo verificar, la versin paralela del Algoritmo
de Ortogonalizacin de Jubete, logr obtener el
resultado hasta 3 veces ms rpidamente que
implementndolo en su forma secuencial. Estos
resultados demuestran la efectividad de la
implementacin paralela del algoritmo, cuando
lo que se desea es utilizar matrices de grandes
dimensiones.
De lo expuesto se puede afirmar que el excesivo
costo computacional en la obtencin de matrices
inversas no singulares, de grandes dimensiones,
ir en disminucin, gracias a la paralelizacin
59
Programacin Lineal.Academia
Madrid, Espaa.
de Ingeniera,