estudio de librerías numéricas y su aplicaci´on a la simulaci´on de ...
estudio de librerías numéricas y su aplicaci´on a la simulaci´on de ...
estudio de librerías numéricas y su aplicaci´on a la simulaci´on de ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
UNIVERSIDAD DE SANTIAGO DE COMPOSTELA<br />
FACULTAD DE FISICA<br />
Departamento <strong>de</strong> Electrónica y Computación<br />
ESTUDIO DE LIBRERÍAS NUMÉRICAS<br />
Y SU APLICACIÓN A<br />
LA SIMULACIÓN DE TRANSISTORES<br />
Memoria <strong>de</strong> licenciatura<br />
Natalia Seoane Iglesias<br />
Octubre, 2003
Dr. Antonio Jesús García Loureiro, Profesor Asociado <strong>de</strong>l<br />
Departamento <strong>de</strong> Electrónica y Computación <strong>de</strong> <strong>la</strong> Universidad<br />
<strong>de</strong> Santiago <strong>de</strong> Composte<strong>la</strong>.<br />
CERTIFICA:<br />
Que <strong>la</strong> memoria titu<strong>la</strong>da “Estudio <strong>de</strong> <strong>librerías</strong> <strong>numéricas</strong><br />
y <strong>su</strong> aplicación a <strong>la</strong> simu<strong>la</strong>ción <strong>de</strong> transistores”, ha sido<br />
realizada por Dña. Natalia Seoane Iglesias bajo mi dirección<br />
en el Departamento <strong>de</strong> Electrónica y Computación <strong>de</strong> <strong>la</strong> Universidad<br />
<strong>de</strong> Santiago <strong>de</strong> Composte<strong>la</strong> y constituye <strong>la</strong> Tesina que<br />
presenta para optar al grado <strong>de</strong> Licenciada en Ciencias Físicas.<br />
Fdo. Antonio J. García Loureiro<br />
Director <strong>de</strong> <strong>la</strong> tesina<br />
Fdo. Diego Cabello Ferrer,<br />
Director <strong>de</strong>l Departamento <strong>de</strong><br />
Electrónica e Computación.<br />
Santiago, Octubre <strong>de</strong> 2003
Agra<strong>de</strong>cimientos<br />
Deseo expresar mi agra<strong>de</strong>cimiento a todas aquel<strong>la</strong>s personas que <strong>de</strong> una<br />
forma u otra han posibilitado <strong>la</strong> realización <strong>de</strong> esta memoria.<br />
En primer lugar a mi tutor, Antonio García Loureiro, por <strong>su</strong> paciencia,<br />
consejo y apoyo.<br />
A todos los miembros <strong>de</strong>l Departamento <strong>de</strong> Electrónica y Computación<br />
y a los compañeros <strong>de</strong>l Grupo <strong>de</strong> Arquitectura <strong>de</strong> Computadores, en especial<br />
a Alex y Javi por haber soportado mis dilemas con buen humor y a Marcos<br />
por <strong>su</strong> ayuda en todos esos problemil<strong>la</strong>s que me <strong>su</strong>rgían.<br />
A mi familia, que me conoce y entien<strong>de</strong>.<br />
A mis amigas que siempre están ahí (y ya van 11 años).<br />
A Manolo, mi cómplice.
A mi familia, amigas y M.
Índice general<br />
Introducción 1<br />
1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT 3<br />
1.1. Heteroestructuras <strong>de</strong> semiconductores . . . . . . . . . . . . . 3<br />
1.1.1. Tensión en <strong>la</strong>s heterointerfaces . . . . . . . . . . . . . 7<br />
1.1.2. Control <strong>de</strong>l dopado . . . . . . . . . . . . . . . . . . . . 7<br />
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo . . . . . . . 8<br />
1.2.1. Modu<strong>la</strong>ción <strong>de</strong>l dopado . . . . . . . . . . . . . . . . . 9<br />
1.2.2. Física <strong>de</strong> los FETs <strong>de</strong> heteroestructura . . . . . . . . . 11<br />
1.2.3. Funcionamiento <strong>de</strong> los dispositivos HEMT . . . . . . . 12<br />
1.2.4. Mo<strong>de</strong>lización <strong>de</strong> transistores HEMT . . . . . . . . . . 14<br />
2. Introducción a los computadores paralelos 21<br />
2.1. Características <strong>de</strong> los computadores paralelos . . . . . . . . . 22<br />
2.1.1. Organización <strong>de</strong> <strong>la</strong> memoria . . . . . . . . . . . . . . . 22<br />
2.1.2. Re<strong>de</strong>s <strong>de</strong> interconexión . . . . . . . . . . . . . . . . . . 25<br />
2.1.3. Nivel <strong>de</strong> paralelismo . . . . . . . . . . . . . . . . . . . 26<br />
2.2. Tipos <strong>de</strong> programación parale<strong>la</strong> . . . . . . . . . . . . . . . . . 27<br />
2.3. Cluster Beowulf . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />
2.4. Origin 200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31<br />
3. Sistemas <strong>de</strong> ecuaciones lineales 35<br />
3.1. Métodos <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones . . . . . . . 35<br />
3.2. Factorización LU . . . . . . . . . . . . . . . . . . . . . . . . . 39<br />
3.3. Precondicionadores . . . . . . . . . . . . . . . . . . . . . . . . 40<br />
3.3.1. Precondicionadores clásicos . . . . . . . . . . . . . . . 41<br />
3.3.2. Precondicionadores multimal<strong>la</strong> . . . . . . . . . . . . . 43<br />
3.3.3. Precondicionadores basados en <strong>de</strong>scomposición <strong>de</strong> dominios<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />
3.4. Técnicas <strong>de</strong> almacenamiento <strong>de</strong> matrices dispersas . . . . . . 45<br />
I
II ÍNDICE GENERAL<br />
3.4.1. Formato CRS (Compressed Row Storage) . . . . . . . 46<br />
3.4.2. Formato CCS (Compressed Column Storage) . . . . . 46<br />
3.4.3. Formato MSR (Modified Compressed Sparse Row) . . 46<br />
3.4.4. Formato HB (Harwell Boeing) . . . . . . . . . . . . . 47<br />
3.5. Librerías <strong>numéricas</strong> . . . . . . . . . . . . . . . . . . . . . . . . 47<br />
3.5.1. SPARSKIT . . . . . . . . . . . . . . . . . . . . . . . . 49<br />
3.5.2. PSPARSLIB . . . . . . . . . . . . . . . . . . . . . . . 51<br />
3.5.3. SuperLU . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />
3.5.4. PETSc . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />
3.5.5. Aztec . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />
4. Re<strong>su</strong>ltados numéricos 73<br />
4.1. Descripción <strong>de</strong>l simu<strong>la</strong>dor . . . . . . . . . . . . . . . . . . . . 74<br />
4.2. Re<strong>su</strong>ltados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
4.2.1. SPARSKIT . . . . . . . . . . . . . . . . . . . . . . . . 78<br />
4.2.2. SuperLU . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />
4.2.3. PSPARSLIB . . . . . . . . . . . . . . . . . . . . . . . 86<br />
4.2.4. PETSc . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />
4.2.5. Aztec . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />
Conclusiones 107<br />
Bibliografía 111
Índice <strong>de</strong> figuras<br />
1.1. Representación <strong>de</strong> <strong>la</strong> constante <strong>de</strong> red frente a Egap para <strong>la</strong>s<br />
aleaciones <strong>de</strong> semiconductores más comunes. . . . . . . . . . 4<br />
1.2. Representación <strong>de</strong> <strong>la</strong>s bandas <strong>de</strong> conducción y valencia en una<br />
heterounión AlGaAs–GaAs . . . . . . . . . . . . . . . . . . . 5<br />
1.3. Estructura <strong>de</strong> bandas para una heterounión n–AlGaAs y GaAs<br />
intrínseco en equilibrio . . . . . . . . . . . . . . . . . . . . . . 6<br />
1.4. En <strong>la</strong> figura (a) <strong>la</strong> capa epitaxial que se crece es lo <strong>su</strong>ficientemente<br />
fina como para que se adapten <strong>la</strong>s constantes <strong>de</strong> red,<br />
en <strong>la</strong> figura (b) esta capa es más ancha que el grosor crítico,<br />
lo que provoca <strong>la</strong> aparición <strong>de</strong> dislocaciones. . . . . . . . . . . 8<br />
1.5. Estructura <strong>de</strong> bandas para una heterounión n–AlGaAs y GaAs<br />
intrínseco teniendo en cuenta modu<strong>la</strong>ción <strong>de</strong>l dopado . . . . . 10<br />
1.6. Estructura epitaxial <strong>de</strong> un HEMT <strong>de</strong> AlGaAs–GaAs básico. . 11<br />
1.7. Curva característica ID − VD para un dispositivo HEMT . . . 14<br />
2.1. Ejemplos <strong>de</strong> topologías <strong>de</strong> re<strong>de</strong>s <strong>de</strong> interconexión. . . . . . . . 26<br />
2.2. Cluster Beowulf . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />
2.3. Configuración <strong>de</strong>l Origin 200 con 4 procesadores . . . . . . . 32<br />
3.1. Factorización LU básica . . . . . . . . . . . . . . . . . . . . . 39<br />
3.2. Ejemplo <strong>de</strong> factorización incompleta LU(0) . . . . . . . . . . 42<br />
3.3. (a) Mal<strong>la</strong> asociada a un dominio dividido en tres <strong>su</strong>bdominios,<br />
(b) matriz asociada a <strong>la</strong> mal<strong>la</strong> anterior . . . . . . . . . 44<br />
3.4. Ejemplo <strong>de</strong> pseudo–código para el protocolo <strong>de</strong> comunicación<br />
inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />
3.5. Representación local <strong>de</strong> una matriz dispersa distribuida . . . . 52<br />
3.6. So<strong>la</strong>pamiento <strong>de</strong> dominios . . . . . . . . . . . . . . . . . . . . 57<br />
3.7. (a) Etiquetado natural para una mal<strong>la</strong> bicolor , (b) Reor<strong>de</strong>namiento<br />
b<strong>la</strong>nco–negro <strong>de</strong> los nodos . . . . . . . . . . . . . . . . 58<br />
III
IV ÍNDICE DE FIGURAS<br />
3.8. (a)Mal<strong>la</strong> asociada a un <strong>su</strong>bdominio dividido en tres <strong>su</strong>bdominios<br />
según un particionamiento basado en vértice, (b) Matriz<br />
asociada a <strong>la</strong> mal<strong>la</strong> anterior . . . . . . . . . . . . . . . . . . . 61<br />
3.9. Estructura <strong>de</strong> datos para <strong>la</strong>s matrices L y U . . . . . . . . . . 65<br />
3.10. Organización <strong>de</strong> <strong>la</strong> librería PETSc . . . . . . . . . . . . . . . 67<br />
3.11. Estructura <strong>de</strong> <strong>la</strong> librería PETSc . . . . . . . . . . . . . . . . . 68<br />
3.12. Ejemplo <strong>de</strong> particionamiento <strong>de</strong> una mal<strong>la</strong> <strong>de</strong> elementos finitos 70<br />
4.1. Curva característica experimental <strong>de</strong>l PHEMT <strong>de</strong> 120nm . . . 74<br />
4.2. Potencial electrostático en el equilibrio . . . . . . . . . . . . . 75<br />
4.3. Concentración <strong>de</strong> electrones en equilibrio . . . . . . . . . . . . 76<br />
4.4. Representación esquemática <strong>de</strong>l dispositvo PHEMT . . . . . . 76<br />
4.5. Mal<strong>la</strong> tetraédrica <strong>de</strong>l PHEMT <strong>de</strong> 120nm dividida en tres <strong>su</strong>bdominios<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />
4.6. Tiempo <strong>de</strong> <strong>la</strong> factorización incompleta LU para <strong>la</strong> matriz poisson6<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
4.7. Tiempo <strong>de</strong> <strong>la</strong> factorización incompleta LU para <strong>la</strong> matriz electron6<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79<br />
4.8. Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz poisson6 . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />
4.9. Re<strong>la</strong>ción entre el llenado y el tiempo <strong>de</strong> resolución para <strong>la</strong><br />
matriz poisson6 . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />
4.10. Re<strong>la</strong>ción entre <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov y el<br />
tiempo <strong>de</strong> resolución para <strong>la</strong> matriz poisson6 . . . . . . . . . 82<br />
4.11. Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz poisson6 . . . . . . . . . . . . . . . . . . . . . . . . . . 82<br />
4.12. Re<strong>la</strong>ción entre el llenado y el tiempo <strong>de</strong> resolución para <strong>la</strong><br />
matriz electron6 . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
4.13. Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz electron6 . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />
4.14. Re<strong>la</strong>ción entre <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov y el<br />
tiempo <strong>de</strong> resolución para <strong>la</strong> matriz electron6 . . . . . . . . . 85<br />
4.15. Tiempo <strong>de</strong> <strong>la</strong> factorización LU para <strong>la</strong> matrices poisson6 y<br />
electron6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />
4.16. Tiempo <strong>de</strong> <strong>la</strong> factorización local LU incompleta para <strong>la</strong> matriz<br />
poisson6 y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado . . . . . . . . . . . . 87<br />
4.17. Tiempo <strong>de</strong> <strong>la</strong> factorización local LU incompleta para <strong>la</strong> matriz<br />
electron6 y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado . . . . . . . . . . . 87<br />
4.18. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor FGMRES . . . . . . . . . . . . . . . . . . . . . . . . 89
ÍNDICE DE FIGURAS V<br />
4.19. Comparativa entre los resolutores FGMRES, BCGSTAB y<br />
TFQMR para un llenado 15 y una dimensión <strong>de</strong>l <strong>su</strong>bespacio<br />
<strong>de</strong> Krylov <strong>de</strong> 50 . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />
4.20. Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado y el<br />
número <strong>de</strong> procesadores para el resolutor FGMRES . . . . . . 90<br />
4.21. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor FGMRES . . . . . . . . . 90<br />
4.22. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor BCGSTAB . . . . . . . . 91<br />
4.23. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor TFQMR . . . . . . . . . 91<br />
4.24. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor GMRES . . . . . . . . . . . . . . . . . . . . . . . . 93<br />
4.25. Comparativa entre los resolutores TFQMR, BCGSTAB y GM-<br />
RES para un llenado 15 y una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong><br />
Krylov <strong>de</strong> 50 . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />
4.26. Comparativa entre los métodos Schwarz aditivo y SOR multicolor<br />
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />
4.27. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor GMRES . . . . . . . . . . . . . . . . . . . . . . . . 95<br />
4.28. Comparativa entre los resolutores TFQMR, BCGSTAB y FGM-<br />
RES para un llenado 50 . . . . . . . . . . . . . . . . . . . . . 95<br />
4.29. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
precondicionador lschur . . . . . . . . . . . . . . . . . . . . . 96<br />
4.30. Comparativa entre los precondicionadores lschur y rschur para<br />
un llenado 50 . . . . . . . . . . . . . . . . . . . . . . . . . 96<br />
4.31. Comparativa entre los métodos <strong>de</strong> resolución Schwarz aditivo,<br />
Schur y SOR multicolor . . . . . . . . . . . . . . . . . . . . . 97<br />
4.32. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
precondicionador lschur . . . . . . . . . . . . . . . . . . . . . 98<br />
4.33. Comparativa entre los métodos <strong>de</strong> resolución Schwarz aditivo,<br />
Schur y SOR multicolor . . . . . . . . . . . . . . . . . . . . . 98<br />
4.34. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong><br />
llenado para el resolutor GMRES . . . . . . . . . . . . . . . . 100<br />
4.35. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong><br />
llenado para el resolutor BCGSTAB . . . . . . . . . . . . . . 100<br />
4.36. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong><br />
llenado para el resolutor GMRES . . . . . . . . . . . . . . . . 101<br />
4.37. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong><br />
llenado para el resolutor BCGSTAB . . . . . . . . . . . . . . 101
VI ÍNDICE DE FIGURAS<br />
4.38. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong>l resolutor GMRES con el nivel <strong>de</strong><br />
llenado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102<br />
4.39. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor GMRES . . . . . . . . . . . . . . . . . . . . . . . . 103<br />
4.40. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor BCGSTAB . . . . . . . . . . . . . . . . . . . . . . . 103<br />
4.41. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor BCGSTAB . . . . . . . . . . . . . . . . . . . . . . . 104<br />
4.42. Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor GMRES . . . . . . . . . . . . . . . . . . . . . . . . 104
Índice <strong>de</strong> tab<strong>la</strong>s<br />
3.1. Modo <strong>de</strong> almacenamiento CRS para <strong>la</strong> matriz dispersa . . . . 46<br />
3.2. Modo <strong>de</strong> almacenamiento CCS para <strong>la</strong> matriz dispersa . . . . 46<br />
3.3. Modo <strong>de</strong> almacenamiento MSR para <strong>la</strong> matriz dispersa . . . . 47<br />
4.1. Dopados y dimensiones <strong>de</strong>l PHEMT . . . . . . . . . . . . . . 74<br />
VII
VIII ÍNDICE DE TABLAS
Introducción<br />
La utilización <strong>de</strong> herramientas software para el <strong>de</strong>sarrollo <strong>de</strong> dispositivos<br />
electrónicos es, en <strong>la</strong> actualidad, una alternativa eficiente a los métodos<br />
tradicionales, basados en <strong>la</strong> aproximación experimental. Por medio <strong>de</strong> <strong>la</strong> simu<strong>la</strong>ción<br />
numérica computerizada po<strong>de</strong>mos obtener información <strong>de</strong> <strong>la</strong> física<br />
<strong>de</strong> los procesos <strong>de</strong> fabricación, <strong>de</strong>l comportamiento <strong>de</strong> los dispositivos y <strong>de</strong>l<br />
rendimiento <strong>de</strong> los circuitos, logrando así reducir los costes <strong>de</strong> <strong>de</strong>sarrollo <strong>de</strong><br />
los nuevos circuitos integrados.<br />
Un problema común a todos los simu<strong>la</strong>dores <strong>de</strong> procesos, dispositivos y<br />
circuitos es el elevado tiempo <strong>de</strong> computación que requieren, cuyo origen<br />
está en el alto número <strong>de</strong> datos a procesar (sobre todo en el tratamiento<br />
<strong>de</strong> problemas tridimensionales) y en <strong>la</strong> lentitud <strong>de</strong> <strong>la</strong>s técnicas <strong>numéricas</strong><br />
empleadas.<br />
En esta memoria partimos <strong>de</strong> un simu<strong>la</strong>dor <strong>de</strong> dispositivos tridimensional<br />
y paralelo, aplicado a dispositivos HEMT, sobre el que preten<strong>de</strong>mos estudiar<br />
el efecto <strong>de</strong> <strong>la</strong>s variaciones tanto en el dopado como en <strong>la</strong> composición <strong>de</strong> los<br />
compuestos ternarios que se producen en <strong>la</strong> fabricación <strong>de</strong> estos dispositivos<br />
cuando se esca<strong>la</strong>n a dimensiones <strong>su</strong>bmicrométricas. Con el fin <strong>de</strong> obtener<br />
re<strong>su</strong>ltados realistas es necesario realizar un análisis estadístico a<strong>de</strong>cuado,<br />
siendo preciso para ello un número consi<strong>de</strong>rable <strong>de</strong> simu<strong>la</strong>ciones. Por lo tanto<br />
tratamos <strong>de</strong> realizar un análisis <strong>de</strong> algunas <strong>librerías</strong> <strong>numéricas</strong> actuales, <strong>de</strong><br />
los métodos <strong>de</strong> resolución y <strong>de</strong> precondicionamiento que implementan, con<br />
el fin <strong>de</strong> intentar reducir lo máximo posible el tiempo <strong>de</strong> computación.<br />
La memoria se divi<strong>de</strong> en cuatro capítulos:<br />
En el primer capítulo se realiza una <strong>de</strong>scripción <strong>de</strong> los principios físicos<br />
en los que se basan <strong>la</strong>s heteroestructuras, para centrarse a continuación en<br />
los transistores HEMT, <strong>de</strong>tal<strong>la</strong>ndo <strong>su</strong> modo <strong>de</strong> funcionamiento y algunas <strong>de</strong><br />
<strong>la</strong>s técnicas <strong>de</strong> mo<strong>de</strong>lización existentes.<br />
En el segundo capítulo se hace una introducción a los sistemas multiprocesador<br />
y se <strong>de</strong>scriben <strong>la</strong>s principales características <strong>de</strong> <strong>la</strong> programación<br />
parale<strong>la</strong>, para pasar, posteriormente a caracterizar los sistemas empleados,<br />
1
2 Introducción<br />
el cluster Beowulf y el Origin 200.<br />
En el tercer capítulo se estudian los métodos <strong>de</strong> resolución que se<br />
pue<strong>de</strong>n emplear para resolver los sistemas lineales, junto con los precondicionadores<br />
utilizados para acelerar <strong>la</strong> convergencia <strong>de</strong> los métodos iterativos.<br />
Realizamos una <strong>de</strong>scripción más profunda <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> <strong>numéricas</strong> <strong>de</strong><br />
resolutores paralelos que hemos manejado y los distintos modos <strong>de</strong> almacenamiento<br />
que se pue<strong>de</strong>n utilizar en <strong>la</strong>s matrices dispersas.<br />
En el cuarto capítulo inicialmente se <strong>de</strong>scriben algunas <strong>de</strong> <strong>la</strong>s principales<br />
características <strong>de</strong>l programa <strong>de</strong> simu<strong>la</strong>ción utilizado. A continuación<br />
nos centramos en <strong>la</strong>s <strong>librerías</strong> <strong>numéricas</strong>, empezando por <strong>la</strong> librería secuencial<br />
SPARSKIT, con <strong>la</strong> que realizamos un <strong>estudio</strong> <strong>de</strong> una gran variedad <strong>de</strong><br />
resolutores que servirá como base para los análisis <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> posteriores,<br />
puesto que sólo trataremos los resolutores que presentaran mejores<br />
re<strong>su</strong>ltados con esta librería. Las <strong>librerías</strong> que se estudian a continuación son<br />
SuperLU, PSPARSLIB, PETSc y Aztec.<br />
Finalmente se presentan <strong>la</strong>s conclusiones, don<strong>de</strong> se re<strong>su</strong>men <strong>la</strong>s principales<br />
aportaciones <strong>de</strong> este trabajo y se <strong>su</strong>gieren posibles líneas <strong>de</strong> investigación<br />
en este campo.
Capítulo 1<br />
Dispositivos <strong>de</strong> efecto campo<br />
con heteroestructuras:<br />
HEMT<br />
Los transistores HEMT (High Electron Mobility Transistor)[BB02, RR02]<br />
basados en <strong>la</strong> formación <strong>de</strong> heteroestructuras <strong>de</strong> semiconductores, están reemp<strong>la</strong>zando<br />
rápidamente a <strong>la</strong> tecnología convencional MOSFET en aplicaciones<br />
militares y comerciales que requieran alta ganancia y ruido reducido,<br />
sobre todo para frecuencias elevadas. Constituyen un importante campo <strong>de</strong><br />
investigación actual <strong>de</strong>bido a <strong>su</strong>s interesantes propieda<strong>de</strong>s y a <strong>su</strong> posible<br />
utilidad en campos como <strong>la</strong>s aplicaciones <strong>de</strong> microondas y <strong>la</strong>s digitales <strong>de</strong><br />
alta velocidad.<br />
Antes <strong>de</strong> <strong>de</strong>scribir el dispositivo se introducen una serie <strong>de</strong> conceptos útiles<br />
para <strong>la</strong> posterior comprensión <strong>de</strong>l funcionamiento <strong>de</strong>l transistor HEMT.<br />
Inicialmente nos centramos en los principios físicos en los que se basan <strong>la</strong>s<br />
heteroestructuras, tratando también ciertos factores que influyen sobre el<strong>la</strong>s,<br />
como pue<strong>de</strong>n ser <strong>la</strong> tensión en <strong>la</strong>s heterointerfaces y el control <strong>de</strong>l dopado<br />
introducido, para abordar <strong>de</strong>spués <strong>la</strong> <strong>de</strong>scripción <strong>de</strong>l dispositivo y <strong>su</strong> funcionamiento,<br />
que es, en cierto modo, análogo al <strong>de</strong> los transistores MOSFET<br />
[Pie94]. Por último presentamos algunas <strong>de</strong> <strong>la</strong>s técnicas <strong>de</strong> mo<strong>de</strong>lización y<br />
simu<strong>la</strong>ción <strong>de</strong> estos dispositivos.<br />
1.1. Heteroestructuras <strong>de</strong> semiconductores<br />
Una heteroestructura se forma al poner contacto dos materiales semiconductores<br />
<strong>de</strong> características muy diferentes, siendo una <strong>de</strong> <strong>la</strong>s técnicas más<br />
utilizadas para ello el crecimiento epitaxial. Las principales propieda<strong>de</strong>s que<br />
3
4 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Figura 1.1: Representación <strong>de</strong> <strong>la</strong> constante <strong>de</strong> red frente a Egap para <strong>la</strong>s<br />
aleaciones <strong>de</strong> semiconductores más comunes.<br />
afectan al comportamiento <strong>de</strong> <strong>la</strong> heteroestructura son <strong>su</strong>s constantes <strong>de</strong> red,<br />
concentraciones <strong>de</strong> dopado y energías <strong>de</strong> banda prohibida (Egap).<br />
Las heterouniones están compuestas normalmente <strong>de</strong> materiales cuya<br />
constante <strong>de</strong> red es muy parecida. La figura 1.1 muestra <strong>la</strong> energía <strong>de</strong> banda<br />
prohibida frente a <strong>la</strong> constante <strong>de</strong> red <strong>de</strong> los elementos más comunes <strong>de</strong> <strong>la</strong><br />
III–IV familia(3 a y 5 a columna <strong>de</strong> <strong>la</strong> tab<strong>la</strong> periódica) y los basados en silicio<br />
[BB02].<br />
Las líneas continuas <strong>de</strong> <strong>la</strong> figura 1.1 unen elementos que darían lugar a<br />
materiales directos, en los que el mínimo <strong>de</strong> <strong>la</strong> banda <strong>de</strong> conducción coinci<strong>de</strong><br />
con el máximo <strong>de</strong> <strong>la</strong> banda <strong>de</strong> valencia en una representación energía–<br />
momento. En cambio elementos unidos por líneas discontinuas formarían<br />
semiconductores indirectos. Al <strong>de</strong>sp<strong>la</strong>zarse a lo <strong>la</strong>rgo <strong>de</strong> <strong>la</strong>s líneas se varía<br />
<strong>la</strong> fracción mo<strong>la</strong>r que aporta cada uno <strong>de</strong> los componentes en <strong>la</strong> formación<br />
<strong>de</strong>l compuesto ternario. En el caso <strong>de</strong> materiales cuaternarios (formados<br />
por cuatro elementos) tendríamos una <strong>su</strong>perficie <strong>de</strong>limitada por tres compuestos<br />
(puntos en <strong>la</strong> gráfica) por <strong>la</strong> que podremos movernos al variar <strong>la</strong><br />
composición. Los elementos que podamos unir en <strong>la</strong> gráfica por una línea<br />
aproximadamente vertical proporcionarán materiales <strong>de</strong> constantes <strong>de</strong> red
1.1. Heteroestructuras <strong>de</strong> semiconductores 5<br />
Figura 1.2: Representación <strong>de</strong> <strong>la</strong>s bandas <strong>de</strong> conducción y valencia en una<br />
heterounión AlGaAs–GaAs<br />
muy simi<strong>la</strong>res, siendo <strong>su</strong>s Egap diferentes en función <strong>de</strong> <strong>la</strong> composición.<br />
Una <strong>de</strong> <strong>la</strong>s heteroestructuras más importantes es <strong>la</strong> formada entre GaAs<br />
y AlAs, o <strong>su</strong> compuesto re<strong>la</strong>cionado el AlxGa1−xAs, siendo x <strong>la</strong> razón <strong>de</strong><br />
mezc<strong>la</strong>. En <strong>la</strong> heteroestructura GaAs−AlxGa1−xAs los dos materiales que <strong>la</strong><br />
componen tienen constantes <strong>de</strong> red prácticamente idénticas (como po<strong>de</strong>mos<br />
ver en <strong>la</strong> gráfica 1.1), propiedad muy importante puesto que <strong>de</strong> no ser así se<br />
producirían tensiones o dislocaciones perjudiciales. Partiendo <strong>de</strong> <strong>la</strong> figura<br />
1.2, en <strong>la</strong> que representamos <strong>la</strong>s bandas <strong>de</strong> conducción y valencia <strong>de</strong> <strong>la</strong><br />
heterounión, observamos que <strong>su</strong>s Egap son diferentes, <strong>de</strong> tal forma que en<br />
<strong>la</strong> heterounión ∆Egap = ∆Ec + ∆Ev, don<strong>de</strong> <strong>la</strong> Egap <strong>de</strong>l GaAs a 300K es<br />
1.42 eV, mientras que en el caso <strong>de</strong>l AlxGa1−xAs <strong>la</strong> anchura <strong>de</strong> <strong>la</strong> banda<br />
prohibida varía con <strong>la</strong> composición <strong>de</strong> <strong>la</strong> siguiente forma:<br />
E gap(x) = 1,424 + 1,247x 0 < x < 0,45 (1.1)<br />
siendo x <strong>la</strong> razón <strong>de</strong> mezc<strong>la</strong>.<br />
En cambio no es posible formar heteroestructuras entre AlAs y AlSb,<br />
puesto que al existir una fuerte <strong>de</strong>pen<strong>de</strong>ncia entre <strong>la</strong> composición y <strong>la</strong> constante<br />
<strong>de</strong> red <strong>la</strong>s razones <strong>de</strong> mezc<strong>la</strong> que nos proporcionarían materiales con<br />
distintas Egap provocarían al mismo tiempo diferencias consi<strong>de</strong>rables entre<br />
<strong>su</strong>s constantes <strong>de</strong> red.<br />
En general <strong>la</strong> Egap <strong>de</strong> los materiales semiconductores que forman <strong>la</strong> heteroestructura<br />
es diferente, por lo tanto <strong>la</strong>s bandas <strong>de</strong> conducción (BC) y<br />
valencia (BV) <strong>de</strong> los dos materiales no pue<strong>de</strong>n ser continuas simultáneamente<br />
en <strong>la</strong> heterointerfaz; en realidad generalmente ambas son discontinuas en <strong>la</strong><br />
<strong>su</strong>perficie <strong>de</strong> separación. Dependiendo <strong>de</strong> <strong>la</strong> aplicación el valor <strong>de</strong> <strong>la</strong> energía<br />
<strong>de</strong> <strong>la</strong> banda prohibida se ajustará cambiando los elementos que componen<br />
<strong>la</strong> heteroestructura (p.ej Galio por Indio o Aluminio) o bien variando <strong>la</strong><br />
composición <strong>de</strong> <strong>la</strong> aleación.
6 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Figura 1.3: Estructura <strong>de</strong> bandas para una heterounión n–AlGaAs y GaAs<br />
intrínseco en equilibrio<br />
La heterounión se pue<strong>de</strong> crear utilizando dos materiales intrínsecos o<br />
dopando uno o ambos materiales. Como ejemplo vamos a estudiar el caso<br />
<strong>de</strong> una heterounión <strong>de</strong> n–AlGaAs y GaAs intrínseco. Sabiendo que en el<br />
equilibrio el nivel <strong>de</strong> Fermi es constante y lejos <strong>de</strong> <strong>la</strong> unión se recuperan<br />
<strong>la</strong>s propieda<strong>de</strong>s masivas <strong>de</strong> los materiales po<strong>de</strong>mos construir el diagrama<br />
<strong>de</strong> bandas <strong>de</strong> energía. Para ello también será necesario <strong>de</strong>finir una serie <strong>de</strong><br />
cantida<strong>de</strong>s:<br />
1. φ (función <strong>de</strong> trabajo): La energía qφ es <strong>la</strong> necesaria para promocionar<br />
a un electrón <strong>de</strong>s<strong>de</strong> el nivel <strong>de</strong> Fermi hasta el nivel <strong>de</strong> vacío (es <strong>de</strong>cir,<br />
<strong>la</strong> energía necesaria para arrancar un e − ).<br />
2. χ (afinidad electrónica): siendo qχ <strong>la</strong> energía requerida para llevar al<br />
e − <strong>de</strong>s<strong>de</strong> el bor<strong>de</strong> <strong>de</strong> <strong>la</strong> banda <strong>de</strong> conducción al nivel <strong>de</strong> vacío.<br />
En <strong>la</strong> figura 1.3 se representan los diagramas <strong>de</strong> bandas <strong>de</strong> energía en el<br />
caso <strong>de</strong> que los materiales estén separados (a) o puestos en contacto (b).<br />
El potencial <strong>de</strong> contacto Vbi se <strong>de</strong>fine como <strong>la</strong> diferencia <strong>de</strong> <strong>la</strong>s funciones<br />
<strong>de</strong> trabajo <strong>de</strong> los materiales constituyentes, así
1.1. Heteroestructuras <strong>de</strong> semiconductores 7<br />
Vbi = φ2 − φ1<br />
(1.2)<br />
don<strong>de</strong> φ2 y φ1 son <strong>la</strong>s funciones <strong>de</strong> trabajo <strong>de</strong> los semiconductores <strong>de</strong> band–<br />
gap estrecho y ancho respectivamente. En este ejemplo en concreto <strong>la</strong> diferencia<br />
entre <strong>la</strong>s funciones <strong>de</strong> trabajo sería:<br />
Vbi = φ2 − φ1 = ∆Ec<br />
q<br />
+ kBT<br />
q lnn10Nc2<br />
n20Nc1<br />
(1.3)<br />
don<strong>de</strong> n10 y n20 son <strong>la</strong>s concentraciones en el equilibrio <strong>de</strong> los semiconductores<br />
<strong>de</strong> band–gap ancho y estrecho y Nc2, Nc1 <strong>la</strong>s <strong>de</strong>nsida<strong>de</strong>s efectivas <strong>de</strong><br />
estados.<br />
Seguidamente se van a tratar dos factores que influyen notablemente en<br />
<strong>la</strong> formación <strong>de</strong> <strong>la</strong>s heteroestructuras: <strong>la</strong> tensión en <strong>la</strong>s heterointerfaces y el<br />
control <strong>de</strong>l dopado.<br />
1.1.1. Tensión en <strong>la</strong>s heterointerfaces<br />
Las fronteras abruptas entre distintas capas semiconductoras se forman<br />
utilizando principalmente dos métodos: MBE (Molecu<strong>la</strong>r Beam Epitaxy) y<br />
MOCVD (Metal–Organic Chemical Vapor Deposition). En estos métodos<br />
<strong>la</strong>s capas se crecen epitaxialmente (capa atómica a capa atómica) sobre un<br />
<strong>su</strong>strato con una a<strong>de</strong>cuada constante <strong>de</strong> red.<br />
La tecnología <strong>de</strong> crecimiento cristalino permite actualmente crear capas<br />
muy finas <strong>de</strong> materiales semiconductores heterogéneos, lo cual ha posibilitado<br />
el <strong>de</strong>sarrollo <strong>de</strong> heteroestructuras. Este crecimiento se consigue incluso en<br />
el caso <strong>de</strong> que <strong>la</strong>s constantes <strong>de</strong> red <strong>de</strong> los materiales sean diferentes. En ese<br />
caso, <strong>la</strong> capa fina adoptará <strong>la</strong> constante <strong>de</strong> red <strong>de</strong>l material que <strong>la</strong> ro<strong>de</strong>a, teniendo<br />
que expandirse o contraerse para adaptarse, abandonando para ello<br />
<strong>su</strong> forma cristalina masiva. Se dice entonces que <strong>la</strong>s constantes <strong>de</strong> red se<br />
acomodan por tensión, (ver figura 1.4(a)). A partir <strong>de</strong> un cierto grosor <strong>de</strong> <strong>la</strong><br />
capa <strong>de</strong>lgada no se consigue el alineamiento <strong>de</strong> <strong>la</strong>s constantes <strong>de</strong> red, por lo<br />
que cada capa mantendrá <strong>su</strong> constante <strong>de</strong> red inicial. Esto provocará <strong>la</strong> formación<br />
<strong>de</strong> dislocaciones en <strong>la</strong> <strong>su</strong>perficie <strong>de</strong> separación, que pue<strong>de</strong>n <strong>de</strong>gradar<br />
significativamente <strong>la</strong> fiabilidad y el rendimiento <strong>de</strong>l dispositivo. Este efecto<br />
lo po<strong>de</strong>mos ver en <strong>la</strong> figura 1.4(b).<br />
1.1.2. Control <strong>de</strong>l dopado<br />
En los dispositivos basados en heterouniones <strong>de</strong>be ser posible introducir<br />
abruptamente dopantes tipo n ó p con un rango <strong>de</strong> composición entre 10 15 y<br />
10 20 cm −3 . Para contro<strong>la</strong>r <strong>la</strong> concentración <strong>de</strong> electrones y huecos, el número
8 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Figura 1.4: En <strong>la</strong> figura (a) <strong>la</strong> capa epitaxial que se crece es lo <strong>su</strong>ficientemente<br />
fina como para que se adapten <strong>la</strong>s constantes <strong>de</strong> red, en <strong>la</strong> figura (b)<br />
esta capa es más ancha que el grosor crítico, lo que provoca <strong>la</strong> aparición <strong>de</strong><br />
dislocaciones.<br />
<strong>de</strong> <strong>de</strong>fectos e impurezas <strong>de</strong>be ser insignificante. Aunque <strong>la</strong>s dos técnicas epitaxiales<br />
más comunes, MBE (Molecu<strong>la</strong>r Beam Epitaxy) y MOCVD (Metal–<br />
Organic Chemical Vapor Deposition) son inherentemente <strong>de</strong> alta pureza,<br />
durante el crecimiento se introducen impurezas <strong>de</strong> fondo.<br />
Los dispositivos HEMT requieren altas concentraciones <strong>de</strong> dopantes con<br />
interfaces abruptas. La difusión y <strong>la</strong> separación en <strong>la</strong> <strong>su</strong>perficie <strong>de</strong> los dopantes<br />
pue<strong>de</strong>n introducir perfiles <strong>de</strong> dopado no–i<strong>de</strong>ales. La difusión <strong>de</strong> los<br />
dopantes pue<strong>de</strong> darse tanto durante el crecimiento como <strong>de</strong>spués (en el momento<br />
<strong>de</strong>l funcionamiento) a causa <strong>de</strong>l propio calentamiento <strong>de</strong>l dispositivo.<br />
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo<br />
El más utilizado <strong>de</strong> los transistores <strong>de</strong> efecto campo es el MOSFET (transistor<br />
<strong>de</strong> efecto campo Metal– Óxido Semiconductor). En estos transistores<br />
el semiconductor más empleado es el Si. Este material tiene <strong>la</strong> ventaja <strong>de</strong> ser<br />
oxidado fácilmente para formar SiO2, <strong>de</strong> una manera altamente contro<strong>la</strong>ble<br />
y reproducible. La <strong>su</strong>perficie <strong>de</strong> separación Si−SiO2 se pue<strong>de</strong> crear con una<br />
muy buena regu<strong>la</strong>ridad, produciendo muy pocos <strong>de</strong>fectos. En <strong>de</strong>finitiva los<br />
MOSFETs <strong>de</strong> Si se pue<strong>de</strong>n fabricar en gran<strong>de</strong>s cantida<strong>de</strong>s, siendo fácilmente<br />
integrables para formar circuitos a gran esca<strong>la</strong>. La principal limitación <strong>de</strong>
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 9<br />
los MOSFETs <strong>de</strong> Si se encuentra en que este material es <strong>de</strong> baja movilidad.<br />
La mayoría <strong>de</strong> los semiconductores compuestos (GaAs, InP, etc) tienen<br />
movilida<strong>de</strong>s mayores que <strong>la</strong> <strong>de</strong>l silicio. Así dispositivos fabricados utilizando<br />
semiconductores compuestos pue<strong>de</strong>n presentar frecuencias <strong>de</strong> operación<br />
<strong>su</strong>periores a <strong>la</strong>s <strong>de</strong>l MOSFET <strong>de</strong> Si, aunque por otro <strong>la</strong>do presentan el problema<br />
<strong>de</strong> carecer <strong>de</strong> ais<strong>la</strong>ntes válidos que permitan <strong>su</strong> uso en <strong>la</strong> fabricación<br />
<strong>de</strong> MOSFETs.<br />
En vez <strong>de</strong> utilizar estructuras Metal– Óxido–Semiconductor, <strong>la</strong> acción <strong>de</strong><br />
<strong>la</strong> puerta en un FET pue<strong>de</strong> lograrse usando barreras Schottky, formando<br />
dispositivos conocidos como MESFETs. Para <strong>su</strong> construcción se pue<strong>de</strong>n utilizar<br />
semiconductores compuestos puesto que no necesitan capas <strong>de</strong> ais<strong>la</strong>nte.<br />
Así, mientras que en los MOSFETs el flujo <strong>de</strong> corriente se produce próximo<br />
a <strong>la</strong> <strong>su</strong>perficie, en <strong>la</strong> capa <strong>de</strong> inversión formada entre el Si y el SiO2, en<br />
los MESFETs el flujo <strong>de</strong> corriente tiene lugar en el semiconductor masivo,<br />
<strong>su</strong>rgiendo los portadores <strong>de</strong> <strong>la</strong> concentración <strong>de</strong> dopado <strong>de</strong> esta zona. Como<br />
<strong>la</strong> corriente en un MESFET se da en <strong>la</strong> zona masiva, los portadores y<br />
los átomos donadores comparten el mismo espacio. Dado que el donador<br />
se introduce ionizado, un centro fijo y cargado positivamente está presente<br />
en el cristal produciendo una dispersión culombiana bastante gran<strong>de</strong> sobre<br />
los electrones libres, conocida como scattering por impurezas ionizadas. La<br />
importancia <strong>de</strong> este fenómeno <strong>de</strong>pen<strong>de</strong> <strong>de</strong> <strong>la</strong> separación espacial entre los<br />
centros <strong>de</strong> scattering (en este caso los átomos ionizados donadores) y los<br />
e− . Al aumentar <strong>la</strong> concentración <strong>de</strong> donadores, el scattering por impurezas<br />
ionizadas se incrementa, reduciendo <strong>la</strong> movilidad electrónica en el dispositivo.<br />
Si los átomos donadores se separaran físicamente <strong>de</strong> los portadores lograríamos<br />
reducir el scattering culombiano. Esto se pue<strong>de</strong> conseguir a través<br />
<strong>de</strong> <strong>la</strong> modu<strong>la</strong>ción <strong>de</strong>l dopado, técnica <strong>de</strong>scrita en el apartado siguiente.<br />
1.2.1. Modu<strong>la</strong>ción <strong>de</strong>l dopado<br />
Las técnicas convencionales <strong>de</strong> dopado son útiles para aumentar <strong>la</strong> concentración<br />
<strong>de</strong> portadores libres y mejorar <strong>la</strong> conductividad <strong>de</strong>l semiconductor,<br />
pero esto se produce a expensas <strong>de</strong> un incremento <strong>de</strong>l scattering por<br />
impurezas ionizadas. La modu<strong>la</strong>ción <strong>de</strong>l dopado es una alternativa eficaz a<br />
<strong>la</strong>s técnicas convencionales, puesto que en una heteroestructura con modu<strong>la</strong>ción<br />
<strong>de</strong>l dopado, los portadores libres se encuentran separados físicamente<br />
<strong>de</strong> los dopantes. Esta separación espacial entre ambos reduce <strong>la</strong> acción <strong>de</strong>l<br />
scattering por impurezas ionizantes, lográndose aumentar <strong>la</strong> concentración<br />
<strong>de</strong> los portadores sin comprometer <strong>la</strong> movilidad.
10 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Figura 1.5: Estructura <strong>de</strong> bandas para una heterounión n–AlGaAs y GaAs<br />
intrínseco teniendo en cuenta modu<strong>la</strong>ción <strong>de</strong>l dopado<br />
Si partimos <strong>de</strong> una heteroestructura formada con un semiconductor dopado<br />
tipo n <strong>de</strong> band–gap elevado (p.ej. AlGaAs tipo n) y otro semiconductor<br />
intrínseco <strong>de</strong> band–gap reducido (p.ej. GaAs), inicialmente cuando los dos<br />
materiales se encuentran separados, el nivel <strong>de</strong> Fermi en el caso <strong>de</strong>l AlGaAs<br />
se encuentra más próximo a <strong>la</strong> banda <strong>de</strong> conducción que a <strong>la</strong> <strong>de</strong> valencia,<br />
como po<strong>de</strong>mos ver en <strong>la</strong> figura 1.3. Al alcanzarse el equilibrio, <strong>de</strong>spués <strong>de</strong><br />
poner los dos materiales en contacto, el nivel <strong>de</strong> Fermi se <strong>de</strong>be alinear a lo<br />
<strong>la</strong>rgo <strong>de</strong> toda <strong>la</strong> estructura. Para ello se <strong>de</strong>ben transferir e − <strong>de</strong>s<strong>de</strong> <strong>la</strong> capa <strong>de</strong>l<br />
AlGaAs a <strong>la</strong> <strong>de</strong>l GaAs, puesto que los e − asociados con los donadores ven<br />
estados <strong>de</strong> menor energía en el material <strong>de</strong> band–gap estrecho (GaAs). Esto<br />
provoca un aumento <strong>de</strong> <strong>la</strong> concentración electrónica <strong>de</strong>ntro <strong>de</strong>l GaAs, sin<br />
implicar por ello un incremento <strong>de</strong> <strong>la</strong>s impurezas ionizadas. Los átomos donadores<br />
ionizados en el interior <strong>de</strong>l AlGaAs tienen una carga neta positiva,<br />
que se ba<strong>la</strong>ncea con <strong>la</strong> negativa <strong>de</strong>bida a <strong>la</strong> transferencia en el GaAs. Aunque<br />
los átomos ionizados influyen sobre los e − transferidos en el GaAs, <strong>la</strong><br />
separación espacial entre ambos mitiga el efecto <strong>de</strong> <strong>la</strong> atracción culombiana
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 11<br />
Figura 1.6: Estructura epitaxial <strong>de</strong> un HEMT <strong>de</strong> AlGaAs–GaAs básico.<br />
entre ellos.<br />
Nos encontramos con que los electrones se encuentran confinados en una<br />
capa extremadamente fina, muy próxima a <strong>la</strong> heterounión, don<strong>de</strong> <strong>la</strong> energía<br />
<strong>de</strong> Fermi es <strong>su</strong>perior a <strong>la</strong> energía <strong>de</strong> <strong>la</strong> banda <strong>de</strong> conducción (ver figura 1.5).<br />
Esto confiere al canal una resistividad muy baja. La separación espacial <strong>de</strong><br />
los donadores (cargados positivamente) y los e − produce un perfil <strong>de</strong> campo<br />
eléctrico gobernado por <strong>la</strong> ecuación <strong>de</strong> Poisson, lo cual ocasiona una flexión<br />
<strong>de</strong> <strong>la</strong> banda. Dependiendo <strong>de</strong>l grado <strong>de</strong> curvatura <strong>de</strong> <strong>la</strong> banda en <strong>la</strong> capa <strong>de</strong><br />
GaAs se pue<strong>de</strong> dar cuantización espacial. Es <strong>de</strong>cir si <strong>la</strong> curvatura <strong>de</strong> <strong>la</strong> banda<br />
en <strong>la</strong> <strong>su</strong>perficie es consi<strong>de</strong>rable se pue<strong>de</strong> formar un pozo <strong>de</strong> potencial <strong>de</strong><br />
dimensiones comparables a <strong>la</strong> longitud <strong>de</strong> onda <strong>de</strong> De Broglie. Se producirán<br />
entonces niveles cuantizados <strong>de</strong> energía y el sistema se comportará como un<br />
gas <strong>de</strong> electrones bidimensional (2DEG).<br />
Los transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo (HFETs)<br />
utilizan esta técnica para alcanzar altas <strong>de</strong>nsida<strong>de</strong>s <strong>de</strong> corriente, manteniendo<br />
al mismo tiempo una elevada movilidad <strong>de</strong> los portadores. A<strong>de</strong>más, estos<br />
dispositivos pue<strong>de</strong>n alcanzar un rendimiento óptimo a altas frecuencias al<br />
utilizar semiconductores <strong>de</strong> alta movilidad.<br />
1.2.2. Física <strong>de</strong> los FETs <strong>de</strong> heteroestructura<br />
La forma más extendida <strong>de</strong> FET <strong>de</strong> heteroestructura se conoce como<br />
MODFET (Modu<strong>la</strong>tion Doped Field Efect Transistor) o alternativamente<br />
como HEMT (High Electron Mobility Transistor).
12 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
En <strong>la</strong> estructura básica <strong>de</strong> un HEMT <strong>de</strong> GaAs–AlGaAs se crece epitaxialmente<br />
una capa <strong>de</strong> AlGaAs dopada tipo n sobre GaAs intrínseco formando<br />
una heteroestructura. Los e − se encuentren confinados por <strong>la</strong> barrera <strong>de</strong><br />
potencial formada en <strong>la</strong> heterounión, consiguiendose así que <strong>la</strong> <strong>su</strong>perficie <strong>de</strong><br />
<strong>la</strong> capa <strong>de</strong> GaAs tenga una alta concentración electrónica separada espacialmente<br />
<strong>de</strong> los donadores ionizados <strong>de</strong>l interior <strong>de</strong> <strong>la</strong> capa <strong>de</strong> AlGaAs.<br />
La variación más sencil<strong>la</strong> <strong>de</strong> <strong>la</strong> estructura básica <strong>de</strong>l transistor es <strong>la</strong><br />
representada en <strong>la</strong> figura 1.6, consistente en introducir una capa <strong>de</strong> AlGaAs<br />
no dopado (capa espaciadora) entre <strong>la</strong>s capas <strong>de</strong> n–AlGaAs y GaAs. De<br />
esta forma se consigue reducir el scattering por impurezas ionizadas a<strong>de</strong>más<br />
<strong>de</strong> incrementar <strong>la</strong> movilidad electrónica. El grosor <strong>de</strong> esta capa se encuentra<br />
típicamente entre los 20–50 ˚A. Cuanto más gruesa sea <strong>la</strong> capa espaciadora<br />
mayor realzamiento <strong>de</strong> <strong>la</strong> movilidad electrónica se produce, pero al mismo<br />
tiempo se reduce <strong>la</strong> <strong>de</strong>nsidad <strong>de</strong> los portadores, efecto no <strong>de</strong>seable porque<br />
implica un <strong>de</strong>scenso <strong>de</strong> <strong>la</strong> transferencia electrónica.<br />
También es interesante comentar <strong>la</strong> existencia <strong>de</strong> otro tipo <strong>de</strong> dispositivos<br />
con funcionamiento análogo al <strong>de</strong> los HEMT, son conocidos como PHEMT<br />
(HEMT pseudomórficos). Estos transistores utilizan materiales semiconductores<br />
<strong>de</strong> constante <strong>de</strong> red diferente, provocando tensiones en <strong>la</strong> heterounión.<br />
Para lograr el funcionamiento <strong>de</strong> un dispositivo <strong>de</strong> estas características hay<br />
que utilizar una capa extremadamente fina <strong>de</strong> uno <strong>de</strong> los materiales que<br />
se crecen. Esta técnica permite <strong>la</strong> construcción <strong>de</strong> transistores con mayores<br />
diferencias <strong>de</strong> band–gap, dándoles un mayor rendimiento, por ejemplo<br />
una unión AlGaAs–InGaAs forma un dispositivo PHEMT don<strong>de</strong> el uso <strong>de</strong><br />
InGaAs proporcionará una movilidad <strong>su</strong>perior a <strong>la</strong> obtenida con GaAs.<br />
1.2.3. Funcionamiento <strong>de</strong> los dispositivos HEMT<br />
A través <strong>de</strong> <strong>la</strong> modu<strong>la</strong>ción <strong>de</strong>l dopado se pue<strong>de</strong>n producir los portadores<br />
<strong>de</strong> carga sin necesidad <strong>de</strong> dopar el GaAs. La concentración total <strong>de</strong> carga<br />
es <strong>de</strong>pendiente <strong>de</strong> <strong>la</strong> tensión <strong>de</strong> puerta y <strong>de</strong>l modo <strong>de</strong> funcionamiento <strong>de</strong>l<br />
dispositivo, que se pue<strong>de</strong> encontrar en modo acumu<strong>la</strong>ción o vaciamiento.<br />
Los dispositivos en modo acumu<strong>la</strong>ción están en corte cuando <strong>la</strong> tensión<br />
<strong>de</strong> puerta VG es nu<strong>la</strong> (es <strong>de</strong>cir en el equilibrio no tenemos canal). Si el canal<br />
es tipo n es necesaria una cierta tensión <strong>de</strong> puerta positiva para inducir<br />
el canal. Por el contrario, en los dispositivos en modo vaciamiento existe<br />
canal para una tensión <strong>de</strong> puerta nu<strong>la</strong>, en este caso, si el canal es tipo n,<br />
será necesaria una tensión <strong>de</strong> puerta negativa para vaciar el canal y cortar<br />
el dispositivo.<br />
Para examinar <strong>la</strong> situación <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> estructura en función <strong>de</strong> <strong>la</strong> ten-
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 13<br />
sión aplicada a <strong>la</strong> puerta, partimos <strong>de</strong> una tensión <strong>de</strong> drenador VD nu<strong>la</strong>.<br />
Cuando <strong>la</strong> tensión <strong>de</strong> puerta <strong>su</strong>pera un <strong>de</strong>terminado voltaje umbral VT, en<br />
<strong>la</strong> <strong>su</strong>perficie <strong>de</strong> separación se forma un capa <strong>de</strong> inversión que contiene e −<br />
móviles. Naturalmente, cuanto mayor sea <strong>la</strong> po<strong>la</strong>rización <strong>de</strong> inversión, mayor<br />
será <strong>la</strong> cantidad <strong>de</strong> e − presentes en esa capa, y mayor será <strong>la</strong> conductancia<br />
<strong>de</strong> <strong>la</strong> capa <strong>de</strong> inversión.<br />
De cualquier modo, una vez que el gas <strong>de</strong> electrones 2D se induce en <strong>la</strong><br />
<strong>su</strong>perficie <strong>de</strong> separación <strong>de</strong> <strong>la</strong> heterounión, se establece un canal <strong>de</strong> conducción<br />
entre <strong>la</strong> fuente y el drenador. La aplicación <strong>de</strong> una tensión positiva en<br />
el drenador provocará un flujo <strong>de</strong> corriente en el dispositivo, que <strong>su</strong>rgirá <strong>de</strong>l<br />
movimiento <strong>de</strong> los e − <strong>de</strong> <strong>la</strong> fuente al drenador en el gas 2D. Se pue<strong>de</strong>n lograr<br />
velocida<strong>de</strong>s y movilida<strong>de</strong>s <strong>de</strong> los e − muy elevadas para tensiones aplicadas<br />
<strong>de</strong> drenador muy reducidas.<br />
Cuando <strong>la</strong> tensión <strong>de</strong> drenador se aumenta poco a poco a partir <strong>de</strong><br />
VD = 0, el canal actúa como una simple resistencia y empieza a fluir corriente<br />
<strong>de</strong> drenador (ID) proporcional a <strong>la</strong> tensión <strong>de</strong> drenador aplicada. Una vez<br />
que VD aumenta por encima <strong>de</strong> unas pocas décimas <strong>de</strong> voltio, se produce<br />
un aumento <strong>de</strong> <strong>la</strong> zona <strong>de</strong> vaciamiento a lo <strong>la</strong>rgo <strong>de</strong>l canal, <strong>de</strong> <strong>la</strong> fuente al<br />
drenador, y por lo tanto disminuye <strong>la</strong> cantidad <strong>de</strong> portadores en <strong>la</strong> capa <strong>de</strong><br />
inversión. El reducido número <strong>de</strong> portadores disminuye <strong>la</strong> conductancia <strong>de</strong>l<br />
canal, que se refleja en una disminución <strong>de</strong> <strong>la</strong> pendiente <strong>de</strong> <strong>la</strong> curva característica<br />
ID − VD. Esta disminución está más marcada en <strong>la</strong>s proximida<strong>de</strong>s<br />
<strong>de</strong>l drenador, hasta que llegado un momento <strong>la</strong> capa <strong>de</strong> inversión <strong>de</strong>saparece<br />
en esta zona, se produce entonces el estrangu<strong>la</strong>miento <strong>de</strong>l canal (para una<br />
tensión <strong>de</strong> drenador igual a VD,sat). En este momento <strong>la</strong> pendiente <strong>de</strong> <strong>la</strong><br />
curva característica ID − VD es nu<strong>la</strong>, y el dispositivo entra en zona <strong>de</strong> saturación.<br />
A partir <strong>de</strong> este momento ID se mantiene constante para voltajes <strong>de</strong><br />
drenador <strong>su</strong>periores a VD,sat. La curva característica ID − VD se representa<br />
en <strong>la</strong> figura 1.7, en <strong>la</strong> que po<strong>de</strong>mos ver c<strong>la</strong>ramente <strong>la</strong>s distintas regiones <strong>de</strong><br />
funcionamiento.<br />
Hay que tener en cuenta que cuando aplicamos una tensión en el drenador,<br />
<strong>la</strong> curvatura <strong>de</strong> <strong>la</strong>s bandas será diferente cerca <strong>de</strong>l drenador o cerca<br />
<strong>de</strong> <strong>la</strong> región <strong>de</strong> fuente. Si <strong>la</strong>s tensiones aplicadas <strong>de</strong> puerta y drenador son<br />
positivas, cerca <strong>de</strong>l drenador el potencial <strong>de</strong> <strong>su</strong>perficie ψs( qψs es <strong>la</strong> diferencia<br />
<strong>de</strong> energía entre <strong>la</strong>s bandas <strong>de</strong> conducción <strong>de</strong>l GaAs en <strong>la</strong> zona masiva<br />
y en <strong>la</strong> heterointerfaz) es menos positivo que cerca <strong>de</strong> <strong>la</strong> fuente, lo que hace<br />
que <strong>la</strong> curvatura <strong>de</strong> <strong>la</strong>s bandas sea más pronunciada cerca <strong>de</strong> <strong>la</strong> región <strong>de</strong><br />
fuente, haciendo que en esta zona el pozo sea más estrecho. Esto lleva a una<br />
diferencia en <strong>la</strong>s <strong>su</strong>bbandas <strong>de</strong> energía entre <strong>la</strong>s dos regiones, puesto que<br />
<strong>la</strong> estructura energética <strong>de</strong> los electrones cambiará constantemente entre <strong>la</strong>
14 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Figura 1.7: Curva característica ID − VD para un dispositivo HEMT<br />
fuente y el drenador.<br />
1.2.4. Mo<strong>de</strong>lización <strong>de</strong> transistores HEMT<br />
Existen varias técnicas <strong>de</strong> mo<strong>de</strong>lización <strong>de</strong>pendiendo <strong>de</strong>l objetivo a estudiar,<br />
los re<strong>su</strong>ltados que se preten<strong>de</strong>n obtener, <strong>la</strong>s características <strong>de</strong> los<br />
sistemas en los que se va a aplicar, etc. Uno <strong>de</strong> los más simplificados es el<br />
mo<strong>de</strong>lo analítico, que nos permite obtener algunas re<strong>la</strong>ciones básicas, pero<br />
que re<strong>su</strong>lta inapropiado si se preten<strong>de</strong>n estudiar efectos multidimensionales,<br />
variaciones en el espacio <strong>de</strong> <strong>la</strong> composición <strong>de</strong> los materiales, etc. Para<br />
po<strong>de</strong>r analizar estos efectos es preciso recurrir a mo<strong>de</strong>los numéricos, resolviendo<br />
<strong>la</strong>s ecuaciones fundamentales que gobiernan el funcionamiento <strong>de</strong>l<br />
dispositivo. A continuación estudiaremos mo<strong>de</strong>los representativos <strong>de</strong> estas<br />
dos aproximaciones.<br />
Mo<strong>de</strong>lo simplificado para HEMTs <strong>de</strong> canal <strong>la</strong>rgo<br />
En este apartado vamos a intentar mostrar un mo<strong>de</strong>lo analítico simple<br />
que pueda ser utilizado en simu<strong>la</strong>ciones <strong>de</strong>l funcionamiento <strong>de</strong> estos transistores<br />
en circuitos. En dispositivos <strong>de</strong> canal corto es prácticamente imposible<br />
utilizar este tipo <strong>de</strong> mo<strong>de</strong>los analíticos y es necesario recurrir a aproximaciones<br />
<strong>numéricas</strong> para explicar el funcionamiento físico <strong>de</strong>l dispositivo. En<br />
cambio, en dispositivos <strong>de</strong> canal <strong>la</strong>rgo, para valores pequeños <strong>de</strong> <strong>la</strong>s tensiones<br />
aplicadas, se pue<strong>de</strong> hacer uso <strong>de</strong> estos mo<strong>de</strong>los analíticos para simu<strong>la</strong>ciones<br />
<strong>de</strong> circuitos.
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 15<br />
En este mo<strong>de</strong>lo <strong>la</strong> principal aproximación que se hace es <strong>la</strong> <strong>de</strong> canal<br />
gradual. En esta aproximación se a<strong>su</strong>me que el campo a lo <strong>la</strong>rgo <strong>de</strong> <strong>la</strong><br />
dirección <strong>de</strong>l canal cambia muy <strong>de</strong>spacio con <strong>la</strong> posición comparándolo con<br />
<strong>la</strong> variación <strong>de</strong>l campo perpendicu<strong>la</strong>r al canal. Con esta <strong>su</strong>posición po<strong>de</strong>mos<br />
tratar el campo en una so<strong>la</strong> dimensión.<br />
La concentración <strong>de</strong> carga bidimensional n(x), pue<strong>de</strong> expresarse en términos<br />
<strong>de</strong> <strong>la</strong> concentración <strong>de</strong> portadores <strong>de</strong> <strong>la</strong> fuente en <strong>la</strong> parte final <strong>de</strong>l canal<br />
nso como:<br />
n(x) = nso − ǫ<br />
V (x) (1.4)<br />
qd<br />
siendo d el grosor <strong>de</strong> <strong>la</strong> capa <strong>de</strong> AlGaAs. La corriente IC(x) en el canal<br />
<strong>su</strong>poniendo sólo arrastre viene dada por:<br />
IC(x) = qWn(x)v(x) (1.5)<br />
don<strong>de</strong> v(x) es <strong>la</strong> velocidad <strong>de</strong> los electrones en el interior <strong>de</strong>l canal y W el<br />
ancho <strong>de</strong> <strong>la</strong> puerta. Si expresamos <strong>la</strong> velocidad en función <strong>de</strong>l campo eléctrico<br />
F tenemos:<br />
v(F) =<br />
µ|F |<br />
1+|F |/F1<br />
vsat<br />
F ≤ Fc<br />
F > Fc<br />
(1.6)<br />
con vsat <strong>la</strong> velocidad <strong>de</strong> saturación, µ <strong>la</strong> movilidad, Fc el campo eléctrico<br />
crítico en el que el gas <strong>de</strong> electrones alcanza <strong>la</strong> saturación <strong>de</strong> <strong>la</strong> velocidad, y<br />
F1:<br />
F1 = Fc<br />
µFc<br />
vsat<br />
− 1<br />
(1.7)<br />
Si <strong>la</strong> corriente <strong>de</strong> fuga a través <strong>de</strong> <strong>la</strong> puerta (IG) es significativa <strong>la</strong> corriente<br />
en el canal (IC) no se conservará. En el drenador esto se verá reflejado<br />
como:<br />
ID = IS − IG<br />
(1.8)<br />
con ID como corriente <strong>de</strong> drenador y IS corriente <strong>de</strong> fuente.<br />
Después <strong>de</strong> <strong>de</strong>sarrol<strong>la</strong>r estas ecuaciones, hacemos <strong>la</strong> aproximación <strong>de</strong><br />
que <strong>la</strong> mayor caída <strong>de</strong> tensión se produce en <strong>la</strong>s proximida<strong>de</strong>s <strong>de</strong>l drenador.<br />
Obtenemos así <strong>la</strong> siguiente expresión para <strong>la</strong> corriente <strong>de</strong> drenador ID:<br />
<br />
1<br />
ID =<br />
−IG<br />
1 + VD/LF1<br />
<br />
1 VD<br />
+ (1 − α) +<br />
2 LF1<br />
qWµ<br />
<br />
nsoVD −<br />
L<br />
ǫ<br />
2qd V 2 <br />
D<br />
(1.9)
16 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
siendo L <strong>la</strong> longitud <strong>de</strong>l canal y α un parámetro que por simplicidad tomaremos<br />
igual a 1/2.<br />
La expresión dada en <strong>la</strong> ecuación anterior <strong>de</strong>scribe <strong>la</strong> corriente <strong>de</strong> drenador<br />
en <strong>la</strong> zona lineal <strong>de</strong> un HEMT. La corriente <strong>de</strong> saturación <strong>de</strong><br />
drenador pue<strong>de</strong> calcu<strong>la</strong>rse teniendo en cuenta que se produce una vez que<br />
el campo eléctrico en L alcanza el valor Fc. En este caso <strong>la</strong> corriente en el<br />
canal como función <strong>de</strong> x viene dada por:<br />
IC (x) = qWn (x) vsat<br />
(1.10)<br />
La velocidad ahora tiene un valor constante vsat. En x = L se cumple<br />
que <strong>la</strong> corriente <strong>de</strong>l canal es igual a <strong>la</strong> corriente <strong>de</strong> drenador (en este caso<br />
ID,sat), así :<br />
<br />
IC(L) = ID,sat = qW nso − ǫ<br />
<br />
V (L) vsat = qW nso −<br />
qd ǫ<br />
qd VD,sat<br />
<br />
vsat<br />
(1.11)<br />
Para resolver esta ecuación sería necesario <strong>de</strong>terminar <strong>la</strong> tensión <strong>de</strong> drenador<br />
en saturación VD,sat , o alternativamente utilizar <strong>la</strong> expresión anterior<br />
para resolver <strong>la</strong> ecuación 1.9.<br />
Por último, para completar el mo<strong>de</strong>lo, se necesita especificar <strong>la</strong> corriente<br />
<strong>de</strong> fuga a través <strong>de</strong> <strong>la</strong> puerta IG. Esta corriente es función <strong>de</strong> <strong>de</strong> <strong>la</strong> tensión<br />
aplicada en <strong>la</strong> puerta y generalmente es <strong>de</strong>pendiente <strong>de</strong>l dispositivo, encontrándose<br />
que tiene diferentes <strong>de</strong>pen<strong>de</strong>ncias según <strong>la</strong>s tensiones <strong>de</strong> puerta<br />
aplicadas (es <strong>de</strong>cir, se aplica una expresión u otra según nos encontremos en<br />
alto o bajo voltaje). Una aproximación semiempírica <strong>de</strong> IG pue<strong>de</strong> ser:<br />
IG = IS1(e qV G<br />
n 1 kT − 1) (1.12)<br />
don<strong>de</strong> n1, IS1 son parámetros <strong>de</strong>terminados experimentalmente.<br />
Con frecuencia es interesante utilizar un mo<strong>de</strong>lo simplificado para obtener<br />
<strong>la</strong> curva característica (I–V) <strong>de</strong> un HEMT. La ecuación 1.9 pue<strong>de</strong> simplificarse<br />
si consi<strong>de</strong>ramos IG = 0 (corriente <strong>de</strong> puerta nu<strong>la</strong>) y que VD ≪ 1. LF1<br />
Bajo estas condiciones <strong>la</strong> ecuación <strong>de</strong> <strong>la</strong> corriente <strong>de</strong> drenador en <strong>la</strong> zona<br />
lineal sería:<br />
ID = qWµ<br />
L (nsoVD − ǫ<br />
2qd V 2 D ) (1.13)<br />
En esta ecuación vemos que <strong>la</strong>s únicas características <strong>de</strong>l dispositivo que<br />
influyen en el rendimiento son <strong>la</strong> movilidad (µ) y <strong>la</strong> concentración nso. A partir<br />
<strong>de</strong> esta expresión también po<strong>de</strong>mos <strong>de</strong>terminar <strong>la</strong> corriente en saturación<br />
ID,sat:
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 17<br />
don<strong>de</strong> a está <strong>de</strong>finido como:<br />
ID,sat = qµWnsoFs<br />
(<br />
d<br />
<br />
1 + a2 − a) (1.14)<br />
a ≡ LFsǫ<br />
qdnso<br />
(1.15)<br />
y Fs, el campo eléctrico en saturación en <strong>la</strong> parte final <strong>de</strong> <strong>la</strong> zona <strong>de</strong><br />
drenador sería:<br />
Fs = 1<br />
<br />
nsoVD,sat −<br />
Lnd<br />
ǫ<br />
2qd V 2 <br />
D,sat<br />
(1.16)<br />
con nd <strong>la</strong> concentración <strong>de</strong> portadores en <strong>la</strong> zona <strong>de</strong>l drenador.<br />
Esta aproximación no se pue<strong>de</strong> aplicar al GaAs porque el valor <strong>de</strong> F1<br />
es <strong>de</strong>masiado pequeño para que se satisfaga <strong>la</strong> condición VD ≪ 1. El GaN<br />
LF1<br />
está próximo a alcanzar esta condición pero sólo para dispositivos <strong>de</strong> canal<br />
bastante <strong>la</strong>rgo. Por lo tanto <strong>la</strong> aproximación dada por <strong>la</strong> ecuación 1.13<br />
está <strong>de</strong>masiado alejada <strong>de</strong> <strong>la</strong> realidad bajo <strong>la</strong> mayor parte <strong>de</strong> los dispositivos<br />
reales.<br />
Es interesante comparar <strong>la</strong>s curvas características I–V <strong>de</strong> los dispositivos<br />
HEMT y MOSFET. Para ello partimos <strong>de</strong> <strong>la</strong> expresión <strong>de</strong> <strong>la</strong> corriente <strong>de</strong><br />
drenador para un MOSFET en estrangu<strong>la</strong>miento:<br />
ID = µnWCi<br />
L<br />
<br />
(VG − VT)VD − V 2 D<br />
2<br />
<br />
(1.17)<br />
Si comparamos <strong>la</strong>s ecuaciones 1.13 y 1.17 vemos que <strong>la</strong>s formas funcionales<br />
<strong>de</strong> ambas son aproximadamente <strong>la</strong>s mismas, <strong>de</strong> hecho <strong>la</strong>s dos ecuaciones<br />
son prácticamente idénticas. Esto se pue<strong>de</strong> ver c<strong>la</strong>ramente si hacemos una<br />
serie <strong>de</strong> transformaciones:<br />
Sabiendo que <strong>la</strong> capacidad <strong>de</strong> puerta por unidad <strong>de</strong> área Ci está dada por<br />
<strong>la</strong> expresión Ci = ǫ<br />
d<br />
, don<strong>de</strong> ǫ es <strong>la</strong> constante dieléctrica <strong>de</strong>l semiconductor<br />
y d el grosor <strong>de</strong> <strong>la</strong> capa <strong>de</strong> AlGaAs, y que <strong>la</strong> carga <strong>de</strong>l canal Qn es igual al<br />
producto:<br />
Qn = Ci(VG − VT) (1.18)<br />
Po<strong>de</strong>mos reescribir <strong>la</strong> corriente <strong>de</strong> drenador para un dispositivo MOS-<br />
FET como:<br />
ID = Wµn<br />
L<br />
<br />
QnVD − ǫ<br />
2d V 2 <br />
D<br />
= qWµn<br />
L<br />
<br />
nsoVD − ǫ<br />
2qd V 2 <br />
D<br />
(1.19)
18 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT<br />
Como po<strong>de</strong>mos ver, <strong>la</strong> ecuación que hemos obtenido es esencialmente<br />
igual a <strong>la</strong> obtenida para un HEMT. Este re<strong>su</strong>ltado es totalmente lógico<br />
puesto que ambos dispositivos se basan en el transporte <strong>de</strong> e − atrapados en<br />
una <strong>su</strong>perficie frontera (una heterointerfaz en el caso <strong>de</strong>l HEMT y una frontera<br />
ais<strong>la</strong>nte–semiconductor en el caso <strong>de</strong>l MOSFET). La movilidad <strong>de</strong> los<br />
portadores en el caso <strong>de</strong>l MOSFET es <strong>la</strong> obtenida en una capa <strong>de</strong> inversión<br />
<strong>de</strong> Si, que es <strong>su</strong>stancialmente inferior a <strong>la</strong> movilidad electrónica <strong>de</strong>ntro <strong>de</strong>l<br />
pozo cuántico en el GaAs. Esto da una explicación aproximada a <strong>la</strong> mayor<br />
velocidad <strong>de</strong> respuesta <strong>de</strong> los MOSFETs.<br />
Mo<strong>de</strong>lo <strong>de</strong> arrastre–difusión<br />
Los mo<strong>de</strong>los numéricos <strong>de</strong> transistores, <strong>de</strong>bido a <strong>la</strong>s características y al<br />
tipo <strong>de</strong> <strong>estudio</strong> que se pue<strong>de</strong> realizar con ellos, pue<strong>de</strong>n ayudar a compren<strong>de</strong>r<br />
el comportamiento físico <strong>de</strong> los dispositivos así como optimizar <strong>su</strong> diseño y<br />
disminuir el tiempo necesario para <strong>su</strong> <strong>de</strong>sarrollo [CRRM96].<br />
Uno <strong>de</strong> los principales problemas asociados con <strong>la</strong> simu<strong>la</strong>ción <strong>de</strong> dispositivos,<br />
sobre todo cuando se requiere elevada precisión y a<strong>de</strong>más es necesario<br />
hacer el <strong>estudio</strong> en 2 ó 3 dimensiones, es el enorme gasto computacional<br />
que implica, que viene <strong>de</strong>terminado por <strong>la</strong> gran cantidad <strong>de</strong> información y<br />
el elevado número <strong>de</strong> cálculos que <strong>de</strong>ben ser realizados. Esto hace que los<br />
computadores convencionales, e incluso los más potentes <strong>su</strong>percomputadores<br />
vectoriales, tengan problemas a <strong>la</strong> hora <strong>de</strong> realizar una simu<strong>la</strong>ción a<strong>de</strong>cuada.<br />
Para solventar este problema <strong>de</strong>bemos recurrir al uso <strong>de</strong> máquinas parale<strong>la</strong>s,<br />
diseñando algoritmos apropiados para obtener el máximo rendimiento y un<br />
tiempo <strong>de</strong> simu<strong>la</strong>ción aceptable con una a<strong>de</strong>cuada precisión [Pen94, Lou99].<br />
Las ecuaciones básicas en estado estacionario que <strong>de</strong>bemos resolver en<br />
este mo<strong>de</strong>lo son <strong>la</strong>s ecuaciones <strong>de</strong> Poisson y <strong>la</strong>s <strong>de</strong> continuidad <strong>de</strong> electrones<br />
y huecos [Sel84, LG94]:<br />
div(ǫ∇Ψ) = q(p − n + N + D − N − A ) (1.20)<br />
div(Jn) − q ∂n<br />
∂t<br />
div(Jp) + q ∂p<br />
∂t<br />
= qR (1.21)<br />
= −qR (1.22)<br />
don<strong>de</strong> Ψ es el potencial electrostático, q <strong>la</strong> carga eléctrica <strong>de</strong>l electrón, ǫ<br />
<strong>la</strong> constante dieléctrica, p y n <strong>la</strong>s <strong>de</strong>nsida<strong>de</strong>s <strong>de</strong> huecos y electrones respectivamente,<br />
N + D y N − A son <strong>la</strong>s concentracciones <strong>de</strong> impurezas donadoras<br />
y aceptoras ionizadas, y Jn y Jp <strong>la</strong>s <strong>de</strong>nsida<strong>de</strong>s <strong>de</strong> corriente <strong>de</strong> electrones<br />
y huecos respectivamente. El factor R representa <strong>la</strong> tasa <strong>de</strong> recombinación<br />
volúmica y <strong>su</strong>perficial.
1.2. Transistores <strong>de</strong> heteroestructura <strong>de</strong> efecto campo 19<br />
Las <strong>de</strong>nsida<strong>de</strong>s <strong>de</strong> corriente <strong>de</strong> huecos y <strong>de</strong> electrones se pue<strong>de</strong>n expresar<br />
como:<br />
Jn = −qµnn∇φn (1.23)<br />
Jp = −qµpp∇φp (1.24)<br />
don<strong>de</strong> µn y µp son <strong>la</strong>s movilida<strong>de</strong>s <strong>de</strong> electrones y huecos respectivamente y<br />
φn y φp los cuasipotenciales <strong>de</strong> Fermi.<br />
Las concentraciones <strong>de</strong> portadores n y p en función <strong>de</strong> los cuasipotenciales<br />
<strong>de</strong> Fermi y <strong>de</strong>l potencial electrostático vienen dados por:<br />
<br />
Ψ − φn<br />
n = nien exp<br />
(1.25)<br />
VT<br />
<br />
φp − Ψ<br />
p = niep exp<br />
(1.26)<br />
don<strong>de</strong> VT = KT<br />
q siendo K <strong>la</strong> constante <strong>de</strong> Boltzman y T <strong>la</strong> temperatura. Los<br />
valores <strong>de</strong> <strong>la</strong>s concentracciones intrínsecas efectivas <strong>de</strong> electrones y huecos<br />
nien y niep indican los efectos <strong>de</strong> <strong>de</strong>generación <strong>de</strong>l semiconductor, <strong>de</strong> <strong>la</strong><br />
variación <strong>de</strong> los parámetros con <strong>la</strong> composición, o <strong>de</strong> <strong>la</strong> existencia <strong>de</strong> varias<br />
bandas o valles, incluyendo efectos <strong>de</strong> parabolidad <strong>de</strong> esas bandas.<br />
Los valores <strong>de</strong> n y p, para un semiconductor con varias bandas que intervengan<br />
en el transporte, pue<strong>de</strong>n expresarse en función <strong>de</strong> <strong>la</strong> concentracción<br />
intrínseca <strong>de</strong>l material <strong>de</strong> referencia en <strong>la</strong>s bandas <strong>de</strong> condución y <strong>de</strong> valencia<br />
N (c,v)j, <strong>la</strong> <strong>de</strong>nsidad efectiva <strong>de</strong> estados, <strong>la</strong>s integrales <strong>de</strong> Fermi–Dirac, que<br />
operan sobre funciones que re<strong>la</strong>cionan <strong>la</strong> energía en <strong>la</strong>s distintas bandas, y<br />
<strong>la</strong> afinidad electrónica χ, por lo que re<strong>su</strong>ltará:<br />
<br />
n = nio<br />
exp<br />
j<br />
Ncj<br />
Nco<br />
χj − χo<br />
KT<br />
VT<br />
[F 1/2(ηcj) + 3<br />
2 KTBjF 3/2(ηcj)]<br />
<br />
exp<br />
exp(ηcj)<br />
<br />
qψ − qφn<br />
KT<br />
Nvl [F1/2(ηvl) +<br />
p = nio<br />
Nvo<br />
l<br />
3<br />
2KTBjF 3/2(ηvl)]<br />
exp(ηvl)<br />
<br />
χl − χo + Egl − Ego qφp − qψ<br />
exp<br />
exp<br />
KT<br />
KT<br />
(1.27)<br />
(1.28)<br />
El sistema que hemos obtenido está formado por 3 ecuaciones con 3<br />
incógnitas que no pue<strong>de</strong>n resolverse directamente, por lo cual es necesario<br />
recurrir a técnicas <strong>numéricas</strong> para <strong>su</strong> resolución.
20 Capítulo 1. Dispositivos <strong>de</strong> efecto campo con heteroestructuras: HEMT
Capítulo 2<br />
Introducción a los<br />
computadores paralelos<br />
El número <strong>de</strong> campos <strong>de</strong> investigación en los que se utilizan computadores<br />
<strong>de</strong> alto rendimiento continua aumentando actualmente. Por ello es<br />
importante mejorar <strong>la</strong> tecnología utilizada para <strong>la</strong> implementación <strong>de</strong> los<br />
componentes <strong>de</strong>l computador, refinar el diseño lógico <strong>de</strong> sistemas o los algoritmos<br />
para <strong>la</strong> resolución <strong>de</strong> problemas, buscando siempre conseguir velocida<strong>de</strong>s<br />
<strong>de</strong> operación <strong>su</strong>periores.<br />
Un método para obtener mayores velocida<strong>de</strong>s <strong>de</strong> operación es <strong>la</strong> utilización<br />
<strong>de</strong> arquitecturas multiprocesador. Estas arquitecturas están basadas en<br />
el procesamiento paralelo, cuya i<strong>de</strong>a básica es <strong>la</strong> <strong>su</strong>bdivisión <strong>de</strong>l problema<br />
en un conjunto <strong>de</strong> partes resolubles <strong>de</strong> forma concurrente, <strong>de</strong> manera que<br />
el tiempo total <strong>de</strong> resolución <strong>de</strong>l problema que<strong>de</strong> dividido por el número <strong>de</strong><br />
procesadores utilizados.<br />
La eficiencia <strong>de</strong>l procesamiento paralelo <strong>de</strong>pen<strong>de</strong>rá principalmente <strong>de</strong> dos<br />
factores:<br />
1. La sobrecarga computacional generada por <strong>la</strong> paralelización <strong>de</strong>l problema.<br />
2. El equilibrio <strong>de</strong> <strong>la</strong> carga conseguido entre el conjunto <strong>de</strong> procesadores.<br />
En <strong>la</strong> actualidad, <strong>la</strong> computación masivamente parale<strong>la</strong> se ve como <strong>la</strong> única<br />
alternativa fiable para <strong>su</strong>perar los retos pendientes <strong>de</strong> <strong>la</strong> <strong>su</strong>percomputación.<br />
Estas máquinas presentan ventajas evi<strong>de</strong>ntes sobre <strong>su</strong>s antecesoras <strong>su</strong>peresca<strong>la</strong>res<br />
y vectoriales, puesto que pue<strong>de</strong>n ofrecer un rendimiento mayor a un<br />
coste inferior.<br />
El obstáculo fundamental para el avance <strong>de</strong> <strong>la</strong> computación parale<strong>la</strong> es<br />
el problema que se presenta con <strong>la</strong> programación, ya que los compi<strong>la</strong>dores<br />
21
22 Capítulo 2. Introducción a los computadores paralelos<br />
que <strong>de</strong>tectan paralelismo automáticamente presentan todavía límites a <strong>su</strong><br />
aplicabilidad. La programación parale<strong>la</strong> <strong>de</strong> una arquitectura multiprocesador<br />
se realiza por medio <strong>de</strong> lenguajes que permiten expresar el paralelismo<br />
e intercambiar información entre procesadores. El objetivo principal en este<br />
sentido es encontrar mecanismos <strong>de</strong> programación parale<strong>la</strong> in<strong>de</strong>pendientemente<br />
<strong>de</strong> <strong>la</strong> máquina.<br />
En este capítulo se <strong>de</strong>scribirán brevemente <strong>la</strong>s características <strong>de</strong> <strong>la</strong> programación<br />
parale<strong>la</strong> así como <strong>la</strong>s arquitecturas <strong>de</strong> <strong>la</strong>s máquinas utilizadas en<br />
<strong>la</strong> evaluación <strong>de</strong> los códigos paralelos.<br />
2.1. Características <strong>de</strong> los computadores paralelos<br />
El nombre <strong>de</strong> computador paralelo engloba a un amplio rango <strong>de</strong> sistemas<br />
<strong>de</strong> distintos tipos. Existen ciertas características básicas que permiten c<strong>la</strong>sificar<br />
estos sistemas en varios mo<strong>de</strong>los. Entre <strong>la</strong>s más interesantes po<strong>de</strong>mos<br />
consi<strong>de</strong>rar el flujo <strong>de</strong> instrucciones y datos, <strong>la</strong> organización <strong>de</strong> <strong>la</strong> memoria,<br />
<strong>la</strong> topología <strong>de</strong> interconexión, el mo<strong>de</strong>lo <strong>de</strong> programación y <strong>la</strong> granu<strong>la</strong>ridad.<br />
2.1.1. Organización <strong>de</strong> <strong>la</strong> memoria<br />
Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l flujo <strong>de</strong> instrucciones y datos visto por el procesador<br />
durante <strong>la</strong> ejecución <strong>de</strong> un programa, <strong>la</strong> c<strong>la</strong>sificación tradicional <strong>de</strong><br />
Flynn [Fly72] divi<strong>de</strong> los sistemas <strong>de</strong> computación en cuatro grupos: sistemas<br />
SISD (Simple flujo <strong>de</strong> instrucciones, simple flujo <strong>de</strong> datos), SIMD (Simple<br />
flujo <strong>de</strong> instrucciones, múltiple flujo <strong>de</strong> datos), MISD (Múltiple flujo <strong>de</strong> instrucciones,<br />
simple flujo <strong>de</strong> datos), y MIMD (Múltiple flujo <strong>de</strong> instrucciones,<br />
múltiple flujo <strong>de</strong> datos).<br />
El primer grupo engloba a todos los computadores secuenciales mientras<br />
que los MISD no correspon<strong>de</strong>n a ningún sistema real.<br />
En una máquina SIMD cada instrucción se envía a todos los elementos<br />
<strong>de</strong> procesamiento mediante una operación <strong>de</strong> difusión (broadcast), los cuales<br />
se encargan <strong>de</strong> ejecutar <strong>la</strong> misma operación sobre diferentes conjuntos <strong>de</strong><br />
datos. Todos los elementos <strong>de</strong> procesamiento funcionan bajo <strong>la</strong> <strong>su</strong>pervisión<br />
<strong>de</strong> una única unidad <strong>de</strong> control, que se encarga también <strong>de</strong> <strong>la</strong>s funciones <strong>de</strong><br />
interacción con el u<strong>su</strong>ario. Los procesadores vectoriales podrían enmarcarse<br />
en este mo<strong>de</strong>lo.<br />
El mo<strong>de</strong>lo <strong>de</strong> computación parale<strong>la</strong> MIMD permite a un sistema multiprocesador<br />
ejecutar un conjunto diferente <strong>de</strong> instrucciones sobre distintos<br />
conjuntos <strong>de</strong> datos en diferentes procesadores.
2.1. Características <strong>de</strong> los computadores paralelos 23<br />
La principal ventaja <strong>de</strong> los sistemas SIMD frente a los MIMD es <strong>su</strong> bajo<br />
coste re<strong>la</strong>tivo y <strong>la</strong> facilidad <strong>de</strong> construcción, esto llevó a que los primeros<br />
diseños <strong>de</strong> máquinas parale<strong>la</strong>s se orientasen en este sentido, pero por otro<br />
<strong>la</strong>do sólo se adaptan bien a un tipo <strong>de</strong>terminado <strong>de</strong> problemas, como pue<strong>de</strong>n<br />
ser los <strong>de</strong> procesamiento <strong>de</strong> imágenes, pero no son muy eficientes con problemas<br />
más generales. Así <strong>la</strong> mayoría <strong>de</strong> los sistemas paralelos comerciales<br />
<strong>de</strong> propósito general que po<strong>de</strong>mos encontrar en <strong>la</strong> actualidad se enmarcan<br />
en el mo<strong>de</strong>lo MIMD.<br />
Dentro <strong>de</strong> <strong>la</strong>s arquitecturas MIMD se pue<strong>de</strong> hacer una división en dos<br />
<strong>su</strong>bgrupos atendiendo al modo <strong>de</strong> gestión <strong>de</strong> memoria <strong>de</strong>l sistema.<br />
Memoria compartida: Este tipo <strong>de</strong> sistemas conocidos también como<br />
multiprocesadores utilizan una memoria común a <strong>la</strong> que acce<strong>de</strong>n<br />
todos los procesadores para operaciones <strong>de</strong> lectura y escritura. Los procesadores<br />
se comunican mediante variables compartidas <strong>de</strong> memoria,<br />
con cargas y almacenamientos capaces <strong>de</strong> acce<strong>de</strong>r a cualquier posición<br />
<strong>de</strong> <strong>la</strong> memoria común. La memoria <strong>su</strong>ele estructurarse en módulos,<br />
permitiéndose así el acceso simultáneo <strong>de</strong> varios procesadores. El principal<br />
problema <strong>de</strong> estos sistemas está asociado a conflictos <strong>de</strong> acceso a<br />
los módulos, lo que pue<strong>de</strong> provocar una pérdida consi<strong>de</strong>rable <strong>de</strong> rendimiento.<br />
Memoria distribuida: Denominados también multicomputadores, en<br />
este tipo <strong>de</strong> sistemas cada procesador tiene una memoria local privada<br />
a <strong>la</strong> que los <strong>de</strong>más nodos no tienen acceso, llevándose a cabo todo<br />
intercambio <strong>de</strong> información entre procesadores a través <strong>de</strong> <strong>la</strong> red <strong>de</strong><br />
interconexión. El mo<strong>de</strong>lo <strong>de</strong> comunicación entre procesadores es por<br />
paso <strong>de</strong> mensajes, el cual se ha <strong>de</strong> establecer <strong>de</strong> forma explícita, así los<br />
mensajes se pasan <strong>de</strong> un procesador a otro a través <strong>de</strong> dicha red, utilizando<br />
si es necesario procesadores intermedios. El coste <strong>de</strong> <strong>la</strong> comunicación<br />
<strong>de</strong>pen<strong>de</strong>rá <strong>de</strong>l número <strong>de</strong> etapas interprocesador que tenga que<br />
atravesar el mensaje, <strong>de</strong> ahí <strong>la</strong> importancia <strong>de</strong> que <strong>la</strong> topología <strong>de</strong> <strong>la</strong><br />
red sea regu<strong>la</strong>r y <strong>de</strong> bajo diámetro (número mínimo <strong>de</strong> nodos por los<br />
que <strong>de</strong>be pasar el mensaje entre dos procesadores cualesquiera), para<br />
minimizar el retardo <strong>de</strong>l mensaje.<br />
La mayoría <strong>de</strong> los sistemas masivamente paralelos actuales son <strong>de</strong> memoria<br />
distribuida, para evitar los problemas <strong>de</strong> conflicto <strong>de</strong> memoria asociados<br />
con cientos o miles <strong>de</strong> procesadores compartiendo una gran memoria global.<br />
Los sistemas <strong>de</strong> memoria compartida tienen un atractivo especial <strong>de</strong>bido a<br />
<strong>su</strong> facilidad <strong>de</strong> programación.
24 Capítulo 2. Introducción a los computadores paralelos<br />
Por ello ha <strong>su</strong>rgido una arquitectura que intenta combinar <strong>la</strong>s ventajas<br />
<strong>de</strong> los dos mo<strong>de</strong>los <strong>de</strong>scritos anteriormente en cuanto a esca<strong>la</strong>bilidad y facilidad<br />
<strong>de</strong> programación dando lugar a arquitecturas <strong>de</strong> memoria compartida–<br />
distribuida. Éstos son sistemas en los que <strong>la</strong> memoria está físicamente distribuida<br />
pero pudiéndose acce<strong>de</strong>r a el<strong>la</strong> por medio <strong>de</strong> técnicas software o <strong>de</strong><br />
hardware/software como si fuera un mo<strong>de</strong>lo <strong>de</strong> memoria compartida, usando<br />
un único espacio <strong>de</strong> direccionamiento global, e incluso gestión <strong>de</strong> coherencia<br />
entre cachés locales a cada nodo. Combinan por lo tanto <strong>la</strong>s ventajas <strong>de</strong> ambas<br />
aproximaciones porque siendo máquinas <strong>de</strong> memoria distribuida pue<strong>de</strong>n<br />
ser programadas virtualmente como máquinas <strong>de</strong> memoria compartida <strong>de</strong><br />
forma transparente al u<strong>su</strong>ario.<br />
Las diferentes formas a través <strong>de</strong> <strong>la</strong>s que se comparte <strong>la</strong> memoria nos<br />
permiten establecer <strong>la</strong> siguiente c<strong>la</strong>sificación:<br />
El mo<strong>de</strong>lo UMA (Uniform–Memory Access) se caracteriza porque <strong>la</strong><br />
memoria física es compartida uniformemente, siendo el tiempo <strong>de</strong> acceso<br />
a cualquier pa<strong>la</strong>bra <strong>de</strong> memoria el mismo para todos los procesadores.<br />
Cada procesador pue<strong>de</strong> tener también una caché propia para los<br />
datos más usados y los periféricos <strong>de</strong>l sistema son también compartidos<br />
<strong>de</strong> alguna manera por todos los procesadores. Los sistemas UMA<br />
son sistemas fuertemente acop<strong>la</strong>dos <strong>de</strong>bido al alto grado <strong>de</strong> recursos<br />
compartidos que presentan.<br />
En el mo<strong>de</strong>lo NUMA (Non–Uniform–Memory Access) <strong>la</strong> memoria se<br />
encuentra distribuida físicamente entre los procesadores, conformando<br />
memorias locales, aunque todas el<strong>la</strong>s constituyen un único espacio <strong>de</strong><br />
direcciones global. De este modo cada procesador acce<strong>de</strong> más rápido<br />
que los <strong>de</strong>más a <strong>su</strong> memoria local, siendo el acceso a memorias asociadas<br />
a otros procesadores más lento <strong>de</strong>bido al retraso originado por <strong>la</strong><br />
red <strong>de</strong> interconexión. Algunos <strong>de</strong> estos sistemas poseen a<strong>de</strong>más otra<br />
memoria compartida globalmente.<br />
El mo<strong>de</strong>lo COMA (Cache Only Memory Access) implementa <strong>la</strong> memoria<br />
lógica compartida en un solo nivel <strong>de</strong> jerarquía <strong>de</strong> memoria,<br />
estando formada por <strong>la</strong>s memorias caché distribuidas en los nodos <strong>de</strong>l<br />
sistema. Los accesos <strong>de</strong> memoria a <strong>la</strong>s cachés remotas se gestionan<br />
mediante directorios <strong>de</strong> caché distribuidos y se redirigen a base <strong>de</strong><br />
mensajes a través <strong>de</strong> <strong>la</strong> red <strong>de</strong> interconexión como en el caso <strong>de</strong> <strong>la</strong>s<br />
arquitecturas NUMA. Sin embargo, <strong>la</strong> arquitectura COMA permite <strong>la</strong><br />
movilidad <strong>de</strong> datos entre <strong>la</strong>s diferentes cachés <strong>de</strong>l sistema en función<br />
<strong>de</strong>l patrón <strong>de</strong> acceso a los mismos, usando los directorios caché (que
2.1. Características <strong>de</strong> los computadores paralelos 25<br />
son jerárquicos y están distribuidos) para localizar <strong>la</strong> caché remota<br />
don<strong>de</strong> está almacenado el dato requerido. Una vez que el dato se ubica<br />
en <strong>la</strong> caché local, <strong>la</strong> <strong>la</strong>tencia <strong>de</strong> acceso es menor, produciéndose una<br />
mejora en el rendimiento <strong>de</strong> acceso a los datos.<br />
Existen dos estrategias [PH96] para mantener <strong>la</strong> coherencia <strong>de</strong> <strong>la</strong> información,<br />
estableciéndose en ambos casos un control sobre los datos compartidos.<br />
Dichas estrategias se exponen brevemente a continuación:<br />
Protocolo <strong>de</strong> coherencia basado en snooping: En este protocolo cada<br />
caché lleva el control <strong>de</strong>l estado a nivel <strong>de</strong> líneas <strong>de</strong> todos los datos<br />
<strong>de</strong> los que dispone. Por otro <strong>la</strong>do también tiene un contro<strong>la</strong>dor que<br />
está permanentemente ”escuchando”en <strong>la</strong> red <strong>de</strong> interconexión a <strong>la</strong><br />
espera <strong>de</strong> que alguna <strong>de</strong> <strong>la</strong>s otras cachés necesite un dato contenido en<br />
el<strong>la</strong>, realizándose en este caso <strong>la</strong> transmisión. De este modo el control<br />
<strong>de</strong> <strong>la</strong> coherencia <strong>de</strong> los datos está distribuido. Este protocolo se utiliza<br />
en arquitecturas tipo bus, sobre todo en aquel<strong>la</strong>s que usan una so<strong>la</strong><br />
memoria compartida.<br />
Protocolo <strong>de</strong> coherencia basado en el directorio: Para este protocolo <strong>la</strong><br />
información sobre <strong>la</strong> distribución <strong>de</strong> cada bloque <strong>de</strong> <strong>la</strong> memoria física<br />
es mantenido en una única localización <strong>de</strong> memoria l<strong>la</strong>mada directorio<br />
y toda operación que modifique dicho estado tiene que realizar un<br />
acceso al mismo. Estamos ante un control <strong>de</strong> coherencia centralizado.<br />
2.1.2. Re<strong>de</strong>s <strong>de</strong> interconexión<br />
Como se ha visto anteriormente en <strong>la</strong>s máquinas <strong>de</strong> memoria distribuida<br />
<strong>la</strong> estructura <strong>de</strong> <strong>la</strong> red <strong>de</strong> interconexión va a <strong>de</strong>terminar en gran medida<br />
el rendimiento <strong>de</strong>l sistema. El interconexionado <strong>de</strong>be ten<strong>de</strong>r a reducir el<br />
coste <strong>de</strong> <strong>la</strong>s comunicaciones, sin incrementar excesivamente el hardware <strong>de</strong>l<br />
sistema. Son muchas <strong>la</strong>s formas mediante <strong>la</strong>s que po<strong>de</strong>mos establecer <strong>la</strong> interconexión<br />
entre un conjunto <strong>de</strong> procesadores. Entre <strong>la</strong>s topologías más<br />
habituales <strong>de</strong>stacan el hipercubo (figura 2.1(a)), <strong>la</strong> mal<strong>la</strong> 2D y 3D (los procesadores<br />
están dispuestos según una rejil<strong>la</strong> bi o tridimensional), el toroi<strong>de</strong>,<br />
el anillo (figura 2.1(b)), el árbol, etc. De entre todas estas <strong>la</strong> topología <strong>de</strong>l<br />
hipercubo es una <strong>de</strong> <strong>la</strong>s más interesantes, pues posee un número <strong>de</strong> conexiones<br />
directas mayor que <strong>la</strong> mayoría <strong>de</strong> <strong>la</strong>s topologías restantes. Sin embargo<br />
es una topología bastante cara <strong>de</strong>s<strong>de</strong> el punto <strong>de</strong> vista hardware.<br />
Tradicionalmente <strong>la</strong> mayor parte <strong>de</strong> <strong>la</strong> literatura se centraba en <strong>la</strong>s propieda<strong>de</strong>s<br />
topológicas y funcionales <strong>de</strong> estas re<strong>de</strong>s. Pero a medida que los
26 Capítulo 2. Introducción a los computadores paralelos<br />
(a) (b)<br />
Figura 2.1: Ejemplos <strong>de</strong> topologías <strong>de</strong> re<strong>de</strong>s <strong>de</strong> interconexión.<br />
sistemas multiprocesador comenzaron a crecer en número <strong>de</strong> nodos otros<br />
aspectos <strong>de</strong> <strong>la</strong>s re<strong>de</strong>s <strong>de</strong> interconexión comenzaron a ser tenidos en cuenta,<br />
como pue<strong>de</strong>n ser <strong>la</strong> implementación, <strong>la</strong> complejidad <strong>de</strong>l cableado, el control<br />
<strong>de</strong>l flujo <strong>de</strong> datos, los algoritmos <strong>de</strong> encaminamiento, <strong>la</strong> evaluación <strong>de</strong>l<br />
rendimiento o <strong>la</strong> tolerancia a fallos.<br />
2.1.3. Nivel <strong>de</strong> paralelismo<br />
Otra característica <strong>de</strong> los sistemas paralelos es lo que se conoce como<br />
granu<strong>la</strong>ridad, que nos da una medida <strong>de</strong>l grado <strong>de</strong> paralelismo que explota<br />
el sistema [FJL + 88], proporcionando un indicador <strong>de</strong> <strong>la</strong> cantidad <strong>de</strong> computaciones<br />
que pue<strong>de</strong>n llevar a cabo los procesadores sin interaccionar entre<br />
sí. En un mo<strong>de</strong>lo <strong>de</strong> granu<strong>la</strong>ridad gruesa el programa se divi<strong>de</strong> en varias<br />
partes con escasa comunicación entre sí. Los computadores MIMD, potentes<br />
y débilmente interconectados, son apropiados para este tipo <strong>de</strong> aplicaciones.<br />
En cambio en un mo<strong>de</strong>lo <strong>de</strong> granu<strong>la</strong>ridad fina, <strong>la</strong> comunicación entre<br />
procesadores es más intensa, ejecutándose pocas instrucciones sin necesidad<br />
<strong>de</strong> comunicación. Por ello los computadores SIMD son apropiados para este<br />
mo<strong>de</strong>lo, puesto que son más sencillos y están fuertemente interconexionados<br />
entre ellos.<br />
Dadas <strong>la</strong>s diferentes características <strong>de</strong> los sistemas paralelos expuestos<br />
con anterioridad, <strong>la</strong> elección <strong>de</strong>l mejor sistema <strong>de</strong>pen<strong>de</strong>rá <strong>de</strong>l tipo <strong>de</strong> problemas<br />
que tengamos que resolver y <strong>de</strong> <strong>la</strong> disponibilidad <strong>de</strong> <strong>la</strong>s distintas<br />
máquinas.
2.2. Tipos <strong>de</strong> programación parale<strong>la</strong> 27<br />
2.2. Tipos <strong>de</strong> programación parale<strong>la</strong><br />
Las aplicaciones parale<strong>la</strong>s <strong>de</strong>ben escribirse siguiendo un mo<strong>de</strong>lo <strong>de</strong> programación.<br />
El caso más simple <strong>de</strong> ejecución parale<strong>la</strong> consiste en un mo<strong>de</strong>lo<br />
<strong>de</strong> multiprogramación, en el cual varios programas secuenciales son ejecutados<br />
simultáneamente sobre diferentes procesadores sin ninguna interacción<br />
entre ellos. Pero el caso más interesante lo constituyen los programas paralelos<br />
propiamente dichos. Básicamente se pue<strong>de</strong> <strong>de</strong>cir que existen cuatro<br />
alternativas para <strong>la</strong> construcción <strong>de</strong> un programa paralelo, realizando a continuación<br />
una breve introducción <strong>de</strong> cada una <strong>de</strong> el<strong>la</strong>s.<br />
1. Programación por paso <strong>de</strong> mensajes: En este mo<strong>de</strong>lo se <strong>de</strong>fine un<br />
conjunto <strong>de</strong> procesos con <strong>su</strong> propio espacio <strong>de</strong> memoria, pero que pue<strong>de</strong>n<br />
comunicarse con otros procesos mediante el envío y <strong>la</strong> recepción<br />
<strong>de</strong> mensajes a través <strong>de</strong> <strong>la</strong> red <strong>de</strong> interconexión, teniendo en cuenta<br />
que cualquier procesador pue<strong>de</strong> enviar un mensaje a cualquier otro.<br />
Los mo<strong>de</strong>los <strong>de</strong> comunicación <strong>su</strong>elen proporcionar <strong>la</strong>s siguientes posibilida<strong>de</strong>s:<br />
Envío asíncrono sin bloqueo: en el que el control regresa a <strong>la</strong> tarea<br />
cuando se vacía el buffer <strong>de</strong> envío, in<strong>de</strong>pendientemente <strong>de</strong>l estado<br />
<strong>de</strong>l <strong>de</strong>stinatario.<br />
Recepción asíncrona con bloqueo: en <strong>la</strong> que no se <strong>de</strong>vuelve el control<br />
hasta que se recibe un mensaje.<br />
Recepción asíncrona sin bloqueo: se <strong>de</strong>vuelve el control inmediatamente,<br />
bien con los datos esperados o con un indicador <strong>de</strong> que<br />
no llegaron.<br />
Difusión <strong>de</strong> un mensaje a un conjunto <strong>de</strong> tareas.<br />
La implementación <strong>de</strong> esta metodología se <strong>su</strong>ele realizar utilizando<br />
<strong>librerías</strong> añadidas a los lenguajes <strong>de</strong> programación secuenciales típicos,<br />
principalmente C y FORTRAN. Existen <strong>librerías</strong> estándar como<br />
PVM (Parallel Virtual Machine)[GBD + 94, GBD + 96] y MPI (Message<br />
Passing Interface)[GLS96].<br />
Se utiliza principalmente en multiprocesadores <strong>de</strong> memoria distribuida<br />
MIMD y en re<strong>de</strong>s <strong>de</strong> estaciones <strong>de</strong> trabajo, lo que permite el uso<br />
<strong>de</strong> este mo<strong>de</strong>lo en re<strong>de</strong>s heterogéneas compuestas por diferentes sistemas<br />
<strong>de</strong> arquitecturas distintas. En <strong>la</strong> estimación <strong>de</strong> <strong>la</strong> eficiencia <strong>de</strong><br />
un programa paralelo es muy importante tener en cuenta <strong>la</strong> re<strong>la</strong>ción<br />
entre el tiempo que con<strong>su</strong>men los nodos procesando datos y el tiempo
28 Capítulo 2. Introducción a los computadores paralelos<br />
empleado en <strong>la</strong>s comunicaciones. Evi<strong>de</strong>ntemente nos interesa que el<br />
tiempo <strong>de</strong> comunicación sea el mínimo posible. En general este tiempo<br />
no <strong>de</strong>bería <strong>su</strong>perar el 10 ó 20 por ciento <strong>de</strong>l tiempo <strong>de</strong> computación.<br />
2. Programación en sistemas <strong>de</strong> memoria compartida: En este<br />
método los programas paralelos ejecutados en sistemas <strong>de</strong> memoria<br />
compartida están compuestos por varios procesos (threads) que comparten<br />
un espacio <strong>de</strong> trabajo común <strong>de</strong>nominado task. En dicho espacio<br />
se encuentran todos los datos asociados al programa mientras que los<br />
threads se limitan a contener todas <strong>la</strong>s tareas asociadas únicamente a<br />
<strong>la</strong> parte ejecutable <strong>de</strong>l mismo. Concretamente un thread está formado<br />
esencialmente por un contador <strong>de</strong> programa, una co<strong>la</strong> y un conjunto<br />
<strong>de</strong> registros. Los threads asociados a un espacio <strong>de</strong> trabajo comparten<br />
todos los elementos que allí se encuentran, aunque por otro <strong>la</strong>do<br />
puedan trabajar con variables locales o privadas.<br />
La coordinación y cooperación entre procesos se realiza a través <strong>de</strong> <strong>la</strong><br />
lectura y escritura <strong>de</strong> variables compartidas y variables <strong>de</strong> sincronización.<br />
Cada proceso pue<strong>de</strong> llevar a cabo <strong>la</strong> ejecución <strong>de</strong> un <strong>su</strong>bconjunto<br />
<strong>de</strong> iteraciones <strong>de</strong> un <strong>la</strong>zo común, o más generalmente obtener <strong>su</strong>s tareas<br />
<strong>de</strong> una co<strong>la</strong> compartida.<br />
La programación se establece tanto a través <strong>de</strong> directivas <strong>de</strong> alto nivel<br />
que dirigen al compi<strong>la</strong>dor en <strong>la</strong> paralelización <strong>de</strong> los programas como,<br />
<strong>de</strong> un modo más eficiente, a través <strong>de</strong> construcciones <strong>de</strong> bajo nivel<br />
como pue<strong>de</strong>n ser barreras <strong>de</strong> sincronización, regiones críticas, locks,<br />
semáforos, etc.<br />
3. Mo<strong>de</strong>lo <strong>de</strong> programación <strong>de</strong> paralelismo <strong>de</strong> datos: Es un mo<strong>de</strong>lo<br />
que se utiliza principalmente para simplificar <strong>la</strong> programación <strong>de</strong><br />
sistemas <strong>de</strong> memoria distribuida. El proceso consiste en complementar<br />
un programa secuencial, escrito en un lenguaje estándar, con directivas<br />
o anotaciones insertadas en el programa para guiar al compi<strong>la</strong>dor<br />
en <strong>su</strong> tarea <strong>de</strong> distribuir los datos y <strong>la</strong>s computaciones.<br />
4. Paralelización automática: En este caso el compi<strong>la</strong>dor a<strong>su</strong>me todas<br />
<strong>la</strong>s <strong>de</strong>cisiones, generando automáticamente <strong>la</strong> versión parale<strong>la</strong> equivalente<br />
al código secuencial escrito en un lenguaje <strong>de</strong> programación tradicional.<br />
Si los códigos a paralelizar tienen patrones <strong>de</strong> acceso regu<strong>la</strong>res<br />
a los datos estos paralelizadores automáticos ofrecen buenos re<strong>su</strong>ltados.<br />
Sin embargo en el caso <strong>de</strong> códigos irregu<strong>la</strong>res, como pue<strong>de</strong>n ser<br />
los códigos dispersos, es mucho más complicado obtener una solución<br />
eficiente.
2.3. Cluster Beowulf 29<br />
2.3. Cluster Beowulf<br />
Los sistemas Beowulf son clusters domésticos diseñados para ser una<br />
alternativa económicamente viable a los gran<strong>de</strong>s <strong>su</strong>percomputadores. La reducción<br />
<strong>de</strong>l coste es <strong>de</strong>bida al hecho <strong>de</strong> que un cluster Beowulf se construye<br />
conectando PCs estándar mediante re<strong>de</strong>s locales <strong>de</strong> alto rendimiento (baja<br />
<strong>la</strong>tencia y alto ancho <strong>de</strong> banda) en lugar <strong>de</strong> emplear el hardware que aparece<br />
en los <strong>su</strong>percomputadores tradicionales, estando específicamente diseñado y<br />
optimizado para <strong>su</strong> uso como multicomputador.<br />
Hoy en día los sistemas Beowulf son ampliamente utilizados en los entornos<br />
académicos y <strong>de</strong> investigación, por <strong>su</strong> adaptabilidad y capacidad para<br />
satisfacer requerimientos computacionales específicos. Por ello son reconocidos<br />
como un género propio <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> computación <strong>de</strong> alto rendimiento.<br />
En <strong>su</strong> c<strong>la</strong>sificación <strong>de</strong>ntro <strong>de</strong> los computadores paralelos, los clusters<br />
Beowulf caen entre los procesadores masivamente paralelos y <strong>la</strong>s re<strong>de</strong>s <strong>de</strong><br />
computadores. Los procesadores masivamente paralelos tienen una <strong>la</strong>tencia<br />
menor en <strong>la</strong> red <strong>de</strong> interconexión que un cluster Beowulf. Sin embargo los<br />
programadores todavía tienen que preocuparse por <strong>la</strong> localidad, el ba<strong>la</strong>nce<br />
<strong>de</strong> carga, <strong>la</strong> granu<strong>la</strong>ridad y <strong>la</strong>s sobrecargas <strong>de</strong> comunicación para obtener<br />
un mejor rendimiento ya que muchos programas se <strong>de</strong>sarrol<strong>la</strong>n en un estilo<br />
<strong>de</strong> paso <strong>de</strong> mensajes, incluso en máquinas <strong>de</strong> memoria compartida.<br />
La programación en re<strong>de</strong>s <strong>de</strong> computadores se ha convertido en una<br />
práctica habitual como un intento <strong>de</strong> aprovechar ciclos no usados <strong>de</strong> un<br />
conjunto <strong>de</strong> estaciones <strong>de</strong> trabajo existentes en un <strong>la</strong>boratorio. La programación<br />
en este entorno requiere algoritmos extremadamente tolerantes a los<br />
problemas <strong>de</strong> ba<strong>la</strong>nceo <strong>de</strong> carga y <strong>la</strong>rgas <strong>la</strong>tencias <strong>de</strong> comunicación. Las diferencias<br />
entre <strong>la</strong>s re<strong>de</strong>s <strong>de</strong> computadores y un cluster Beowulf son mínimas<br />
aunque significativas. Para empezar, los nodos <strong>de</strong>l cluster están <strong>de</strong>dicados<br />
en exclusividad al cluster. Esto ayuda a resolver los problemas <strong>de</strong> ba<strong>la</strong>nceo<br />
<strong>de</strong> carga, ya que el rendimiento individual <strong>de</strong> los nodos no está <strong>su</strong>jeto a factores<br />
externos. Por otro <strong>la</strong>do, como <strong>la</strong> red <strong>de</strong> interconexión está ais<strong>la</strong>da <strong>de</strong><br />
<strong>la</strong> red externa, <strong>la</strong> carga <strong>de</strong> red queda <strong>de</strong>terminada sólo por <strong>la</strong> aplicación que<br />
se está ejecutando en el cluster, lo que ayuda a resolver problemas asociados<br />
con <strong>la</strong> impredictibilidad <strong>de</strong> <strong>la</strong>s <strong>la</strong>tencias en <strong>la</strong>s re<strong>de</strong>s <strong>de</strong> computadores.<br />
Por reg<strong>la</strong> general, los programas que no requieren muchas computaciones<br />
y <strong>de</strong> granu<strong>la</strong>ridad fina pue<strong>de</strong>n ser portados <strong>de</strong>s<strong>de</strong> unos procesadores masivamente<br />
paralelos y ser ejecutados eficientemente sobre clusters Beowulf, y<br />
cualquier programa que funcione sobre una red <strong>de</strong> computadores lo hará al<br />
menos igual <strong>de</strong> bien sobre un cluster Beowulf.<br />
El cluster Beowulf <strong>de</strong>l CESGA (Centro <strong>de</strong> Supercomputación <strong>de</strong> Galicia)
30 Capítulo 2. Introducción a los computadores paralelos<br />
Figura 2.2: Cluster Beowulf<br />
está constituido por 16 servidores Compaq DL320 que forman un total <strong>de</strong><br />
16 CPUS Pentium III a 1 GHz (rendimiento pico <strong>de</strong> 16 GFlops). Cada uno<br />
<strong>de</strong> los nodos tiene 512 MB <strong>de</strong> memoria y un disco local IDE–ATA <strong>de</strong> 40 GB.<br />
Los nodos están interconectados mediante una red Myrinet 2000 [Myr01]<br />
<strong>de</strong> baja <strong>la</strong>tencia (inferior a 8 microsegundos para mensajes en MPI) y alto<br />
ancho <strong>de</strong> banda (200 Mbytes/s). La p<strong>la</strong>ca utilizada en cada nodo es una<br />
ServerWorks 3.0 LE. Esta p<strong>la</strong>ca se distribuye con sistemas monoprocesador,<br />
soporta un bus GTL a 133 MHz, arquitectura <strong>de</strong> doble bus parejo PCI<br />
y memoria registrada SDRAM ECC DIMM a 133 MHz. La arquitectura<br />
<strong>de</strong> doble bus parejo PCI posibilita el acceso concurrente a memoria y el<br />
procesador <strong>de</strong>s<strong>de</strong> ambos buses para una mejora adicional en el rendimiento<br />
<strong>de</strong>l sistema.<br />
Así mismo todos los nodos están conectados mediante un switch fast<br />
ethernet a un servidor Compaq Proliant DL380 que actúa como servidor<br />
<strong>de</strong> almacenamiento y como interfaz para <strong>la</strong> conexión con los u<strong>su</strong>arios y<br />
<strong>la</strong>s tareas interactivas (compi<strong>la</strong>ción, edición <strong>de</strong> archivos, etc). Este servidor<br />
cuenta con 4 discos Ultra3 SCSI <strong>de</strong> 36 GB en configuración RAID (144 GB<br />
en total). En <strong>la</strong> figura 2.2 po<strong>de</strong>mos observar un gráfico que nos muestra <strong>la</strong>s<br />
diferentes partes que componen el cluster Beowulf.<br />
Myrinet [Bod95] es una tecnología <strong>de</strong> conmutación y comunicación por
2.4. Origin 200 31<br />
paquetes <strong>de</strong> alto rendimiento ampliamente utilizada para interconectar clusters<br />
<strong>de</strong> estaciones <strong>de</strong> trabajo, PCs, servidores, etc. Los clusters proporcionan<br />
un método re<strong>la</strong>tivamente económico <strong>de</strong> obtener alto rendimiento, distribuyendo<br />
para ello <strong>la</strong>s computaciones solicitadas entre un grupo <strong>de</strong> máquinas <strong>de</strong><br />
bajo coste. En el caso <strong>de</strong> computaciones distribuidas fuertemente acop<strong>la</strong>das<br />
<strong>la</strong>s interconexiones <strong>de</strong>ben proporcionar un alto porcentaje <strong>de</strong> datos y una<br />
baja <strong>la</strong>tencia en <strong>la</strong> comunicación <strong>de</strong> procesos entre máquinas. A<strong>de</strong>más es<br />
importante que <strong>la</strong> disponibilidad <strong>de</strong>l cluster sea elevada, <strong>de</strong> tal forma que<br />
permita que <strong>la</strong> computación prosiga entre un grupo <strong>de</strong> máquinas ais<strong>la</strong>ndo<br />
fallos y utilizando caminos <strong>de</strong> comunicación alternativos.<br />
Las re<strong>de</strong>s convencionales como Ethernet pue<strong>de</strong>n utilizarse para fabricar<br />
clusters, pero no proporcionan el rendimiento o <strong>la</strong>s características necesarias<br />
para obtener un cluster con <strong>la</strong>s propieda<strong>de</strong>s <strong>de</strong> alto–rendimiento y<br />
alta–disponibilidad mencionadas anteriormente. Así, <strong>la</strong>s características que<br />
distinguen a una Myrinet <strong>de</strong> otro tipo <strong>de</strong> re<strong>de</strong>s incluyen:<br />
1. Conexiones Full–duplex con una tasa <strong>de</strong> transmisión <strong>de</strong> datos <strong>de</strong> 2+2<br />
Gigabit/seg, puertos conmutados y puertos <strong>de</strong> interfaz.<br />
2. Control <strong>de</strong> flujo, <strong>de</strong> errores y monitorización continua en cada conexión.<br />
3. Baja <strong>la</strong>tencia, switches directos, incluyendo monitorización en aplicaciones<br />
<strong>de</strong> alta disponibilidad.<br />
4. Re<strong>de</strong>s que se pue<strong>de</strong>n esca<strong>la</strong>r a <strong>de</strong>cenas <strong>de</strong> miles <strong>de</strong> máquinas. Interfaces<br />
<strong>de</strong> <strong>la</strong>s máquinas que ejecutan programas <strong>de</strong> control que interactuan<br />
directamente con los procesos <strong>de</strong> <strong>la</strong>s distintas máquinas para comunicaciones<br />
<strong>de</strong> baja <strong>la</strong>tencia, y <strong>de</strong> forma directa con <strong>la</strong> red para el envío,<br />
<strong>la</strong> recepción y el almacenamiento <strong>de</strong> paquetes.<br />
En este cluster Beowulf <strong>la</strong> forma <strong>de</strong> solicitar trabajos que necesitaban<br />
más recursos (en tiempo <strong>de</strong> CPU, memoria o espacio en disco) que los impuestos<br />
por <strong>la</strong> shell interactiva es a través <strong>de</strong>l sistema <strong>de</strong> co<strong>la</strong>s. Éste es el<br />
Portable Batch System (PBS) <strong>de</strong>sarrol<strong>la</strong>do por <strong>la</strong> NASA. La forma <strong>de</strong> enviar<br />
los trabajos a <strong>la</strong> co<strong>la</strong> es solicitando los recursos que se necesitan en términos<br />
<strong>de</strong> cantidad <strong>de</strong> memoria, espacio en disco, tiempo <strong>de</strong> CPU y número <strong>de</strong><br />
CPUs.<br />
2.4. Origin 200<br />
El SGI Origin 200 [Sil98b, Sil98a, LL96] está construido con una arquitectura<br />
ccNUMA (Cache Coherent NUMA), contiene 4 procesadores MIPS
32 Capítulo 2. Introducción a los computadores paralelos<br />
Figura 2.3: Configuración <strong>de</strong>l Origin 200 con 4 procesadores<br />
R10000 a 225 MHz y 1 GB <strong>de</strong> memoria DRAM <strong>de</strong> alta velocidad. El sistema<br />
completo está encap<strong>su</strong><strong>la</strong>do en dos módulos, cada uno <strong>de</strong> los cuales incorpora<br />
3 ranuras <strong>de</strong> expansión PCI proporcionando un ancho <strong>de</strong> banda <strong>de</strong> E/S<br />
sostenido <strong>de</strong> 200 MB/s y hasta 6 dispositivos ULTRA SCSI. Los buses <strong>de</strong><br />
interfaz <strong>de</strong>l sistema <strong>de</strong>l R10000 se conectan al chip <strong>de</strong>l HUB, que también<br />
tiene conexiones a <strong>la</strong> memoria y al directorio <strong>de</strong>l nodo, a<strong>de</strong>más <strong>de</strong> dos puertos<br />
que salen <strong>de</strong>l nodo por un conector CPOP (Compression pad–on–pad)<br />
<strong>de</strong> 300 pines. Estos dos puertos son <strong>la</strong> conexión <strong>de</strong>l CRAYLINK al router<br />
y <strong>de</strong> <strong>la</strong>s ranuras XIO al sistema <strong>de</strong> E/S. La interconexión CRAYLINK que<br />
utiliza conecta los dos módulos para formar un sistema combinado <strong>de</strong> memoria<br />
compartida y 4 CPUs que pue<strong>de</strong> operar como un único sistema. De<br />
este modo tanto <strong>la</strong>s CPUs como el rendimiento se duplican. Un diagrama<br />
<strong>de</strong> bloques típico <strong>de</strong>l Origin 200 se muestra en <strong>la</strong> figura 2.3.<br />
Para facilitar el esca<strong>la</strong>do, proporcionar un sistema con baja <strong>la</strong>tencia en<br />
memoria y eliminar los principales cuellos <strong>de</strong> botel<strong>la</strong> <strong>la</strong> arquitectura <strong>de</strong>l Origin<br />
200 utiliza memoria compartida distribuida (DSM) con coherencia caché<br />
mantenida por un protocolo basado en directorio. Esto provoca que los<br />
tiempos <strong>de</strong> acceso a memoria no sean uniformes. Para manejar este inconveniente<br />
el Origin fue diseñado para minimizar <strong>la</strong> diferencia <strong>de</strong> <strong>la</strong>tencias entre<br />
<strong>la</strong> memoria local y remota e incluir soporte tanto hardware como software<br />
que asegure que <strong>la</strong> mayor parte <strong>de</strong> <strong>la</strong>s referencias a memoria sean locales,<br />
es <strong>de</strong>cir, soporte para migración <strong>de</strong> páginas. La migración <strong>de</strong> páginas es importante<br />
en los sistemas NUMA puesto que cambia a fallos locales muchos<br />
<strong>de</strong> los fallos caché que se <strong>de</strong>berían producir en memoria remota.<br />
Por último, los sistemas Origin incorpora otra característica muy impor-
2.4. Origin 200 33<br />
tante para alcanzar un buen rendimiento en sistemas altamente esca<strong>la</strong>bles.<br />
Se proporcionan primitivas fetch–and–op como operaciones no cacheadas<br />
que se ejecutan en memoria. Las variables fetch–and–op se utilizan para<br />
locks, barreras y otros mecanismos <strong>de</strong> sincronización.
34 Capítulo 2. Introducción a los computadores paralelos
Capítulo 3<br />
Sistemas <strong>de</strong> ecuaciones<br />
lineales<br />
La resolución <strong>de</strong> sistemas lineales es, posiblemente, el núcleo computacional<br />
más importante <strong>de</strong> <strong>la</strong> mayoría <strong>de</strong> <strong>la</strong>s aplicaciones <strong>de</strong> ingeniería.<br />
En <strong>la</strong> primera parte <strong>de</strong> este capítulo se van a <strong>de</strong>scribir los principales<br />
métodos <strong>de</strong> resolución para sistemas <strong>de</strong> ecuaciones lineales, distinguiendo<br />
entre métodos directos e iterativos, así como los precondicionadores utilizados<br />
para mejorar <strong>la</strong> convergencia. A continuación se citan <strong>la</strong>s distintas<br />
técnicas utilizadas para el almacenamiento <strong>de</strong> <strong>la</strong>s matrices dispersas, estudiando<br />
los formatos CRS, CCS, MSR y HB. Por último se <strong>de</strong>scriben<br />
<strong>la</strong>s <strong>librerías</strong> <strong>numéricas</strong> en <strong>la</strong>s que centramos nuestro <strong>estudio</strong>: SPARSKIT<br />
[Saa94b], PSPARSLIB [LS96, SLK97, SM95], SuperLU [DGL99], PETSc<br />
[BGMS99a, BGMS99b] y Aztec [HST95] tratando <strong>la</strong>s características principales<br />
<strong>de</strong> cada una.<br />
3.1. Métodos <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones<br />
Los sistemas <strong>de</strong> ecuaciones lineales se pue<strong>de</strong>n expresar como Ax = b,<br />
don<strong>de</strong> dada una matriz A <strong>de</strong> or<strong>de</strong>n n x n y un vector b n–dimensional, se<br />
trata <strong>de</strong> <strong>de</strong>terminar el vector solución x <strong>de</strong> dimensión n.<br />
A<strong>de</strong>más, en nuestro caso, <strong>la</strong> matriz A es dispersa, por lo que será ventajoso<br />
trabajar con métodos que aprovechen esta propiedad. Una matriz A<br />
<strong>de</strong> or<strong>de</strong>n n x n es dispersa si una gran cantidad <strong>de</strong> <strong>su</strong>s términos son nulos.<br />
Se <strong>de</strong>nomina índice <strong>de</strong> dispersión, β, a <strong>la</strong> re<strong>la</strong>ción entre el número <strong>de</strong> elementos<br />
no nulos <strong>de</strong> <strong>la</strong> matriz (α) y el número total <strong>de</strong> elementos (n × n); es<br />
<strong>de</strong>cir β = α<br />
n×n<br />
. El valor <strong>de</strong>l índice <strong>de</strong> dispersión necesario para que <strong>la</strong> matriz<br />
35
36 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
pueda ser consi<strong>de</strong>rada dispersa <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l problema a resolver, <strong>de</strong>l patrón<br />
<strong>de</strong> <strong>la</strong> matriz y <strong>de</strong> <strong>la</strong> arquitectura <strong>de</strong> <strong>la</strong> máquina en <strong>la</strong> cual se implementa el<br />
código.<br />
Los métodos <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones lineales se pue<strong>de</strong>n<br />
dividir en dos grupos:<br />
1. Métodos directos: están basados en <strong>la</strong> factorización <strong>de</strong> <strong>la</strong> matriz<br />
A para convertir el sistema lineal en otro con formato <strong>de</strong> resolución<br />
más simple. Durante <strong>la</strong> factorización, un elemento <strong>de</strong> <strong>la</strong> matriz con un<br />
valor inicial nulo, pue<strong>de</strong> pasar a tener un valor distinto <strong>de</strong> cero; <strong>su</strong>fre<br />
entonces un proceso <strong>de</strong> llenado (fill). Cuantos más elementos <strong>su</strong>fran<br />
llenado, más operaciones tendrá que realizar el algoritmo aumentando<br />
así <strong>la</strong> carga computacional. A causa <strong>de</strong> esto, los métodos directos<br />
necesitan más memoria (al producirse el llenado se han <strong>de</strong> almacenar<br />
en memoria, a<strong>de</strong>más <strong>de</strong>l sistema original, todas <strong>la</strong>s nuevas entradas no<br />
nu<strong>la</strong>s) y tienen una complejidad computacional mayor que los métodos<br />
iterativos. Esto <strong>su</strong>pone <strong>la</strong> imposibilidad <strong>de</strong> usar métodos directos al<br />
menos en gran parte <strong>de</strong> <strong>la</strong>s aplicaciones don<strong>de</strong> se va trabajar con matrices<br />
muy gran<strong>de</strong>s como ocurre en muchas ocasiones en simu<strong>la</strong>ciones<br />
en dos y tres dimensiones. Existen diferentes métodos <strong>de</strong> factorización<br />
<strong>de</strong> una matriz, siendo uno <strong>de</strong> los más habituales <strong>la</strong> factorización LU.<br />
2. Métodos iterativos: son técnicas que tratan <strong>de</strong> encontrar <strong>la</strong> solución<br />
<strong>de</strong> un sistema mediante <strong>su</strong>cesivas aproximaciones a partir <strong>de</strong> una solución<br />
inicial. Los métodos iterativos se pue<strong>de</strong>n c<strong>la</strong>sificar en dos tipos:<br />
a) Métodos estacionarios: son los más sencillos y fáciles <strong>de</strong> implementar,<br />
pero en general menos efectivos que los métodos no estacionarios<br />
[KC91]. Se basan en <strong>la</strong> re<strong>la</strong>jación <strong>de</strong> coor<strong>de</strong>nadas, empezando<br />
con una solución aproximada y modificando los componentes<br />
<strong>de</strong> <strong>la</strong> aproximación hasta que se alcanza <strong>la</strong> convergencia. Se trata<br />
<strong>de</strong> obtener:<br />
xk = Axk−1 + b (3.1)<br />
don<strong>de</strong> ni <strong>la</strong> matriz A ni el vector b <strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l contador <strong>de</strong> iteraciones.<br />
Ejemplos <strong>de</strong> estos métodos son:<br />
1) Jacobi: Basado en <strong>la</strong> computación <strong>de</strong> cada variable <strong>de</strong>l vector<br />
solución con respecto al resto <strong>de</strong> <strong>la</strong>s variables. Es un método<br />
sencillo <strong>de</strong> implementar pero <strong>la</strong> convergencia es lenta.
3.1. Métodos <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones 37<br />
2) Gauss–Sei<strong>de</strong>l: Método simi<strong>la</strong>r al anterior exceptuando que utiliza<br />
los valores actualizados <strong>de</strong> <strong>la</strong> solución tan pronto como<br />
estén disponibles. En general, converge más rápido que Jacobi.<br />
3) SOR(Sobrerre<strong>la</strong>jación <strong>su</strong>cesiva): Se <strong>de</strong>riva <strong>de</strong>l método Gauss–<br />
Sei<strong>de</strong>l introduciendo un parámetro <strong>de</strong> extrapo<strong>la</strong>ción w. Con<br />
una correcta elección <strong>de</strong> w el método converge más rápido que<br />
el Gauss–Sei<strong>de</strong>l en un or<strong>de</strong>n <strong>de</strong> magnitud.<br />
4) SSOR(Sobrerre<strong>la</strong>jación <strong>su</strong>cesiva simétrica): Aunque no presenta<br />
ventajas como método iterativo respecto al SOR, es muy útil<br />
como precondicionador para métodos no estacionarios.<br />
b) Métodos no estacionarios: Son más complejos que los anteriores<br />
pero altamente eficientes [Saa95, Saa96]. Se diferencian <strong>de</strong> los métodos<br />
estacionarios en que <strong>la</strong>s computaciones implican información<br />
que cambia en cada iteración. En <strong>la</strong> actualidad los más popu<strong>la</strong>res<br />
pertenecen al conjunto <strong>de</strong> los métodos <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov.<br />
El <strong>su</strong>bespacio <strong>de</strong> Krylov K i (A,ro) <strong>de</strong> dimensión i, asociado con un<br />
sistema lineal Ax = b, para un vector solución inicial x0 y un vector<br />
residuo r0 = b − Ax0 se <strong>de</strong>fine como el <strong>su</strong>bespacio cubierto por<br />
los vectores r0,Ar0,A 2 0 ,...,Ai−1 r0. Dependiendo <strong>de</strong> <strong>la</strong>s características<br />
<strong>de</strong> <strong>la</strong> matriz que <strong>de</strong>fine el problema, po<strong>de</strong>mos c<strong>la</strong>sificar estos<br />
métodos en varios grupos:<br />
1) Si <strong>la</strong> matriz es simétrica y <strong>de</strong>finida positiva el método <strong>de</strong> Gradiente<br />
Conjugado (CG) es el más apropiado. Utiliza una secuencia<br />
<strong>de</strong> vectores ortogonales xi para los que se minimiza<br />
(xi − x) T A(Xi − x) sobre todos los vectores en el espacio <strong>de</strong><br />
Krylov actual K i (A,r0).<br />
2) Si <strong>la</strong> matriz es simétrica pero no es <strong>de</strong>finida positiva, <strong>de</strong>bemos<br />
consi<strong>de</strong>rar el método <strong>de</strong> Lanczos o los métodos <strong>de</strong> MIN-<br />
RES. En los métodos MINRES, los elementos xi ∈ K i (A,r0) se<br />
<strong>de</strong>terminan minimizando <strong>la</strong> norma cuadrática <strong>de</strong> los residuos<br />
||b−Axi|| 2 , mientras que en el método <strong>de</strong> Lanczos los elementos<br />
xi son <strong>de</strong>terminados por los residuos b − Axi perpendicu<strong>la</strong>res<br />
al <strong>su</strong>bespacio <strong>de</strong> Krylov. En estos casos es necesario almacenar<br />
toda <strong>la</strong> secuencia, lo que conlleva un con<strong>su</strong>mo elevado <strong>de</strong><br />
memoria.<br />
3) Si <strong>la</strong> matriz no es simétrica, en general no se pue<strong>de</strong> <strong>de</strong>terminar<br />
un conjunto óptimo <strong>de</strong> soluciones xi ∈ K i (A,r0) con pocas<br />
secuencias <strong>de</strong> vectores. Sin embargo, po<strong>de</strong>mos computar el<br />
conjunto <strong>de</strong> vectores xi ∈ K i (A,r0) para los que se cumple <strong>la</strong>
38 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
condición b − Axi⊥K i (A T ,r0) (normalmente se elige s0 = r0).<br />
Así se generan dos secuencias <strong>de</strong> vectores, una con <strong>la</strong> matriz<br />
<strong>de</strong> coeficientes A y otra con A T , y en vez <strong>de</strong> ortogonalizar cada<br />
secuencia, lo hacen mutuamente: este es el método Gradiente<br />
Biconjugado (BiCG). Requiere un almacenamiento limitado<br />
aunque <strong>la</strong> convergencia pue<strong>de</strong> ser irregu<strong>la</strong>r. Una variante <strong>de</strong> este<br />
método es el Residuo Cuasi–Mínimo (QMR) que aplica un<br />
resolutor por mínimos cuadrados y una actualización <strong>de</strong> <strong>la</strong> solución<br />
a los residuos <strong>de</strong>l BiCG, <strong>su</strong>avizando el comportamiento<br />
<strong>de</strong> <strong>la</strong> convergencia y haciendo estos métodos más robustos.<br />
4) Si A no es simétrica, también po<strong>de</strong>mos computar <strong>la</strong> secuencia<br />
<strong>de</strong> vectores xi ∈ K i (A,r0) para los que los residuos sean minimizados<br />
usando una norma euclí<strong>de</strong>a (mínimos cuadrados).<br />
Ésto es lo que se implementa en el método Mínimo Residuo<br />
Generalizado (GMRES). Esta implementación requiere almacenar<br />
toda <strong>la</strong> secuencia, lo que conlleva un con<strong>su</strong>mo elevado<br />
<strong>de</strong> memoria. Una variante <strong>de</strong>l GMRES es el Mínimo Residuo<br />
Generalizado Flexible (FGMRES) que permite que el precondicionamiento<br />
varíe a cada paso.<br />
5) Las operaciones con <strong>la</strong> matriz A T en el método BiCG pue<strong>de</strong>n<br />
ser <strong>su</strong>stituidas por operaciones con <strong>la</strong> matriz original A teniendo<br />
en cuenta que 〈x,A T y〉 = 〈x,Ay〉 don<strong>de</strong> el operador 〈...〉<br />
representa el producto esca<strong>la</strong>r <strong>de</strong> dos vectores. Como <strong>la</strong> secuencia<br />
<strong>de</strong> vectores que usan A T en el método BiCG se utiliza<br />
sólo para mantener el espacio dual con el que los residuos se<br />
ortogonalizan, reemp<strong>la</strong>zar en <strong>la</strong>s operaciones A por A T permite<br />
<strong>la</strong> expansión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov y encontrar mejores<br />
aproximaciones a <strong>la</strong> solución virtualmente con el mismo coste<br />
computacional por iteración. Esta i<strong>de</strong>a da lugar a los métodos<br />
iterativos conocidos como métodos híbridos: el Gradiente<br />
Conjugado Cuadrático (CGS), el Gradiente Biconjugado Estabilizado<br />
(BCGSTAB), TFQMR, etc.<br />
Todos los métodos iterativos presentan, en general, una convergencia <strong>de</strong>masiado<br />
lenta, así que es necesario introducir mejoras en el esquema numérico<br />
que aceleren <strong>la</strong> convergencia. Esto se realiza aplicando el precondicionador<br />
a<strong>de</strong>cuado al sistema lineal que estemos resolviendo.<br />
A continuación se <strong>de</strong>scribe brevemente en qué consiste una factorización<br />
LU, para <strong>de</strong>finir <strong>de</strong>spués el concepto <strong>de</strong> precondicionador y <strong>su</strong> utilidad.
3.2. Factorización LU 39<br />
3.2. Factorización LU<br />
Consiste en factorizar <strong>la</strong> matriz A como el producto <strong>de</strong> una matriz triangu<strong>la</strong>r<br />
inferior L y una matriz triangu<strong>la</strong>r <strong>su</strong>perior U:<br />
A = LU (3.2)<br />
Consi<strong>de</strong>ramos que <strong>la</strong> matriz L está normalizada (lii = 1) y almacenada<br />
por columnas mientras que <strong>la</strong> matriz U está almacenada por fi<strong>la</strong>s, <strong>de</strong> tal<br />
forma que siempre se mantenga <strong>la</strong> siguiente igualdad:<br />
n<br />
lijujk = aik<br />
j=1<br />
El algoritmo básico para <strong>la</strong> factorización LU es el siguiente:<br />
DO i = 1, n<br />
lii = 1<br />
DO k = 1, i − 1<br />
lik = (aik − k−1<br />
j=1 lij · ujk)/ukk<br />
END DO<br />
DO k = 1, i<br />
uki = (aki − k−1<br />
j=1 lkj · uji)<br />
END DO<br />
END DO<br />
Figura 3.1: Factorización LU básica<br />
(3.3)<br />
Una vez factorizada <strong>la</strong> matriz el sistema <strong>de</strong> ecuaciones Ax = b podría<br />
representarse como LUx = b. Para <strong>su</strong> resolución realizamos <strong>la</strong> siguiente<br />
operación:<br />
obteniendo:<br />
si <strong>de</strong>finimos z = L −1 b el sistema a resolver será:<br />
L −1 LUx = L −1 b (3.4)<br />
Ux = L −1 b (3.5)<br />
Ux = z (3.6)
40 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Para ello primero obtenemos z, resolviendo <strong>la</strong> ecuación Lz = b, cuya solución<br />
es:<br />
zi = 1 i−1<br />
(bi − lijzj) i = 1,2,...n (3.7)<br />
lii<br />
Para resolver por último Ux = z:<br />
xi = 1<br />
uii<br />
(zi −<br />
n<br />
j=i+1<br />
j=1<br />
Obteniendo así el vector solución x.<br />
3.3. Precondicionadores<br />
uijxj) i = n,n − 1,...,1 (3.8)<br />
Los precondicionadores se usan para mejorar <strong>la</strong>s propieda<strong>de</strong>s <strong>de</strong> los sistemas<br />
lineales con el fin <strong>de</strong> acelerar <strong>la</strong> convergencia <strong>de</strong> los métodos iterativos.<br />
Partiendo <strong>de</strong>l sistema Ax = b, buscamos una matriz M que transforme el<br />
sistema en otro cuyas propieda<strong>de</strong>s sean más favorables y, por tanto, más<br />
fácil <strong>de</strong> resolver. El sistema lineal podría representarse como:<br />
M −1 Ax = M −1 b (3.9)<br />
En <strong>la</strong> búsqueda <strong>de</strong> <strong>la</strong> matriz M po<strong>de</strong>mos seguir dos caminos:<br />
1. Encontrar una matriz M que se aproxime a A, <strong>de</strong> tal forma que resolver<br />
el sistema con esta matriz sea más fácil que hacerlo con <strong>la</strong> matriz A,<br />
resolviendo por lo tanto:<br />
Mx = b (3.10)<br />
2. Lograr una matriz M aproximada a A −1 <strong>de</strong> tal forma que <strong>la</strong> expresión<br />
AM sea tan cercana a <strong>la</strong> i<strong>de</strong>ntidad como sea posible en algún sentido,<br />
como por ejemplo minimizando |AM − I| en <strong>la</strong> norma <strong>de</strong> Frobenius.<br />
De esta forma sólo sería necesario realizar el producto <strong>de</strong> M por el<br />
vector in<strong>de</strong>pendiente para obtener <strong>la</strong> solución. Es <strong>de</strong>cir:<br />
MAx = Mb =⇒ x ≃ Mb (3.11)<br />
Los precondicionadores se pue<strong>de</strong>n aplicar por <strong>la</strong> izquierda, por <strong>la</strong> <strong>de</strong>recha y<br />
por ambos <strong>la</strong>dos. Si partimos <strong>de</strong>l sistema Ax = b, el precondicionamiento<br />
por <strong>la</strong> izquierda se basa en realizar <strong>la</strong> operación:<br />
M −1 Ax = M −1 b (3.12)
3.3. Precondicionadores 41<br />
En cambio, el precondicionamiento por <strong>la</strong> <strong>de</strong>recha se aplica así:<br />
AM −1 u = b (3.13)<br />
con u = Mx , don<strong>de</strong> u una nueva variable que nunca necesitará ser invocada<br />
explícitamente.<br />
El precondicionamiento por ambos <strong>la</strong>dos no es más que una combinación<br />
<strong>de</strong> los dos métodos <strong>de</strong> precondicionamiento anteriores.<br />
Los precondicionadores que vamos a estudiar se pue<strong>de</strong>n c<strong>la</strong>sificar en tres<br />
tipos principales: los l<strong>la</strong>mados precondicionadores clásicos, precondicionadores<br />
multimal<strong>la</strong> y los precondicionadores basados en <strong>de</strong>scomposición <strong>de</strong><br />
dominios.<br />
3.3.1. Precondicionadores clásicos<br />
Se basan en manipu<strong>la</strong>ciones algebraicas <strong>de</strong> <strong>la</strong> matriz para obtener algún<br />
tipo <strong>de</strong> aproximación <strong>de</strong> <strong>la</strong> inversa <strong>de</strong> <strong>la</strong> matriz <strong>de</strong> coeficientes. Ejemplos<br />
<strong>de</strong> estos precondicionadores son <strong>la</strong>s factorizaciones incompletas. Se trata<br />
<strong>de</strong> factorizar <strong>la</strong> matriz A (por ejemplo a través <strong>de</strong> una factorización LU)<br />
pero sin introducir todo el llenado que se produce durante este proceso<br />
[CvdV94]. Es <strong>de</strong>cir, en una factorización incompleta LU se computa <strong>la</strong> matriz<br />
triangu<strong>la</strong>r inferior (L) y <strong>su</strong>perior (U) <strong>de</strong> tal forma que <strong>la</strong> matriz residuo R =<br />
LU −A satisfaga ciertas limitaciones, como pue<strong>de</strong> ser tener entradas nu<strong>la</strong>s en<br />
ciertas posiciones. Existen básicamente cuatro versiones <strong>de</strong> factorizaciones<br />
incompletas:<br />
1. Factorizaciones sin llenado, ILU(0): son <strong>la</strong>s más sencil<strong>la</strong>s y no introducen<br />
llenado alguno, es <strong>de</strong>cir, <strong>la</strong> factorización incompleta tiene <strong>la</strong><br />
misma cantidad <strong>de</strong> elementos no nulos y en <strong>la</strong>s mismas posiciones que<br />
<strong>la</strong> matriz A [MvdV97]. Este tipo <strong>de</strong> precondicionadores no <strong>su</strong>elen ser<br />
lo <strong>su</strong>ficientemente potentes.<br />
Un ejemplo <strong>de</strong> este tipo <strong>de</strong> factorizaciones incompletas lo vemos en <strong>la</strong><br />
figura 3.2, en <strong>la</strong> que tenemos representada <strong>la</strong> matriz A (imagen inferior<br />
izquierda) y unas matrices triangu<strong>la</strong>res L y U con <strong>la</strong> misma estructura<br />
que <strong>la</strong>s partes inferior y <strong>su</strong>perior <strong>de</strong> <strong>la</strong> matriz A. La matriz A representada<br />
en <strong>la</strong> figura está generada a partir <strong>de</strong> una mal<strong>la</strong> 8x4. Realizando<br />
el producto LU, <strong>la</strong> matriz re<strong>su</strong>ltante tendrá el patrón dado en <strong>la</strong> figura<br />
inferior <strong>de</strong>recha. Como po<strong>de</strong>mos ver generalmente es imposible<br />
que coincidan <strong>la</strong>s matrices A y LU, a causa <strong>de</strong> <strong>la</strong> aparición <strong>de</strong> entradas<br />
diagonales extra al realizar el producto (elementos <strong>de</strong> llenado). Si<br />
ignoramos estos elementos es posible lograr unas matrices L y U cuyo<br />
producto sea aproximadamente igual a A en <strong>la</strong>s otras diagonales.
42 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Figura 3.2: Ejemplo <strong>de</strong> factorización incompleta LU(0)<br />
2. Factorizaciones con llenado, ILU(k): en <strong>la</strong>s que se usa como criterio para<br />
<strong>la</strong> introducción <strong>de</strong>l llenado <strong>la</strong> posición <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> matriz [MvdV97].<br />
El parámetro k <strong>de</strong> una factorización ILU(k) indica el número <strong>de</strong> columnas<br />
alre<strong>de</strong>dor <strong>de</strong> <strong>la</strong> diagonal en <strong>la</strong>s que se permite llenado. Este<br />
tipo <strong>de</strong> factorizaciones tienen el <strong>de</strong>fecto <strong>de</strong> consi<strong>de</strong>rar que <strong>la</strong> importancia<br />
numérica <strong>de</strong> un llenado <strong>de</strong>pen<strong>de</strong> únicamente <strong>de</strong> <strong>la</strong> proximidad<br />
topológica sin tener en cuenta el fenómeno físico que <strong>la</strong> matriz A representa.<br />
Se podrían dar otras <strong>de</strong>finiciones <strong>de</strong>l parámetro k<br />
3. Factorizaciones con llenado, ILU(τ): Estas factorizaciones <strong>de</strong>ci<strong>de</strong>n introducir<br />
o no llenado en función <strong>de</strong> si el elemento es <strong>su</strong>perior o inferior<br />
a un umbral <strong>de</strong>terminado τ, re<strong>la</strong>tivo al valor <strong>de</strong> los elementos <strong>de</strong> <strong>la</strong> fi<strong>la</strong><br />
i–ésima <strong>de</strong> A usando cierta medida (como pue<strong>de</strong> ser el valor medio <strong>de</strong><br />
los elementos <strong>de</strong> <strong>la</strong> fi<strong>la</strong> i–ésima) [Z<strong>la</strong>82].<br />
4. Factorizaciones con llenado, ILU(fill,τ): en este caso se usan dos<br />
criterios para <strong>la</strong> introducción <strong>de</strong> llenado; <strong>la</strong> posición <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> matriz<br />
y un umbral numérico [Saa94a]. Así al factorizar <strong>la</strong> fi<strong>la</strong> i–ésima se<br />
introducen todos los llenados que <strong>su</strong>peren un umbral numérico re<strong>la</strong>tivo<br />
a esa fi<strong>la</strong> (parámetro τ); una vez acabada <strong>la</strong> factorización <strong>de</strong> <strong>la</strong> fi<strong>la</strong> i–
3.3. Precondicionadores 43<br />
ésima, sólo se almacena en <strong>la</strong> estructura <strong>de</strong> datos <strong>de</strong> salida tantos<br />
elementos como tuviese <strong>la</strong> matriz A en <strong>la</strong> fi<strong>la</strong> i–ésima más 2 · fill<br />
(fill elementos en <strong>la</strong> parte L y fill elementos en <strong>la</strong> parte U). Se eligen<br />
para <strong>su</strong> almacenamiento aquellos con un valor absoluto mayor. Por lo<br />
tanto, usando este método τ contro<strong>la</strong> el umbral numérico <strong>de</strong> cálculo y<br />
el parámetro fill <strong>la</strong> cantidad efectiva <strong>de</strong> llenado.<br />
3.3.2. Precondicionadores multimal<strong>la</strong><br />
Son un grupo <strong>de</strong> métodos que trabajan sobre varias mal<strong>la</strong>s para alcanzar<br />
<strong>la</strong> solución <strong>de</strong>l problema[Dou96]. Sobre esta mal<strong>la</strong> refinada se aplica un<br />
método iterativo <strong>su</strong>ave para eliminar <strong>la</strong>s componentes <strong>de</strong> error osci<strong>la</strong>torias<br />
en ese nivel. Seguidamente se restringen los errores a una mal<strong>la</strong> más gruesa,<br />
en <strong>la</strong> cual <strong>la</strong>s componentes <strong>su</strong>aves se convierten en osci<strong>la</strong>torias, y se aplica<br />
<strong>de</strong> nuevo el método <strong>su</strong>ave sobre esta mal<strong>la</strong>. Se repite esto <strong>de</strong> modo recursivo<br />
hasta llegar al nivel <strong>de</strong> mal<strong>la</strong> don<strong>de</strong> se re<strong>su</strong>elve directamente el sistema. Este<br />
método acelera <strong>la</strong> convergencia <strong>de</strong> los métodos iterativos clásicos aplicando<br />
métodos iterativos <strong>su</strong>aves sobre una jerarquía <strong>de</strong> mal<strong>la</strong>s re<strong>la</strong>cionadas por<br />
una serie <strong>de</strong> operadores <strong>de</strong> restricción y prolongación.<br />
Presentan una complejidad en operaciones lineal con el tamaño <strong>de</strong>l sistema,<br />
frente a <strong>la</strong> complejidad cuadrática <strong>de</strong> los métodos clásicos. Pero por<br />
otro <strong>la</strong>do con<strong>su</strong>men más memoria y son menos versátiles en <strong>su</strong> aplicación<br />
[Bri87, Wes95].<br />
3.3.3. Precondicionadores basados en <strong>de</strong>scomposición <strong>de</strong> dominios<br />
Las técnicas <strong>de</strong> <strong>de</strong>scomposición <strong>de</strong> dominios intentan resolver el problema<br />
sobre todo el dominio a partir <strong>de</strong> <strong>la</strong> solución en cada <strong>su</strong>bdominio Ωi.<br />
Para un dominio genérico Ω, dividido en s <strong>su</strong>bdominios, en el que consi<strong>de</strong>ramos<br />
que no se produce so<strong>la</strong>pamiento (over<strong>la</strong>pping) entre <strong>su</strong>bdominios,<br />
se cumple:<br />
Ω =<br />
s<br />
Ωi ,Ωi ∩ Ωj = ∅ (3.14)<br />
i=1<br />
Aunque pue<strong>de</strong> darse el caso <strong>de</strong> que exista so<strong>la</strong>pamiento. Esto implica<br />
que los <strong>su</strong>bdominios son tales que:<br />
Ω =<br />
s<br />
Ωi ,Ωi ∩ Ωj = ∅ (3.15)<br />
i=1
44 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
(a) (b)<br />
Figura 3.3: (a) Mal<strong>la</strong> asociada a un dominio dividido en tres <strong>su</strong>bdominios,<br />
(b) matriz asociada a <strong>la</strong> mal<strong>la</strong> anterior<br />
Para problemas discretizados, es típico cuantificar <strong>la</strong> extensión <strong>de</strong>l so<strong>la</strong>pamiento<br />
a través <strong>de</strong>l número <strong>de</strong> líneas <strong>de</strong> <strong>la</strong> mal<strong>la</strong> que son comunes a los<br />
dos <strong>su</strong>bdominios.<br />
Si partimos <strong>de</strong> un dominio Ω discretizado po<strong>de</strong>mos etiquetar los nodos<br />
por cada <strong>su</strong>bdominio <strong>de</strong> tal forma que etiquetemos primero los nodos internos<br />
a cada <strong>su</strong>bdominio y por último los nodos frontera. La matriz que<br />
obtendremos presentará un patrón <strong>de</strong> bloques no nulos en forma <strong>de</strong> flecha,<br />
mostrando un aspecto:<br />
⎛<br />
⎞ ⎛ ⎞ ⎛ ⎞<br />
B1 0 0 ... E1 x1 f1<br />
⎜<br />
⎟<br />
⎜<br />
0 B2 0 ... E2 ⎟ ⎜ ⎟ ⎜ ⎟<br />
⎟ ⎜ x2 ⎟ ⎜ f2 ⎟<br />
⎜<br />
A = ⎜ .<br />
⎜ . . ..<br />
⎟ ⎜ ⎟ ⎜ ⎟<br />
. ⎟ ⎜ ⎟ ⎜ ⎟<br />
⎟ ⎜<br />
⎜<br />
⎟ ⎜ . ⎟ = ⎜<br />
⎟ ⎜ . ⎟<br />
⎜<br />
⎝ . .<br />
⎟ ⎜ ⎟ ⎜ ⎟<br />
Bs Es ⎠ ⎝ xs ⎠ ⎝ fs ⎠<br />
F1 F2 ... Fs C y g<br />
(3.16)<br />
Tenemos el dominio dividido en s <strong>su</strong>bdominios, por lo tanto cada xi<br />
será el <strong>su</strong>bvector <strong>de</strong> incógnitas internas al <strong>su</strong>bdominio Ωi y el <strong>su</strong>bvector y<br />
indicará todas <strong>la</strong>s incógnitas pertenecientes a <strong>la</strong> interfaz entre los <strong>su</strong>bdominios.<br />
Las <strong>su</strong>bmatrices Bi indican el acop<strong>la</strong>miento <strong>de</strong> <strong>la</strong>s ecuaciones <strong>de</strong> cada<br />
<strong>su</strong>bdominio con los nodos internos al mismo, <strong>la</strong>s Ei indican el acop<strong>la</strong>miento<br />
<strong>de</strong> <strong>la</strong>s ecuaciones <strong>de</strong> cada <strong>su</strong>bdominio con los nodos frontera, <strong>la</strong>s Fi se refieren<br />
al acop<strong>la</strong>miento <strong>de</strong> los nodos frontera <strong>de</strong> cada <strong>su</strong>bdominio con los nodos<br />
frontera indicados por y. Por último, <strong>la</strong> matriz C indica el acop<strong>la</strong>miento <strong>de</strong><br />
los nodos frontera entre sí.<br />
En <strong>la</strong> figura 3.3(a) tenemos un ejemplo <strong>de</strong> una mal<strong>la</strong> en forma <strong>de</strong> L
3.4. Técnicas <strong>de</strong> almacenamiento <strong>de</strong> matrices dispersas 45<br />
asociada a un dominio divido en tres <strong>su</strong>bdominios. El etiquetado <strong>de</strong> los nodos<br />
es <strong>de</strong> tal forma que primero se numeran los nodos internos a cada uno <strong>de</strong> los<br />
<strong>su</strong>bdominios y luego los frontera, a<strong>de</strong>más, el so<strong>la</strong>pamiento entre <strong>su</strong>bdominios<br />
es <strong>de</strong> or<strong>de</strong>n uno. En <strong>la</strong> figura 3.3(b) se representa <strong>la</strong> matriz asociada a esta<br />
mal<strong>la</strong>, que presenta, como ya dijimos anteriormente un patrón en forma <strong>de</strong><br />
flecha.<br />
3.4. Técnicas <strong>de</strong> almacenamiento <strong>de</strong> matrices dispersas<br />
En el caso <strong>de</strong> <strong>la</strong>s matrices dispersas un factor muy importante a tener<br />
en cuenta es el modo <strong>de</strong> almacenamiento. Una matriz <strong>de</strong>nsa N × N se <strong>su</strong>ele<br />
almacenar en un vector bidimensional <strong>de</strong> dimensiones N × N. Sin embargo,<br />
si <strong>la</strong> matriz es dispersa, este almacenamiento <strong>de</strong>sperdicia mucho espacio<br />
en memoria porque <strong>la</strong> mayoría <strong>de</strong> los elementos <strong>de</strong> <strong>la</strong> matriz son nulos y<br />
no necesitan ser almacenados explícitamente, es común almacenar sólo <strong>la</strong>s<br />
entradas diferentes <strong>de</strong> cero añadiendo información sobre <strong>la</strong> localización <strong>de</strong><br />
estas entradas.<br />
Existen muchos esquemas <strong>de</strong> almacenamiento <strong>de</strong> matrices dispersas, estando<br />
entre los más utilizados el CRS (Compressed Row Storage), el CCS<br />
(Compressed Column Storage) y el MSR (Modified Compressed Sparse Row).<br />
La elección <strong>de</strong>l esquema más a<strong>de</strong>cuado <strong>de</strong>pen<strong>de</strong>rá <strong>de</strong> <strong>la</strong>s características <strong>de</strong>l<br />
problema a resolver y <strong>de</strong>l patrón (situación <strong>de</strong> <strong>la</strong>s entradas no nu<strong>la</strong>s) <strong>de</strong> <strong>la</strong><br />
matriz. A continuación se <strong>de</strong>scribirán con más <strong>de</strong>talle los formatos <strong>de</strong> almacenamiento<br />
utilizados en <strong>la</strong>s <strong>librerías</strong> estudiadas. Para ello trabajamos con<br />
<strong>la</strong> matriz representada a continuación, cuya dimensión es 8x8 y el número<br />
<strong>de</strong> elementos no nulos α=15.<br />
⎛<br />
⎜<br />
A = ⎜<br />
⎝<br />
1 0 0 2 0 0 0 0<br />
0 0 0 0 0 2 0 3<br />
0 4 0 0 0 0 0 0<br />
0 0 0 0 5 0 0 0<br />
0 0 0 6 6 0 7 0<br />
0 0 0 0 0 0 0 8<br />
9 10 0 0 0 0 0 11<br />
0 0 12 0 0 0 13 0<br />
⎞<br />
⎟<br />
⎠<br />
(3.17)
46 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
3.4.1. Formato CRS (Compressed Row Storage)<br />
El esquema CRS representa <strong>la</strong> matriz por medio <strong>de</strong> tres vectores (Da,<br />
Colind y Rowptr). El vector Da almacena <strong>la</strong>s entradas no nu<strong>la</strong>s <strong>de</strong> <strong>la</strong> matriz<br />
al recorrer<strong>la</strong> por fi<strong>la</strong>s, Colind almacena el índice <strong>de</strong> columna <strong>de</strong> cada una<br />
<strong>de</strong> <strong>la</strong>s entradas y Rowptr almacena <strong>la</strong> posición <strong>de</strong>l vector Da en <strong>la</strong> que<br />
empieza cada nueva fi<strong>la</strong>. El re<strong>su</strong>ltado <strong>de</strong>l almacenamiento <strong>de</strong> <strong>la</strong> matriz en<br />
tres vectores se representa en <strong>la</strong> tab<strong>la</strong> 3.1. Este tipo <strong>de</strong> almacenamiento<br />
representa un ahorro consi<strong>de</strong>rable <strong>de</strong> memoria pues para almacenar una<br />
matriz <strong>de</strong> or<strong>de</strong>n N × N no se necesitan N 2 posiciones <strong>de</strong> memoria, sino<br />
únicamente 2α + N + 1.<br />
Da 1 2 2 3 4 5 6 6 7 8 9 10 11 12 13<br />
Colind 1 4 6 8 2 5 4 5 7 8 1 2 8 3 7<br />
Rowptr 1 3 5 6 7 10 11 14 16<br />
Tab<strong>la</strong> 3.1: Modo <strong>de</strong> almacenamiento CRS para <strong>la</strong> matriz dispersa<br />
3.4.2. Formato CCS (Compressed Column Storage)<br />
El esquema CCS representa <strong>la</strong> matriz por medio <strong>de</strong> tres vectores (Da,<br />
Rowind y Colptr). El vector Da almacena <strong>la</strong>s entradas no nu<strong>la</strong>s <strong>de</strong> <strong>la</strong> matriz<br />
al recorrer<strong>la</strong> por columnas, y en este caso Rowind almacena el índice <strong>de</strong> fi<strong>la</strong><br />
<strong>de</strong> cada una <strong>de</strong> <strong>la</strong>s entradas y Colptr almacena <strong>la</strong> posición <strong>de</strong>l vector Da en<br />
<strong>la</strong> que empieza cada nueva columna. El re<strong>su</strong>ltado <strong>de</strong>l almacenamiento <strong>de</strong> <strong>la</strong><br />
matriz en tres vectores se representa en <strong>la</strong> tab<strong>la</strong> 3.2.<br />
Da 1 9 4 10 12 2 6 5 6 2 7 13 3 8 11<br />
Rowind 1 7 3 7 8 1 5 4 5 2 5 8 2 6 7<br />
Colptr 1 3 5 6 8 10 11 13 16<br />
Tab<strong>la</strong> 3.2: Modo <strong>de</strong> almacenamiento CCS para <strong>la</strong> matriz dispersa<br />
3.4.3. Formato MSR (Modified Compressed Sparse Row)<br />
El esquema MSR representa <strong>la</strong> matriz por medio <strong>de</strong> dos únicos vectores<br />
(Da, In<strong>de</strong>x). El vector Da almacena <strong>la</strong>s entradas <strong>de</strong> <strong>la</strong> matriz, empezando por<br />
toda <strong>la</strong> diagonal, <strong>de</strong>jando a continuación una entrada en b<strong>la</strong>nco (en tab<strong>la</strong> 3.3<br />
marcado con −1), para seguir con el resto <strong>de</strong> los valores no nulos al recorrer
3.5. Librerías <strong>numéricas</strong> 47<br />
<strong>la</strong> matriz por fi<strong>la</strong>s. El vector In<strong>de</strong>x almacena en <strong>la</strong>s N +1 primeras entradas<br />
<strong>la</strong> posición <strong>de</strong>l dato en el vector Da que comienza cada una <strong>de</strong> <strong>la</strong>s fi<strong>la</strong>s, y<br />
a continuación <strong>la</strong> columna correspondiente a cada dato <strong>de</strong> <strong>la</strong>s entradas no<br />
diagonales <strong>de</strong>l vector Da. El re<strong>su</strong>ltado <strong>de</strong>l almacenamiento <strong>de</strong> <strong>la</strong> matriz en<br />
los dos vectores se representa en <strong>la</strong> tab<strong>la</strong> 3.3.<br />
Da 1 0 0 0 6 0 0 0 -1 2 2 3 4 5 6 7 8 9 10 11 12 13<br />
In<strong>de</strong>x 10 11 13 14 15 17 18 21 21 4 6 8 2 5 4 7 8 1 2 8 3 7<br />
Tab<strong>la</strong> 3.3: Modo <strong>de</strong> almacenamiento MSR para <strong>la</strong> matriz dispersa<br />
3.4.4. Formato HB (Harwell Boeing)<br />
Este formato <strong>de</strong> almacenamiento está basado en el CCS. A <strong>la</strong> matriz<br />
almacenada en formato CCS se le aña<strong>de</strong>n simplemente unas cabeceras que<br />
contienen información re<strong>la</strong>tiva al formato <strong>de</strong> almacenamiento y a los requerimientos<br />
<strong>de</strong> espacio. Suponiendo que no almacenamos el vector in<strong>de</strong>pendiente,<br />
<strong>la</strong> matriz en formato H/B estará formada por tres bloques <strong>de</strong> datos<br />
consecutivos que contendrán los vectores Da, Rowind y Colptr, y cuatro<br />
líneas iniciales <strong>de</strong> cabecera que nos darán el número <strong>de</strong> líneas ocupadas por<br />
cada uno <strong>de</strong> los vectores, el número total <strong>de</strong> fi<strong>la</strong>s y <strong>de</strong> elementos no nulos, el<br />
tipo <strong>de</strong> matriz, etc. Si también almacenamos el vector in<strong>de</strong>pendiente habría<br />
que añadir un cuarto bloque <strong>de</strong> datos y una quinta línea <strong>de</strong> cabecera. Este<br />
bloque contendría los valores numéricos <strong>de</strong>l vector in<strong>de</strong>pendiente (aunque<br />
también se podría escoger almacenarlo en el mismo formato utilizado para<br />
<strong>la</strong> matriz), y <strong>la</strong> nueva línea <strong>de</strong> cabecera informaría <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l vector<br />
in<strong>de</strong>pendiente, <strong>de</strong>l número <strong>de</strong> fi<strong>la</strong>s que ocupa y <strong>de</strong>l formato escogido para<br />
<strong>su</strong> almacenamiento.<br />
3.5. Librerías <strong>numéricas</strong><br />
Existen un gran número <strong>de</strong> <strong>librerías</strong> <strong>numéricas</strong> para <strong>la</strong> resolución <strong>de</strong> sistemas<br />
lineales tanto <strong>de</strong>nsos como dispersos. Vamos a centrarnos en <strong>librerías</strong><br />
especializadas en <strong>la</strong> resolución <strong>de</strong> sistemas dispersos, teniendo en cuenta que<br />
existen tanto <strong>librerías</strong> secuenciales como parale<strong>la</strong>s. Ejemplos <strong>de</strong> <strong>librerías</strong> secuenciales<br />
son:<br />
1. HSL [Tec93](Harwell Subroutine Library): son códigos escritos en Fortran<br />
utilizados en computaciones científicas a gran esca<strong>la</strong>. Dispone <strong>de</strong><br />
herramientas para <strong>la</strong> resolución <strong>de</strong> diferentes problemas matemáticos
48 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
entre los que se encuentran álgebra lineal, ecuaciones diferenciales,<br />
ecuaciones no lineales y estadísticas.<br />
2. YSMP [EGSS82](Yale Sparse Matrix Package): esta librería está compuesta<br />
por una colección <strong>de</strong> <strong>su</strong>brutinas <strong>de</strong> Fortran 77 diseñadas para<br />
<strong>la</strong> resolución <strong>de</strong> gran<strong>de</strong>s sistemas dispersos <strong>de</strong> ecuaciones <strong>de</strong> álgebra<br />
lineal.<br />
3. SPARSKIT [Saa94b]: esta librería, escrita en Fortran, dispone <strong>de</strong><br />
herramientas para trabajar con matrices dispersas en diferentes formatos<br />
<strong>de</strong> almacenamiento, a<strong>de</strong>más <strong>de</strong> realizar operaciones básicas <strong>de</strong><br />
álgebra lineal utilizando este tipo <strong>de</strong> matrices.<br />
Entre <strong>la</strong>s <strong>librerías</strong> parale<strong>la</strong>s que permiten <strong>la</strong> resolución <strong>de</strong> sistemas lineales<br />
dispersos se encuentran:<br />
1. Aztec [HST95]: es una librería parale<strong>la</strong> <strong>de</strong> métodos iterativos y precondicionadores<br />
para sistemas distribuidos codificados en C. Su principal<br />
objetivo es proveer <strong>de</strong> herramientas que faciliten el manejo <strong>de</strong> <strong>la</strong>s<br />
estructuras <strong>de</strong> datos distribuidas, incluye varios métodos iterativos no<br />
estacionarios, precondicionadores polinomiales y basados en factorizaciones<br />
incompletas.<br />
2. BlockSolve [JP97]: es un conjunto <strong>de</strong> rutinas para <strong>la</strong> resolución <strong>de</strong><br />
gran<strong>de</strong>s sistemas lineales dispersos en sistemas multicomputador. La<br />
librería está codificada en C, utiliza MPI y permite resolver sistemas lineales<br />
<strong>de</strong> ecuaciones <strong>de</strong> rangos elevados en computadores masivamente<br />
paralelos y en re<strong>de</strong>s <strong>de</strong> estaciones <strong>de</strong> trabajo aunque con <strong>la</strong> limitación<br />
<strong>de</strong> estar restringido a matrices con estructura simétrica.<br />
3. PETSc [BGMS99b, BGMS99a]: es un <strong>de</strong>sarrollo <strong>de</strong>l Argonne National<br />
Laboratory, ha sido <strong>de</strong>sarrol<strong>la</strong>da usando <strong>la</strong> librería estándar <strong>de</strong> pase<br />
<strong>de</strong> mensajes MPI y se aplica a <strong>la</strong> resolución numérica <strong>de</strong> ecuaciones<br />
diferenciales parciales, incluyendo para ello un conjunto <strong>de</strong> resolutores<br />
paralelos <strong>de</strong> ecuaciones lineales y no lineales. Esta librería da una<br />
gran flexibilidad al u<strong>su</strong>ario porque utiliza técnicas <strong>de</strong> programación<br />
orientadas a objetos.<br />
4. PSPARSLIB [LS96, SLK97, SM95]: es una librería portable <strong>de</strong> resolutores<br />
iterativos en paralelo para sistemas lineales dispersos, incluyendo<br />
una serie <strong>de</strong> precondicionadores y métodos iterativos a<strong>de</strong>más <strong>de</strong><br />
herramientas <strong>de</strong> particionamiento.
3.5. Librerías <strong>numéricas</strong> 49<br />
5. SuperLU [DGL99]: colección <strong>de</strong> rutinas diseñadas para <strong>la</strong> resolución<br />
<strong>de</strong> sistemas lineales dispersos por medio <strong>de</strong> una factorización LU. Dispone<br />
tanto <strong>de</strong> versiones secuenciales como parale<strong>la</strong>s.<br />
A continuación se hace una <strong>de</strong>scripción <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> estudiadas.<br />
3.5.1. SPARSKIT<br />
Es una librería secuencial utilizada principalmente para <strong>la</strong> resolución <strong>de</strong><br />
sistemas <strong>de</strong> ecuaciones lineales dispersos. Proporciona al u<strong>su</strong>ario una serie<br />
<strong>de</strong> herramientas para trabajar con este tipo <strong>de</strong> matrices, entre <strong>la</strong>s que se<br />
encuentran:<br />
Un módulo con <strong>su</strong>brutinas para realizar operaciones básicas <strong>de</strong> álgebra<br />
lineal, como pue<strong>de</strong>n ser productos y <strong>su</strong>mas <strong>de</strong> matrices, productos<br />
matriz–vector, y varios métodos <strong>de</strong> resolución <strong>de</strong> sistemas triangu<strong>la</strong>res.<br />
Un grupo <strong>de</strong> rutinas para realizar operaciones no–algebraicas sobre una<br />
matriz, tales como <strong>la</strong> or<strong>de</strong>nación <strong>de</strong> <strong>su</strong>s elementos en or<strong>de</strong>n creciente,<br />
<strong>la</strong> extracción <strong>de</strong> <strong>su</strong>bmatrices cuadradas o rectangu<strong>la</strong>res <strong>de</strong> una matriz<br />
dispersa, el filtrado <strong>de</strong> los elementos <strong>de</strong> una matriz <strong>de</strong> acuerdo con <strong>su</strong><br />
magnitud, etc.<br />
Utilida<strong>de</strong>s para <strong>la</strong> generación <strong>de</strong> matrices en formato Harwell/Boeing<br />
(H/B).<br />
Rutinas <strong>de</strong> información, útiles para obtener parámetros característicos<br />
<strong>de</strong> <strong>la</strong> matriz, como pue<strong>de</strong>n ser el número total <strong>de</strong> elementos no nulos,<br />
el promedio <strong>de</strong> no–nulos por fi<strong>la</strong> (con <strong>su</strong> <strong>de</strong>sviación estándar), el ancho<br />
<strong>de</strong> banda, <strong>la</strong> simetría, etc.<br />
Un conjunto <strong>de</strong> <strong>su</strong>brutinas que permiten el reor<strong>de</strong>namiento matricial.<br />
Un módulo para <strong>la</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones lineales.<br />
Accesorios para <strong>la</strong> representación gráfica <strong>de</strong> grafos y matrices.<br />
Herramientas para <strong>la</strong> conversión <strong>de</strong> una matriz <strong>de</strong> un <strong>de</strong>terminado<br />
formato en otro diferente. Teniendo en cuenta que el formato Harwell/Boeing<br />
es uno <strong>de</strong> los más utilizados en propósitos comparativos y<br />
<strong>de</strong> testeo <strong>la</strong> librería SPARSKIT incluye rutinas para crear matrices<br />
en formato Harwell/Boeing (H/B) a partir <strong>de</strong> muchos otros tipos <strong>de</strong><br />
formatos.
50 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
En el módulo <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones lineales los resolutores<br />
que se pue<strong>de</strong>n emplear son: CG, CGNR, BCG, BCGSTAB, DBCG,<br />
GMRES, FGMRES, DQGMRES y TFQMR.<br />
Entre los precondicionadores posibles se encuentran: ILUT (factorización<br />
incompleta LU, en <strong>la</strong> que se usa como criterio tanto un umbral numérico<br />
como <strong>la</strong> posición <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> matriz), ILUTP (ILUT con pivoteo por columna),<br />
ILU0 y MILU0.<br />
SPARSKIT también dispone <strong>de</strong> aceleradores como el PGMRES (resolutor<br />
GMRES precondicionado). Antes <strong>de</strong> l<strong>la</strong>mar a este acelerador se utiliza<br />
como preprocesador alguno <strong>de</strong> los precondicionadores vistos anteriormente.<br />
ipar(1)=0<br />
10 call solver(ipar, parámetros entrada)<br />
if (ipar(1).eq.1) then<br />
call amux()<br />
c producto matriz-vector<br />
goto 10<br />
else if (ipar(1).eq.2) then<br />
call atmux()<br />
c producto matriz traspuesta-vector<br />
goto 10<br />
else if (ipar(1).eq.3) then<br />
c resolutor con precond. por <strong>la</strong> izquierda<br />
goto 10<br />
else if (ipar(1).eq.4) then<br />
c resolutor precond. por <strong>la</strong> izquierda <strong>de</strong> A T<br />
goto 10<br />
else if (ipar(1).eq.5) then<br />
c resolutor precond. por <strong>la</strong> <strong>de</strong>recha<br />
goto 10<br />
else if (ipar(1).eq.6) then<br />
c resolutor precond. por <strong>la</strong> <strong>de</strong>recha <strong>de</strong> A T<br />
goto 10<br />
else if (ipar(1).gt.0) then<br />
c ipar(1) es un código in<strong>de</strong>terminado<br />
else<br />
c El resolutor iterativo ha terminado<br />
endif<br />
Figura 3.4: Ejemplo <strong>de</strong> pseudo–código para el protocolo <strong>de</strong> comunicación<br />
inversa<br />
Es importante <strong>de</strong>stacar que estas rutinas están implementadas usando<br />
técnicas <strong>de</strong> comunicación inversa. Según este protocolo cuando el resolutor<br />
realiza un producto matriz–vector, un producto esca<strong>la</strong>r, o algún tipo <strong>de</strong>
3.5. Librerías <strong>numéricas</strong> 51<br />
operación simi<strong>la</strong>r, se l<strong>la</strong>ma a <strong>la</strong> rutina correspondiente, que será <strong>la</strong> encargada<br />
<strong>de</strong> realizar <strong>la</strong>s operaciones necesarias y <strong>de</strong>volver posteriormente <strong>la</strong> solución<br />
al resolutor. Una consecuencia <strong>de</strong> esta implementación es que <strong>la</strong> estructura<br />
<strong>de</strong> datos asociados a <strong>la</strong> matriz y el precondicionador no necesita ser incluida<br />
en <strong>la</strong> l<strong>la</strong>mada al resolutor. Un ejemplo <strong>de</strong>l funcionamiento <strong>de</strong> este protocolo<br />
lo encontramos en el pseudocódigo <strong>de</strong> <strong>la</strong> figura 3.4, en el que se utiliza<br />
ipar(1) como método <strong>de</strong> obtener el status <strong>de</strong> <strong>la</strong> l<strong>la</strong>mada (si ipar(1)=0 se iniciará<br />
el resolutor iterativo) y <strong>de</strong> <strong>la</strong> salida <strong>de</strong>l resolutor (solver). Así si ipar(1)<br />
tiene un valor positivo indicará <strong>la</strong> necesidad <strong>de</strong> realizar alguna operación y<br />
ipar(1) < 0 indicará <strong>la</strong> terminación <strong>de</strong> <strong>la</strong> etapa <strong>de</strong> resolución.<br />
Esta técnica también se utiliza en <strong>la</strong> librería PSPARSLIB que veremos<br />
a continuación.<br />
3.5.2. PSPARSLIB<br />
La librería PSPARSLIB es una librería <strong>de</strong> resolutores paralelos iterativos<br />
que proporciona una serie <strong>de</strong> módulos utilizados para simplificar el <strong>de</strong>sarrollo<br />
y <strong>la</strong> implementación <strong>de</strong> resolutores iterativos dispersos en computadores <strong>de</strong><br />
memoria distribuida. PSPARSLIB re<strong>su</strong>elve sistemas lineales dispersos que se<br />
encuentran distribuidos entre varios procesadores, pudiendo trabajar tanto<br />
con matrices simétricas o no–simétricas, incluso con patrones irregu<strong>la</strong>res.<br />
Está escrita básicamente en Fortran aunque incluye un número pequeño <strong>de</strong><br />
módulos en C, utilizando <strong>la</strong> librería MPI para paso <strong>de</strong> mensajes.<br />
Hay dos formas distintas <strong>de</strong> preparar <strong>la</strong> matriz para los resolutores iterativos.<br />
En <strong>la</strong> primera, el particionamiento pue<strong>de</strong> <strong>de</strong>terminarse <strong>de</strong> antemano<br />
y cada nodo crear <strong>su</strong> propia parte local <strong>de</strong>l sistema lineal. En <strong>la</strong> segunda,<br />
un nodo lee el sistema lineal completo, para a continuación particionar <strong>la</strong><br />
matriz y distribuir el sistema entre los procesadores participantes.<br />
La librería PSPARSLIB está compuesta <strong>de</strong> los siguientes módulos:<br />
Un particionador <strong>de</strong> grafos simple.<br />
Rutinas para reor<strong>de</strong>nar y formar <strong>la</strong>s matrices locales.<br />
Aceleradores Krylov: CG, GMRES, FGMRES, DQGMRES, BCGS-<br />
TAB, QMR y TFQMR.<br />
Precondicionadores basados en <strong>de</strong>scomposición <strong>de</strong> dominios, como pue<strong>de</strong>n<br />
ser el método <strong>de</strong> Jacobi por bloques, SOR multicolor o técnicas<br />
<strong>de</strong> complemento <strong>de</strong> Schur. Para cada uno <strong>de</strong> los precondicionadores es<br />
posible elegir si <strong>de</strong>seamos que exista o no so<strong>la</strong>pamiento.
52 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Figura 3.5: Representación local <strong>de</strong> una matriz dispersa distribuida<br />
Herramientas <strong>de</strong> preprocesamiento, como pue<strong>de</strong>n ser rutinas <strong>de</strong> particionamiento,<br />
<strong>de</strong> mapeado, rutinas <strong>de</strong> datos locales y algunas rutinas<br />
<strong>de</strong> color.<br />
Para enten<strong>de</strong>r el funcionamiento <strong>de</strong> esta librería es necesario saber como<br />
están compuestas <strong>la</strong>s matrices locales a cada procesador.<br />
Estructura <strong>de</strong> datos locales<br />
El grafo formado por el conjunto <strong>de</strong> nodos incógnitas <strong>de</strong>l problema se<br />
<strong>de</strong>scompone en una serie <strong>de</strong> <strong>su</strong>bdominios o <strong>su</strong>bgrafos, <strong>de</strong> tal forma que,<br />
en nuestro caso tendríamos tantos <strong>su</strong>bdominios como procesadores. Para<br />
enten<strong>de</strong>r esto es necesario distinguir entre tres tipos <strong>de</strong> nodos incógnitas, tal<br />
y como aparece representado en <strong>la</strong> figura 3.5:<br />
Nodos internos: nodos locales que sólo tienen re<strong>la</strong>ción con otros<br />
nodos interiores al <strong>su</strong>bdominio y por tanto sin ningún contacto con<br />
nodos pertenecientes a otros <strong>su</strong>bdominios.<br />
Nodos frontera internos: nodos locales pero acop<strong>la</strong>dos con nodos<br />
frontera pertenecientes a otros <strong>su</strong>bdominios.
3.5. Librerías <strong>numéricas</strong> 53<br />
Nodos frontera externos: nodos pertenecientes a otros <strong>su</strong>bdominios<br />
pero acop<strong>la</strong>dos con nodos internos <strong>de</strong> este <strong>su</strong>bdominio.<br />
Las ecuaciones locales a cada <strong>su</strong>bdominio no tienen porque correspon<strong>de</strong>r<br />
con ecuaciones contiguas en el sistema original. Las fi<strong>la</strong>s <strong>de</strong> <strong>la</strong> matriz asignadas<br />
a un procesador, se pue<strong>de</strong>n dividir en dos partes: en una <strong>su</strong>bmatriz<br />
local Ai que actúa sobre los nodos internos y una <strong>su</strong>bmatriz <strong>de</strong> interfaz Xi<br />
que se refiere a <strong>la</strong>s entradas correspondientes a nodos frontera externos que<br />
interaccionan con nodos frontera internos al <strong>su</strong>bdominio. Las variables remotas<br />
<strong>de</strong>ben ser recibidas <strong>de</strong> los otros procesadores antes <strong>de</strong> que el producto<br />
matriz–vector se pueda completar en estos procesadores.<br />
Los nodos frontera se numeran siempre <strong>de</strong>spués <strong>de</strong> los nodos internos.<br />
Esta or<strong>de</strong>nación local <strong>de</strong> los datos presenta varias ventajas, entre <strong>la</strong>s que<br />
se incluye una eficiente comunicación entre procesadores. De igual modo,<br />
cada vector local <strong>de</strong> incógnitas xi es dividido en dos partes: un <strong>su</strong>bvector ui<br />
<strong>de</strong> nodos internos seguido por el <strong>su</strong>bvector yi correspondiente a los nodos<br />
frontera internos. Siguiendo el mismo procedimiento el vector in<strong>de</strong>pendiente<br />
también es dividido en los <strong>su</strong>bvectores fi y gi.<br />
Así:<br />
<br />
xi =<br />
ui<br />
yi<br />
, bi =<br />
fi<br />
gi<br />
(3.18)<br />
La matriz local Ai, perteneciente al procesador i, también pue<strong>de</strong> particionarse<br />
por bloques, <strong>de</strong> tal modo que se separen <strong>la</strong>s contribuciones <strong>de</strong> cada<br />
c<strong>la</strong>se <strong>de</strong> nodo a dicha matriz <strong>de</strong> <strong>la</strong> siguiente forma:<br />
<br />
Ai =<br />
Bi Ei<br />
Fi Ci<br />
(3.19)<br />
Según esto, <strong>la</strong>s ecuaciones locales <strong>de</strong> un <strong>su</strong>bdominio i pue<strong>de</strong>n ser expresadas<br />
como: <br />
Bi<br />
<br />
Ei ui<br />
<br />
+ <br />
0<br />
<br />
fi<br />
=<br />
<br />
(3.20)<br />
Fi Ci<br />
yi<br />
jǫNi Eijyi<br />
don<strong>de</strong> el término Eijyj es <strong>la</strong> contribución a <strong>la</strong>s ecuaciones locales <strong>de</strong>l <strong>su</strong>bdominio<br />
vecino j–ésimo, siendo N el conjunto <strong>de</strong> <strong>su</strong>bdominios vecinos al <strong>su</strong>bdominio<br />
i. Para implementaciones prácticas, los <strong>su</strong>bvectores <strong>de</strong> los nodos<br />
frontera externos se agrupan en un vector yi,ext. Por lo tanto <strong>la</strong> contribución<br />
al sistema local por parte <strong>de</strong> los nodos frontera externos pue<strong>de</strong> expresarse:<br />
<br />
(3.21)<br />
jǫNi<br />
Eijyj = Xiyi,ext<br />
Una <strong>de</strong> <strong>la</strong>s operaciones más costosas en el resolutor iterativo paralelo es<br />
el producto matriz–vector para matrices distribuidas, que vamos a tratar<br />
seguidamente.<br />
gi
54 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Productos matriz–vector<br />
Ésta es esencialmente una operación local que toma un vector distribuido<br />
x y produce el re<strong>su</strong>ltado W = Ax, distribuido conforme el mapeado <strong>de</strong> todos<br />
los vectores, es <strong>de</strong>cir, cada procesador i producirá wi, <strong>su</strong> parte local <strong>de</strong>l<br />
re<strong>su</strong>ltado w. El producto matriz–vector se realiza implementando <strong>la</strong> siguiente<br />
ecuación:<br />
wi = Aixi + Xi,extyi,ext<br />
(3.22)<br />
El primer paso es obtener los datos externos yi,ext necesarios en cada procesador.<br />
Al mismo tiempo que se espera por <strong>la</strong> recepción <strong>de</strong> estas variables<br />
externas se pue<strong>de</strong> realizar en paralelo el producto <strong>de</strong> <strong>la</strong> matriz Ai por los<br />
datos locales xi.<br />
A continuación hay que multiplicar esas variables recibidas por <strong>la</strong> matriz<br />
externa Xi asociada a el<strong>la</strong>s y <strong>su</strong>mar este re<strong>su</strong>ltado al obtenido <strong>de</strong>l primer<br />
producto. En esta librería al igual que en <strong>la</strong> SPARSKIT se utiliza el protocolo<br />
<strong>de</strong> comunicación inversa, lo que quiere <strong>de</strong>cir que cuando el resolutor<br />
necesita hacer una operación (por ejemplo un producto matriz–vector), se<br />
l<strong>la</strong>ma a <strong>la</strong> rutina correspondiente que se encarga <strong>de</strong> comunicarse con los otros<br />
procesadores (por ejemplo a través <strong>de</strong> MSG bdx send/MSG bdx receive que<br />
se encargan <strong>de</strong> enviar/recibir datos frontera), realizar <strong>la</strong>s operaciones necesarias<br />
(por ejemplo amxdis realiza el producto matriz–vector) y <strong>de</strong>volver<br />
posteriormente <strong>la</strong> solución al resolutor.<br />
Seguidamente vamos a <strong>de</strong>scribir los precondicionadores utilizados.<br />
Precondicionadores<br />
Los principales precondicionadores que incluye PSPARSLIB están basados<br />
en técnicas <strong>de</strong> <strong>de</strong>scomposición <strong>de</strong> dominios. Las ecuaciones son re<strong>su</strong>eltas<br />
a partir <strong>de</strong> una <strong>su</strong>cesión <strong>de</strong> soluciones correspondientes a cada grupo <strong>de</strong><br />
ecuaciones en cada paso. Estas técnicas son precondicionadores por bloques,<br />
estando dichos bloques basados en <strong>su</strong>bdominios. Entre los precondicionadores<br />
<strong>de</strong>stacan el Schwarz aditivo, el Schwarz multiplicativo y técnicas <strong>de</strong><br />
complemento Schur.<br />
Antes <strong>de</strong> entrar en <strong>de</strong>talle con estos precondicionadores tenemos que<br />
recordar que el objetivo es resolver el sistema Ax = b, con A una matriz real<br />
nxn y b un vector real <strong>de</strong> dimensión n.
3.5. Librerías <strong>numéricas</strong> 55<br />
Método <strong>de</strong> Schwarz aditivo<br />
Se pue<strong>de</strong> consi<strong>de</strong>rar como una forma <strong>de</strong> iteración por bloques <strong>de</strong> Jacobi,<br />
en <strong>la</strong> que cada bloque está referido al sistema <strong>de</strong> ecuaciones asociado a<br />
cada <strong>su</strong>bdominio. La iteración <strong>de</strong> Jacobi por bloques es un método en el<br />
cual en el paso <strong>de</strong> una iteración a <strong>la</strong> siguiente se busca <strong>la</strong> actualización <strong>de</strong><br />
un conjunto (un bloque) <strong>de</strong> componentes a <strong>la</strong> vez. Para ello realizamos un<br />
particionamiento <strong>de</strong> <strong>la</strong> matriz A y <strong>de</strong> los vectores solución e in<strong>de</strong>pendiente<br />
en bloques:<br />
⎛<br />
⎞ ⎛ ⎞ ⎛ ⎞<br />
A11 A12 A13 ... A1p<br />
ρ1<br />
β1<br />
⎜<br />
⎟ ⎜ ⎟ ⎜ ⎟<br />
⎜ A21 A22 A23 ... A2p ⎟ ⎜ ρ2 ⎟ ⎜ β2 ⎟<br />
⎜<br />
⎟ ⎜ ⎟ ⎜ ⎟<br />
⎜<br />
A = ⎜ A31 A32 A33 ... A3p<br />
⎟ ⎜<br />
⎟ ; x = ⎜ ρ3<br />
⎟ ⎜<br />
⎟ ; b = ⎜ β3<br />
⎟<br />
⎜<br />
. ⎟ ⎜ ⎟ ⎜ ⎟<br />
⎝ . . . .. ⎟ ⎜ ⎟ ⎜ ⎟<br />
. ⎠ ⎝ . ⎠ ⎝ . ⎠<br />
Ap1 Ap2 Ap3 ... App<br />
(3.23)<br />
Por otro <strong>la</strong>do <strong>de</strong>scomponemos <strong>la</strong> matriz A, en A = D − E − F con :<br />
⎛<br />
⎜<br />
A = ⎜<br />
⎝<br />
A11<br />
A22<br />
. ..<br />
App<br />
⎜<br />
F = − ⎜<br />
⎝<br />
ρp<br />
⎞ ⎛<br />
0<br />
⎟ ⎜<br />
⎟ ⎜ A21 0<br />
⎟ ; E = − ⎜<br />
⎠ ⎝ . .<br />
⎛<br />
0 A12 ... A1p<br />
0 ... A2p<br />
. ..<br />
. ..<br />
Ap1 Ap2 ... 0<br />
0<br />
⎞<br />
⎟<br />
⎠<br />
⎞<br />
βp<br />
⎟<br />
⎠ (3.24)<br />
(3.25)<br />
En una iteración k, xk sería el vector solución obtenido en esa iteración<br />
para un <strong>de</strong>terminado bloque. A partir <strong>de</strong> esto <strong>la</strong> iteración <strong>de</strong> Jacobi calcu<strong>la</strong><br />
<strong>su</strong> componente i–ésima en <strong>la</strong> siguiente iteración (k + 1) con el objetivo <strong>de</strong><br />
anu<strong>la</strong>r <strong>la</strong> componente i <strong>de</strong>l vector residuo. Es <strong>de</strong>cir conseguir que:<br />
Para que esto sea posible <strong>de</strong>be darse que:<br />
aiix (k+1)<br />
i<br />
= −<br />
<strong>de</strong>spejando obtendríamos:<br />
(b − Axk+1)i = 0 (3.26)<br />
p<br />
j=1 j=i<br />
aijx k j + βi i = 1,...,p (3.27)
56 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
x (k+1)<br />
i<br />
= 1<br />
(βi −<br />
aii<br />
p<br />
j=1 j=i<br />
Reescribiéndolo todo en notación matricial:<br />
x (k+1)<br />
i<br />
llegaríamos a <strong>la</strong> ecuación:<br />
aijx k j ) i = 1,...,p (3.28)<br />
= A −1<br />
ii ((E + F)xk i + A −1<br />
ii βi i = 1,...,p (3.29)<br />
x (k+1)<br />
i = D −1 (E + F)x k + D −1 b (3.30)<br />
Este método <strong>de</strong>termina el vector solución (para un <strong>de</strong>terminado bloque)<br />
en <strong>la</strong> iteración k + 1 utilizando para ello los vectores obtenidos en <strong>la</strong><br />
iteración anterior k. Es interesante tener en cuenta que el número <strong>de</strong> iteraciones<br />
necesarias para obtener <strong>la</strong> convergencia <strong>su</strong>elen disminuir rápidamente<br />
al aumentar el tamaño <strong>de</strong>l bloque.<br />
Lo visto por el momento sería a nivel <strong>de</strong> un solo bloque. En conjunto el<br />
algoritmo que se sigue es:<br />
1.- For i=1,...,s Do , s= número <strong>de</strong> dominios existentes<br />
2.- Obtener los datos externos yi,ext<br />
3.- Calcu<strong>la</strong>r el residuo local:<br />
4.- Resolver<br />
5.- EndDo<br />
6.- Obtener<br />
ri = (b − Ax)i = bi − Aixi − Xiyi,ext. (3.31)<br />
Aiδi = ri<br />
s<br />
xnew = x + δi<br />
i=1<br />
(3.32)<br />
(3.33)<br />
Es <strong>de</strong>cir, en una iteración, cada <strong>su</strong>bdominio calcu<strong>la</strong>ría <strong>su</strong>s incógnitas<br />
locales y utilizaría para ello los valores <strong>de</strong> <strong>la</strong>s incógnitas externas obtenidos<br />
por los otros <strong>su</strong>bdominios en <strong>la</strong> iteración anterior. Al final <strong>de</strong> <strong>la</strong> iteración<br />
se produciría una actualización <strong>de</strong> <strong>la</strong> solución obteniendo así una nueva<br />
aproximación.<br />
Un caso a tener en cuenta sería <strong>la</strong> aplicación <strong>de</strong>l método <strong>de</strong> Jacobi con<br />
so<strong>la</strong>pamiento. Utilizar so<strong>la</strong>pamiento es una buena estrategia para reducir el<br />
número <strong>de</strong> iteraciones. Hay varias formas posibles <strong>de</strong> implementar el so<strong>la</strong>pamiento<br />
en <strong>la</strong>s iteraciones por bloque <strong>de</strong> Jacobi. Tomando como ejemplo
3.5. Librerías <strong>numéricas</strong> 57<br />
Figura 3.6: So<strong>la</strong>pamiento <strong>de</strong> dominios<br />
<strong>la</strong> figura 3.6 en <strong>la</strong> que se muestran tres <strong>su</strong>bdominios, vemos que en ciertas<br />
zonas (por ejemplo en <strong>la</strong> región triangu<strong>la</strong>r) los datos se so<strong>la</strong>pan tres veces y<br />
existirán por lo tanto tres versiones distintas <strong>de</strong> ellos, una por Pk, otra por<br />
Pj y una versión local asociada a Pi. Cuando se intercambian datos durante<br />
<strong>la</strong> fase <strong>de</strong> iteración po<strong>de</strong>mos reemp<strong>la</strong>zar <strong>la</strong> versión local <strong>de</strong> los datos por una<br />
externa o utilizar algún promedio <strong>de</strong> los datos <strong>de</strong> <strong>la</strong>s distintas versiones.<br />
Realizando un <strong>estudio</strong> <strong>de</strong>l código <strong>de</strong>sarrol<strong>la</strong>do en esta librería, el procedimiento<br />
a seguir sería el siguiente: el procesador 1 lee <strong>la</strong> matriz completa,<br />
particiona el grafo y reparte <strong>la</strong>s matrices locales a cada procesador. Una vez<br />
que cada uno recibe <strong>su</strong> <strong>su</strong>bmatriz, crean un vector <strong>de</strong> mapeado que contiene<br />
<strong>la</strong> lista nodo–procesador al que pertenece, <strong>de</strong>terminan <strong>la</strong> información<br />
frontera (esto es, número <strong>de</strong> procesadores adyacentes, lista <strong>de</strong> procesadores<br />
vecinos, nodos frontera internos or<strong>de</strong>nados por procesador, etc).<br />
Una vez formada <strong>la</strong> matriz local, que no será más que una forma reor<strong>de</strong>nada<br />
<strong>de</strong> <strong>la</strong>s ecuaciones iniciales, se hace una factorización incompleta LU<br />
<strong>de</strong> <strong>la</strong> matriz, como precondicionamiento. El paso siguiente es proponer una<br />
solución inicial y resolver el problema utilizando un resolutor (<strong>de</strong> los disponibles<br />
en <strong>la</strong> librería) precondicionado con el método Schwarz aditivo con<br />
so<strong>la</strong>pamiento.<br />
En <strong>la</strong> fase <strong>de</strong> solución hay dos casos posibles:<br />
Si el número máximo <strong>de</strong> iteraciones <strong>de</strong>l precondicionador (fijado como<br />
parámetro <strong>de</strong> entrada) es igual a cero, el resolutor interno re<strong>su</strong>elve<br />
simplemente una factorización LU precondicionada con ILU(fill,τ). Es<br />
<strong>de</strong>cir se implementa una factorización incompleta LU en <strong>la</strong> que se
58 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
(a) (b)<br />
Figura 3.7: (a) Etiquetado natural para una mal<strong>la</strong> bicolor , (b) Reor<strong>de</strong>namiento<br />
b<strong>la</strong>nco–negro <strong>de</strong> los nodos<br />
permite contro<strong>la</strong>r el llenado (fill) <strong>de</strong> <strong>la</strong> matriz, que tiene en cuenta<br />
a<strong>de</strong>más el parámetro τ que indica un valor mínimo a partir <strong>de</strong>l cual<br />
se permite el llenado.<br />
Si el número máximo <strong>de</strong> iteraciones <strong>de</strong>l precondicionador es mayor <strong>de</strong><br />
cero se re<strong>su</strong>elve el problema utilizando GMRES precondicionado con<br />
ILU(fill,τ). Este caso se utiliza sólo cuando el resolutor elegido es el<br />
FGMRES, que permite <strong>la</strong> variación <strong>de</strong>l precondicionador en cada paso.<br />
Método Schwarz multiplicativo<br />
La versión implementada en esta librería es un algoritmo <strong>de</strong> Gauss–<br />
Sei<strong>de</strong>l por bloques multicolor. Éste método pue<strong>de</strong> verse como una secuencia<br />
<strong>de</strong> eliminación <strong>de</strong> los componentes <strong>de</strong>l residuo <strong>de</strong> los sistemas locales a cada<br />
procesador. Cada eliminación da lugar a una corrección <strong>de</strong> <strong>la</strong>s variables locales<br />
<strong>de</strong>l vector incógnita, y posteriormente a <strong>la</strong> corrección <strong>de</strong>l vector residuo<br />
global.<br />
Es preciso tener un criterio <strong>de</strong> or<strong>de</strong>namiento global <strong>de</strong> los <strong>su</strong>bdominios<br />
<strong>de</strong> modo que <strong>su</strong>bdominios vecinos tengan etiquetas diferentes. La opción<br />
seleccionada en este caso, el or<strong>de</strong>namiento multicolor, maximiza el paralelismo.<br />
El or<strong>de</strong>namiento multicolor consiste en colorear un grafo, <strong>de</strong> tal forma<br />
que no haya dos nodos adyacentes <strong>de</strong>l mismo color. Su objetivo es <strong>la</strong> obtención<br />
<strong>de</strong> un grafo que utilice el menor número posible <strong>de</strong> colores. Para<br />
explicarlo con más <strong>de</strong>talle voy a <strong>de</strong>scribir el caso más simple, en el que sólo<br />
tenemos dos colores, b<strong>la</strong>nco y negro.<br />
El grafo <strong>de</strong> partida nos muestra el etiquetado natural en el caso <strong>de</strong> nodos<br />
adyacentes <strong>de</strong> colores distintos (figura 3.7(a)). En el se pue<strong>de</strong> ver que los<br />
colores están alternados y <strong>la</strong> numeración es consecutiva. A continuación se
3.5. Librerías <strong>numéricas</strong> 59<br />
modifica el etiquetado <strong>de</strong> los nodos numerando primero todos los nodos <strong>de</strong><br />
un color para a continuación hacer lo mismo con los <strong>de</strong>l otro (figura3.7(b)).<br />
Como los nodos <strong>de</strong> un mismo color no estarán acop<strong>la</strong>dos entre sí, el sistema<br />
re<strong>su</strong>ltante <strong>de</strong> este reor<strong>de</strong>namiento tendrá <strong>la</strong> estructura:<br />
<br />
D1 F<br />
E D2<br />
<br />
x1<br />
x2<br />
<br />
=<br />
<br />
b1<br />
b2<br />
<br />
(3.34)<br />
en <strong>la</strong> que D1 y D2 son matrices diagonales.<br />
En nuestro caso concreto, utilizamos el or<strong>de</strong>namiento multicolor en un<br />
método basado en <strong>de</strong>scomposición <strong>de</strong> dominios, dividiendo para ello el sistema<br />
en tantos <strong>su</strong>bdominios como número <strong>de</strong> procesadores, coloreándolos<br />
<strong>de</strong> tal forma que <strong>su</strong>bdominios vecinos tengan colores distintos. Así todos<br />
los procesadores <strong>de</strong> un mismo color podrían computar <strong>su</strong>s partes locales<br />
<strong>de</strong>l vector solución en paralelo porque no existe ninguna <strong>de</strong>pen<strong>de</strong>ncia entre<br />
el<strong>la</strong>s. Al finalizar enviarían los valores obtenidos a <strong>su</strong>s vecinos, permitiendo<br />
así que otro color empiece <strong>su</strong> fase <strong>de</strong> computación.<br />
Así, el reor<strong>de</strong>namiento multicolor aplica un algoritmo que tiene el siguiente<br />
esquema:<br />
1.- For col=1,...,numcolor Do<br />
2.- If (col.eq.mycol) then<br />
3.- Obtener los datos externos yi,ext<br />
4.- Calcu<strong>la</strong>r el residuo local:<br />
5.- Resolver<br />
6.- Actualizar <strong>la</strong> solución:<br />
ri = (b − Ax)i<br />
Aiδi = ri<br />
xi = xi + δi<br />
(3.35)<br />
(3.36)<br />
(3.37)<br />
7.- EndIf<br />
siendo numcolor el número total <strong>de</strong> colores.<br />
Esta implementación pue<strong>de</strong> permitir también so<strong>la</strong>pe entre los dominios,<br />
un parámetro <strong>de</strong> re<strong>la</strong>jación w, etc.<br />
Un problema asociado con el or<strong>de</strong>namiento multicolor es el hecho <strong>de</strong> que<br />
si los <strong>su</strong>bdominios asociados con un color dado están activos, todos los otros<br />
<strong>su</strong>bdominios <strong>de</strong>berán estar inactivos, limitando <strong>la</strong> eficiencia alcanzable por<br />
1/numcolor. Para solucionar esto, po<strong>de</strong>mos dividir <strong>la</strong> matriz local en dos
60 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
bloques, el primero asociado a los nodos internos y el segundo asociado a<br />
los nodos frontera.<br />
De este modo para <strong>la</strong> matriz local Ai tendríamos,<br />
Ai =<br />
<br />
Bi Ei<br />
Fi Ci<br />
<br />
=<br />
<br />
Bi 0<br />
0 Ci<br />
<br />
+<br />
<br />
0 Ei<br />
Fi 0<br />
<br />
(3.38)<br />
Utilizando esta técnica <strong>la</strong>s computaciones que involucran a los nodos<br />
internos <strong>de</strong> cada <strong>su</strong>bdominio pue<strong>de</strong>n ser realizadas en paralelo, <strong>de</strong> modo que<br />
el límite <strong>de</strong> <strong>la</strong> eficiencia antes establecido se aumenta.<br />
El código empleado en <strong>la</strong> librería para este caso particu<strong>la</strong>r es practicamente<br />
idéntico al explicado en el apartado anterior para <strong>la</strong> iteración <strong>de</strong> Jacobi<br />
por bloques, aunque en este caso aparece una rutina diferente: multicD,<br />
que será <strong>la</strong> encargada <strong>de</strong>l or<strong>de</strong>namiento multicolor. El algoritmo empleado<br />
en <strong>la</strong> implementación <strong>de</strong> esta rutina está basado en una or<strong>de</strong>nación topológica<br />
tal que a nivel <strong>de</strong> programación el paralelismo sea <strong>de</strong>l or<strong>de</strong>n <strong>de</strong>l diámetro<br />
<strong>de</strong>l grafo. La rutina multicD proporciona el número <strong>de</strong> colores distintos asignados<br />
a los procesadores adyacentes y el color asignado al procesador local.<br />
En el caso <strong>de</strong>l resolutor interno, se l<strong>la</strong>man a <strong>la</strong>s rutinas msorlu (msorlut)<br />
que re<strong>su</strong>elven el sistema por medio <strong>de</strong> una factorización incompleta LU <strong>de</strong><br />
<strong>la</strong> matriz (o <strong>de</strong> <strong>su</strong> traspuesta).<br />
Des<strong>de</strong> el punto <strong>de</strong> vista matemático <strong>la</strong> diferencia existente entre <strong>la</strong>s iteraciones<br />
por bloques <strong>de</strong> Gauss–Sei<strong>de</strong>l y Jacobi es mínima. Gauss–Sei<strong>de</strong>l actualiza<br />
inmediatamente (nada más obtener<strong>la</strong>s) <strong>la</strong>s componentes corregidas en<br />
el paso i <strong>de</strong> una cierta iteración y utiliza <strong>la</strong> solución aproximada actualizada<br />
para computar el residuo necesario para corregir <strong>la</strong>s siguientes componentes<br />
a calcu<strong>la</strong>r en esa iteración. Mientras tanto, <strong>la</strong> iteración <strong>de</strong> Jacobi utiliza <strong>la</strong><br />
misma aproximación antigua <strong>de</strong>l vector solución durante toda <strong>la</strong> iteración.<br />
Métodos basados en el complemento <strong>de</strong> Schur<br />
Estas técnicas se refieren a métodos que sólo trabajan sobre <strong>la</strong>s variables<br />
<strong>de</strong> interfaz, utilizando implícitamente <strong>la</strong>s variables internas como variables<br />
intermedias. En este caso se parte <strong>de</strong> un particionamiento <strong>de</strong> <strong>la</strong> matriz basado<br />
en vértices. L<strong>la</strong>maremos aristas <strong>de</strong> interfaz a todas <strong>la</strong>s aristas que unen<br />
vértices que no pertenecen al mismo <strong>su</strong>bdominio, siendo los vértices <strong>de</strong> interfaz<br />
aquellos que en un <strong>su</strong>bdominio dado son adyacentes a una arista <strong>de</strong><br />
interfaz. Un vértice no es compartido por 2 particiones con <strong>la</strong> excepción<br />
<strong>de</strong> que exista so<strong>la</strong>pamiento entre <strong>su</strong>bdominios. Este tipo <strong>de</strong> particionamiento<br />
es totalmente diferente al realizado en <strong>la</strong> figura 3.3(a), en <strong>la</strong> que si dos
3.5. Librerías <strong>numéricas</strong> 61<br />
(a) (b)<br />
Figura 3.8: (a)Mal<strong>la</strong> asociada a un <strong>su</strong>bdominio dividido en tres <strong>su</strong>bdominios<br />
según un particionamiento basado en vértice, (b) Matriz asociada a <strong>la</strong> mal<strong>la</strong><br />
anterior<br />
vértices están acop<strong>la</strong>dos tienen que pertenecer al mismo <strong>su</strong>bdominio (particionamiento<br />
basado en arista).<br />
Un ejemplo <strong>de</strong> particionamiento basado en vértices se encuentra en <strong>la</strong><br />
figura 3.8(a), los vértices <strong>de</strong> interfaz para el <strong>su</strong>bdominio 1 (parte inferior<br />
<strong>de</strong> <strong>la</strong> figura, cuadrado izquierdo) son aquellos etiquetados <strong>de</strong>s<strong>de</strong> el 10 al<br />
16. La matriz re<strong>su</strong>ltante (figura 3.8(b)) es diferente <strong>de</strong> <strong>la</strong> obtenida con un<br />
particionamiento por aristas (gráfica 3.3), puesto que en esta ocasión los<br />
nodos <strong>de</strong> interfaz no se numeran al final en el etiquetado global, sino que se<br />
numeran como los últimos nodos <strong>de</strong> cada <strong>su</strong>bdominio.<br />
Po<strong>de</strong>mos escribir el sistema basado en este nuevo etiquetado. La matriz<br />
asociada con el particionamiento <strong>de</strong> <strong>la</strong>s variables en <strong>su</strong>bdominios tendrá una<br />
estructura <strong>de</strong> bloques con un número <strong>de</strong> <strong>su</strong>bdominios s . Si tomamos como<br />
ejemplo <strong>la</strong> figura 3.8(b), s = 3 y <strong>la</strong> matriz tendrá una estructura <strong>de</strong> bloques<br />
<strong>de</strong> <strong>la</strong> forma:<br />
A =<br />
⎛<br />
⎜<br />
⎝<br />
A1 A12 A13<br />
A21 A2 A23<br />
A31 A32 A3<br />
En cada <strong>su</strong>bdominio <strong>la</strong>s variables serán:<br />
zi =<br />
<br />
xi<br />
yi<br />
<br />
⎞<br />
⎟<br />
⎠ (3.39)<br />
(3.40)<br />
representando xi los nodos internos y yi los nodos <strong>de</strong> interfaz asociados con<br />
el <strong>su</strong>bdominio i. Cada matriz Ai será <strong>la</strong> matriz local <strong>de</strong>l <strong>su</strong>bdominio i, siendo
62 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
<strong>su</strong> estructura:<br />
Ai =<br />
<br />
Bi Ei<br />
Fi Ci<br />
<br />
(3.41)<br />
don<strong>de</strong> Bi representa <strong>la</strong> matriz asociada con los nodos internos <strong>de</strong>l <strong>su</strong>bdomino<br />
i, Ei y Fi representan los acop<strong>la</strong>mientos <strong>de</strong> los nodos internos con los nodos<br />
<strong>de</strong> interfaz, por último Ci es <strong>la</strong> parte local <strong>de</strong> <strong>la</strong> matriz <strong>de</strong> interfaz C y<br />
representa el acop<strong>la</strong>miento entre los nodos locales <strong>de</strong> interfaz.<br />
Observando <strong>la</strong> matriz <strong>de</strong> <strong>la</strong> figura 3.8(b) se encuentra que en <strong>la</strong> estructura<br />
<strong>de</strong> los bloques Aij con j = i se encuentra un <strong>su</strong>b–bloque <strong>de</strong> ceros en <strong>la</strong> parte<br />
que actúa sobre <strong>la</strong> variable xj. Esto es lo esperado puesto que xi y xj no<br />
están acop<strong>la</strong>dos. Por lo tanto:<br />
zi =<br />
<br />
0<br />
Eij<br />
<br />
(3.42)<br />
La mayoría <strong>de</strong> <strong>la</strong>s matrices Eij son cero, puesto que sólo los índices j <strong>de</strong> los<br />
<strong>su</strong>bdominios que tengan acop<strong>la</strong>miento con el <strong>su</strong>bdominio i presentarán un<br />
Eij = 0. Por lo tanto <strong>la</strong> parte <strong>de</strong>l sistema lineal que es local al <strong>su</strong>bdominio<br />
i es <strong>de</strong> <strong>la</strong> forma:<br />
Bixi + Eiyi = fi (3.43)<br />
Fixi + Ciyi + <br />
j∈Ni Eijyj = gi (3.44)<br />
El término Eijyj es <strong>la</strong> contribución a <strong>la</strong> ecuación <strong>de</strong>l <strong>su</strong>bdominio vecino j<br />
y Ni es el conjunto <strong>de</strong> <strong>su</strong>bdominios adyacentes al i. Po<strong>de</strong>mos eliminar <strong>la</strong><br />
variable xi <strong>de</strong>l sistema, extrayéndo<strong>la</strong> <strong>de</strong> <strong>la</strong> ecuación 3.43:<br />
j∈Ni<br />
xi = B −1<br />
i (fi − Eiyi) (3.45)<br />
y <strong>su</strong>stituyéndo<strong>la</strong> en <strong>la</strong> ecuación 3.44:<br />
<br />
Ci − FiB −1<br />
<br />
i yi + <br />
Eijyj = gi − FiB −1<br />
i fi i = 1,...,s (3.46)<br />
Al primer término <strong>de</strong> <strong>la</strong> ecuación 3.46 se le <strong>de</strong>nomina matriz <strong>de</strong> complemento<br />
<strong>de</strong> Schur local Si = Ci − FiB −1<br />
i Ei. Tras resolver <strong>la</strong> ecuación anterior se<br />
obtendrían los valores en los nodos <strong>de</strong> <strong>la</strong> interfaz yi para una cierta iteración<br />
(k + 1), utilizando valores <strong>de</strong> los nodos frontera obtenidos en <strong>la</strong> iteración<br />
anterior, es <strong>de</strong>cir:<br />
y (k+1)<br />
i<br />
= S −1<br />
i<br />
⎡<br />
⎣gi − FiB −1<br />
i fi − <br />
j∈Ni<br />
Eijy (k)<br />
j<br />
⎤<br />
⎦ (3.47)
3.5. Librerías <strong>numéricas</strong> 63<br />
que son <strong>su</strong>stituidos a continuación en <strong>la</strong> ecuación 3.45 para obtener los valores<br />
<strong>de</strong> <strong>la</strong>s variables internas xi en <strong>la</strong> iteración (k + 1). Por lo tanto el<br />
procedimiento a seguir compren<strong>de</strong> tres pasos básicos:<br />
1. Calcu<strong>la</strong>r el vector in<strong>de</strong>pendiente g ′ = g − FB −1 f.<br />
2. Resolver el sistema reducido a través <strong>de</strong> un método iterativo, como<br />
pue<strong>de</strong> ser un método basado en <strong>su</strong>bespacios <strong>de</strong> Krylov (por ejemplo<br />
GMRES), obteniendo así el vector y.<br />
3. Obtener x vía x = B −1 (f − Ey).<br />
Para todos los <strong>su</strong>bdominios <strong>la</strong>s ecuaciones 3.46 se convierten en un<br />
sistema <strong>de</strong> ecuaciones que implican sólo a los puntos <strong>de</strong> interfaz yj con<br />
j = 1,2,...,s, siendo s el número <strong>de</strong> <strong>su</strong>bdominios. Este sistema presenta una<br />
estructura por bloques asociada al vector <strong>de</strong> incógnitas <strong>de</strong> cada <strong>su</strong>bdominio,<br />
don<strong>de</strong> los bloques <strong>de</strong> <strong>la</strong> diagonal, conocidos como matrices Si, son generalmente<br />
<strong>de</strong>nsos mientras que los bloques Eij, correspondientes a <strong>la</strong> re<strong>la</strong>ción<br />
entre incógnitas <strong>de</strong>l <strong>su</strong>bdominio i–ésimo con <strong>la</strong>s <strong>de</strong>l j–ésimo, son dispersos.<br />
De hecho Eij = 0 sólo si existe alguna ecuación que los acople. La estructura<br />
<strong>de</strong> dicha matriz sería <strong>la</strong> siguiente:<br />
⎛<br />
⎜<br />
S = ⎜<br />
⎝<br />
S1 E12 E13 ... E1s<br />
E21 S2 E23 ... E2s<br />
E31 E32 S3 ... E3s<br />
.<br />
.<br />
.<br />
. ..<br />
Es1 Es2 Es3 ... Ss<br />
.<br />
⎞<br />
⎟<br />
⎠<br />
(3.48)<br />
La estructura <strong>de</strong>l complemento global <strong>de</strong> Schur S se obtiene teniendo en<br />
cuenta que para particionamientos basados en vértice, <strong>la</strong> matriz <strong>de</strong> complemento<br />
<strong>de</strong> Schur se pue<strong>de</strong> formar a partir <strong>de</strong> <strong>la</strong>s matrices <strong>de</strong> complemento <strong>de</strong><br />
Schur local (<strong>la</strong>s Si) y <strong>la</strong> información interfaz–interfaz (los Eij).<br />
3.5.3. SuperLU<br />
La librería SuperLU [DGL99] fue <strong>de</strong>sarrol<strong>la</strong>da entre NERSC (National<br />
Energy Research Scientific Computing Center) y <strong>la</strong> Universidad <strong>de</strong> Berkeley.<br />
Tiene como objetivo <strong>la</strong> resolución <strong>de</strong> una factorización LU completa en<br />
diversas arquitecturas. Se utiliza generalmente en <strong>la</strong> solución directa <strong>de</strong> gran<strong>de</strong>s<br />
sistemas dispersos y no–simétricos <strong>de</strong> ecuaciones lineales en máquinas<br />
<strong>de</strong> alto rendimiento. Está formada por los siguientes módulos:
64 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
SuperLU Secuencial: diseñada para procesadores secuenciales con uno<br />
o más niveles en <strong>la</strong> jerarquía <strong>de</strong> memoria (cachés).<br />
SuperLU Multithrea<strong>de</strong>d: p<strong>la</strong>nteada para multiprocesadores <strong>de</strong> memoria<br />
compartida.<br />
SuperLU Distribuida: está diseñada para procesadores paralelos <strong>de</strong><br />
memoria distribuida.<br />
En nuestro caso utilizamos el módulo SuperLU Distribuida. Está implementada<br />
en ANSI C, aunque es sencillo compaginar<strong>la</strong> con Fortran, y utiliza MPI<br />
para <strong>la</strong>s comunicaciones, siendo <strong>su</strong> mo<strong>de</strong>lo <strong>de</strong> programación SPMD. La librería<br />
incluye rutinas que le permiten manejar matrices tanto reales como<br />
complejas en doble precisión. Incorpora una serie <strong>de</strong> i<strong>de</strong>as algorítmicas <strong>de</strong>sarrol<strong>la</strong>das<br />
recientemente, que explotan <strong>la</strong>s características <strong>de</strong> <strong>la</strong>s arquitecturas<br />
<strong>de</strong> computadores mo<strong>de</strong>rnas, particu<strong>la</strong>rmente <strong>la</strong> organización multinivel<br />
<strong>de</strong> <strong>la</strong> caché. Pue<strong>de</strong> utilizarse con un número <strong>de</strong> procesadores elevado, alcanzándose<br />
una tasa <strong>de</strong> factorización <strong>de</strong> 10.2 Gigaflops en un Cray T2E <strong>de</strong><br />
512 procesadores. A continuación se <strong>de</strong>scribe <strong>su</strong> algoritmo básico <strong>de</strong> funcionamiento:<br />
1. Equilibrar <strong>la</strong> matriz A: computar <strong>la</strong>s matrices diagonales Dr y Dc<br />
<strong>de</strong> tal forma que A = DrADc esté mejor condicionada, es <strong>de</strong>cir que<br />
A −1 sea menos sensible a perturbaciones <strong>de</strong> lo que sería A −1 .<br />
2. Reor<strong>de</strong>nar <strong>la</strong>s fi<strong>la</strong>s <strong>de</strong> A: reemp<strong>la</strong>zar A por A ′ = Pr A, don<strong>de</strong> Pr es<br />
<strong>la</strong> matriz <strong>de</strong> permutación.<br />
3. Or<strong>de</strong>nar <strong>la</strong>s columnas <strong>de</strong> A ′ : para incrementar <strong>la</strong> dispersidad <strong>de</strong><br />
los factores L y U computados, e incrementar el paralelismo. En otras<br />
pa<strong>la</strong>bras, reemp<strong>la</strong>zar A ′ por A ′′ = Pc AP T c .<br />
4. Computar <strong>la</strong> factorización LU <strong>de</strong> A ′′<br />
5. Resolver el sistema utilizando los factores triangu<strong>la</strong>res computados.<br />
6. Computar los márgenes <strong>de</strong> error.<br />
La matriz <strong>de</strong> entrada A se encuentra distribuida entre los procesadores,<br />
que utilizan una distribución basada en bloques <strong>de</strong> fi<strong>la</strong>s. Es <strong>de</strong>cir, cada<br />
procesador posee un bloque <strong>de</strong> fi<strong>la</strong>s consecutivas <strong>de</strong> A. En el caso <strong>de</strong> <strong>la</strong>s<br />
matrices L y U po<strong>de</strong>mos <strong>de</strong>cir que están divididas entre todos los procesadores<br />
por medio <strong>de</strong> un mapeado cíclico por bloques cuyo esquema sigue
3.5. Librerías <strong>numéricas</strong> 65<br />
Figura 3.9: Estructura <strong>de</strong> datos para <strong>la</strong>s matrices L y U<br />
el ejemplo <strong>de</strong> <strong>la</strong> mal<strong>la</strong> <strong>de</strong> procesos <strong>de</strong> <strong>la</strong> figura 3.9. El tamaño concreto <strong>de</strong><br />
cada asignación <strong>de</strong> bloques a procesadores <strong>de</strong>pen<strong>de</strong> <strong>de</strong> <strong>la</strong> estructura <strong>de</strong> no<br />
ceros <strong>de</strong> <strong>la</strong> diagonal (ver figura 3.9). Todos los bloques diagonales serán cuadrados<br />
y contendrán sólo elementos no nulos, requisito no exigible para los<br />
bloques no diagonales. Al utilizar un mapeado cíclico por bloques se <strong>de</strong>sacop<strong>la</strong>n<br />
los procesadores en fi<strong>la</strong>s para <strong>la</strong> matriz L y en columnas para <strong>la</strong> matriz<br />
U. En este mapeado 2D, cada bloque <strong>de</strong> columna <strong>de</strong> L pertenece a más <strong>de</strong><br />
un procesador, por ejemplo en <strong>la</strong> figura 3.9 el segundo bloque <strong>de</strong> columna<br />
pertenece a los procesos {1,4}. De él, el proceso 4 sólo tiene dos bloques con<br />
elementos no nulos, que no son contiguos en <strong>la</strong> matriz global. El esquema<br />
representado en <strong>la</strong> parte <strong>de</strong>recha <strong>de</strong> <strong>la</strong> figura 3.9 representa <strong>la</strong> estructura <strong>de</strong><br />
datos empleada para almacenar los bloques <strong>de</strong> no ceros en un procesador.<br />
A<strong>de</strong>más <strong>de</strong> los valores numéricos almacenados en un vector por columnas,<br />
nzval, necesitamos información para interpretar <strong>la</strong> localización y el <strong>su</strong>bíndice<br />
<strong>de</strong> fi<strong>la</strong> <strong>de</strong> cada no cero, esto se almacena en un vector <strong>de</strong> enteros l<strong>la</strong>mado<br />
in<strong>de</strong>x que incluye información para <strong>la</strong> columna <strong>de</strong> bloques completa y para<br />
cada bloque individual <strong>de</strong> el<strong>la</strong>. Muchos bloques no diagonales son ceros y<br />
por lo tanto no son almacenados, y tampoco incluimos los ceros en un bloque<br />
<strong>de</strong> no ceros. Por otro <strong>la</strong>do tanto los triángulos inferior y <strong>su</strong>perior que<br />
forman los bloques <strong>de</strong> <strong>la</strong> diagonal se almacenan en <strong>la</strong> estructura <strong>de</strong> datos <strong>de</strong><br />
L. Para U se utiliza un almacenamiento orientado por bloques fi<strong>la</strong>s, aunque<br />
los valores numéricos <strong>de</strong>ntro <strong>de</strong> cada bloque siguen siendo por columnas. De<br />
forma simi<strong>la</strong>r a L también empleamos un par <strong>de</strong> vectores indice–nzval para
66 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
el almacenamiento <strong>de</strong> los bloques <strong>de</strong> fi<strong>la</strong>s <strong>de</strong> U.<br />
3.5.4. PETSc<br />
PETSc (Portable Extensible Toolkit for Scientific Computing)[BGMS99a,<br />
BGMS99b] es una librería utilizada en <strong>la</strong> resolución numérica <strong>de</strong> ecuaciones<br />
diferenciales parciales y problemas simi<strong>la</strong>res en computadoras <strong>de</strong> alto<br />
rendimiento. Contiene un conjunto <strong>de</strong> estructuras y rutinas que combinadas<br />
componen los bloques empleados en implementación <strong>de</strong> códigos para aplicaciones<br />
a gran esca<strong>la</strong> en or<strong>de</strong>nadores paralelos. Entre <strong>su</strong>s herramientas están<br />
incluidas un grupo <strong>de</strong> resolutores <strong>de</strong> ecuaciones lineales y no–lineales, que<br />
se pue<strong>de</strong>n utilizar en códigos escritos en Fortran, C y C++. Utiliza paso <strong>de</strong><br />
mensajes vía MPI y no a<strong>su</strong>me compartición física <strong>de</strong> datos o un espacio <strong>de</strong><br />
direcciones global. Alguno <strong>de</strong> los módulos <strong>de</strong> PETSc están re<strong>la</strong>cionados con:<br />
Conjuntos <strong>de</strong> índices, incluyendo permutaciones, renombrado, etc.<br />
Vectores.<br />
Matrices (generalmente dispersas).<br />
vectores distribuidos (útiles para paralelizar problemas basados en<br />
grids).<br />
Métodos <strong>de</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones lineales basados en<br />
<strong>su</strong>bespacios <strong>de</strong> Krylov.<br />
Precondicionadores.<br />
Resolutores no–lineales<br />
Marcadores <strong>de</strong> tiempo para resolver ecuaciones no lineales <strong>de</strong>pendientes<br />
<strong>de</strong>l tiempo.<br />
Cada módulo consiste en una interfaz abstracta y una o más implementaciones<br />
usando estructuras <strong>de</strong> datos particu<strong>la</strong>res, pue<strong>de</strong> <strong>de</strong>cirse que PETSc<br />
consiste en un conjunto <strong>de</strong> <strong>librerías</strong> (parecidas a <strong>la</strong>s c<strong>la</strong>ses <strong>de</strong> C++), cada<br />
una <strong>de</strong> el<strong>la</strong>s manipu<strong>la</strong> una familia <strong>de</strong> objetos (por ejemplo vectores), y <strong>la</strong>s<br />
operaciones que se pue<strong>de</strong>n realizar sobre estos objetos. Al estar escrita en<br />
un mo<strong>de</strong>lo orientado a objetos, todas <strong>la</strong>s estructuras <strong>de</strong> datos están ocultas<br />
para el u<strong>su</strong>ario. Su infraestructura crea una base para producir aplicaciones<br />
<strong>de</strong> gran esca<strong>la</strong>, por lo cual es útil consi<strong>de</strong>rar <strong>la</strong>s interre<strong>la</strong>ciones entre los<br />
diferentes módulos <strong>de</strong> PETSc. En <strong>la</strong> figura 3.10 se muestra un diagrama <strong>de</strong><br />
algunas <strong>de</strong> estas piezas, que <strong>de</strong>ja c<strong>la</strong>ra <strong>la</strong> estructura jerárquica <strong>de</strong> <strong>la</strong> librería,
3.5. Librerías <strong>numéricas</strong> 67<br />
Figura 3.10: Organización <strong>de</strong> <strong>la</strong> librería PETSc<br />
lo que permite al u<strong>su</strong>ario utilizar el nivel <strong>de</strong> abstracción más apropiado para<br />
un problema particu<strong>la</strong>r. En <strong>la</strong> figura 3.11 po<strong>de</strong>mos ver un breve esquema<br />
<strong>de</strong>l contenido <strong>de</strong> cada uno <strong>de</strong> los módulos que componen <strong>la</strong> librería.<br />
Las matrices se encuentran almacenadas por <strong>de</strong>fecto en formato RCS,<br />
aunque cabe <strong>la</strong> posibilidad <strong>de</strong> utilizar otros formatos, como pue<strong>de</strong>n ser BCRS<br />
(Block Compressed Row Storage) o BDS (Block Diagonal Storage), que puedan<br />
re<strong>su</strong>ltar más eficientes en problemas con múltiples grados <strong>de</strong> libertad<br />
por nodo. En <strong>la</strong> distribución parale<strong>la</strong> <strong>de</strong> <strong>la</strong> matriz cada proceso posee localmente<br />
una <strong>su</strong>bmatriz formada por fi<strong>la</strong>s contiguas en <strong>la</strong> matriz global.<br />
Siempre hay que tener en cuenta que <strong>la</strong>s estructuras <strong>de</strong> datos son internas,<br />
pasándose los distintos elementos a través <strong>de</strong> l<strong>la</strong>madas a funciones.<br />
Para <strong>la</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones lineales el objeto más importante<br />
es SLES, puesto que proporciona un acceso uniforme y eficiente a<br />
los resolutores <strong>de</strong> sistemas lineales, incluidos paralelos y secuenciales, directos<br />
e iterativos. Como <strong>la</strong> base <strong>de</strong> <strong>la</strong> mayoría <strong>de</strong> los códigos actuales para <strong>la</strong><br />
resolución iterativa <strong>de</strong> sistemas lineales se encuentra en <strong>la</strong> combinación <strong>de</strong><br />
un método <strong>de</strong> resolución basado en <strong>su</strong>bespacios <strong>de</strong> Krylov y un precondicionador,<br />
cada objeto SLES contiene normalmente a otros dos objetos:<br />
KSP (Krylov Space Method), formado por el método iterativo y cuyo<br />
contexto contiene información re<strong>la</strong>cionada con el método elegido.<br />
PC (Preconditioners), contiene información sobre los parámetros re<strong>la</strong>tivos<br />
al precondicionador elegido.
68 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Figura 3.11: Estructura <strong>de</strong> <strong>la</strong> librería PETSc<br />
Los métodos iterativos <strong>de</strong> los que dispone esta librería son: Richardson,<br />
Chebyshev, CG, GMRES, TCQMR, BCGS, CGS, TFQMR, CR y LSQR.<br />
Estos métodos iterativos se <strong>su</strong>elen emplear en combinación con un precondicionador,<br />
siendo posible utilizar: Jacobi, Jacobi por bloques, Gauss–Sei<strong>de</strong>l<br />
por bloques (pero sólo en el caso secuencial), SOR, ILU (sólo en el caso secuencial),<br />
Schwarz aditivo, una factorización completa (también se encuentra<br />
sólo disponible en el caso secuencial), <strong>la</strong> i<strong>de</strong>ntidad, y un precondicionamiento<br />
proporcionado por el u<strong>su</strong>ario. Por <strong>de</strong>fecto, todas <strong>la</strong>s implementaciones KSP<br />
utilizan precondicionamiento por <strong>la</strong> izquierda. También existe <strong>la</strong> posibilidad<br />
<strong>de</strong> utilizar un precondicionamiento combinado, es <strong>de</strong>cir, utilizar una combinación<br />
<strong>de</strong> los precondicionadores o resolutores <strong>de</strong>finidos para lograr una<br />
eficiencia mejor que <strong>la</strong> obtenida con un único método, aunque en muchos<br />
casos utilizar un solo precondicionador es mejor que una combinación <strong>de</strong><br />
ellos.<br />
3.5.5. Aztec<br />
Aztec [HST95] es una librería iterativa que busca simplificar el proceso<br />
<strong>de</strong> paralelización cuando se re<strong>su</strong>elven sistemas lineales <strong>de</strong> ecuaciones. Dispo-
3.5. Librerías <strong>numéricas</strong> 69<br />
ne <strong>de</strong> una serie <strong>de</strong> herramientas <strong>de</strong> transformación <strong>de</strong> los datos que permiten<br />
una rápida creación <strong>de</strong> matrices dispersas distribuidas para una solución parale<strong>la</strong>.<br />
El uso <strong>de</strong> una matriz distribuida global permite al u<strong>su</strong>ario especificar<br />
fragmentos (diferentes fi<strong>la</strong>s para diferentes procesadores) <strong>de</strong> <strong>su</strong> matriz <strong>de</strong><br />
aplicación <strong>de</strong> igual forma que si estuviera trabajando en un caso secuencial<br />
(es <strong>de</strong>cir, utilizando un esquema <strong>de</strong> numeración global). Cuestiones como <strong>la</strong><br />
numeración local o los mensajes son ignorados por el u<strong>su</strong>ario, pero en cambio<br />
son computados por funciones <strong>de</strong> transformación automatizadas, así se<br />
obtiene un buen rendimiento utilizando técnicas estándar <strong>de</strong> memoria distribuida.<br />
Las <strong>su</strong>bmatrices etiquetadas localmente y los mensajes informativos<br />
computados por <strong>la</strong> función <strong>de</strong> transformación son conservados por cada procesador<br />
para que <strong>la</strong>s computaciones y comunicaciones <strong>de</strong> <strong>la</strong>s <strong>de</strong>pen<strong>de</strong>ncias<br />
<strong>de</strong> datos sean más rápidas.<br />
La librería está escrita en ANSI C estándar, y aunque pue<strong>de</strong> trabajar con<br />
matrices generales, el paquete fue diseñado para <strong>la</strong>s matrices que <strong>su</strong>rgen <strong>de</strong><br />
<strong>la</strong> aproximación <strong>de</strong> ecuaciones diferenciales parciales (PDEs). Aztec pue<strong>de</strong><br />
trabajar con dos formatos específicos <strong>de</strong> matrices dispersas, el formato MSR<br />
(Modified Sparse Row) o el VBR (Variable Block Row).<br />
Incluye una serie <strong>de</strong> métodos iterativos basados en <strong>su</strong>bespacios <strong>de</strong> Krylov<br />
para <strong>la</strong> resolución <strong>de</strong> sistemas <strong>de</strong> ecuaciones, así dispone <strong>de</strong> los siguientes<br />
resolutores: CG, GMRES, CGS, TFQMR, BCGSTAB, LU (válida sólo<br />
en el caso secuencial). Los métodos iterativos son utilizados conjuntamente<br />
con varios precondicionadores como pue<strong>de</strong>n ser: Jacobi por bloques, Gauss–<br />
Sei<strong>de</strong>l, series polinomiales <strong>de</strong> Neumann y métodos basados en <strong>de</strong>scomposición<br />
<strong>de</strong> dominios con so<strong>la</strong>pamiento (Schwarz aditivo). Otra opción a tener en<br />
cuenta, en el caso <strong>de</strong> escoger como precondicionamiento métodos basados en<br />
<strong>de</strong>scomposición <strong>de</strong> dominios, es el resolutor a utilizar en cada <strong>su</strong>bdominio.<br />
Entre <strong>la</strong>s posibilida<strong>de</strong>s en esta situación po<strong>de</strong>mos <strong>de</strong>stacar una factorización<br />
LU completa, una factorización incompleta LU con un cierto nivel <strong>de</strong> llenado<br />
y una factorización ILUT. Vamos a centrarnos en esta última factorización<br />
porque no utiliza <strong>la</strong>s mismas <strong>de</strong>finiciones que hemos visto anteriormente.<br />
Utiliza dos criterios para <strong>de</strong>terminar el número <strong>de</strong> no ceros a introducir en<br />
<strong>la</strong>s factorizaciones aproximadas re<strong>su</strong>ltantes, por un <strong>la</strong>do el parámetro ilut fill<br />
indica que <strong>la</strong> factorización re<strong>su</strong>ltante pue<strong>de</strong> contener como máximo ilut fill<br />
veces el número <strong>de</strong> no ceros <strong>de</strong> <strong>la</strong> matriz original. Por otro <strong>la</strong>do no se tienen<br />
en cuenta aquellos elementos <strong>de</strong> <strong>la</strong> factorización re<strong>su</strong>ltante cuyo valor<br />
sea inferior a un límite fijado (drop). Cuando este límite esté fijado a cero<br />
no se eliminará ningún elemento y sólo se tendrá en cuenta <strong>la</strong> contribución<br />
<strong>de</strong> ilut fill. Sin embargo, <strong>la</strong> utilización <strong>de</strong>l parámetro drop pue<strong>de</strong> implicar<br />
que <strong>la</strong> matriz re<strong>su</strong>ltante contenga un número significativamente menor <strong>de</strong>
70 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales<br />
Figura 3.12: Ejemplo <strong>de</strong> particionamiento <strong>de</strong> una mal<strong>la</strong> <strong>de</strong> elementos finitos<br />
elementos no nulos.<br />
Estructuras <strong>de</strong> datos<br />
A continuación se <strong>de</strong>scribirán los formatos <strong>de</strong> <strong>la</strong> matriz y <strong>de</strong> los vectores<br />
usados internamente por Aztec. El producto <strong>de</strong> <strong>la</strong> matriz dispersa por un<br />
vector y = Ax es el principal núcleo <strong>de</strong> computación <strong>de</strong> esta librería. Para<br />
realizar esta operación en paralelo los vectores x e y así como <strong>la</strong> matriz<br />
A <strong>de</strong>ben estar distribuidos a través <strong>de</strong> los procesadores. Cuando se realiza<br />
una operación que involucra a un vector, por ejemplo y, cada procesador<br />
computa sólo aquellos elementos (entradas particu<strong>la</strong>res <strong>de</strong> un vector) <strong>de</strong> y<br />
que tiene asignados. Estos elementos <strong>de</strong>l vector se encuentran almacenados<br />
explícitamente en el procesador y se <strong>de</strong>finen por medio <strong>de</strong> un conjunto <strong>de</strong><br />
índices a los que nos referiremos como conjunto <strong>de</strong> actualización <strong>de</strong>l procesador.<br />
El conjunto <strong>de</strong> actualización por <strong>su</strong> parte se divi<strong>de</strong> en dos <strong>su</strong>bconjuntos:<br />
interno y frontera. Un componente correspondiente a un índice en el<br />
<strong>su</strong>bconjunto interno se actualiza usando sólo información perteneciente al<br />
propio procesador, en cambio el <strong>su</strong>bconjunto frontera <strong>de</strong>fine elementos que<br />
requerirían valores <strong>de</strong> otros procesadores para po<strong>de</strong>r ser actualizados durante<br />
el producto matriz–vector. El conjunto <strong>de</strong> índices que i<strong>de</strong>ntifican los<br />
elementos exteriores al procesador necesarios para actualizar componentes<br />
<strong>de</strong>l conjunto frontera se <strong>de</strong>nominan externos y son obtenidos <strong>de</strong> otros procesadores<br />
vía comunicación mientras se realiza el producto matriz–vector.<br />
En <strong>la</strong> figura 3.12 se ilustra como un grupo <strong>de</strong> vértices en el particionamiento<br />
<strong>de</strong> una mal<strong>la</strong> pue<strong>de</strong>n utilizarse para <strong>de</strong>finir los diferentes conjuntos. Así, los
3.5. Librerías <strong>numéricas</strong> 71<br />
vértices seña<strong>la</strong>dos por un punto correspon<strong>de</strong>n a elementos internos al procesador<br />
p, los marcados por puntos resaltados por un círculo hacen referencia<br />
a elementos frontera para este mismo procesador. Estos dos tipos <strong>de</strong> puntos<br />
dan lugar al conjunto <strong>de</strong> actualización <strong>de</strong>l procesador p. Por último, los<br />
puntos resaltados por un rombo correspon<strong>de</strong>n a elementos externos a este<br />
procesador.<br />
En cuanto a <strong>la</strong>s matrices, cada procesador almacena un <strong>su</strong>bconjunto <strong>de</strong><br />
los elementos no–nulos <strong>de</strong> <strong>la</strong> matriz. En particu<strong>la</strong>r, cada procesador almacena<br />
sólo aquel<strong>la</strong>s fi<strong>la</strong>s que correspon<strong>de</strong>n a <strong>su</strong> conjunto <strong>de</strong> actualización.<br />
A<strong>de</strong>más el etiquetado local <strong>de</strong> los elementos <strong>de</strong> los vectores en un procesador<br />
específico induce un etiquetado <strong>de</strong> <strong>la</strong>s fi<strong>la</strong>s y columnas <strong>de</strong> <strong>la</strong> matriz.<br />
Es <strong>de</strong>cir, cada procesador contiene una <strong>su</strong>bmatriz cuyas entradas en fi<strong>la</strong>s y<br />
columnas correspon<strong>de</strong>n a variables <strong>de</strong>finidas en este procesador. Como se<br />
pue<strong>de</strong> observar <strong>la</strong> técnica utilizada en <strong>la</strong> librería Aztec para <strong>la</strong> formación <strong>de</strong><br />
<strong>la</strong>s estructuras <strong>de</strong> datos locales es simi<strong>la</strong>r a <strong>la</strong> <strong>de</strong>scrita anteriormente en el<br />
caso <strong>de</strong> PSPARSLIB.
72 Capítulo 3. Sistemas <strong>de</strong> ecuaciones lineales
Capítulo 4<br />
Re<strong>su</strong>ltados numéricos<br />
Las dimensiones <strong>de</strong> los dispositivos semiconductores actuales continúan<br />
reduciéndose drásticamente. A distancias inferiores a los 100nm los mo<strong>de</strong>los<br />
2D (que no tienen en cuenta <strong>la</strong> profundidad <strong>de</strong>l dispositivo) no re<strong>su</strong>ltan<br />
a<strong>de</strong>cuados para simu<strong>la</strong>r estos dispositivos, puesto que <strong>la</strong> tercera dimensión<br />
empieza a jugar un papel importante. Por ejemplo, el dopado <strong>de</strong>l dispositivo<br />
ya no pue<strong>de</strong> consi<strong>de</strong>rarse uniforme puesto que <strong>de</strong>bería tenerse en cuenta <strong>su</strong><br />
naturaleza atomística [Ase98]. Otro fenómeno que afecta particu<strong>la</strong>rmente a<br />
transistores HEMT basados en canales <strong>de</strong> In es <strong>la</strong> variación <strong>de</strong>l contenido<br />
<strong>de</strong> aleaciones ternarias que pue<strong>de</strong> aparecer a lo <strong>la</strong>rgo <strong>de</strong> una capa en <strong>la</strong><br />
estructura <strong>de</strong>l dispositivo. Para <strong>de</strong>scribir convenientemente este fenómeno<br />
es necesaria <strong>la</strong> construcción <strong>de</strong> un mo<strong>de</strong>lo 3D <strong>de</strong>l dispositivo [LKLGA03].<br />
El <strong>de</strong>sarrollo <strong>de</strong> simu<strong>la</strong>dores 3D eficientes es fundamental cuando se preten<strong>de</strong><br />
estudiar el efecto <strong>de</strong> <strong>la</strong>s fluctuaciones [ABW02, Ase01, AS99] tanto<br />
en el dopado como en <strong>la</strong> composición, cuando estos dispositivos se esca<strong>la</strong>n<br />
a dimensiones <strong>su</strong>bmicrométricas [KRA + 02]. Para po<strong>de</strong>r realizar un <strong>estudio</strong><br />
estadístico a<strong>de</strong>cuado es preciso realizar un consi<strong>de</strong>rable número <strong>de</strong> simu<strong>la</strong>ciones,<br />
por lo cual es fundamental reducir el tiempo <strong>de</strong> simu<strong>la</strong>ción <strong>de</strong> cada<br />
dispositivo lo máximo posible, y así po<strong>de</strong>r obtener re<strong>su</strong>ltados globales en<br />
un tiempo razonable. La parte <strong>de</strong> resolución <strong>de</strong> los sistemas <strong>de</strong> ecuaciones<br />
lineales que provienen <strong>de</strong>l mo<strong>de</strong>lo <strong>de</strong> arrastre–difusión es <strong>la</strong> que más tiempo<br />
<strong>de</strong> computación emplea, siendo por ello fundamental encontrar los mejores<br />
métodos <strong>de</strong> resolución posibles.<br />
En este capítulo <strong>de</strong>scribiremos en primer lugar el simu<strong>la</strong>dor tridimensional<br />
<strong>de</strong> dispositivos pHEMT utilizado, para a continuación mostrar los<br />
re<strong>su</strong>ltados ofrecidos por cada una <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> introducidas en el capítulo<br />
anterior.<br />
73
74 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
4.1. Descripción <strong>de</strong>l simu<strong>la</strong>dor<br />
El <strong>de</strong>sarrollo <strong>de</strong> simu<strong>la</strong>dores <strong>de</strong> dispositivos en tres dimensiones requiere<br />
computadores con gran memoria y alta velocidad <strong>de</strong> cálculo. Esto es <strong>de</strong>bido<br />
a que el tiempo <strong>de</strong> cálculo se incrementa exponencialmente con el número<br />
<strong>de</strong> nodos presente en <strong>la</strong> mal<strong>la</strong> <strong>de</strong>l dispositivo. El simu<strong>la</strong>dor 3D <strong>de</strong> dispositivos<br />
pHEMT que hemos utilizado ha sido <strong>de</strong>sarrol<strong>la</strong>do en nuestro grupo en<br />
co<strong>la</strong>boración con el Device Mo<strong>de</strong>lling Group <strong>de</strong> <strong>la</strong> Universidad <strong>de</strong> G<strong>la</strong>sgow.<br />
Está basado en el mo<strong>de</strong>lo <strong>de</strong> arrastre–difusión, aplicando el método <strong>de</strong> elementos<br />
finitos para discretizar <strong>la</strong>s ecuaciones <strong>de</strong> Poisson y <strong>de</strong> continuidad<br />
<strong>de</strong> los electrones [Sel84] por medio <strong>de</strong> tetraedros [Zie77, BCO83].<br />
El simu<strong>la</strong>dor fue <strong>de</strong>sarrol<strong>la</strong>do para computadores paralelos <strong>de</strong> memoria<br />
distribuida, usando <strong>la</strong> estrategia MIMD bajo el paradigma SPMD. Sus ca-<br />
I D (A)<br />
0.06<br />
0.05<br />
0.04<br />
0.03<br />
0.02<br />
0.01<br />
0<br />
0 0.25 0.5 0.75 1 1.25 1.5 1.75 2<br />
V D (V)<br />
IG=-1.0 V<br />
IG=-0.8 V<br />
IG=-0.6 V<br />
IG=-0.4 V<br />
IG=-0.2 V<br />
IG=-0.0 V<br />
IG=0.2 V<br />
IG=0.4 V<br />
Figura 4.1: Curva característica experimental <strong>de</strong>l PHEMT <strong>de</strong> 120nm<br />
Tab<strong>la</strong> 4.1: Dopados y dimensiones <strong>de</strong>l PHEMT<br />
Caps 4.0 10 18<br />
Spacer up 1.0 10 14<br />
Delta doping 1.75 10 19<br />
Spacer down 1.0 10 14<br />
Channel 2.0 10 14<br />
Buffer 1.0 10 14<br />
Neff (cm −3 ) ∆ X(µm) ∆ Y(µm) ∆ Z(µm)<br />
0.690 100.0 0.030<br />
1.6 100.0 0.017<br />
1.6 100.0 0.002<br />
1.6 100.0 0.007<br />
1.6 100.0 0.010<br />
1.6 100.0 0.500
4.1. Descripción <strong>de</strong>l simu<strong>la</strong>dor 75<br />
Figura 4.2: Potencial electrostático en el equilibrio<br />
pacida<strong>de</strong>s se testearon mo<strong>de</strong><strong>la</strong>ndo un HEMT pseudomórfico <strong>de</strong> 120nm con<br />
bajo contenido en Indio. La curva característica I–V lograda con el simu<strong>la</strong>dor<br />
ha sido comparada con los datos obtenidos para el pHEMT <strong>de</strong> 120nm<br />
<strong>de</strong> longitud <strong>de</strong> puerta, diseñado y fabricado por el Centro <strong>de</strong> Investigación<br />
Nanotecnológica <strong>de</strong> <strong>la</strong> Universidad <strong>de</strong> G<strong>la</strong>sgow [KRA + 02]. Se calibró el simu<strong>la</strong>dor<br />
a través <strong>de</strong> re<strong>su</strong>ltados experimentales [LKAG03a, LKAG03b], <strong>de</strong><br />
un simu<strong>la</strong>dor Montecarlo 2D [KRA + 02] y <strong>de</strong>l simu<strong>la</strong>dor comercial MEDICI<br />
[Syn03].<br />
El dispositivo está compuesto <strong>de</strong> una puerta en forma <strong>de</strong> T, una capa <strong>de</strong><br />
GaAs <strong>de</strong> 30nm <strong>de</strong> grosor fuertemente dopada tipo n (4 ·10 18 cm −3 ) utilizada<br />
como fuente y drenador, una capa <strong>de</strong> Al0,3Ga0,7As, una región dopada tipo<br />
δ con Si (<strong>de</strong> <strong>de</strong>nsidad 7 · 10 12 cm −3 ) en <strong>la</strong> parte <strong>su</strong>perior <strong>de</strong> otra capa <strong>de</strong><br />
7nm <strong>de</strong> grosor <strong>de</strong> Al0,3Ga0,7As, que actuando como capa espaciadora separa<br />
<strong>la</strong> capa con dopado tipo δ <strong>de</strong>l canal <strong>de</strong> 10nm <strong>de</strong> In0,2Ga0,8As. Toda <strong>la</strong><br />
estructura <strong>de</strong>l dispositivo se crece sobre una capa <strong>de</strong> 500nm grosor <strong>de</strong> GaAs.<br />
Las dimensiones y dopados <strong>de</strong>l pHEMT utilizado se muestran en <strong>la</strong> tab<strong>la</strong> 4.1.<br />
La curva característica ID − VD obtenida experimentalmente se representa<br />
en <strong>la</strong> figura 4.1.<br />
La figura 4.2 muestra el potencial electrostático en el equilibrio en <strong>la</strong>
76 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.3: Concentración <strong>de</strong> electrones en equilibrio<br />
Figura 4.4: Representación esquemática <strong>de</strong>l dispositvo PHEMT<br />
mal<strong>la</strong> 3D, encontrándose <strong>la</strong>s regiones críticas bajo <strong>la</strong> zona <strong>de</strong> puerta y en <strong>la</strong>s<br />
zonas <strong>de</strong> transición. Allí, el número <strong>de</strong> nodos en <strong>la</strong> mal<strong>la</strong> tiene que ser muy
4.1. Descripción <strong>de</strong>l simu<strong>la</strong>dor 77<br />
Figura 4.5: Mal<strong>la</strong> tetraédrica <strong>de</strong>l PHEMT <strong>de</strong> 120nm dividida en tres <strong>su</strong>bdominios<br />
elevado para captar correctamente los gradientes <strong>de</strong> potencial. En <strong>la</strong> figura<br />
4.3 se representa, en esca<strong>la</strong> semilogarítmica, <strong>la</strong> concentración <strong>de</strong> electrones<br />
en el equilibrio.<br />
La simu<strong>la</strong>ción <strong>de</strong> un dispositivo empieza con un preprocesado en el que<br />
generamos una mal<strong>la</strong> y leemos los ficheros <strong>de</strong> entrada [WHS89], que contienen<br />
los parámetros <strong>de</strong> <strong>la</strong> simu<strong>la</strong>ción. Una estructura <strong>de</strong> capas <strong>de</strong>l pHEMT<br />
(figura 4.4) es mal<strong>la</strong>da en tetraedros como se ilustra en <strong>la</strong> figura 4.5. Este<br />
mal<strong>la</strong>do es llevado a cabo con el programa QMG [Vav96], software que pue<strong>de</strong><br />
generar mal<strong>la</strong>s <strong>de</strong> tetraedros no estructurados, incluyendo un software<br />
<strong>de</strong> mo<strong>de</strong><strong>la</strong>do geométrico (el simu<strong>la</strong>dor propiamente dicho) y un resolutor <strong>de</strong><br />
elementos finitos.<br />
Usando este generador <strong>de</strong> mal<strong>la</strong>s tridimensional, basado en el algoritmo<br />
octree, se obtiene una mal<strong>la</strong> tetraédrica no estructurada para una geometría<br />
<strong>de</strong>l dispositivo dada. Aplicando una función <strong>de</strong> control <strong>de</strong> mal<strong>la</strong> se sitúan<br />
tetraedros más pequeños cerca <strong>de</strong> <strong>la</strong>s interfaces entre diferentes zonas <strong>de</strong>l<br />
transistor. En estas áreas situamos un gran número <strong>de</strong> nodos porque son <strong>la</strong>s<br />
zonas en <strong>la</strong>s que se da un mayor gradiente <strong>de</strong> <strong>la</strong>s variables <strong>de</strong>l problema.<br />
El programa QMG pue<strong>de</strong> exportar <strong>la</strong> información <strong>de</strong> <strong>la</strong> mal<strong>la</strong> en varios
78 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
formatos y generar el grafo <strong>de</strong> adyacencias <strong>de</strong> <strong>la</strong> matriz asociada. Aplicando<br />
el método <strong>de</strong> elementos finitos se generan los sistemas <strong>de</strong> ecuaciones no<br />
lineales correspondientes a <strong>la</strong>s ecuaciones <strong>de</strong> Poisson y <strong>de</strong> continuidad <strong>de</strong><br />
electrones. Por simplicidad no consi<strong>de</strong>ramos <strong>la</strong> ecuación <strong>de</strong> huecos pues <strong>su</strong><br />
influencia es mínima. Estos sistemas se linearizan aplicando el método <strong>de</strong><br />
Newton. Un paso importante en este proceso es el esca<strong>la</strong>do, que introduce<br />
cantida<strong>de</strong>s adimensionales y ais<strong>la</strong> los parámetros relevantes <strong>de</strong> los que <strong>de</strong>pen<strong>de</strong><br />
el mo<strong>de</strong>lo. Se utilizó el esca<strong>la</strong>do <strong>de</strong> parámetros <strong>su</strong>gerido en <strong>la</strong> referencia<br />
[Sel84].<br />
4.2. Re<strong>su</strong>ltados<br />
A continuación se presentan los datos obtenidos durante <strong>la</strong>s simu<strong>la</strong>ciones<br />
realizadas en el cluster beowulf <strong>de</strong>l CESGA (Centro <strong>de</strong> Supercomputación<br />
<strong>de</strong> Galicia) para <strong>la</strong>s <strong>librerías</strong> SPARSKIT, PSPARSLIB, SuperLU y PETSc.<br />
A<strong>de</strong>más, se utilizó <strong>la</strong> librería Aztec para probar el funcionamiento <strong>de</strong> este<br />
tipo <strong>de</strong> <strong>librerías</strong> en una máquina diferente, en concreto una Origin 200.<br />
Hay que consi<strong>de</strong>rar que una simu<strong>la</strong>ción consiste en <strong>la</strong> resolución <strong>de</strong> muchos<br />
sistemas <strong>de</strong> ecuaciones lineales <strong>de</strong> <strong>la</strong> forma Ax = b, don<strong>de</strong> A es una<br />
matriz cuadrada, simétrica en estructura. Esta matriz es obtenida a través<br />
<strong>de</strong>l simu<strong>la</strong>dor 3D <strong>de</strong>scrito en el apartado anterior, y en este caso es <strong>de</strong> or<strong>de</strong>n<br />
n = 29012 y tiene 398102 elementos no nulos.<br />
Los re<strong>su</strong>ltados que se presentan pertenecen a cálculos realizados con <strong>la</strong>s<br />
matrices poisson6 y electron6, representativas <strong>de</strong> los sistemas re<strong>su</strong>ltantes <strong>de</strong><br />
<strong>la</strong> discretización <strong>de</strong> <strong>la</strong> ecuación <strong>de</strong> Poisson y <strong>de</strong> <strong>la</strong> ecuación <strong>de</strong> continuidad <strong>de</strong><br />
electrones respectivamente. Nos limitamos a estas dos matrices puesto que<br />
el análisis <strong>de</strong> una serie <strong>de</strong> matrices <strong>de</strong> igual origen y características mostraba<br />
re<strong>su</strong>ltados simi<strong>la</strong>res a los dados por estas dos.<br />
Las <strong>librerías</strong> utilizadas en el <strong>estudio</strong> son <strong>la</strong>s <strong>de</strong>scritas en el capítulo 3,<br />
mostrándose a continuación los re<strong>su</strong>ltados obtenidos para cada una <strong>de</strong> el<strong>la</strong>s.<br />
4.2.1. SPARSKIT<br />
Esta librería secuencial ofrece una gran variedad <strong>de</strong> métodos <strong>de</strong> resolución.<br />
En concreto, los resolutores empleados fueron CG, BCG, DBCG,<br />
CGNR, BCGSTAB, TFQMR, FOM, GMRES, FGMRES y DQGMRES. Los<br />
tiempos obtenidos con el método CGNR son excesivamente elevados (hasta<br />
un or<strong>de</strong>n <strong>de</strong> magnitud <strong>su</strong>periores) comparados con cualquier otro método,<br />
por lo cual vamos a prescindir <strong>de</strong> los re<strong>su</strong>ltados obtenidos con este resolutor.<br />
El precondicionador utilizado fue una factorización incompleta LU que
4.2. Re<strong>su</strong>ltados 79<br />
Figura 4.6: Tiempo <strong>de</strong> <strong>la</strong> factorización incompleta LU para <strong>la</strong> matriz poisson6<br />
Figura 4.7: Tiempo <strong>de</strong> <strong>la</strong> factorización incompleta LU para <strong>la</strong> matriz electron6<br />
utiliza como criterio <strong>de</strong> llenado tanto un umbral numérico como <strong>la</strong> posición<br />
que se ocupa <strong>de</strong>ntro <strong>de</strong> <strong>la</strong> matriz. Por lo tanto uno <strong>de</strong> los parámetros que<br />
tendremos en cuenta, a<strong>de</strong>más <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov utilizada,<br />
es el llenado (fill). El efecto causado por <strong>la</strong> variación <strong>de</strong> <strong>la</strong> dimensión<br />
<strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov sólo lo trataremos para los resolutores TFQMR,<br />
FOM, GMRES, FGMRES y DQGMRES, puesto que en el resto <strong>de</strong> los casos<br />
evi<strong>de</strong>ntemente no tiene ninguna influencia.<br />
El criterio <strong>de</strong> convergencia utilizado, tanto en esta librería como en <strong>la</strong>
80 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.8: Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz poisson6<br />
Figura 4.9: Re<strong>la</strong>ción entre el llenado y el tiempo <strong>de</strong> resolución para <strong>la</strong> matriz<br />
poisson6
4.2. Re<strong>su</strong>ltados 81<br />
PSPARSLIB, está basado en <strong>la</strong> norma2 (|| ||2) <strong>de</strong>l residuo, <strong>de</strong> tal forma<br />
que se <strong>de</strong>tecta <strong>la</strong> convergencia en <strong>la</strong> iteración k si se cumple que ||rk||2 <<br />
rtol ∗ ||ro||2 + atol, siendo rtol y atol <strong>la</strong>s tolerancias re<strong>la</strong>tiva y absoluta, ro el<br />
residuo inicial y rk = b − Axk el residuo en <strong>la</strong> iteración k.<br />
Inicialmente en <strong>la</strong> gráficas 4.6 y 4.7 se representa el tiempo necesario para<br />
realizar <strong>la</strong> factorización ILU, en función <strong>de</strong>l llenado, previa a <strong>la</strong> resolución <strong>de</strong>l<br />
sistema lineal, mostrando <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado, para <strong>la</strong>s matrices<br />
poisson6 y electron6. Los re<strong>su</strong>ltados son los esperados, es <strong>de</strong>cir se observa un<br />
aumento <strong>de</strong>l tiempo <strong>de</strong> operación al incrementar el llenado. En el caso <strong>de</strong> <strong>la</strong><br />
matriz poisson6, para valores <strong>de</strong> tolerancia re<strong>la</strong>tiva y absoluta <strong>de</strong>l resolutor<br />
<strong>de</strong> 10 −12 y 10 −17 respectivamente, el valor más pequeño <strong>de</strong> llenado utilizado<br />
fue 18, puesto con un valor inferior no se conseguía alcanzar <strong>la</strong> convergencia<br />
en el paso posterior <strong>de</strong> resolución <strong>de</strong>l sistema lineal. En cambio para <strong>la</strong><br />
matriz electron6 con esos mismos parámetros <strong>de</strong> tolerancia, el mínimo valor<br />
posible <strong>de</strong> llenado fue 125, lo que nos da una i<strong>de</strong>a <strong>de</strong> <strong>la</strong>s diferencias tan<br />
consi<strong>de</strong>rables existentes entre ambas matrices, a pesar <strong>de</strong> poseer <strong>la</strong> misma<br />
estructura. Para realizar <strong>la</strong> factorización incompleta LU se tuvo en cuenta<br />
no sólo el llenado sino que también se fijó un valor para <strong>su</strong> tolerancia (drop)<br />
<strong>de</strong> 10 −7 . Este parámetro provoca que los re<strong>su</strong>ltados representados en <strong>la</strong>s<br />
gráficas anteriores no coincidan porque <strong>la</strong> tolerancia <strong>de</strong> <strong>la</strong> ILU afecta <strong>de</strong><br />
forma muy diferente a <strong>la</strong>s dos matrices al contener ambas valores numéricos<br />
muy distintos.<br />
En <strong>la</strong> gráfica 4.8 representamos el número <strong>de</strong> iteraciones necesarias por<br />
cada resolutor para alcanzar <strong>la</strong> convergencia conforme vamos incrementando<br />
el llenado en el caso <strong>de</strong> <strong>la</strong> matriz poisson6. Observamos un <strong>de</strong>scenso en<br />
el número <strong>de</strong> iteraciones al ir aumentando el llenado, que como sería <strong>de</strong><br />
esperar se cumple para todos los resolutores. Para esta misma matriz, en<br />
<strong>la</strong> gráfica 4.9 representamos el tiempo total, que es <strong>su</strong>ma <strong>de</strong>l necesario por<br />
cada resolutor para alcanzar <strong>la</strong> convergencia más el tiempo empleado en <strong>la</strong><br />
factorización ILU, y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado. Un aumento <strong>de</strong>l llenado<br />
lleva consigo generalmente una <strong>su</strong>bida <strong>de</strong>l tiempo total <strong>de</strong>bido principalmente<br />
a <strong>la</strong> influencia <strong>de</strong>l tiempo <strong>de</strong> factorización (muy significativa) que no<br />
logra ser compensada por <strong>la</strong> disminución (mucho menor) <strong>de</strong>l tiempo <strong>de</strong>l resolutor.<br />
Debido a esto sólo se aprecia una influencia <strong>de</strong>l tiempo <strong>de</strong> resolución<br />
en el tiempo total para valores <strong>de</strong>l llenado muy pequeños. En esta gráfica<br />
po<strong>de</strong>mos observar este efecto para el valor <strong>de</strong> llenado 12 aunque no en todos<br />
los resolutores. Todas estas medidas se realizaron teniendo en cuenta un<br />
valor constante <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov 50, <strong>de</strong> <strong>la</strong> tolerancia<br />
re<strong>la</strong>tiva 10 −7 y <strong>de</strong> <strong>la</strong> tolerancia absoluta 10 −12 . Para estos valores <strong>de</strong> <strong>la</strong><br />
tolerancia el mínimo <strong>de</strong>l llenado se encuentra en 11. A<strong>de</strong>más, los re<strong>su</strong>ltados
82 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.10: Re<strong>la</strong>ción entre <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov y el tiempo<br />
<strong>de</strong> resolución para <strong>la</strong> matriz poisson6<br />
Figura 4.11: Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz poisson6
4.2. Re<strong>su</strong>ltados 83<br />
obtenidos por <strong>la</strong> mayoría <strong>de</strong> los resolutores son simi<strong>la</strong>res, a excepción <strong>de</strong><br />
los métodos BCG y DBCG, que presentaron unos valores apreciablemente<br />
<strong>su</strong>periores al resto.<br />
Si se <strong>de</strong>sea alcanzar una mayor precisión en el re<strong>su</strong>ltado obtenido habrá<br />
que consi<strong>de</strong>rar que el límite inferior <strong>de</strong>l llenado a partir el cual no se<br />
alcanza <strong>la</strong> convergencia se encontrará ahora a valores más altos. Así por<br />
ejemplo, como ya comentamos anteriormente, para una tolerancia re<strong>la</strong>tiva<br />
<strong>de</strong> 10 −12 y una tolerancia absoluta <strong>de</strong> 10 −17 el menor valor <strong>de</strong> llenado para<br />
el cual el sistema converge se encuentra en 18. Utilizando estos nuevos<br />
valores <strong>de</strong> tolerancia estudiamos el efecto <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio<br />
<strong>de</strong> Krylov en el tiempo <strong>de</strong> computación (figura 4.10) y en <strong>la</strong>s iteraciones<br />
realizadas (figura 4.11). Se encuentra una disminución <strong>de</strong>l número <strong>de</strong> iteraciones<br />
al aumentar <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov, aunque este<br />
efecto sólo se aprecia para dimensiones pequeñas. Por otro <strong>la</strong>do <strong>la</strong> influencia<br />
<strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov en el tiempo total <strong>de</strong> computación<br />
es poco apreciable, observándose variaciones <strong>de</strong>l or<strong>de</strong>n <strong>de</strong>l 5% en el peor <strong>de</strong><br />
los casos al cambiar dos ór<strong>de</strong>nes <strong>de</strong> magnitud <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong><br />
Krylov. Los valores representados en <strong>la</strong>s gráficas 4.10 y 4.11 se obtuvieron<br />
a un valor <strong>de</strong> llenado <strong>de</strong> 50.<br />
Para <strong>la</strong> matriz electron6, teniendo en cuenta una tolerancia re<strong>la</strong>tiva <strong>de</strong><br />
10 −12 y una tolerancia absoluta <strong>de</strong> 10 −17 , en <strong>la</strong> gráfica 4.12 representamos<br />
el tiempo total necesario por cada resolutor para <strong>la</strong> resolución <strong>de</strong>l sistema<br />
lineal y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado, encontrándose un aumento <strong>de</strong>l tiempo<br />
total con el llenado, puesto que un incremento <strong>de</strong>l llenado sólo lleva a un<br />
ligero <strong>de</strong>scenso en el tiempo <strong>de</strong>l resolutor. En <strong>la</strong> figura 4.13 representamos<br />
el número <strong>de</strong> iteraciones realizadas por cada resolutor y <strong>su</strong> variación con<br />
el llenado, observándose, al igual que en el caso <strong>de</strong> <strong>la</strong> matriz poisson6, un<br />
<strong>de</strong>scenso <strong>de</strong>l número <strong>de</strong> iteraciones al aumentar el llenado. En esta gráfica<br />
no incluimos el resolutor CG puesto que para un valor <strong>de</strong> llenado 125<br />
necesitaba realizar 84 iteraciones para alcanzar <strong>la</strong> convergencia. Esta circunstancia<br />
explica porqué este resolutor necesita mucho más tiempo que los<br />
otros para resolver el sistema lineal cuando el llenado es 125. Estas medidas<br />
se realizaron a un valor constante <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov<br />
(dimensión=80).<br />
En el caso <strong>de</strong> <strong>la</strong> matriz electron6 <strong>la</strong> influencia <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio<br />
<strong>de</strong> Krylov es incluso más <strong>de</strong>spreciable que para <strong>la</strong> matriz poisson6,<br />
puesto que consi<strong>de</strong>rando un valor fijo <strong>de</strong> llenado (llenado = 125), el número<br />
<strong>de</strong> iteraciones realizadas no varían al aumentar <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio<br />
<strong>de</strong> Krylov. En cuanto a <strong>su</strong> influencia en el tiempo total (figura 4.14) se nota<br />
una ligera <strong>su</strong>bida en el tiempo al aumentar <strong>la</strong> dimensión, pero se pue<strong>de</strong>
84 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.12: Re<strong>la</strong>ción entre el llenado y el tiempo <strong>de</strong> resolución para <strong>la</strong> matriz<br />
electron6<br />
Figura 4.13: Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado para <strong>la</strong><br />
matriz electron6
4.2. Re<strong>su</strong>ltados 85<br />
Figura 4.14: Re<strong>la</strong>ción entre <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov y el tiempo<br />
<strong>de</strong> resolución para <strong>la</strong> matriz electron6<br />
consi<strong>de</strong>rar <strong>de</strong>spreciable.<br />
4.2.2. SuperLU<br />
Esta librería re<strong>su</strong>elve en paralelo una factorización LU. En <strong>la</strong> gráfica 4.15<br />
se muestra el tiempo total necesario para realizar <strong>la</strong> factorización para <strong>la</strong>s<br />
matrices poisson6 y electron6, y <strong>su</strong> variación con el número <strong>de</strong> procesadores<br />
empleados para ello. Así se encuentra que el tiempo se reduce al aumentar<br />
el número <strong>de</strong> procesadores, aunque esta disminución es cada vez menos<br />
pronunciada. Como se pue<strong>de</strong> ver los re<strong>su</strong>ltados presentados por <strong>la</strong>s dos matrices<br />
son prácticamente idénticos, lo cual es lógico si tenemos en cuenta que<br />
ambas tienen <strong>la</strong> misma estructura y número <strong>de</strong> elementos no nulos.<br />
Si se utiliza un único procesador para <strong>la</strong> resolución <strong>de</strong>l sistema lineal<br />
es más efectivo (es <strong>de</strong>cir que el tiempo necesario para <strong>su</strong> resolución es menor)<br />
el uso <strong>de</strong> <strong>la</strong> librería secuencial SPARSKIT que <strong>la</strong> librería SuperLU.<br />
La diferencia entre ambas <strong>librerías</strong> se encuentra en que mientras SuperLU<br />
re<strong>su</strong>elve una factorización LU completa, SPARSKIT combina una factorización<br />
incompleta LU, con valores conocidos <strong>de</strong>l llenado(fill) y <strong>de</strong> <strong>la</strong> tolerancia<br />
(drop), utilizada como precondicionamiento con una l<strong>la</strong>mada posterior a un<br />
resolutor. Dependiendo <strong>de</strong>l llenado elegido para <strong>la</strong> factorización incompleta
86 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.15: Tiempo <strong>de</strong> <strong>la</strong> factorización LU para <strong>la</strong> matrices poisson6 y<br />
electron6<br />
<strong>la</strong> diferencia <strong>de</strong> tiempo en el uso <strong>de</strong> una u otra librería pue<strong>de</strong> disminuir.<br />
Así para <strong>la</strong> matriz electron6 con un llenado 125 utilizar <strong>la</strong> librería SPARS-<br />
KIT <strong>su</strong>pone un ahorro en tiempo <strong>de</strong>l 58 %. Al ir aumentando el llenado<br />
elegido este ahorro será cada vez menor, puesto que <strong>la</strong> factorización incompleta<br />
LU se aproximará cada vez más a <strong>la</strong> completa. De esta forma, con un<br />
llenado <strong>de</strong> 200 el ahorro en tiempo será <strong>de</strong>l 31 %.<br />
Siempre teniendo en cuenta que SPARSKIT es secuencial, si comparamos<br />
ambas <strong>librerías</strong> al aumentar el número <strong>de</strong> procesadores utilizados en<br />
SuperLU, <strong>la</strong>s diferencias en los tiempos <strong>de</strong> resolución <strong>de</strong> ambas <strong>librerías</strong> se<br />
reducen, pero sólo compensaría utilizar <strong>la</strong> librería SuperLU cuando disponemos<br />
<strong>de</strong> un número elevado <strong>de</strong> procesadores (mayor <strong>de</strong> 6) y si <strong>la</strong> comparamos<br />
con los peores casos posibles <strong>de</strong> <strong>la</strong> librería SPARSKIT.<br />
4.2.3. PSPARSLIB<br />
Esta librería parale<strong>la</strong> utiliza precondicionadores basados en <strong>de</strong>scomposición<br />
<strong>de</strong> dominios, por ello vamos a dividir nuestro <strong>estudio</strong> en tres bloques,<br />
uno <strong>de</strong>dicado al método Schwarz aditivo, otro al SOR multicolor y el último<br />
a los métodos basados en complemento <strong>de</strong> Schur. El precondicionamiento<br />
inicial <strong>de</strong> <strong>la</strong> matriz a través <strong>de</strong> una factorización incompleta LU con un<br />
cierto llenado se hace sobre <strong>la</strong> matriz local a cada procesador y no sobre <strong>la</strong><br />
matriz global. El tiempo necesario para realizar esta factorización <strong>su</strong>ponía<br />
<strong>la</strong> principal contribución al tiempo total en <strong>la</strong> librería secuencial SPARSK-
4.2. Re<strong>su</strong>ltados 87<br />
Figura 4.16: Tiempo <strong>de</strong> <strong>la</strong> factorización local LU incompleta para <strong>la</strong> matriz<br />
poisson6 y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado<br />
Figura 4.17: Tiempo <strong>de</strong> <strong>la</strong> factorización local LU incompleta para <strong>la</strong> matriz<br />
electron6 y <strong>su</strong> <strong>de</strong>pen<strong>de</strong>ncia con el llenado<br />
KIT, por lo tanto <strong>su</strong> minimización se convierte en uno <strong>de</strong> los beneficios <strong>de</strong><br />
<strong>la</strong> paralelización <strong>de</strong> <strong>la</strong> librería, que se encuentra en PSPARSLIB.<br />
Para <strong>la</strong> matriz poisson6, en <strong>la</strong> gráfica 4.16 se representa el tiempo necesario<br />
para <strong>la</strong> realización <strong>de</strong> <strong>la</strong> factorización incompleta LU en función <strong>de</strong>l<br />
número <strong>de</strong> procesadores utilizados y <strong>su</strong> variación con el llenado elegido. De<br />
igual forma que en <strong>la</strong> librería SPARSKIT el valor <strong>de</strong> tolerancia <strong>de</strong> <strong>la</strong> ILU<br />
(drop) se fija a 10 −4 . Se observa una disminución <strong>de</strong>l tiempo al aumentar el<br />
número <strong>de</strong> procesadores <strong>de</strong>stinados a <strong>la</strong> factorización, puesto que <strong>la</strong> matriz
88 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
correspondiente a cada procesador será cada vez <strong>de</strong> menor tamaño. Por otro<br />
<strong>la</strong>do, <strong>la</strong> influencia <strong>de</strong>l llenado en el tiempo <strong>de</strong> factorización también es <strong>la</strong><br />
esperada, lográndose los tiempos menores a llenados pequeños (sobre 15).<br />
Es necesario comentar el comportamiento atípico que muestra <strong>la</strong> gráfica 4.16<br />
cuando se emplean tres procesadores. Para llenados iguales o <strong>su</strong>periores a 25<br />
se produce un efecto contrario al esperado, aumentando el tiempo <strong>de</strong> resolución<br />
con respecto al obtenido con dos procesadores. Esto pue<strong>de</strong> ser <strong>de</strong>bido<br />
a <strong>la</strong> asimetría que se produce al particionar <strong>la</strong> matriz en tres <strong>su</strong>bdominios,<br />
siendo este proceso anterior a <strong>la</strong> factorización. Así pues, para minimizar el<br />
tiempo <strong>de</strong> factorización es necesario consi<strong>de</strong>rar llenados reducidos y, como<br />
se pue<strong>de</strong> <strong>de</strong>ducir <strong>de</strong> <strong>la</strong> ten<strong>de</strong>ncia mostrada en <strong>la</strong> gráfica, trabajar con dos o<br />
cuatro procesadores.<br />
En el caso <strong>de</strong> <strong>la</strong> matriz electron6 los re<strong>su</strong>ltados obtenidos (gráfica 4.17)<br />
reflejan el mismo comportamiento, compensando también <strong>la</strong> utilización <strong>de</strong><br />
llenados bajos para lograr <strong>la</strong> reducción <strong>de</strong>l tiempo <strong>de</strong> factorización. Hay que<br />
tener en cuenta que si se utiliza más <strong>de</strong> un procesador el tiempo <strong>de</strong> factorización<br />
representado correspon<strong>de</strong> al peor <strong>de</strong> los tiempos que necesitaron los<br />
procesadores individuales en cada factorización local.<br />
Si comparamos los re<strong>su</strong>ltados presentados por <strong>la</strong> factorización incompleta<br />
LU realizada en <strong>la</strong> librería SPARSKIT y los obtenidos en <strong>la</strong>s mismas<br />
circunstancias (consi<strong>de</strong>rando un solo procesador y el mismo llenado) en PS-<br />
PARSLIB, se encuentra una diferencia <strong>su</strong>stancial en el tiempo necesario para<br />
<strong>su</strong> cálculo entre ambos casos. Esta disminución <strong>de</strong>l tiempo <strong>de</strong> factorización<br />
en el caso PSPARSLIB está re<strong>la</strong>cionado con un reor<strong>de</strong>namiento <strong>de</strong> <strong>la</strong> matriz,<br />
que cambia <strong>la</strong> posición <strong>de</strong> <strong>su</strong>s elementos, previo al proceso <strong>de</strong> factorización.<br />
Método Schwarz aditivo<br />
A pesar <strong>de</strong> <strong>la</strong> variedad <strong>de</strong> resolutores que podíamos estudiar, nos centramos<br />
en tres <strong>de</strong> ellos que presentaron buenos re<strong>su</strong>ltados en <strong>la</strong> librería<br />
secuencial SPARSKIT, los resolutores estudiados fueron: FGMRES, BCGS-<br />
TAB y TFQMR. En primer lugar, para <strong>la</strong> matriz poisson6, se observó <strong>la</strong><br />
evolución <strong>de</strong>l tiempo total <strong>de</strong> resolución <strong>de</strong>l sistema lineal en función <strong>de</strong>l<br />
número <strong>de</strong> procesadores y <strong>de</strong>l llenado (gráfica 4.18). Se encontró que un<br />
aumento <strong>de</strong>l llenado influía incrementando a <strong>su</strong> vez el tiempo total, compuesto<br />
por el tiempo <strong>de</strong> factorización y el tiempo necesario por el resolutor<br />
para alcanzar <strong>la</strong> convergencia. El tiempo <strong>de</strong>l resolutor se hace menor con el<br />
aumento <strong>de</strong>l llenado aunque no lo <strong>su</strong>ficiente como para permitir un cambio<br />
<strong>de</strong> ten<strong>de</strong>ncia. En cuanto a <strong>la</strong> influencia <strong>de</strong>l número <strong>de</strong> procesadores utilizado<br />
<strong>la</strong> ten<strong>de</strong>ncia indica una disminución <strong>de</strong>l tiempo total al aumentar <strong>la</strong>
4.2. Re<strong>su</strong>ltados 89<br />
Figura 4.18: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor FGMRES<br />
Figura 4.19: Comparativa entre los resolutores FGMRES, BCGSTAB y<br />
TFQMR para un llenado 15 y una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov <strong>de</strong><br />
50<br />
cantidad <strong>de</strong> procesadores utilizados, aunque para llenados <strong>su</strong>periores a 30<br />
utilizar tres procesadores no sería una buena opción puesto que el tiempo<br />
<strong>de</strong> <strong>la</strong> factorización incompleta local es <strong>su</strong>perior a lo esperado. También se<br />
pue<strong>de</strong> observar que <strong>la</strong> disminución en el tiempo al ir aumentando el número<br />
<strong>de</strong> procesadores se hace cada vez menos pronunciada. La gráfica 4.18 refleja<br />
los valores obtenidos para el resolutor FGMRES, siendo simi<strong>la</strong>res los dados<br />
por otros resolutores. En <strong>la</strong> figura 4.19 se representa una comparativa en-
90 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.20: Depen<strong>de</strong>ncia <strong>de</strong>l número <strong>de</strong> iteraciones con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor FGMRES<br />
Figura 4.21: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor FGMRES<br />
tre los tres resolutores para un llenado <strong>de</strong> valor 15. En el<strong>la</strong> se observa que<br />
prácticamente no existe diferencia entre los tiempos dados por los resolutores<br />
FGMRES y BCGSTAB, mientras que los tiempos dados por TFQMR<br />
son como máximo dos décimas <strong>su</strong>periores. Estas medidas se realizaron consi<strong>de</strong>rando<br />
una tolerancia re<strong>la</strong>tiva <strong>de</strong> 10 −12 , una tolerancia absoluta <strong>de</strong> 10 −17<br />
y un valor <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov igual a 50.<br />
En cuanto a <strong>la</strong>s iteraciones realizadas por los resolutores, se encuentra<br />
una disminución <strong>de</strong>l número <strong>de</strong> iteraciones al aumentar el llenado que se
4.2. Re<strong>su</strong>ltados 91<br />
Figura 4.22: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor BCGSTAB<br />
Figura 4.23: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado y el número<br />
<strong>de</strong> procesadores para el resolutor TFQMR<br />
va haciendo más <strong>su</strong>ave a llenados elevados, mientras que se produce un<br />
incremento <strong>de</strong>l número <strong>de</strong> iteraciones al aumentar el número <strong>de</strong> procesadores<br />
involucrados en <strong>la</strong> resolución. Por último, <strong>la</strong> influencia <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l<br />
<strong>su</strong>bespacio <strong>de</strong> Krylov tanto en el número <strong>de</strong> iteraciones como en el tiempo<br />
total es muy escasa, limitándose a leves variaciones <strong>de</strong> tiempo <strong>de</strong>l or<strong>de</strong>n <strong>de</strong><br />
<strong>la</strong>s obtenidas con <strong>la</strong> librería secuencial SPARSKIT, como era <strong>de</strong> esperar.<br />
Si <strong>la</strong> matriz utilizada es electron6 el comportamiento <strong>de</strong>ja <strong>de</strong> ser simi<strong>la</strong>r<br />
en los resolutores estudiados y el tiempo ya no disminuye en todos los
92 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
casos al aumentar el llenado. En cuanto a <strong>la</strong> <strong>de</strong>pen<strong>de</strong>ncia con el número<br />
<strong>de</strong> procesadores utilizados, todos los resolutores obtienen el menor tiempo<br />
<strong>de</strong> computación con tres procesadores. La razón <strong>de</strong> que el tiempo aumente<br />
para más <strong>de</strong> tres procesadores pue<strong>de</strong> <strong>de</strong>berse a que el número <strong>de</strong> iteraciones<br />
realizadas por el resolutor se dispara (gráfica 4.20) sea cual sea el llenado<br />
utilizado. La principal causa <strong>de</strong> este aumento está en que cuantos más<br />
procesadores intervengan en <strong>la</strong> resolución menor es el número <strong>de</strong> nodos internos<br />
que correspon<strong>de</strong> a cada <strong>su</strong>bdominio y mayor es <strong>la</strong> contribución <strong>de</strong><br />
los nodos frontera, lo que implica un mayor coste tanto en comunicaciones<br />
como en computaciones . Generalizando, los tres resolutores obtienen <strong>su</strong><br />
mejor rendimiento para llenados reducidos y tres procesadores. A continuación<br />
representamos el comportamiento <strong>de</strong> los resolutores FGMRES (figura<br />
4.21), BCGSTAB (gráfica 4.22) y TFQMR (figura 4.23) frente al llenado y<br />
al número <strong>de</strong> procesadores. Al igual que en el caso <strong>de</strong> <strong>la</strong> matriz poisson6<br />
el resolutor que presenta unos tiempos <strong>su</strong>periores es TFQMR, mientras que<br />
los otros dos resolutores son simi<strong>la</strong>res.<br />
Método SOR multicolor<br />
En esta ocasión los tres resolutores estudiados fueron GMRES, BCGS-<br />
TAB y TFQMR. Utilizamos los mismos valores <strong>de</strong> tolerancia absoluta y<br />
re<strong>la</strong>tiva que en el apartado anterior y realizamos un análisis <strong>de</strong> los mismos<br />
parámetros. Por lo tanto, para <strong>la</strong> matriz poisson6, se representó <strong>la</strong> evolución<br />
<strong>de</strong>l tiempo total <strong>de</strong> resolución <strong>de</strong>l sistema lineal en función <strong>de</strong>l número<br />
<strong>de</strong> procesadores y <strong>de</strong>l llenado (gráfica 4.24) para el resolutor GMRES. El<br />
comportamiento es análogo al obtenido con el método Schwarz, aunque los<br />
niveles <strong>de</strong> llenado que empeorarían el re<strong>su</strong>ltado usando tres procesadores<br />
son más elevados (<strong>su</strong>periores a 50).<br />
Si representáramos el comportamiento <strong>de</strong> los otros dos resolutores estudiados,<br />
<strong>la</strong>s gráficas presentarían <strong>la</strong> misma ten<strong>de</strong>ncia, aunque como se pue<strong>de</strong><br />
apreciar en <strong>la</strong> figura 4.25 los valores menores <strong>de</strong> tiempo se obtienen para el<br />
resolutor GMRES. Estas diferencias entre resolutores son apreciables teniendo<br />
en cuenta los valores tan pequeños <strong>de</strong> tiempo que estamos consi<strong>de</strong>rando.<br />
En este método, al igual que en el Schwarz, el resolutor que presenta peores<br />
re<strong>su</strong>ltados es el TFQMR. Esta comparativa se realizó a un nivel <strong>de</strong> llenado<br />
igual a 15.<br />
Comparamos entre sí los dos métodos <strong>de</strong> precondicionamiento basados<br />
en <strong>de</strong>scomposición <strong>de</strong> dominios para el caso en el que obteníamos los menores<br />
tiempos <strong>de</strong> resolución, es <strong>de</strong>cir, utilizando el resolutor GMRES, siendo<br />
el nivel <strong>de</strong> llenado 15, <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov igual a 50, <strong>la</strong>
4.2. Re<strong>su</strong>ltados 93<br />
Figura 4.24: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor GMRES<br />
tolerancia re<strong>la</strong>tiva 10 −12 y <strong>la</strong> tolerancia absoluta <strong>de</strong> 10 −17 . El re<strong>su</strong>ltado <strong>de</strong><br />
esta comparación se encuentra en <strong>la</strong> figura 4.26. En el<strong>la</strong> se pue<strong>de</strong> observar<br />
c<strong>la</strong>ramente que el método Schwarz aditivo presenta unos tiempos <strong>de</strong> resolución<br />
menores sea cual sea el número <strong>de</strong> procesadores utilizados y estas<br />
diferencias son consi<strong>de</strong>rables puesto que en media el tiempo necesario para<br />
<strong>la</strong> resolución <strong>de</strong>l sistema lineal con el método Schwarz aditivo es un 38 %<br />
menor que el necesitado en <strong>la</strong>s mismas circunstancias para el método SOR<br />
multicolor. Realizando esta comparación para niveles <strong>de</strong> llenado <strong>su</strong>periores<br />
(llenado = 100) estas diferencias se mantienen entre los dos métodos.<br />
Trabajando ahora con <strong>la</strong> matriz electron6 encontramos que el resolutor<br />
que obtiene los menores tiempos <strong>de</strong> resolución sea cual sea el nivel <strong>de</strong> llenado<br />
es el GMRES (figura 4.27) como se pue<strong>de</strong> comprobar en <strong>la</strong> comparativa entre<br />
los distintos resolutores estudiados que se muestra en <strong>la</strong> gráfica 4.28. Todos<br />
los resolutores presentan los menores tiempos <strong>de</strong> computación para un nivel<br />
<strong>de</strong> llenado <strong>de</strong> 50. Para este nivel <strong>de</strong> llenado, se consigue que <strong>la</strong> <strong>su</strong>ma <strong>de</strong>l<br />
tiempo <strong>de</strong> factorización local (que aumentaba con el llenado) y <strong>de</strong>l tiempo<br />
empleado por el resolutor sea mínima, aunque no es posible afirmar, como<br />
hiciéramos en otros casos, que el tiempo <strong>de</strong>l resolutor disminuye al aumentar<br />
el nivel <strong>de</strong> llenado. A<strong>de</strong>más se cumple que es tres el número <strong>de</strong> procesadores<br />
óptimo para <strong>la</strong> obtención <strong>de</strong>l menor tiempo <strong>de</strong> resolución <strong>de</strong>l sistema lineal.<br />
La comparativa entre los distintos resolutores se realizó para un nivel<br />
<strong>de</strong> llenado <strong>de</strong> 50, una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov <strong>de</strong> valor 50 y<br />
los valores <strong>de</strong> tolerancia absoluta y re<strong>la</strong>tiva ya mencionados para <strong>la</strong> matriz
94 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.25: Comparativa entre los resolutores TFQMR, BCGSTAB y GM-<br />
RES para un llenado 15 y una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov <strong>de</strong> 50<br />
Figura 4.26: Comparativa entre los métodos Schwarz aditivo y SOR multicolor<br />
poisson6. Las diferencias entre el método <strong>de</strong> resolución elegido se hacen en<br />
este caso consi<strong>de</strong>rables, volviendo a ser el método TFQMR el que presenta<br />
los peores re<strong>su</strong>ltados. Si comparamos entre sí los dos métodos <strong>de</strong> precondicionamiento<br />
basados en <strong>de</strong>scomposición <strong>de</strong> dominios para este mismo caso,<br />
se encuentran menores tiempos para el método Schwarz aditivo en todos los<br />
casos estudiados.
4.2. Re<strong>su</strong>ltados 95<br />
Figura 4.27: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
resolutor GMRES<br />
Figura 4.28: Comparativa entre los resolutores TFQMR, BCGSTAB y FGM-<br />
RES para un llenado 50<br />
Método basado en el complemento <strong>de</strong> Schur<br />
Con este método se re<strong>su</strong>elve el complemento <strong>de</strong> Schur local en cada<br />
procesador con FGMRES precondicionado con una ILU. Hay dos posibilida<strong>de</strong>s<br />
<strong>de</strong> aplicar este precondicionamiento, por <strong>la</strong> izquierda (lschur) o por<br />
<strong>la</strong> <strong>de</strong>recha (rschur). Utilizando los mismos valores <strong>de</strong> <strong>la</strong> tolerancia absoluta<br />
y re<strong>la</strong>tiva que en los dos apartados anteriores se estudió <strong>la</strong> influencia <strong>de</strong>l<br />
llenado en el tiempo <strong>de</strong> resolución para los dos precondicionadores.<br />
Suponiendo una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov igual a 50, analiza-
96 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.29: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
precondicionador lschur<br />
Figura 4.30: Comparativa entre los precondicionadores lschur y rschur para<br />
un llenado 50<br />
mos los valores obtenidos con <strong>la</strong> matriz poisson6 para el precondicionador<br />
lschur (gráfica 4.29). Observamos un aumento <strong>de</strong>l tiempo <strong>de</strong> resolución con<br />
el llenado introducido, que se cumple in<strong>de</strong>pendientemente <strong>de</strong>l número <strong>de</strong><br />
procesadores utilizado. Así, los valores menores <strong>de</strong>l tiempo se obtienen con<br />
4 procesadores y un llenado 15. Los re<strong>su</strong>ltados que se consiguen con el precondicionador<br />
rschur presentan un comportamiento simi<strong>la</strong>r a los dados por<br />
lschur, aunque los tiempos alcanzados son apreciablemente <strong>su</strong>periores. En<br />
<strong>la</strong> figura 4.30 se comparan ambos precondicionadores para un valor 50 <strong>de</strong>
4.2. Re<strong>su</strong>ltados 97<br />
Figura 4.31: Comparativa entre los métodos <strong>de</strong> resolución Schwarz aditivo,<br />
Schur y SOR multicolor<br />
llenado, se observa que el precondicionador rschur pue<strong>de</strong> llegar a necesitar<br />
el doble <strong>de</strong>l tiempo necesario por lschur para alcanzar <strong>la</strong> convergencia.<br />
Po<strong>de</strong>mos comparar el comportamiento <strong>de</strong> los tres métodos: Schwarz,<br />
Schur y SOR multicolor para el caso en el que cada método presenta los<br />
re<strong>su</strong>ltados más favorables (gráfica 4.31). Es <strong>de</strong>cir consi<strong>de</strong>ramos <strong>la</strong> dimensión<br />
<strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov 50, tolerancia re<strong>la</strong>tiva <strong>de</strong> 10 −7 , tolerancia absoluta<br />
<strong>de</strong> 10 −12 y un llenado 15. El resolutor empleado para los métodos Schwarz<br />
y SOR multicolor fue el GMRES, mientras que para el método basado en<br />
complemento <strong>de</strong> Schur se utilizó FGMRES precondicionado con lschur. Se<br />
encuentran los mejores re<strong>su</strong>ltados con el método Schwarz aditivo, empleando<br />
en promedio, un 25 % menos <strong>de</strong> tiempo para lograr <strong>la</strong> resolución <strong>de</strong>l sistema<br />
que el necesitado por el método Schur, haciendose <strong>la</strong> diferencia más gran<strong>de</strong><br />
en el caso <strong>de</strong>l método SOR multicolor (tarda en promedio un 35 % más <strong>de</strong><br />
tiempo que el Schwarz aditivo).<br />
Utilizando ahora <strong>la</strong> matriz electron6 estudiamos <strong>la</strong> influencia <strong>de</strong>l llenado<br />
en el tiempo <strong>de</strong> resolución para el precondicionador lschur (gráfica 4.32),<br />
teniendo en cuenta una dimensión 50 <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov. No presentamos<br />
los datos reflejados por el precondicionador rschur puesto que al igual<br />
que en el caso <strong>de</strong> <strong>la</strong> matriz poisson6 <strong>su</strong>s tiempos <strong>de</strong> resolución son consi<strong>de</strong>rablemente<br />
<strong>su</strong>periores. Se encuentran los menores tiempos <strong>de</strong> resolución<br />
para valores <strong>de</strong> llenado entre 25 y 50, usando para ello 2 ó 3 procesadores.<br />
También para esta matriz comparamos los tres métodos: Schwarz, SOR multicolor<br />
y Schur para el caso en el que cada método presenta los re<strong>su</strong>ltados
98 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.32: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el llenado para el<br />
precondicionador lschur<br />
Figura 4.33: Comparativa entre los métodos <strong>de</strong> resolución Schwarz aditivo,<br />
Schur y SOR multicolor<br />
más favorables (gráfica 4.33). Es <strong>de</strong>cir consi<strong>de</strong>ramos <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio<br />
<strong>de</strong> Krylov 50, tolerancia re<strong>la</strong>tiva <strong>de</strong> 10 −7 , tolerancia absoluta <strong>de</strong> 10 −12<br />
y un llenado 50. El resolutor utilizado para los métodos Schwarz y SOR multicolor<br />
fue el GMRES, mientras que para el método basado en complemento<br />
<strong>de</strong> Schur se utilizó FGMRES precondicionado con lschur. El mejor método<br />
<strong>de</strong> resolución para esta matriz es también el Schwarz aditivo, observandose<br />
gran<strong>de</strong>s diferencias con el método SOR multicolor, y algo menores con<br />
el método Schur. Cuando trabajamos con 4 procesadores encontramos que
4.2. Re<strong>su</strong>ltados 99<br />
el método Schur obtiene mejores re<strong>su</strong>ltados que el método Schwarz, aunque<br />
comparando ambos métodos para diferentes llenados Schwarz obtiene<br />
siempre menores tiempos a excepción <strong>de</strong> este caso particu<strong>la</strong>r.<br />
La influencia <strong>de</strong> <strong>la</strong> dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov es reducida, pero<br />
hay que tener en cuenta que si <strong>la</strong> fijamos a un valor muy pequeño (por<br />
ejemplo 1) no logramos que el sistema alcance <strong>la</strong> convergencia. Se encuentra<br />
una leve disminución <strong>de</strong>l tiempo <strong>de</strong> resolución al ir aumentando <strong>la</strong> dimensión<br />
si utilizamos un número <strong>de</strong> procesadores menor que 4, aunque esta influencia<br />
<strong>de</strong>ja <strong>de</strong> ser apreciable para dimensiones altas. Si utilizamos 4 procesadores<br />
se observan incrementos <strong>de</strong> tiempo muy elevados si empleamos dimensiones<br />
bajas (sobre 5–15).<br />
En <strong>la</strong> librería PSPARSLIB tanto <strong>la</strong> insta<strong>la</strong>ción como <strong>la</strong> configuración<br />
son sencil<strong>la</strong>s. El código que incorpora es <strong>de</strong> uso intuitivo y admite cómodas<br />
modificaciones por parte <strong>de</strong>l u<strong>su</strong>ario, realizándose <strong>la</strong> selección <strong>de</strong> parámetros<br />
por medio <strong>de</strong> un fichero <strong>de</strong> texto con un formato preestablecido. Por otro<br />
<strong>la</strong>do, una <strong>de</strong> <strong>su</strong>s limitaciones consiste en que so<strong>la</strong>mente admite matrices en<br />
formato H/B, a<strong>de</strong>más <strong>de</strong> trabajar exclusivamente con métodos basados en<br />
<strong>de</strong>scomposición <strong>de</strong> dominios.<br />
4.2.4. PETSc<br />
Teniendo en cuenta los re<strong>su</strong>ltados obtenidos con <strong>la</strong> librería PSPARSLIB,<br />
estudiaremos en esta librería el comportamiento <strong>de</strong> los resolutores GMRES<br />
y BCGSTAB precondicionados con el método Schwarz aditivo. Este método<br />
utiliza una ILU como precondicionador interno, en <strong>la</strong> que para introducir el<br />
llenado se tienen en cuenta dos factores, <strong>la</strong> cantidad <strong>de</strong> máxima <strong>de</strong> elementos<br />
no nulos que se <strong>de</strong>sean introducir respecto a los existentes en <strong>la</strong> matriz<br />
original (ilut fill) y los niveles <strong>de</strong> llenado (nivel). Así para los mo<strong>de</strong>los <strong>de</strong><br />
matrices poisson6 y electron6 se analizará el comportamiento <strong>de</strong>l tiempo <strong>de</strong><br />
resolución <strong>de</strong>l sistema lineal en función <strong>de</strong>l número <strong>de</strong> procesadores utilizados<br />
y <strong>de</strong>l nivel <strong>de</strong> llenado. El parámetro ilut fill se mantiene siempre igual<br />
a 1.<br />
El criterio <strong>de</strong> convergencia utilizado en este caso es simi<strong>la</strong>r al utilizado en<br />
<strong>la</strong>s <strong>librerías</strong> anteriores <strong>de</strong>tectándose <strong>la</strong> convergencia en una iteración k si se<br />
cumple que ||rk||2 < max(rtol ∗ ||ro||2,atol), siendo rtol y atol <strong>la</strong>s tolerancias<br />
re<strong>la</strong>tiva y absoluta, ro el residuo inicial y rk = b − Axk el residuo en <strong>la</strong><br />
iteración k.<br />
Empezando con <strong>la</strong> matriz poisson6, para unos valores <strong>de</strong> tolerancia re<strong>la</strong>tiva<br />
10 −12 , tolerancia absoluta 10 −17 , y dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov<br />
50, <strong>la</strong> influencia <strong>de</strong>l nivel <strong>de</strong> llenado en el tiempo <strong>de</strong> resolución <strong>de</strong>l sistema
100 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.34: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong> llenado<br />
para el resolutor GMRES<br />
Figura 4.35: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong> llenado<br />
para el resolutor BCGSTAB<br />
lineal para los resolutores GMRES y BCGSTAB se pue<strong>de</strong> observar en <strong>la</strong><br />
gráficas 4.34 y 4.35. Ambos resolutores muestran el mismo comportamiento,<br />
una disminución <strong>de</strong>l tiempo <strong>de</strong> resolución con el número <strong>de</strong> procesadores,<br />
que generalmente alcanza <strong>su</strong> valor mínimo para 3 procesadores. En cuanto<br />
a <strong>la</strong> influencia <strong>de</strong>l nivel <strong>de</strong> llenado, los tiempos <strong>de</strong> resolución menores<br />
se encuentran en niveles <strong>de</strong> llenado bajos (menores <strong>de</strong> 5). A partir <strong>de</strong> ahí,<br />
aumentar el nivel <strong>de</strong> llenado implica un incremento consi<strong>de</strong>rable en el tiempo<br />
<strong>de</strong> computación. Comparando entre sí ambos resolutores se encuentra
4.2. Re<strong>su</strong>ltados 101<br />
Figura 4.36: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong> llenado<br />
para el resolutor GMRES<br />
Figura 4.37: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo total <strong>de</strong> resolución con el nivel <strong>de</strong> llenado<br />
para el resolutor BCGSTAB<br />
que el resolutor BCGSTAB presenta unos tiempos <strong>de</strong> resolución menores<br />
para niveles <strong>de</strong> llenado pequeños, <strong>de</strong>jando <strong>de</strong> cumplirse esta ten<strong>de</strong>ncia para<br />
niveles más elevados (sobre 10).<br />
Analizando <strong>de</strong> igual forma <strong>la</strong> matriz electron6 encontramos que tanto el<br />
resolutor GMRES (gráfica 4.36) como el BCGSTAB (gráfica 4.37) obtienen<br />
<strong>su</strong>s menores tiempos <strong>de</strong> resolución para 3 procesadores y un nivel <strong>de</strong> llenado<br />
5. Al aumentar el nivel <strong>de</strong> llenado el tiempo necesario para resolver el sistema<br />
lineal aumenta consi<strong>de</strong>rablemente.
102 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.38: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong>l resolutor GMRES con el nivel <strong>de</strong><br />
llenado<br />
Como se comentó anteriormente, para ambas matrices el tiempo total <strong>de</strong><br />
resolución alcanza el valor mínimo en 3 procesadores. Este tiempo incluye<br />
tanto <strong>la</strong> preparación <strong>de</strong> <strong>la</strong> matriz como <strong>la</strong> resolución <strong>de</strong>l sistema propiamente<br />
dicho. El tiempo <strong>de</strong>l resolutor sí disminuye con el número <strong>de</strong> procesadores,<br />
con un valor mínimo en cuatro. Este comportamiento se pue<strong>de</strong> observar en <strong>la</strong><br />
gráfica 4.38 que representa el tiempo necesitado por el resolutor GMRES para<br />
alcanzar <strong>la</strong> convergencia en <strong>la</strong> matriz poisson6. Por tanto <strong>la</strong> razón <strong>de</strong> que<br />
el tiempo total aumente ligeramente para 4 procesadores pue<strong>de</strong> encontrarse<br />
en el paso <strong>de</strong> preparación <strong>de</strong> <strong>la</strong> matriz parale<strong>la</strong>, tanto en <strong>la</strong> conversión <strong>de</strong> <strong>la</strong><br />
matriz a una válida en el formato interno <strong>de</strong> PETSc como en <strong>la</strong> distribución<br />
<strong>de</strong> los datos a los procesadores <strong>de</strong> <strong>la</strong> mal<strong>la</strong>.<br />
La librería PETSc es un paquete más complicado <strong>de</strong> insta<strong>la</strong>r que PS-<br />
PARSLIB. Esto es <strong>de</strong>bido a que dispone <strong>de</strong> una gran cantidad <strong>de</strong> herramientas<br />
<strong>de</strong> <strong>la</strong>s cuales <strong>la</strong> resolución <strong>de</strong> sistemas lineales es tan solo una pequeña<br />
parte. Se apoya en <strong>la</strong>s <strong>librerías</strong> matemáticas BLAS y LAPACK por lo que<br />
es preciso disponer <strong>de</strong> estos paquetes en <strong>la</strong> máquina. La estructuración interna<br />
<strong>de</strong> <strong>la</strong> librería es rígida, lo que complica bastante el aprendizaje, junto<br />
con <strong>la</strong> enorme cantidad <strong>de</strong> opciones <strong>de</strong> <strong>la</strong>s que dispone sin estar c<strong>la</strong>ramente<br />
precisadas. Sin embargo, a diferencia <strong>de</strong> PSPARSLIB, cabe <strong>la</strong> posibilidad <strong>de</strong><br />
interconectar PETSc con otros paquetes matemáticos, como pue<strong>de</strong> ser MA-<br />
TLAB, u otras <strong>librerías</strong>, como BlockSolve o SuperLU, que <strong>la</strong> dotan <strong>de</strong> una<br />
mayor versatilidad, <strong>de</strong>stacando también <strong>su</strong> amplio soporte para diferentes<br />
formatos matriciales.
4.2. Re<strong>su</strong>ltados 103<br />
Figura 4.39: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor GMRES<br />
Figura 4.40: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor BCGSTAB<br />
4.2.5. Aztec<br />
En esta librería analizamos aquellos resolutores que presentaron mejores<br />
re<strong>su</strong>ltados en <strong>la</strong> librería PSPARSLIB, trabajando por ello tan sólo con los<br />
métodos iterativos GMRES y BCGSTAB. Se utilizan métodos basados en<br />
<strong>de</strong>scomposición <strong>de</strong> dominios (Schwarz aditivo), siendo ILUT el resolutor <strong>de</strong><br />
cada <strong>su</strong>bdominio, es <strong>de</strong>cir, realizamos una factorización incompleta LU en<br />
<strong>la</strong> que influyen dos parámetros, <strong>la</strong> tolerancia <strong>de</strong> <strong>la</strong> ILU (drop) fijada a cero y<br />
el ilut fill. Estudiaremos <strong>la</strong> influencia <strong>de</strong>l número <strong>de</strong> procesadores utilizados
104 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
Figura 4.41: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor BCGSTAB<br />
Figura 4.42: Depen<strong>de</strong>ncia <strong>de</strong>l tiempo <strong>de</strong> resolución con el ilut fill para el<br />
resolutor GMRES<br />
y <strong>de</strong>l ilut fill (este parámetro indica que <strong>la</strong> factorización re<strong>su</strong>ltante pue<strong>de</strong><br />
contener como máximo ilut fill veces el número <strong>de</strong> no ceros <strong>de</strong> <strong>la</strong> matriz<br />
original). Las medidas para esta librería se realizaron en una máquina SGI<br />
Origin 200.<br />
La librería Aztec hace uso <strong>de</strong> <strong>la</strong> tolerancia tol para <strong>de</strong>tectar <strong>la</strong> convergencia,<br />
que se alcanzará en <strong>la</strong> iteración k si se cumple ||rk||2 < tol ∗ ||ro||2,<br />
siendo ro el residuo inicial y rk = b − Axk el residuo en <strong>la</strong> iteración k.<br />
Empezando con <strong>la</strong> matriz poisson6, en <strong>la</strong>s gráficas 4.39 y 4.40 represen-
4.2. Re<strong>su</strong>ltados 105<br />
tamos, para los resolutores GMRES y BCGSTAB, el tiempo necesario para<br />
<strong>la</strong> resolución <strong>de</strong>l sistema lineal en función <strong>de</strong>l número <strong>de</strong> procesadores y <strong>de</strong>l<br />
nivel <strong>de</strong> ilut fill utilizado. Estas medidas se realizaron para unos valores <strong>de</strong><br />
tolerancia <strong>de</strong> 5 · 10 −5 y una dimensión <strong>de</strong>l <strong>su</strong>bespacio <strong>de</strong> Krylov <strong>de</strong> 50. Se<br />
observa que el tiempo <strong>de</strong> resolución disminuye conforme aumenta el número<br />
<strong>de</strong> procesadores utilizados, ten<strong>de</strong>ncia que se cumple para todos los valores<br />
<strong>de</strong> ilut fill. Ambos resolutores presentan un comportamiento simi<strong>la</strong>r frente<br />
a <strong>la</strong> variación <strong>de</strong>l ilut fill, obteniéndose un tiempo <strong>de</strong> resolución mínimo para<br />
valores <strong>de</strong> ilut fill iguales a 1,2. A valores <strong>su</strong>periores <strong>de</strong> este parámetro<br />
el excesivo aumento <strong>de</strong>l número <strong>de</strong> elementos no nulos a introducir en <strong>la</strong><br />
factorización provoca un incremento <strong>de</strong>l tiempo <strong>de</strong> resolución.<br />
Para <strong>la</strong> matriz electron6 es más complicado obtener un comportamiento<br />
simi<strong>la</strong>r. En <strong>la</strong> gráfica 4.41, re<strong>la</strong>tiva al resolutor BCGSTAB, se refleja<br />
<strong>la</strong> variación <strong>de</strong>l tiempo <strong>de</strong> resolución con el numero <strong>de</strong> procesadores y el<br />
ilut fill para los mismos parámetros que <strong>la</strong> matriz poisson6, observándose<br />
un <strong>de</strong>scenso <strong>de</strong>l tiempo <strong>de</strong> resolución con el número <strong>de</strong> procesadores que se<br />
mantiene hasta tres. Para un número <strong>su</strong>perior <strong>de</strong> procesadores los tiempos<br />
se incrementan. Esta misma <strong>de</strong>pen<strong>de</strong>ncia se establece en el caso <strong>de</strong>l resolutor<br />
GMRES (gráfica 4.42). En cambio, en cuanto a <strong>la</strong> influencia <strong>de</strong>l ilut fill, el<br />
resolutor BCGSTAB en general obtiene <strong>su</strong>s mejores re<strong>su</strong>ltados para valores<br />
pequeños (ilut fill=1) <strong>de</strong> esta variable, mientras que el GMRES los obtiene<br />
para valores más elevados (entre 1,5 y 2).<br />
Para obtener <strong>la</strong> librería Aztec es necesario un proceso <strong>de</strong> registro. A parte<br />
<strong>de</strong> esto <strong>la</strong> insta<strong>la</strong>ción no tiene mayores complicaciones. Su configuración es<br />
sencil<strong>la</strong> y dispone <strong>de</strong> ejemplos <strong>su</strong>ficientes para iniciarse en el funcionamiento<br />
<strong>de</strong> <strong>la</strong> librería. Uno <strong>de</strong> <strong>su</strong>s principales inconvenientes está en que los únicos<br />
formatos matriciales que soporta son MSR y VBR, lo que pue<strong>de</strong> obligar<br />
a disponer <strong>de</strong> un conversor. Al igual que <strong>la</strong> librería PETSc necesita tener<br />
insta<strong>la</strong>do BLAS y LAPACK.<br />
Todas <strong>la</strong>s <strong>librerías</strong> analizadas, a excepción <strong>de</strong> SuperLU, implementan<br />
una cantidad consi<strong>de</strong>rable <strong>de</strong> métodos <strong>de</strong> resolución y precondicionadores,<br />
siendo complicada <strong>la</strong> comparación entre el<strong>la</strong>s puesto que utilizan distintas<br />
<strong>de</strong>finiciones algunos parámetros, como pue<strong>de</strong>n ser <strong>la</strong>s distintas versiones<br />
<strong>de</strong> factorizaciones incompletas que implementan <strong>la</strong>s <strong>librerías</strong> PSPARSLIB,<br />
PETSc y Aztec.<br />
Si ignoramos todas estas variables y realizamos una comparación meramente<br />
orientativa y en cierto modo <strong>su</strong>bjetiva, en nuestra opinión PSPARS-<br />
LIB es <strong>la</strong> librería que necesita un menor tiempo <strong>de</strong> aprendizaje <strong>de</strong>s<strong>de</strong> que se<br />
inicia el proceso <strong>de</strong> insta<strong>la</strong>ción hasta que se empieza a utilizar con flui<strong>de</strong>z,<br />
lo que haría que fuera <strong>la</strong> más sencil<strong>la</strong> <strong>de</strong> implementar en el simu<strong>la</strong>dor. Otro
106 Capítulo 4. Re<strong>su</strong>ltados numéricos<br />
punto a <strong>su</strong> favor se encuentra en <strong>la</strong> c<strong>la</strong>ridad <strong>de</strong>l código <strong>de</strong>sarrol<strong>la</strong>do. A<strong>de</strong>más<br />
si comparamos los tiempos <strong>de</strong> resolución para <strong>la</strong>s circunstancias más favorables<br />
<strong>de</strong> cada una <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> también encontramos los menores valores<br />
<strong>de</strong>l tiempo <strong>de</strong> resolución para esta librería.
Conclusiones<br />
En este trabajo hemos realizado un <strong>estudio</strong> <strong>de</strong> sistemas lineales asociados<br />
a <strong>la</strong> simu<strong>la</strong>ción <strong>de</strong> dispositivos semiconductores, utilizando para ello<br />
diversas <strong>librerías</strong> <strong>numéricas</strong>, con el objetivo <strong>de</strong> encontrar el modo óptimo <strong>de</strong><br />
resolución.<br />
En concreto hemos partido <strong>de</strong> <strong>la</strong>s matrices <strong>de</strong> Posisson y <strong>de</strong> continuidad<br />
<strong>de</strong> electrones que <strong>su</strong>rgen <strong>de</strong> <strong>la</strong> simu<strong>la</strong>ción tridimensional <strong>de</strong> transistores<br />
HEMT. El simu<strong>la</strong>dor utilizado ha sido <strong>de</strong>sarrol<strong>la</strong>do por nuestro grupo en<br />
co<strong>la</strong>boración con el Device Mo<strong>de</strong>lling Group <strong>de</strong> <strong>la</strong> Universidad <strong>de</strong> G<strong>la</strong>sgow.<br />
Hay que añadir que el simu<strong>la</strong>dor ha sido calibrado, tanto a través <strong>de</strong> re<strong>su</strong>ltados<br />
experimentales como por medio <strong>de</strong> simu<strong>la</strong>dores comerciales. Uno <strong>de</strong><br />
los objetivos <strong>de</strong> esta co<strong>la</strong>boración es el <strong>estudio</strong> <strong>de</strong> <strong>la</strong>s variaciones estadísticas,<br />
tanto en el dopado como en <strong>la</strong> composición <strong>de</strong> los compuestos ternarios,<br />
que se producen en <strong>la</strong> fabricación <strong>de</strong> estos dispositivos cuando son esca<strong>la</strong>dos<br />
a dimensiones <strong>su</strong>bmicrométricas, por lo cual es preciso realizar un elevado<br />
número <strong>de</strong> simu<strong>la</strong>ciones.<br />
Hemos realizado un <strong>estudio</strong> <strong>de</strong> métodos directos e iterativos que permiten<br />
<strong>la</strong> resolución <strong>de</strong> este tipo <strong>de</strong> sistemas lineales. Por ello en primer lugar<br />
tratamos <strong>la</strong> librería secuencial SPARSKIT con el fin <strong>de</strong> obtener un análisis<br />
inicial <strong>de</strong> los métodos <strong>de</strong> resolución más favorables para los sistemas lineales<br />
generados con <strong>la</strong>s matrices <strong>de</strong> Posisson y <strong>de</strong> continuidad <strong>de</strong> electrones. Se<br />
tomaron medidas para una serie <strong>de</strong> matrices <strong>de</strong> cada tipo, presentando los<br />
re<strong>su</strong>ltados <strong>la</strong> misma ten<strong>de</strong>ncia que <strong>la</strong> obtenida con <strong>la</strong>s dos matrices (poisson6<br />
y electron6) elegidas. Así, <strong>de</strong>sechamos los resolutores CGNR, DBCG<br />
y BCG por presentar tiempos <strong>de</strong> resolución elevados en comparación con el<br />
resto <strong>de</strong> resolutores. En cambio, los restantes resolutores estudiados (CG,<br />
BCGSTAB, TFQMR, FOM, GMRES, FGMRES y DQMGRES) presentaron<br />
diferencias mínimas en cuanto a tiempo <strong>de</strong> resolución. Para esta librería,<br />
los menores tiempos, sea cual sea el método <strong>de</strong> resolución elegido, se obtienen<br />
para llenados bajos, teniendo en cuenta que existe un valor mínimo <strong>de</strong><br />
llenado necesario para alcanzar <strong>la</strong> convergencia <strong>de</strong>l resolutor.<br />
107
108 Conclusiones<br />
En segundo lugar analizamos <strong>la</strong> librería SuperLU, que tiene como objetivo<br />
<strong>la</strong> resolución parale<strong>la</strong> <strong>de</strong> una factorización LU completa. Está basada por<br />
lo tanto en <strong>la</strong> aplicación <strong>de</strong> métodos directos para <strong>la</strong> solución <strong>de</strong>l sistema<br />
lineal, y <strong>la</strong> estudiamos para comprobar que <strong>su</strong> utilización es poco rentable<br />
en comparación con cualquiera <strong>de</strong> <strong>la</strong>s <strong>librerías</strong> estudiadas basadas en métodos<br />
iterativos, incluyendo <strong>la</strong> librería secuencial SPARSKIT, puesto que los<br />
métodos directos implican una mayor complejidad computacional, lo que<br />
repercute en el tiempo <strong>de</strong> resolución.<br />
Vistos estos re<strong>su</strong>ltados optamos por continuar analizando un grupo <strong>de</strong><br />
<strong>librerías</strong> parale<strong>la</strong>s basadas en métodos iterativos, siendo <strong>la</strong> primera <strong>de</strong> el<strong>la</strong>s<br />
PSPARSLIB, que es una versión parale<strong>la</strong> <strong>de</strong> SPARSKIT que utiliza métodos<br />
basados en <strong>de</strong>scomposición <strong>de</strong> dominios. En este caso analizamos los mismos<br />
resolutores que en <strong>la</strong> librería SPARSKIT, aunque finalmente restringimos el<br />
<strong>estudio</strong> a los resolutores BCGSTAB, TFQMR y FGMRES, obteniéndose con<br />
este último los mejores re<strong>su</strong>ltados. En cuanto al precondicionador, encontramos<br />
que para <strong>la</strong> obtención <strong>de</strong> los nodos frontera el método Schwarz aditivo<br />
es el más a<strong>de</strong>cuado, mientras que para el cálculo <strong>de</strong> los nodos internos empleamos<br />
una factorización incompleta LU <strong>de</strong>pendiente <strong>de</strong>l llenado, don<strong>de</strong> el<br />
tiempo mínimo se alcanza para llenados pequeños (entre 15 y 25).<br />
Teniendo en cuenta los re<strong>su</strong>ltados obtenidos con <strong>la</strong> librería PSPARSLIB,<br />
en <strong>la</strong>s <strong>librerías</strong> PETSc y Aztec estudiamos para los resolutores GMRES y<br />
BCGSTAB el método Schwarz aditivo, utilizando una factorización incompleta<br />
LU <strong>de</strong>pendiente <strong>de</strong>l nivel <strong>de</strong> llenado y <strong>de</strong>l parámetro ilut fill en el caso<br />
<strong>de</strong> PETSc y <strong>de</strong> este último parámetro en el caso <strong>de</strong> <strong>la</strong> librería Aztec. Empezando<br />
con <strong>la</strong> librería PETSc los menores tiempos <strong>de</strong> resolución se encuentran<br />
para el resolutor BCGSTAB, con niveles <strong>de</strong> llenado bajos (menores <strong>de</strong> 5) y<br />
con un número óptimo <strong>de</strong> 3 procesadores. En <strong>la</strong> librería Aztec se encuentran<br />
los menores tiempos <strong>de</strong> resolución para valores <strong>de</strong> ilut fill pequeños (menores<br />
<strong>de</strong> 2), aunque en esta ocasión <strong>la</strong>s diferencias entre los resolutores en función<br />
<strong>de</strong>l ilut fill son consi<strong>de</strong>rables en el caso <strong>de</strong> <strong>la</strong> matriz electron6.<br />
La librería a implementar en el simu<strong>la</strong>dor <strong>de</strong>be tener principalmente dos<br />
cualida<strong>de</strong>s. Por un <strong>la</strong>do <strong>de</strong>be ser fácil <strong>de</strong> utilizar y estar compuesta <strong>de</strong> códigos<br />
c<strong>la</strong>ros y manejables. Las <strong>librerías</strong> SPARSKIT, PSPARSLIB y Aztec cumplen<br />
este requisito, aunque PETSc necesita una etapa previa <strong>de</strong> adaptación y<br />
aprendizaje. A<strong>de</strong>más es imprescindible que los tiempos <strong>de</strong> resolución <strong>de</strong> los<br />
sistemas lineales sean lo más reducidos posibles. Por ello, <strong>de</strong> entre todas <strong>la</strong>s<br />
<strong>librerías</strong> analizadas escogeríamos PSPARSLIB para <strong>su</strong> implementación en<br />
el simu<strong>la</strong>dor.<br />
Como posible trabajo futuro vamos a aplicar al simu<strong>la</strong>dor tridimensional<br />
los métodos <strong>de</strong> resolución que mejores re<strong>su</strong>ltados han presentado para <strong>la</strong>s
Conclusiones 109<br />
ecuaciones <strong>de</strong> Poisson y <strong>de</strong> continuidad <strong>de</strong> electrones. Una vez realizado este<br />
proceso aplicaremos el simu<strong>la</strong>dor al <strong>estudio</strong> <strong>de</strong> <strong>la</strong>s variaciones estadísticas<br />
<strong>de</strong> los dispositivos, tratando en primer lugar el efecto <strong>de</strong> <strong>la</strong>s variaciones en<br />
<strong>la</strong> composición <strong>de</strong> los compuestos ternarios, para posteriormente abordar <strong>la</strong><br />
influencia <strong>de</strong> otros fenómenos como el dopado o <strong>la</strong> estructura atomística <strong>de</strong>l<br />
material, que <strong>de</strong>be tenerse en cuenta cuando tratamos con dispositivos <strong>de</strong><br />
dimensiones <strong>de</strong> puerta tan pequeñas. Por último, tanto el simu<strong>la</strong>dor como el<br />
<strong>estudio</strong> realizado podrán ser aplicados al análisis <strong>de</strong> otro tipo <strong>de</strong> dispositivos.
110 Conclusiones
Bibliografía<br />
[ABW02] A. Asenov, A. R. Brown, and J. R. Watling. Quantum Corrections<br />
in the Simu<strong>la</strong>tion of Decanano MOSFETs. In 3rd European<br />
Workshop on Ultimate Integration of Silicon, 2002.<br />
[AS99] A. Asenov and S. Saini. Supression of random dopant induced<br />
threshold voltage fluctuations in <strong>su</strong>b − 0,1µm MOSFETs with<br />
epitaxial and <strong>de</strong>lta doped channels. In IEEE Trans. Electron<br />
Dev., Vol. 46, No. 8, pages 1718 – 1724, 1999.<br />
[Ase98] A. Asenov. Random dopant induced threshold voltage lowering<br />
and fluctuations in <strong>su</strong>b − 0,1µm mosfets: A 3D atomistic<br />
simu<strong>la</strong>tion study. In IEEE Trans. Electron Dev., Vol. 45, pages<br />
2505 – 2513, 1998.<br />
[Ase01] A. Asenov. Quantum Correction to the atomistic MOSFET<br />
simu<strong>la</strong>tion. In VLSI Design, Vol. 13, 2001.<br />
[BB02] K. F. Brennan and A. S. Brown. Theory of mo<strong>de</strong>rn electronic<br />
semiconductor <strong>de</strong>vices. Wiley, 2002.<br />
[BCO83] Eric B. Becker, Graham F. Carey, and J. Tinsley O<strong>de</strong>n. Finite<br />
Elements. Prentice–Hall, 1983.<br />
[BGMS99a] Satish Ba<strong>la</strong>y, William D. Gropp, Lois Curfman McInnes, and<br />
Barry F. Smith. PETSc 2.0 users manual. Technical Report<br />
ANL-95/11 - Revision 2.0.24, Argonne National Laboratory,<br />
1999.<br />
[BGMS99b] Satish Ba<strong>la</strong>y, William D. Gropp, Lois Curfman McInnes,<br />
and Barry F. Smith. PETSc home page.<br />
http://www.mcs.anl.gov/petsc, 1999.<br />
[Bod95] Nanette J. Bo<strong>de</strong>n. Myrinet: A gigabit-per-second local area<br />
network. IEEE Micro Chips, Systems, Software and Applications,<br />
pages 29–36, 1995.<br />
111
112 BIBLIOGRAF ÍA<br />
[Bri87] W. L. Briggs. A Multigrid Tutorial. SIAM, 1987.<br />
[CRRM96] G. F. Carey, W. B. Richardson, C. S. Reed, and B. J. Mulvaney.<br />
Circuit, Device and Process Simu<strong>la</strong>tion. John Wiley and Sons,<br />
1996.<br />
[CvdV94] T. F. Chan and H. A. van <strong>de</strong>r Vorst. Approximate and incomplete<br />
factorizations. Technical Report CAM94-27, University<br />
of California, 1994.<br />
[DGL99] James W. Demmel, John R. Gilbert, and Xiaoye S. Li. SuperLU<br />
users gui<strong>de</strong>. Technical Report Revision march 2003, 1999.<br />
[Dou96] C. Doug<strong>la</strong>s. Multigrid methods in science and engineering.<br />
IEEE Computational Science & Engineering, pages 55–68,<br />
1996.<br />
[EGSS82] S. Eisenstat, M. Gursky, M. Schultz, and A. H. Sherman. The<br />
Yale sparse matrix package I: The symmetric co<strong>de</strong>s. Int. J.<br />
Numer. Meth. in Eng., 18:1145–1151, 1982.<br />
[FJL + 88] G. Fox, M. Johnson, G. Lyzenga, S. Otto, J. Salmon, and<br />
D. Walker. Solving Problems on Concurrent Computers. Prentice<br />
Hall, 1988.<br />
[Fly72] M. J. Flynn. Some computers organizations and their effectiveness.<br />
IEEE Trans. on Computers, 21:948–960, 1972.<br />
[GBD + 94] A. Geist, A. Beguellin, J. Dongarra, W. Jiang, R. Manchek,<br />
and V. Sun<strong>de</strong>ram. PVM 2 User’s gui<strong>de</strong> and reference manual.<br />
Technical Report ONRL/TM-12187, Oak Ridge National Laboratory,<br />
1994.<br />
[GBD + 96] A. Geist, A. Beguellin, J. Dongarra, W. Jiang, R. Manchek,<br />
and V. Sun<strong>de</strong>ram. PVM. The MIT Press, 3 edition, 1996.<br />
[GLS96] W. Group, E. Lusk, and A. Skjellum. Using MPI. The MIT<br />
Press, 1996.<br />
[HST95] S. A. Hutchinson, J. Shadid, and R. S. Tuminaro. Aztec user’s<br />
gui<strong>de</strong>. Technical Report SAND95-1559, Sandia National Laboratories,<br />
1995.
BIBLIOGRAFÍA 113<br />
[JP97] M. T. Jones and P. E. P<strong>la</strong>ssmann. BlockSolve95 users manual:<br />
Sca<strong>la</strong>ble library software for the parallel solution of sparse linear<br />
systems. Technical Report ANL-95/48, Argonne National<br />
Laboratory, 1997.<br />
[KC91] David Kincaid and Ward Cheney. Numerical Analysis.<br />
Brooks/Cole, 1991.<br />
[KRA + 02] K. Kalna, S. Roy, A. Asenov, K. Elgaid, and I. Thayne. Scaling<br />
of PHEMTs to <strong>de</strong>canano dimensions. In Solid-State Electron<br />
46, pages 631–638, 2002.<br />
[LG94] J. M. López-González. Contribution to the study of the Heterojunction<br />
Bipo<strong>la</strong>r Transistors. PhD thesis, Universidad Politécnica<br />
<strong>de</strong> Cataluña, 1994. (in Spanish).<br />
[LKAG03a] A. García Loureiro, K. Kalna, A. Asenov, and J. M. López<br />
González. 3DParallel Simu<strong>la</strong>tions of Alloy and Dopant Fluctuations<br />
Effects in pHEMTs. In International Workshop on<br />
Computational Electronics, 2003.<br />
[LKAG03b] A. García Loureiro, K. Kalna, A. Asenov, and J. M. López<br />
González. 3DSimu<strong>la</strong>tions of Intrinsic Fluctuations in Nanoscaled<br />
pHEMTs. In 14th Workshop on Mo<strong>de</strong>lling and Simu<strong>la</strong>tion<br />
of Electron Devices, 2003.<br />
[LKLGA03] A. García Loureiro, K. Kalna, J.M. López-González, and<br />
A. Asenov. Three–Dimensional Simu<strong>la</strong>tion of InGaAs/AlGaAs<br />
pHEMT. In Conferencia <strong>de</strong> Dispositivos Electronicos, February<br />
2003.<br />
[LL96] James Laudon and Daniel Lenoski. System Overview of the SGI<br />
Origin 200/2000 Product Line. Silicon Graphics, Inc., 1996.<br />
[Lou99] Antonio García Loureiro. BIPS3D: Un Simu<strong>la</strong>dor 3D Paralelo<br />
<strong>de</strong> Dispositivos Semiconductores BJT y HBT. PhD thesis,<br />
Dept. Electrónica e Computación, 1999.<br />
[LS96] Gen-Ching Lo and Y. Saad. Iterative solution of general sparse<br />
linear systems on clusters of workstations. Technical report,<br />
Department of Computer Science, Univ. of Minnesota, 1996.<br />
[MvdV97] J. A. Meijerink and H. A. van <strong>de</strong>r Vorst. An iterative solution<br />
method for linear systems of which the coefficient matrix is a<br />
symmetric M–matrix. Math. Compt., 31:148–162, 1997.
114 BIBLIOGRAF ÍA<br />
[Myr01] Myricom Inc. Gui<strong>de</strong> to Myrinet-2000 Switches and Switch Network,<br />
2001.<br />
[Pen94] T. F. Pena. Simu<strong>la</strong>ción 3D <strong>de</strong> Dispositivos Semiconductores<br />
en Sistemas Multiprocesador. PhD thesis, Dept. Electrónica e<br />
Computación, 1994.<br />
[PH96] David A. Patterson and John L. Hennessy. Computer Architecture<br />
A Quantitative Approach. Morgan Kaufmann, 2 edition,<br />
1996.<br />
[Pie94] Robert F. Pierret. Dispositivos <strong>de</strong> efecto <strong>de</strong> campo. Addison–<br />
Wesley, 1994.<br />
[RR02] P. Roblin and H. Rohdin. High–speed heterostructure <strong>de</strong>vices.<br />
Cambridge University Press, 2002.<br />
[Saa94a] Y. Saad. ILUT: a dual threshold incomplete LU factorization.<br />
Numerical Linear Algebra with Applications, 1(4), 1994.<br />
[Saa94b] Y. Saad. SPARSKIT: a basic tool kit for sparse matrix computations.<br />
Technical report, University of Illinois, Urbana, IL,<br />
1994.<br />
[Saa95] Y. Saad. Krylov <strong>su</strong>bspace methods on parallel computers. Technical<br />
Report UMSI-95-276, Computer Science Department.<br />
Univ. Minnesota, 1995.<br />
[Saa96] Y. Saad. Iterative Methods for Sparse Linear Systems. PWS<br />
Publishing Co., 1996.<br />
[Sel84] S. Selberherr. Analysis and Simu<strong>la</strong>tion of Semiconductor Devices.<br />
Springer, 1984.<br />
[Sil98a] Silicon Graphics Computer Systems. Origin200 and Origin200<br />
GIGAchannel Maintenance Gui<strong>de</strong>, 1998.<br />
[Sil98b] Silicon Graphics Computer Systems. Origin200 and Origin200<br />
GIGAchannel Owner’s Gui<strong>de</strong>, 1998.<br />
[SLK97] Y. Saad, Gen-Ching Lo, and Sergey Kuznetsov. PSPARSLIB<br />
users manual: A portable library of parallel sparse iterative solvers.<br />
Technical report, Univ. of Minnesota, Dept. of Computer<br />
Science, 1997.
BIBLIOGRAFÍA 115<br />
[SM95] Y. Saad and A. V. Malevsky. Data structures, computational,<br />
and communication kernels for distributed memory sparse iterative<br />
solvers. Technical report, Computer Science Department.<br />
Univ. Minnesota, 1995.<br />
[Syn03] Synopsys. Taurus–Medici Industry standar <strong>de</strong>vice simu<strong>la</strong>tion<br />
tool, 2003.<br />
[Tec93] Theoretic Studies Department of AEA Industrial Technology.<br />
Harwell <strong>su</strong>broutine library: A catalogue of <strong>su</strong>broutines (release<br />
1.1). Technical report, AEA Industrial Technology, 1993.<br />
[Vav96] Stephen A. Vavasis. QMG 1.1 Reference Manual. Computer<br />
Science Department, Cornell University, 1996.<br />
[Wes95] P. Wesseling. Introduction to multigrid methods. Technical<br />
Report 95-11, NASA ICASE, NASA Langley Research Center,<br />
Virginia, 1995.<br />
[WHS89] C. M. Wolfe, N. Holonyak, and G. E. Stillman. Physical Properties<br />
of Semiconductors, chapter 8. Ed. Prentice Hall, 1989.<br />
[Zie77] O. C. Zienkiewicz. The Finite Element Method. McGraw–Hill,<br />
1977.<br />
[Z<strong>la</strong>82] Z. Z<strong>la</strong>tev. Use of iterative refinement in the solution of sparse<br />
linear systems. SIAM Jour. Numer. Analysis, 19:381–399, 1982.