Universidad Eafit
revista@eafit.edu.co
2001
Carlos Enrique Meja / Toms Restrepo / Christian Trefftz
LAPACK UNA COLECCIN DE RUTINAS PARA RESOLVER PROBLEMAS DE
LGEBRA LINEAL NUMRICA
Universidad Eafit, julio-septiembre, nmero 123
Universidad Eafit
Medelln, Colombia
pp. 73-80
73
LAPACK
1. INTRODUCCIN
El modelamiento matemtico ha sido
siempre fundamental para las ciencias
y las ingenieras pero ha cobrado mucha
ms importancia desde que se empezaron a usar computadores en gran escala.
LAPACK (Linear Algebra Package) es una
coleccin de subrutinas escritas en
FORTRAN 77 para resolver los problemas
matemticos ms comunes que surgen a
partir del modelamiento y que se
enmarcan en el campo del lgebra lineal
numrica. El desarrollo de LAPACK es
una tarea que se empez hacia 1987 y
aun no termina. Lo hacen universidades y laboratorios de investigacin de
Estados Unidos y Europa, un equipo de
investigadores de primera lnea apoyados
financieramente por varias instituciones
entre las que se destaca la Fundacin
Nacional de Ciencias de Estados Unidos
(National Science Foundation, NSF.)
Las subrutinas de LAPACK se basan en
llamadas a unas subrutinas ms sencillas
que se conocen por la sigla BLAS (Basic
74
2.1 Descarga
2. INSTALACIN DE LAPACK
Adicionalmente es posible descargar las colecciones precompiladas, as como algunas de las rutinas individuales.
75
y ''(t ) = f (t , y , y '), a t b,
y ( a) = A, y (b) = B.
La funcin f puede depender de forma lineal o no lineal de sus variables segunda y
tercera. Son muchos los problemas de la fsica y la ingeniera que admiten un modelo
matemtico de este estilo para su solucin. Basta pensar, por ejemplo, en la segunda
ley de Newton de la que surge un gran nmero. Una posible discretizacin de
diferencias finitas para este problema es como sigue: Se genera una subdivisin en
n+1 subintervalos de igual longitud
extremos de los subintervalos se denotan a = t0 < t1 < ... < tn+1 = b. Enseguida
para j=1,2,...,n, aproximamos la segunda derivada y ''(t j ) por el cociente
1
y ( t j -1 ) - 2 y ( t j ) + y ( t j +1 ) ,
h2
y entonces resulta natural querer resolver el sistema
v -v
1
v - 2v j + v j +1 = f t j , v j , j +1 j -1 , j = 1, 2,..., n
2 j -1
h
2h
2.2 Compilacin
76
con v(0)=A,v(n+1)=B y v(j) para j=1,...,n aproximaciones de los valores y(t(j)) utilizados para los clculos.
Se tiene entonces un sistema, en general no lineal, de n
ecuaciones con n incgnitas v(1),v(2),...,v(n) que generalmente se resuelve por un mtodo iterativo de tipo Newton.
Se supone que este sistema tiene solucin para preservar
sencilla esta exposicin. Se advierte sin embargo que estudiar
condiciones suficientes o necesarias para que haya solucin a
sistemas no lineales es un tema de investigacin actual en
anlisis numrico que est lleno de sutilezas y dificultades.
El mtodo de Newton para este sistema se enuncia ms
fcilmente con notacin vectorial. Denotamos por V al vector
columna cuyas componentes son v(1),v(2),...,v(n) y
definimos una funcin de variable y valor vectorial G de la
siguiente manera:
G : Rn Rn
77
0
0
0
1
1
0
0
0
INTEGER IPIV( * )
3
0
4
0
IPIV =
P=
3
1
4
0
0
1
0
78
N: Orden de la matriz A.
CHARACTER
JOBZ, UPLO
INTEGER
REAL
A ( LDA, * ), W( * ), WORK( * )
donde:
79
4. Memoria Cache L1
5. Registros
Por el momento, se har nfasis principalmente en los 3 niveles intermedios.
Cada nivel es aproximadamente un orden
de magnitud ms lento que el nivel
inmediatamente superior, lo cual indica
que hay gran potencial para incrementar el desempeo de los algoritmos si
podemos mantener los datos sobre los
que operan en el nivel ms alto posible.
Esto es conocido como el principio de
localidad espacial.
El dividir las matrices en subbloques y
operar sobre stos de manera independiente permite aprovechar el principio de
localidad al operar sobre conjuntos de
datos ms pequeos cuyos elementos
estn relativamente muy cercanos.
Como ejemplo, considrese una operacin aparentemente simple como es la
multiplicacin de matrices. Supongamos
una mquina con una configuracin
comn hoy en da: un cache L2 de 512KB
y un par de matrices relativamente
grandes de 1000 x 1000.
Supngase tambin que cada elemento en
cada una de las matrices se almacena
como un valor de punto flotante de doble
precisin, necesitando 8 bytes (64-bits)
de almacenamiento cada uno. Segn esto,
en el mejor de los casos, el cache L2 no
podra retener en un momento dado ni el
3% de cada una de las matrices. Si se
considera el algoritmo usual (manual)
para multiplicar matrices, se notar que
para la matriz que aparece en el lado
derecho de la operacin, las referencias
a memoria son a datos no contiguos, por
lo que el cache se vera obligado a
remplazar bloques con mucha frecuencia.
3. Memoria Cache L2
80
6. CONCLUSIONES
LAPACK es una coleccin de rutinas que combina precisin
y eficiencia. Usar las rutinas de LAPACK es fcil.
Se considera que los cursos de mtodos numricos que se
dictan en las Universidades locales pueden complementarse con
el uso de algunas de las rutinas de LAPACK. De esta forma los
estudiantes, y futuros profesionales, estarn conscientes de la
existencia de unas rutinas de alta calidad, de uso fcil y
gratuitas que podrn utilizar ms adelante cuando la ocasin
lo amerite.
BIBLIOGRAFA
Anderson E. et al. (1992). LAPACK Users' Guide. USA: SIAM.