10.05.2013 Views

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 ...

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!