programacion no lineal

186
UNIVERSIDAD DE SANTIAGO DE COMPOSTELA FACULTAD DE FÍSICA Departamento de Electrónica y Computación FACTORIZACIÓN DE CHOLESKY MODIFICADA DE MATRICES DISPERSAS SOBRE MULTIPROCESADORES María J. Martín Santamaría Julio, 1999

description

en este trabajo encontraremos algunos metodos de programacion no lineal

Transcript of programacion no lineal

  • UNIVERSIDAD DE SANTIAGO DE COMPOSTELA

    FACULTAD DE FSICA

    Departamento de Electrnica y Computacin

    FACTORIZACIN DE CHOLESKYMODIFICADA DE MATRICES

    DISPERSAS SOBRE

    MULTIPROCESADORES

    Mara J. Martn Santamara

    Julio, 1999

  • ndice General

    Prefacio

    Agradecimientos

    xi

    . . .X111

    Introduccin 1

    1.1 Algoritmos irregulares . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.2 Algoritmo de Cholesky modificado disperso: motivacin y objetivos . . 2

    1.3 Tendencias en arquitecturas de computadores . . . . . . . . . . . . . . 3

    1.4 Modelos de programacin paralela . . . . . . . , . . . . . . . . . . . . 5

    Resolucin de sistemas lineales dispersos: La factorizacin de Choleskymodificada 7

    2.1

    2.2

    2.3

    2.4

    2.5

    Matrices dispersas............................. 7

    2.1.1 Modos de almacenamiento....................8

    2.1.2 Teora de grafos..........................9

    2.1.3 Conjuntos de matrices prueba.................. 10

    Resolucin de sistemas.......................... 10

    Mtodos directos............................. 11

    Factorizacin numrica.......................... 13

    2.4.1 Factorizacin de Cholesky estndar............... 13

    2.4.2 Factorizacin de Cholesky modificada.............. 16

    2.4.3 rbol de eliminacin....................... 21

    Algoritmos paralelos........................... 23

    i

  • ii NDICE GENERAL

    2.5.1 Lmites al rendimiento paralelo................. 24

    2.6 Resumen................................. 25

    3 Sistemas paralelos y entornos de programacin 27

    3.1 AP1000 de Fujitsu............................ 27

    3.2 Cray T3E ................................. 28

    3.3 SGI Origin 2000............................. 30

    3.4 Programacin de los sistemas paralelos................. 32

    3.5 Herramientas para el desarrollo...................... 33

    3.6 Paralelizacin automtica......................... 34

    3.7 Resumen................................. 34

    4 Paralelizacin sobre sistemas de memoria distribuida 37

    4.1

    4.2

    4.3

    4.4

    4.5

    4.6

    4.7

    4.8

    4.9

    4.10

    Introduccin................................

    Distribucin bidimensional de los datos.................

    Algoritmo paralelo segn una distribucin bidimensional de los datos.

    4.3.1 Factorizacin...........................

    4.3.2 Preprocesamiento.........................

    Anlisis de las comunicaciones para la distribucin bidimensional...

    4.4.1 Comunicaciones para matrices prueba..............

    Balanceo de la carga...........................

    Tiempos de ejecucin para la distribucin bidimensional........

    4.6.1 Implementacin en MPI.....................

    Algoritmos paralelos segn una distribucin unidimensional de los datos

    4.7.1 Algoritmos fan-out........................

    4.7.2 Algoritmos fan-in.........................

    Distribucin de las columnas entre los procesadores...........

    Anlisis de las comunicaciones para la distribucin unidimensional...

    4.9.1 Comunicaciones para matrices prueba..............

    Resultados experimentales para la distribucin unidimensional.....

    37

    37

    38

    39

    43

    44

    58

    60

    60

    73

    76

    77

    79

    83

    83

    89

    89

  • NDICE GENERAL. . .111

    4.11 Mtodo multifrontal............................ 95

    4.12 Resumen................................. 98

    5 Paralelizacin sobre sistemas de memoria compartida tipo NUMA101

    5.1 Introduccin................................ 101

    5.2 Algoritmos paralelos sobre sistemas tipo NUMA ............ 102

    5.3 Anlisis del rendimiento......................... 104

    5.4 Algoritmo right-looking.......................... 104

    5.4.1 Resultados experimentales.................... 107

    5.5 Mejoras al algoritmo right-looking paralelo............... 112

    5.5.1 Nuevo scheduling para el algoritmo right-looking........ 115

    5.5.2 Utilizacin de arrays locales en el algoritmo right-looking... 124

    5.6 Algoritmo left-looking.......................... 127

    5.6.1 Resultados experimentales.................... 129

    5.7 Mejoras al algoritmo left-looking paralelo................ 134

    5.7.1 Reduccin de los tiempos de espera en el algoritmo left-looking 134

    5.7.2 Aumento de la localidad de los datos en el algoritmo left-looking 137

    5.8 Resumen................................. 141

    Conclusiones y principales aportaciones 143

    A Paralelizacin automtica de la factorizacin de Cholesky modificada dis-persa 145

    Bibliografa 163

  • ndice de Tablas

    3.1 Caractersticas del AP1000 y T3E .................... 3 1

    4.1

    4.2

    4.3

    Matrices prueba .............................. 58

    Tiempos de ejecucin del programa secuencial y del programa paralelosobre un procesador............................ 73

    Mensajes para las matrices prueba.................... 76

    5.1 Matrices prueba.............................. 107

    5.2 Tiempos de ejecucin para el programa RL............... 108

    5.3 Comportamiento del sistema de memoria en el programa RL...... 111

    5.4 Tiempos de ejecucin para el algoritmo RNS .............. 122

    5.5 Tiempos de ejecucin para el algoritmo RBH .............. 122

    5.6 Tiempos de ejecucin para el algoritmo RBD .............. 123

    5.7 Comportamiento del sistema de memoria para el algoritmo RNS.... 124

    5.8 Tiempos de ejecucin para el algoritmo RNS2.............. 126

    5.9 Tiempos de ejecucin para el algoritmo LNO .............. 129

    5.10 Tiempos de ejecucin para el algoritmo LPO .............. 131

    5.11 Tiempos de ejecucin para el algoritmo LCC .............. 13 1

    5.12 Tiempos de ejecucin para el algoritmo LNC .............. 136

    5.13 Tiempos de ejecucin para el algoritmo LNC2.............. 136

    5.14 Tiempos de ejecucin para el algoritmo LNS .............. 141

    V

  • ndice de Figuras

    2.1 Matriz dispersa de dimensiones 8 x 8 y ar = 13 ............. 8

    2.2 Modo de almacenamiento CCS para la matriz ejemplo de la Figura 2.1 . 9

    2.3 Matriz dispersa simtrica y su grafo . . . . . . . . . . . . . . . . . . . 9

    2.4 Patrn de la matriz y su fill-in. . . . . . . . . . . . . . . . . . . . . .. 12

    2.5 Algoritmo de Cholesky orientado por columnas............. 14

    2.6 Algoritmo right-looking para la factorizacin de Cholesky....... 14

    2.7 Algoritmo left-looking para la factorizacin de Cholesky........ 15

    2.8 Los tres tipos bsicos de factorizacin de Cholesky........... 15

    2.9 Algoritmo de Cholesky modificado orientado por filas.......... 17

    2.10 Paso j-simo en el algoritmo secuencial por filas............. 18

    2.11 Algoritmo de Cholesky modificado orientado por columnas....... 18

    2.12 Paso j-simo en el algoritmo secuencial orientado por columnas.... 19

    2.13 Algoritmo right-looking para la factorizacin de Cholesky modificada . 20

    2.14 Algoritmo left-looking para la factorizacin de Cholesky modificada . . 21

    2.15 Utilizacin de un vector denso expandido en el algoritmo left-looking. 22

    2.16 Estructura del factor de Cholesky L y su rbol de eliminacin asociado . 23

    3.1 Arquitectura del Fujitsu AP1000..................... 28

    3.2 Configuracin de las celdas del Fujitsu AP10000 . . . . . . . . . . . .. 29

    3.3 Red toro 3D en el Cray T3E....................... 30

    3.4 Diagrama de bloques de un procesador del Cray T3E .......... 31

    3.5 Configuracin del 02000 con 16 procesadores.............. 32

    vii

  • . . .Vlll NDICE DE FIGURAS

    4.1

    4.2

    4.3

    4.4

    4.5

    4.6

    4.7

    4.8

    4.9

    4.10

    4.11

    4.12

    4.13

    4.14

    4.15

    4.16

    4.17

    4.18

    4.19

    4.20

    4.21

    Distribucin BCS para una malla de 2 x 2 procesadores . . . . . . . .

    Matriz ejemplo a factorizar . . . . . . . . . . . . . . . . . . . . . . . .

    Evolucin del algoritmo para la matriz ejemplo de la Figura 4.2 . . . . .

    Patrones de las matrices prueba . . . . . . . . . . . . . . . . . . . . . .

    Nmero de comunicaciones para diferentes configuraciones de una redde 16 procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Nmero de comunicaciones para diferentes configuraciones de una redde 32 procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Nmero de comunicaciones para diferentes configuraciones de una redde 64 procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Nmero de comunicaciones con y sin empaquetamiento de mensajespara diferentes configuraciones de una red de 16 procesadores . . . . .

    Nmero de comunicaciones con y sin empaquetamiento de mensajespara diferentes configuraciones de una red de 32 procesadores . . . . .

    Nmero de comunicaciones con y sin empaquetamiento de mensajespara diferentes configuraciones de una red de 64 procesadores . . . . .

    Balanceo de la carga para diferentes configuraciones de una red de 16procesadores . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . .

    Balanceo de la carga para diferentes configuraciones de una red de 32procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Balanceo de la carga para diferentes configuraciones de una red de 64procesadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

    Tiempos de ejecucin de los programas paralelos . . . . . . . . . . . ,

    Aceleracin para las matrices prueba . . . . . . . . . . . . . . . . . . .

    Aceleracin relativa para las matrices prueba . . . . . . . . . . . . . .

    Comparacin de las aceleraciones obtenidas con la librera nativa y conMPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . j) do4 . 1, = lsjlljj5 . endfor6 . for each Z,j # 0 (s > j) do7 . for each Zij # 0 (i > s) do8 . lis = lis - lsjlij9 . endfor10. endforIl. endfor

    Figura 2.5: Algoritmo de Cholesky orientado por columnas

    En cuanto a la resolucin triangular, algunos trabajos recientes son [3], [49] y [47].Nosotros nos hemos centrado en la paralelizacin de la factorizacin numrica, la cuales la fase computacionalmente ms costosa de todo el proceso. Para una revisin de lafactorizacin de Cholesky estndar dispersa paralela se puede consultar [5 1].

    2.4 Factorizacin numrica

    A continuacin describiremos la factorizacin de Cholesky y la factorizacin deCholesky modificada, sus diferentes orientaciones algortmicas y todos aquellos fac-tores que son relevantes en su realizacin paralela.

    2.4.1 Factorizacin de Cholesky estndar

    Como ya se ha introducido, la factorizacin de Cholesky consiste en la reduccin de unamatriz simtrica A definida positiva en el producto matricial LLT, donde L es una matriztriangular inferior con los elementos diagonales positivos. En la Figura 2.5 mostramosun algoritmo secuencial in place orientado por columnas que lleva a cabo la factor-izacin de Cholesky de una matriz dispersa N x N.

    Siguiendo la notacin introducida por Liu en [36], la factorizacin de Choleskypuede expresarse en trminos de las columnas de la matriz dispersa, constando

  • 2.4. Factorizacin numrica 15

    1. for j=i to N do2. cdiv(j)3. for each Zaj # 0 (S > j) do4. cmod(s,j)5. endfor6. endfor

    Figura 2.6: Algoritmo right-looking para la factorizacin de Cholesky

    bsicamente de dos funciones:

    1. cdiv(j): Normalizacin de la columna j. Computa la raz cuadrada del elementodiagonal ujj y escala la j-sima columna de A por l/& para producir la j-simacolumna factor L,j (pasos 2-5).

    2. cmod(sj): Modificacin de la columna s por la columna j, s > j. Esto implica lasustraccin de la columna j de la columna s Z,j veces (lazo 6- 10).

    Existen dependencias entre dichas funciones. De hecho, la modificacin de unacolumna j por sus predecesoras debe realizarse con anterioridad a su normalizacin, yla modificacin de una columna k (k > j) por la columna j no puede empezar hasta questa haya sido normalizada. Dependiendo del orden en el que se realizan estas funcionesse pueden encontrar en la bibliografa tres algoritmos bsicos:

    El algoritmo right-Zooking, tambin llamado submatriz, en el cual primeramen-te se realiza la normalizacin de la columna j, y a continuacin se utiliza dichacolumna para modificar todas las posteriores (ver Figura 2.6).

    El algoritmo Zeft-Zooking, o por columnas, en el cual una columna es primeramen-te modificada por todas las columnas anteriores y posteriormente se normaliza(ver Figura 2.7).

    Y el algoritmo por filas, idntico al anterior pero accediendo a la matriz por filasen vez de por columnas.

    Estos tres algoritmos tienen diferentes patrones de referencia a memoria en base aque partes de la matriz son accedidas y modificadas en cada etapa de la factorizacin

  • 16 Resolucin de sistemas lineales dispersos . . .

    1. for j=l to N do2. for each Z+ # 0 (s < j) do3. cmod(j,s)4. endfor5. cdiv(j)6. endfor

    Figura 2.7: Algoritmo left-looking para la factorizacin de Cholesky

    Cholesky por submatrices Cholesky por columnas

    Usado para modificar

    Cholesky por filas

    Modificado

    Figura 2.8: Los tres tipos bsicos de factorizacin de Cholesky

  • 2.4. Factorizacin numrica 17

    (ver Figura 2.8), y cada uno de ellos tiene sus ventajas y desventajas dependiendo delentorno de programacin y de la aplicacin.

    Otras propuestas se basan en aproximaciones multifrontales, que son esencialmen-te variaciones del mtodo submatriz o right-looking. El algoritmo multifrontal para lafactorizacin de matrices dispersas fue propuesto independientemente por Speelpening[ 104] y Duff y Reid [23]. Un buen estudio sobre este mtodo puede ser encontradoen [69]. La idea consiste en reorganizar la factorizacin de una matriz dispersa en unasecuencia de factorizaciones parciales de matrices densas ms pequeas. Una de lasrazones ms importantes para usar el mtodo multifrontal es que las matrices frontalesse pueden tratar como densas, y si el hardware soporta, por ejemplo, unidades vecto-riales, stas se pueden explotar con una mayor eficiencia. Adems, la localizacin delas referencias a memoria en este mtodo es ventajosa en la explotacin de la cache oen mquinas con memoria virtual. Una adaptacin del algoritmo multifrontal para lafactorizacin de Cholesky modificada en paralelo fue propuesta por nuestro grupo y esextensamente explicada en [ 8 0 ]

    2.4.2 Factorizacin de Cholesky modificada

    La factorizacin de Cholesky modificada fue introducida inicialmente por Gill y Mur-ray [45], y posteriormente refinada por Gill, Murray y Wright [46]. Dada una matrizsimtrica A E RNxN, no necesariamente definida positiva, calcula una factorizacin deCholesky de otra matriz 2 = A + E, donde E es cero si A es definida positiva, y es unamatriz diagonal no negativa para la cual A + E es definida positiva en otro caso. Estatcnica se utiliza para resolver sistemas lineales Ax = b para matrices de coeficientesA que son simtricas pero no necesariamente definidas positivas. No se intenta resolversistemas en el sentido usual, ya que el sistema modificado & = b, con A # A, puedeproducir una solucin T que no se aproxima en absoluto a x. Esta factorizacin sin em-bargo es apropiada cuando existe justificacin para modificar un sistema lineal, comoen los mtodos de Newton utilizados en problemas de optimizacin no lineal [46, 95] opara computar precondicionadores definidos positivos [20,94].

    Ntese que para el caso de matrices definidas positivas, la factorizacin de Choleskymodificada coincide con la factorizacin de Cholesky estndar, es decir, la factorizacinde Cholesky modificada puede verse como una generalizacin del algoritmo estndar.

    La factorizacin de Cholesky modificada descompone la matriz A = A + E en elproducto LDLT, donde D es una matriz diagonal y L es una matriz triangular inferiorcon unos en la diagonal. La matriz diagonal E no se calcula de forma explcita du-rante la factorizacin si no que es computada implcitamente al calcular D y L de talforma que se cumpla que LDLT es definida positiva y los factores estn todos limita-dos. Esta propiedad se satisface si se asegura que los elementos de D y L verifican las

  • 18 Resolucin de sistemas lineales dispersos . . .

    1 . forj=l to N do2 . Computar fila j de L:3 . lj, = ajs/d, s = 0, . . ..j - 14 . Actualizar columna j de A:5 . a,j=a,j-C~~~Ij~ask s=j+l,...,N6 . calcular + = mahE{j+l,...,n}{ l~jl}7 . computar dj = max(6, IujjI, 0,/p2}8 . Actualizar la diagonal de A para s > j:9 . SS -10. en$or

    - ass - agjld, s = j + 1, . . . . N

    Figura 2.9: Algoritmo de Cholesky modificado orientado por filas

    condiciones:

    donde S es una pequea cantidad positiva y ,0 se calcula desde el mayor valor absolutode los elementos de la diagonal y de los elementos por debajo de la diagonal de la matrizA, de tal forma que se minimice un lmite superior para II E 11 oo, a la vez que se aseguraque E = 0 si A es definida positiva. En el algoritmo de Cholesky modificado in placeusual L se construye por filas siguiendo el proceso mostrado en la Figura 2.9

    En el j-simo paso del algoritmo los primeros j - 1 elementos de D y las primerasj - 1 filas de L sobreescriben las primeras j - 1 filas de A (ver Figura 2.10).

    Ya que las matrices dispersas son almacenadas usando el formato CCS, es decir,se almacenan por columnas, ser ms conveniente utilizar un algoritmo orientado porcolumnas como el mostrado en la Figura 2.11.

    En este algoritmo, en el paso j-simo los primeros j - 1 elementos de D y lasprimeras j - 1 columnas de L sobreescriben las primeras j - 1 columnas de A, tal ycomo se ilustra en la Figura 2.12.

    Ntese que en el algoritmo por columnas todas las actualizaciones realizadas con lacolumna j se llevan a cabo a la vez que se computa dicha columna (pasos 8 al 13), poreso, el clculo de la columna s en la s-sima iteracin del lazo externo se reduce a unasimple divisin por d,. En contrapartida, en el algoritmo orientado por filas, la columna

  • 2.4. Factorizacin numrica 19

    Antes iteracin j-sima

    n LYD

    Despus iteracin j-sima

    0 Elementos de A modificados antes del paso j

    Elementos de A modificados en el paso j

    Figura 2.10: Paso j-simo en el algoritmo secuencial por filas

    1 . for j=i to N do2 . calcular 0, = ma~{j+~,...,,}{ l~-jl}3 . computar dj = TMKC{S, Iu~~I,O~/P}4 . actualizar la diagonal de A para s > j:5 9 Uss = Uss - uSj/di s = j +- 1, . . . . N6 . actualizar los elementos no diagonales de A7 . mientras se computa la columna j de L:8 . fors=j+ltoNdo9 . l,i = a,/di10. for k = s + 1 to N do11. aks = aks - lsjakj12. endfor13. endfor14. endfor

    Figura 2.11: Algoritmo de Cholesky modificado orientado por columnas

  • 20 Resolucin de sistemas lineales dispersos . . .

    Antes iteracin j-sima Despus iteracin j-sima

    0 Elementos de A modificados antes del paso j

    Elementos de A modificados en el paso j

    Figura 2.12: Paso j-simo en el algoritmo secuencial orientado por columnas

    s no es actualizada (excepto su diagonal) hasta que se calcula la fila s en la iteracins-sima del lazo externo.

    Las implementaciones para matrices dispersas deben tener en cuenta el hecho deque una columna s slo necesitar ser actualizada por otra columna j si Z,j # 0. Talesimplementaciones vendrn precedidas por una etapa de ordenamiento de la matriz parareducir el fill-in en L y por una etapa de factorizacin simblica que determine el patrnde L de forma que se puede realizar a priori la reserva de memoria. Ambas etapasson idnticas a las aplicadas para el caso del algoritmo de Cholesky estndar. En elcaso de los mtodos de Newton utilizados en problemas de optimizacin [46, 94] estafactorizacin se utiliza dentro de un proceso iterativo en el cual, el patrn de la matriz novara y, por tanto, la factorizacin simblica y el ordenamiento se computan solamenteuna vez mientras que la factorizacin numrica se ejecuta varias veces.

    En la factorizacin de Cholesky estndar existen, como hemos visto, dos posiblesorientaciones del algoritmo por columnas, la orientacin right-looking y la left-looking.Para adaptar nuestro algoritmo a esos dos esquemas es necesario reestructurar el cdigode la forma mostrada en las Figuras 2.13 y 2.14, respectivamente. Siguiendo la notacinintroducida por Liu, ahora tendremos las funciones:

    l c&(j): clculo de la j-sima diagonal y divisin de todas las entradas de la

  • 2.4. Factorizacin numrica 21

    1 . for j=i to N do2 . 0, = m~z,~{~+~,...,~}(l~~~l}3 . dj = max(S, Jajj 1, ej/p}4. for each ZSj # O(S > j) do5 . l,j = asj/dj6 . endfor7 . for each laj # O(S > j) do8 . for each Zkj # O(k 2 S) do9 . aks = aks - @,jdj10. endfor11. endfor12. endfor

    for j=l to N docdiv(j)for each ZSj # O(s > j) do

    cmod(s,j)endfor

    endfor

    Figura 2.13: Algoritmo right-looking para la factorizacin de Cholesky modificada

    columna j por esta diagonal (pasos 2 al 6 del algoritmo right-Zooking y pasos 7 al11 del Zeft-Zooking).

    l cmod(j, s): modificacin de las entradas en la columna j por las columnas s (J >s) incluyendo el elemento diagonal. Es decir, modificacin de todas las columnasposteriores por la columna actual para el caso del algoritmo right-Zooking (pasos7 al 1 l), y modificacin de la columna actual por todas las precedentes en el casodel Zeft-Zooking (pasos 2 al 6).

    Cabe destacar que cuando se utilizan matrices dispersas y se usa una columna j paramodificar otra columna s, generalmente las columnas j y s tienen diferentes patrones deentradas; el patrn de la columna destino s es un superconjunto del de la columna fuentej. En la implementacin directa del algoritmo right-Zooking secuencial el problema desumar un mltiplo de la columna j dentro de la columna s se resuelve realizando unabsqueda a travs de las entradas en la columna destino para encontrar las localizacionesapropiadas en las cuales se debe realizar la suma. Una posible optimizacin consiste encomprobar si el nmero de entradas en la columna j es igual al nmero de entradas enla columna k bajo la fila j. Si son iguales, entonces ambas columnas tienen la mismaestructura. En este caso se pueden ignorar por completo los vectores de ndices y realizarla suma directamente.

    En el caso del algoritmo Zeft-Zooking, la misma columna j es utilizada varias vecesconsecutivas para ser modificada por otras columnas s, s < j. En este caso la forma

  • 22 Resolucin de sistemas lineales dispersos . . .

    1 . for j=i to N do2 . for each Zj, # O(s < j) do3 . for each Zks # O(k . j) do4 . akj = akj - ljalk,d,5 . endfor6 . endfor7 . ej = maZ,E{j+l,...,n}{IasjI}8 . dj = max{S, IajjI, O;/p>9 . for each Z,j # O(s > j) do10. l,i = a,j/di11. endfor12. endfor

    for j=i to N dofor each lSj # O(S < j) do

    cmod(j,s)endforcdiv(j)

    endfor

    Figura 2.14: Algoritmo left-looking para la factorizacin de Cholesky modificada

    ms eficiente de llevar a cabo la suma de las columnas fuente dentro de la columnadestino es a travs de un vector denso expandido. En este vector se acumulan todaslas modificaciones desde las diferentes columnas s a la columna j. Despus de realizartodas las modificaciones, el vector se vuelca sobre la columna dispersa j tal y como semuestra en la Figura 2.15. En esta figura mostramos el vector de datos (DA) para lamatriz ejemplo de la Figura 2.4, y el vector denso expandido para el clculo de la quintacolumna. Esta quinta columna ser modificada por las columnas 1, 2 y 3, tras lo cual elvector denso ser de nuevo volcado sobre el vector de datos DA.

    Las columnas s que modifican a la columna j en el cdigo Zeft-Zooking son exacta-mente aquellas para las cuales lj, # 0, es decir, el conjunto de columnas s que modificanuna columna j viene dado por las entradas no nulas en la fila j de la matriz. Dado quese va a considerar la matriz dispersa almacenada por columnas en formato CCS, el ac-ceso por filas a la matriz no es inmediato. Por eso en las implementaciones secuencialesdel mtodo Zeft-Zooking es eficiente utilizar una lista enlazada que mantenga los ndicesde las columnas s que modifican otra columna j [40]. La construccin de esta listaenlazada se efecta en tiempo de ejecucin.

  • 2.4. Factorizacin numrica 23

    XXx Col 1

    XX

    ~

    x C o l 2

    Xx C o l 3XX

    i

    X

    X

    X

    dEY+-XXLrx xxez-2

    x C o l 4X

    Modificaciones

    Vector Denso

    XXx Col 1

    XXx C o l 2

    Xx C o l 3XXx C o l 4XXXx c o 1 5

    XXx C o l 6XXx C o l 7XXx Col 8XXx C o l 9

    x Col 10

    DA DA

    Figura 2.15: Utilizacin de un vector denso expandido en el algoritmo left-looking

  • 24 Resolucin de sistemas lineales disnersos . . .

    /

    X

    X

    X X

    \

    x xXxXxX

    X x x X 16P

    P?\

    4 03s1

    Figura 2.16: Estructura del factor de Cholesky L y su rbol de eliminacin asociado

    2.4.3 rbol de eliminacin

    Sea A una matriz dispersa simtrica definida positiva e irreducible. El rbol de elim-inacin de A, T(A), se define como una estructura con N nodos, donde cada nodorepresenta una columna de la matriz. El nodo p es padre de j si y slo si

    p = min(i / lij # 0, i > j}

    donde L es el factor de Cholesky de la matriz A. Es decir, el padre de la columna j esdeterminado por el primer elemento no nulo debajo de la diagonal en la columna j. Enotras palabras, el padre de la columna j es la primera columna modificada por j. En laFigura 2.16 se muestra la estructura del factor de Cholesky L y su correspondiente rbolde eliminacin. El rbol de eliminacin es el mnimo subgrafo de G(A) que proporcionala descripcin de las dependencias entre columnas en el clculo del factor de CholeskyL. Una columna slo puede modificar a sus antecesores en el rbol de eliminacin y,equivalentemente, una columna slo puede ser modificada por sus descendientes.

    En [68] se discute el uso de los arboles de eliminacin en diferentes aspectos de laresolucin de grandes sistemas lineales dispersos, incluyendo el ordenamiento, la fac-torizacin simblica, la factorizacin numrica y los esquemas de almacenamiento dis-perso. La resolucin triangular est tambin condicionada por la estructura del rbol deeliminacin. La sustitucin hacia delante (forward substitution, Ly = b) avanza desdelos nodos hoja hacia la raz del rbol, y la sustitucin hacia atrs (backward substitution,LTx = y) avanza desde la raz hacia las hojas.

    La utilizacin del rbol de eliminacin ser de gran utilidad en la implementacin delas soluciones paralelas, tanto en memoria distribuida como compartida. En concreto, enmemoria distribuida el algoritmo de distribucin eficiente de los datos para el algoritmode Cholesky modificado multifrontal est basado en el rbol de eliminacin de la matriz

  • 2.5. Algoritmos paralelos 25

    [ 8 1 ] En memoria compartida el rbol de eliminacin nos proporcionar informacinpara aumentar la localidad de los datos en las implementaciones paralelas y, por tanto,ayudar a aumentar el rendimiento [74, 75]. En ambos casos las estrategias aplicadasson generalizables a otros problemas dispersos tales como otro tipo de factorizacino la resolucin de sistemas triangulares. En general sern aplicables a todos aquelloscdigos en los cuales las dependencias puedan ser representadas mediante un rbol.

    2.5 Algoritmos paralelos

    El primer paso en el diseo de la factorizacin paralela es el establecimiento del modelocomputacional que se va a utilizar. En ese sentido, Liu usa el rbol de eliminacin de lamatriz para analizar los niveles de paralelismo en la factorizacin de Cholesky estndarobteniendo las siguientes alternativas en el modelo de programacin [64]:

    l paralelismo de grano fino, en el cual cada tarea paralela es una operacin en puntoflotante, es el modelo introducido por Wing y Huang en [ 112].

    l paralelismo de grano medio, en el cual cada tarea paralela es una operacin conuna columna, es decir, una operacin cmod o cdiv, es el modelo introducido porLiu en [64].

    l paralelismo de grano grueso, en el cual cada tarea paralela se corresponde con unsubrbol del rbol de eliminacin, es el modelo introducido por Jees y Kees en[57].

    En esta memoria se analizan los rendimientos que se pueden obtener al explotar cadauno de estos tres tipos de paralelismo sobre la factorizacin de Cholesky modificada

    Ms concretamente, el paralelismo de grano grueso se refiere al trabajo indepen-diente al computar columnas pertenecientes a subrboles disjuntos dentro del rbol deeliminacin de la matriz. Este tipo de paralelismo es slo disponible en la factorizacindispersa y es en el que nos hemos centrado para proponer el algoritmo de distribucinde los datos para la factorizacin de Cholesky modificada multifrontal sobre sistemas dememoria distribuida [8 1], y para proponer nuevos schedulings que mejoren la localidadde los datos sobre los sistemas de memoria compartida [74,75].

    Desde luego no es el nico paralelismo posible, dentro del mismo subrbol o entresubrboles no disjuntos se puede explotar el paralelismo que ofrecen las operacionescmod de forma individual.

    Sean jr y j, dos ndices columna cuyos subrboles no son disjuntos, y sean Icr y Icpdos ndices columna que modifican jt y j, respectivamente, claramente las operaciones

  • 26 Resolucin de sistemas lineales dispersos . . .

    de modificacin cmod(jr, ZQ) y cmod(ja, kz) pueden ser llevadas a cabo en paralelo. Aesto se refiere el paralelismo de grano medio que es analizado en esta memoria tantopara los diferentes algoritmos fan-in y fan-out propuestos en el captulo 4 para sistemasde memoria distribuida [77], como para los algoritmos right-Zooking y left-looking prop-uestos en el captulo 5 para sistemas de memoria compartida [74,75].

    En cuanto al paralelismo de grano fino, ha sido el utilizado en las primeras versionesparalelas sobre mquinas de memoria distribuida descritas tambin en el captulo 4, y seha demostrado poco rentable su implementacin paralela, adems de requerir un mayorgrado de complejidad [76].

    2.51 Lmites al rendimiento paralelo

    Un factor obvio que limita el rendimiento de los programas paralelos es la carga com-putacional asignada a cada procesador. La computacin en paralelo no puede finalizaren menos tiempo que el mximo de los tiempos que precisa cada procesador individualpara ejecutar las tareas que le han sido asignadas, ignorando todas las dependencias en-tre las tareas. Este lmite es usualmente conocido como balanceo de la carga y va a serla distribucin de los datos realizada por el programador la que determine su valor.

    Otro lmite importante al rendimiento es lo que se conoce como el camino crtico. Lacomputacin en paralelo no puede finalizar en menos tiempo que el requerido para eje-cutar secuencialmente la cadena de tareas dependientes ms larga dentro del problema aresolver. En el caso del algoritmo de Cholesky, cada camino en el rbol de eliminacindesde un nodo hoja hasta la raz del rbol forma una cadena de tareas dependientes. Portanto, el camino ms largo desde un nodo hoja hasta la raz define el camino crtico paracada una de las matrices a factor-izar.

    Nosotros utilizamos, para las propuestas de memoria distribuida, una distribucincclica de los datos que garantiza en la mayora de los casos el buen balanceo de lacarga y minimiza, en consecuencia, el efecto del primero de los lmites.

    En cuanto al camino crtico, existen mtodos de ordenamiento de la matriz que in-tentan minimizar la altura del rbol y reducir, por tanto, este camino crtico, aumentandocon ello el paralelismo potencial. Un ejemplo son los ordenamientos equivalentes pre-sentados por Liu [67] basados en rotaciones del rbol de eliminacin [66]. Se entiendepor ordenamientos equivalentes aquellos que reestructuran el rbol de eliminacin de lamatriz sin generar fill-in adicional. Liu propone aplicar dos ordenamientos consecutiva-mente, el primero para minimizar el fill-in, y el segundo un ordenamiento equivalenteque minimice la altura del rbol. Otro ejemplo es el algoritmo presentado por Lewiset al. [60], basado en el mtodo introducido por Jees y Kees [57], en el cual el orde-namiento de la matriz para una factorizacin paralela eficiente tambin se lleva a cabo

  • 2.6. Resumen 27

    en dos etapas. En la primera etapa se aplica un ordenamiento, P, para minimizar el fi11de la matriz A a factorizar. En la segunda etapa se computa un ordenamiento paralelo apartir del grafo de la matriz F = L + LT, siendo L el factor de Cholesky de la matrizPAPT. Entre todos los ordenamientos cuyo fill est incluido en el grafo de F, esteordenamiento es el que ofrece el nmero mnimo de pasos en la factorizacin paralelade A.

    Nosotros nos hemos centrado a lo largo de esta memoria en la factorizacinnumrica, y no consideramos ni estudiamos ningn tipo de ordenamiento que mini-mice el camino crtico. Por tanto, en nuestro caso, el camino crtico va a ser un lmiteimportante al rendimiento de los cdigos paralelos.

    2.6 Resumen

    Existe un grupo de cdigos irregulares cuyas dependencias pueden ser representadasen trminos de un grafo en rbol, conocido habitualmente como rbol de eliminacin.La factorizacin de Cholesky se puede considerar como un algoritmo representativo deeste tipo de cdigos. Diferentes algoritmos de factorizacin de matrices, as como laresolucin de sistemas triangulares, son ejemplos de esta clase de problemas.

    En todos estos algoritmos, el camino crtico impuesto por las dependencias es unfuerte lmite a la eficiencia de los cdigos paralelos.

    Adems, la factorizacin de Cholesky modificada se puede considerar como unageneralizacin de la factorizacin de Cholesky estndar. La principal diferencia entreambos algoritmos radica en el hecho de que la factorizacin de Cholesky modificadarequiere una mayor nmero de operaciones para el clculo de los elementos diagonalesy tiene, por tanto, un mayor coste computacional.

    Cabe destacar que no existen, que nosotros conozcamos, versiones paralelas de lafactorizacin de Cholesky modificada. Nuestra propuesta se basa en adaptar los algo-ritmos para la factorizacin de Cholesky estndar a la factorizacin de Cholesky mod-ificada y optimizarlos en funcin, tanto de las caractersticas hardware, como de lascondiciones especficas de la factorizacin.

  • Captulo 3

    Sistemas paralelos y entornos deprogramacin

    En este captulo se describen brevemente las arquitecturas de las mquinas utilizadas,APlOOO de Fujitsu, Cray T3E y Origin 2000 de SGI, as como las libreras y herramien-tas de programacin empleadas para desarrollar los cdigos paralelos sobre ellas. In-cluimos adems una seccin dedicada a la paralelizacin automtica de la factorizacinde Cholesky modificada dispersa.

    3.1 AP1000 de Fujitsu

    El AP1000 es un computador multiprocesador de memoria distribuida comercializadopor Fujitsu. Consta de 64 a 1024 procesadores o celdas los cuales se encuentran inter-conectados mediante tres redes de comunicacin especficas e independientes, como seilustra en la Figura 3.1:

    l red de radiacin o red B: para comunicaciones entre el host y las celdas, as comopara la distribucin y la recoleccin de datos,

    l red toroide o red T: para comunicaciones punto a punto entre las celdas. La ve-locidad de comunicacin entre celdas es de 25 MB/s.

    l red de sincronizacin o red S: empleada en las sincronizaciones de barrera.

    El sistema AP1000 requiere un computador host (por ejemplo, una estacin de traba-jo) para realizar tareas de control e interaccin con el usuario. Las celdas del AP1000,cuya configuracin se muestra en la Figura 3.2, estn basadas en microprocesadores

    29

  • 30 Sistemas paralelos y entornos de programacin

    SPARC y constan de una unidad de enteros (IU), una unidad de punto flotante (FPU),un controlador de mensajes (MSC), un controlador de encaminamiento (RTC), una in-terface con la red B (BIF), 16 MB de memoria RAM dinmica (DRAM) y 128 KB dememoria cache.

    Durante la operacin normal, los MSCs trabajan como controladores de memoriacache con un esquema de ubicacin directa y una estrategia de postescritura (write-back para actualizar la memoria principal, siendo el tamao de las lneas de 4 palabras.

    Los controladores MSC, RTC, BIF y el de la DRAM de cada celda estn conectadosa travs del bus local sncrono de 32 bits, denominado LBUS en la Figura 3.2. Ademscada celda tiene un conector de LBUS externo que permite la instalacin de varias op-ciones hardware tales como interfaces de E/S de alta velocidad, de disco y de memoriaadicional. Ms detalles sobre la arquitectura de este sistema pueden ser encontrados en[561.

    RED-S

    RED-T

    Figura 3.1: Arquitectura del Fujitsu AP1 000

  • 3.2. Cray T3E 31

    Red B/

    50 Mbytesk

    LBUS

    controlador

    DRAM

    DRAMde

    16 Mbytes

    Figura 3.2: Configuracin de Ias celdas del Fujitsu APIO00

    3.2 Cray T3E

    El Cray T3E es un sistema de memoria compartida fsicamente distribuida tipo NUMA.Consta de 16 a 2048 procesadores DEC Alpha 21164 conectados mediante una redbidireccional en toro tridimensional como se muestra en la Figura 3.3. La velocidadde comunicacin entre procesadores en cualquier direccin a travs del toro es de 480MB/s.

    Cada celda del T3E, como puede verse en la Figura 3.4, incluye un microprocesadorDEC Alpha 21164, una memoria local de 64 MB a 2 GB, un router de comunicacin yuna lgica de control.

    El DEC 21164 es un microprocesador RISC con una cache de primer nivel parti-cionada para instrucciones y datos de 8 KB cada una, y una cache de segundo nivelde 96 KB, que reduce en gran medida la latencia media de los accesos a memoria. El

  • 32 Sistemas paralelos y entornos de programacin

    Figura 3.3: Red toro 3D en el Cray T3E

    T3E aumenta el inteface de memoria del microprocesador con un conjunto de registrosexternos que se utilizan como fuente o destino para las comunicaciones remotas. To-das las comunicaciones y sincronizaciones remotas se realizan entre estos registros y lamemoria.

    Este multiprocesador se puede programar utilizando un modelo de pase de mensajeso utilizando un modelo de programacin de memoria compartida. Nosotros lo hemosprogramado con el modelo de programacin de pase de mensajes. Ms detalles sobresu arquitectura pueden ser encontrados en [97].

    Las caractersticas ms importantes del Fujitsu AP1000 y el Cray T3E son resumidasen la tabla 3.1.

    3.3 SGI Origin 2000

    El Origin 2000 de SGI se puede clasificar como un multiprocesador de memoriafsicamente distribuida dotado de un sistema de coherencia cache basado en directorios,y con un acceso a memoria no uniforme. La gestin de esta coherencia es realizada

  • 3.3. SGI Origin 2000 33

    ug 2

    Demostracin:

    Si Pf = P, entonces PC = 1 y por tanto MH = 0. En cuanto a MV, paramatrices lo suficientemente grandes, y suponiendo que N >> P, tendremos:

    P - lMT1=MV~N2p

    2 .

    Por otro lado, si PC = P, entonces Pf = 1 y por tanto MV = 0. En cuanto aMH, si suponemos de nuevo matrices lo suficientemente grandes y N >> P,tendremos:

    P - lMT2=MH=N(P-l+p.

    P )Por tanto, MT1 > MT2 cuando N es grande. 0

    Corolario 2 Para matrices grandes, en el caso denso, el mdximo en el nmero de co-municaciones se produce para Pf = P y el mnimo para PC = P

    Demostracin:

    l El nmero total de mensajes generados para matrices grandes y para una config-uracin de procesadores dada suponiendo N >> P ser:

    2Pf -1MT=MV+MHzN 2.

    Derivando con respecto a Pf:

    dMT N2-E2>0.dPf

    Por tanto, MT es una funcin estrictamente creciente con Pf, es decir, en el inter-valo [l,P] tendr el mximo en Pf = P y el mnimo en Pf = 1 o, equivalente-mente, en PC = P. Cl

  • 60 Paralelizacin sobre sistemas de memoria distribuida

    Corolario 3 Para la matriz promedio, el nmero de mensajes totales generados paraPf = P es siempre mayor que el nmero de mensajes totales generados para PC = P,siendo P 2 2

    Demostracin:

    l Si Pf = P entonces PC = 1 y por tanto MH = 0. Entonces:

    M~l=nlri=N(P-l)(l+F-g) s i G>P

    - _MT, = MV = N(X - l)(t + 1) si G < P.

    l Por otro lado, si PC = P, entonces Pf = 1 y , por tanto, MV = 0. Entonces:

    &=MH=N(P-1)(1+:-g) s i s>P

    - - P - lMT2 = MH = N(; - l)(l+ Tf - ~P-l . E

    = N(P-l)(&l+;)>N(P-l);>O

    - -cumplindose, por tanto, que MT1 > MT2.

    l Si $ < P:

    MTZ-P-l P - l

    = N(;-l)(l+fF---P )

    a P - l< N(;-l)(l+$-+

    < N(G - l)(l+ 2) = MT,. q

  • 4.4. Anlisis de las comunicaciones para la distribucin bidimensional 61

    MATRIZ Origen N Q en A Q en LBCSSTM07 Anlisis dinmico en 420 3836 14282

    ingeniera estructuralERIS1176 Redes elctricas 1176 9864 49639ZENIOS Control de trfico areo 2873 15032 62105

    RANDOM Generada aleatoriamente 1250 1153 32784RANDOM 1 Generada aleatoriamente 2000 1975 106545

    Tabla 4.1: Matrices prueba

    Estos resultados nos indican, en primera aproximacin, que tanto en el caso densocomo en un caso promedio artificial, la mejor configuracin de una red de P = Pf x PCprocesadores ser aquella en la cual PC = P y Pf = 1, es decir, aquella para la cual seminimiza el nmero de comunicaciones. Sin embargo, esta conclusin depende del pa-trn de la matriz, y de hecho, se pueden encontrar estructuras artificiales, y posiblementepoco prcticas, en las que la mejor distribucin no se corresponda con Pf = 1. Por ello,en el siguiente apartado, y para completar este estudio, presentamos resultados realesdel nmero de comunicaciones generado para ciertas matrices de prueba obtenidas delos benchmark estndar. Cabe destacar que hablar de la mejor configuracin de una redde procesadores es equivalente, en nuestro caso, a hablar de la mejor distribucin cclicade la matriz.

    4.4.1 Comunicaciones para matrices prueba

    En la prctica, el nmero de comunicaciones depende del patrn de la matriz. Dado elpatrn de una matriz y el nmero de procesadores de la malla del sistema de memoriadistribuida, se puede determinar cual es la configuracin de la malla que menor nmerode mensajes genera. Para ilustrarlo hemos seleccionado un conjunto de cinco matricesdispersas: las matrices BCSSTM07, ERIS 1176 y ZENIOS de la coleccin de matricesHurwell-Boeing [22] y 2 matrices generadas aleatoriamente, RANDOM y RANDOMl.La Tabla 4.1 resume sus caractersticas, donde Origen indica la disciplina cientfica dela cual proceden, N es el nmero de filas y columnas y (I! es el nmero de entradas nonulas. Los patrones de estas matrices son mostrados en la Figura 4.4, dado que sonsimtricas slo se muestra la parte triangular inferior que es con la que se trabaja.

    En las Figuras 4.5, 4.6 y 4.7 se muestra el nmero de mensajes horizontales,verticales y totales generados para diferente configuracin de la red de procesadores(P = Pf x PC) y para P =16, 32 y 64 respectivamente. Se concluye que la mejorconfiguracin de la red es aquella para la cual Pf = 1 y PC = P, es decir, aquellaen la que cada procesador almacena una columna entera de la matriz. Esto se debe a

  • 62 Paralelizacin sobre sistemas de memoria distribuida

    BCSSTM07 ERIS1176 ZENIOS

    RANDOM FLkNDOMl

    Figura 4.4: Patrones de las matrices prueba

  • 4.5. Balanceo de la carga 63

    dos razones, en primer lugar, para esta configuracin se eliminan todos los mensajesverticales, y en segundo lugar, se maximiza el posible empaquetamiento de mensajeshorizontales reduciendo con ello el nmero total de mensajes. Se observa, adems, quela configuracin que produce un mayor nmero de mensajes corresponde, en general,con la configuracin Pf = P y PC = 1. Excepciones a este comportamiento son lasmatrices BCSSTM07, ERIS1176 y ZENIOS para P = 64.

    En las Figuras 4.8,4.9 y 4.10 se ilustra el descenso en el nmero de comunicacionesque supone aplicar el empaquetamiento de mensajes propuesto en la Seccin 4.3.1.2para diferentes configuraciones de una red de 16,32 y 64 procesadores respectivamen-te. En dichas figuras se muestra el nmero total de mensajes enviados con y sin empa-quetamiento. Obviamente el empaquetamiento slo disminuye el nmero de mensajeshorizontales. Por consiguiente, el nmero total de mensajes para las configuraciones16 x 1,32 x 1 y 64 x 1 coincide para las versiones con y sin empaquetamiento. De igualforma, el mayor descenso en el nmero de comunicaciones debido al empaquetamientose obtiene para las configuraciones 1 x P.

    4.5 Balanceo de la carga

    Utilizamos como medida del balanceo de la carga:

    B = FLOPtotal/(P * FLOP,,,)

    donde FLOPtot,l es el nmero de operaciones totales en punto flotante necesarias parallevar a cabo la factorizacin, P es el nmero de procesadores y FLOP,,, es el valormximo del nmero de operaciones en punto flotante asignadas a los procesadores. Bes tal que 0 < B 5 1. En el caso de carga completamente balanceado el resultadoser la unidad, cuanto peor balanceada se encuentre la carga, ms nos acercaremos alvalor 0. Adems esta variable constituye un lmite superior en la eficiencia del programaparalelo: eficiencia 2 B.

    Ntese que para el caso denso y la matriz promedio utilizada en la seccin anteriorel balanceo de la carga sera prcticamente perfecto, siendo B E 1.

    Las Figuras 4.11,4.12 y 4.13 muestran los resultados obtenidos para cada una de lasmatrices prueba y para P =16,32 y 64 procesadores y diferentes configuraciones de lared de procesadores.

    El balanceo de la carga para muchas configuraciones alcanza valores prximos a launidad y, en todos los casos, se mantiene dentro de unos lmites aceptables, no bajandonunca del valor 0.5. Por tanto van a ser las comunicaciones, y no el balanceo de la carga,el factor determinante en la mejor configuracin de la red de procesadores con respectoa los tiempos de ejecucin.

  • 64 Paralelizacin sobre sistemas de memoria distribuida

    BCSSTM07

    o) _:.. 1.-....-.._.>

    ,:-*__

    -_0

    2 84

    PC

    RANDOM 1

    I.hX - \

    PC

    ERIS 1176

    4m I

    RANDOM -

    1m-mmI - _:.

    ,: 10 , ---1 2 4 8 16

    PC

    . Horizontales

    _ _ Verticales

    - Totales

    Figura 4.5: Nmero de comunicaciones para diferentes configuraciones de una red de16 procesadores

  • 4.5. Balanceo de la carga 65

    1 2 4 8 16 32

    ERIS1176 -

    1 2 4 8 16 32

    PC

    I

    4 8 32

    PC

    Horizontales

    _- Verticales

    - Totales

    503303 ....

    ,:. --ti:.... k_:.

    - _ ;.-+.

    P-

    Figura 4.6: Nmero de comunicaciones para diferentes configuraciones de una red de32 procesadores

  • 66 Paralelizacin sobre sistemas de memoria distribuida

    L 2 4 8 16 32 64

    PC

    ZENIOS

    7. 4 8 16 32 M

    PC

    ERIS

    PC

    ..< Horizontales

    - - Verticales

    - Totales

    Figura 4.7: Nmero de comunicaciones para diferentes configuraciones64 procesadores

    de una red de

  • 4.5. Balanceo de la carga 67

    II 2 4 8 16

    PC

    4

    PC

    , 2 4 8 16

    PC

    - - Con empaquetamiento

    - Sin empaquetamiento

    Figura 4.8: Nmero de comunicaciones con y sin empaquetamiento de mensajes paradiferentes configuraciones de una red de 16 procesadores

  • 68 Paralelizacin sobre sistemas de memoria distribuida

    BCSSTM07

    \\\ \\

    .\

    \* -.-.

    -+__-_

    4 8

    PC

    16 32

    ZENIOS

    -..

    Y- -.---L -_

    --+-___

    2 4 8 Lf 32

    PC

    RANDOMl

    - - Con empaquetamiento

    - Sin empaquetamiento

    Figura 4.9: Nmero de comunicaciones con y sin empaquetamiento de mensajes paradiferentes configuraciones de una red de 32 procesadores

  • 4.5. Balanceo de la carga 69

    .+.

    -.BCSSTM07 --+-__

    I, 2 4 8 16 32 64

    PC

    ._a \,c+w - \ . \

    i. .

    5a*xa- . .ZENIOS * - _ -

    -+- - __0

    2 4 8 16 32 w

    PC

    \\l.b+x - \

    c Z.F Lct

  • 70 Paralelizacin sobre sistemas de memoria distribuida

    BCSSTM07 ERIS 1176

    RANDOMI I I I t

    RANDOMl

    0.8 -

    0.6 -

    B04 -

    01 -

    4 * 16

    PC

    4 * 16

    PC

    Figura 4.11: Balanceo de la carga para diferentes configuracionesprocesadores

    de una red de 16

  • 4.5. Balanceo de la carga 71

    BCSSTM07

    ZENIOS

    ERIS1176

    RANDOM

    0.8

    0.6

    B0.4

    0.2

    4 8 16 32

    PC

    Figura 4.12: Balanceo de la carga para diferentes configuracionesprocesadores

    de una red de 32

  • 72 Paralelizacin sobre sistemas de memoria distribuida

    08 -

    0.6 -

    B0.4 -

    BCSSTM07

    ZENIOS

    1

    ERIS1176

    1

    0.8

    0.6

    Bcl4

    0.2

    RANDOM

    RANDOM 1L ,

    Figura 4.13: Balanceo de la carga para diferentes configuracionesprocesadores

    de una red de 64

  • 4.6. Tiempos de ejecucin para la distribucin bidimensional 73

    4.6 Tiempos de ejecucin para la distribucin bidimen-sional

    Hemos implementado el programa sobre el sistema de memoria distribuida AP1000 deFujitsu utilizando doble precisin y la librera nativa de pase de mensajes Cellos [72].

    Se ha utilizado para el envo y la recepcin de mensajes los denominados modo deenvo por lneas (line-sending mode) y recepcin por buffer (buffer-receiving) respecti-vamente.

    En el modo de envo por lneas los mensajes son enviados directamente desde lamemoria cache sin utilizar buffers de envo. Si el mensaje no est en la cache sebusca en la memoria principal y se enva directamente desde la memoria.

    La recepcin por buffer se corresponde con un transferencia de datos asncronautilizando un buffer circular alocado en memoria principal y denominado ringbuffer. Existe hardware especfico para detectar posibles overflows. Una serie depunteros almacenados en registros mantienen las direcciones de memoria nece-sarias para su actualizacin.

    Las operaciones bsicas de envo sin esta utilidad trabajan conjuntamente con unsistema de buffers, es decir, los mensajes enviados son copiados previamente a un bufferdentro de la memoria. Y as mismo, los mensajes que estn siendo recibidos por una cel-da son colocados en un buffer a medida que se estn recibiendo. Utilizando linc-sendingy buffer-receiving se evitan las operaciones extra de copia de datos al buffer y dismin-uye, por tanto, la latencia. En contrapartida, el ring buffer tiene un tamao mximode 512 KB, lo cual, en algunos casos, puede resultar insuficiente. A partir de ahorallamaremos a las comunicaciones que hacen uso de estas utilidades comunicaciones debaja latencia.

    En la Figura 4.14 se muestran los tiempos de ejecucin obtenidos en segundos paralas diferentes matrices consideradas y para diferentes configuraciones de la red de proce-sadores, P = 16, 32 y 64. Tal y como caba esperar, para un nmero de procesadoresdado, la mejor configuracin en malla bidimensional se corresponde con la configu-racin que genera el menor nmero de comunicaciones, es decir, la configuracin en lacual cada procesador almacena columnas enteras de la matriz de forma cclica.

    En la Figura 4.15 se representa la aceleracin (Speed-up) obtenida para cada unade las matrices y para la configuracin P = 1 x PC. Estos resultados corresponden alalgoritmo paralelo sin tener en consideracin el tiempo de la fase de preprocesamientopara su clculo. En muchas aplicaciones que requieren la resolucin de problemas deoptimizacin no lineales este algoritmo se suele usar dentro de un proceso iterativo en

  • 74 Paralelizacin sobre sistemas de memoria distribuida

    L 4 8 16

    P C

    8

    PC

    31 64

    8 32

    ____

    _.-.-..

    P C

    BCSSTMO7

    ERIS1176

    ZENIOS

    RANDOM

    RANDOMl

    Figura 4.14: Tiempos de ejecucin de los programas paralelos

  • 4.6. Tiempos de ejecucin para la distribucin bidimensional 75

    el cual el patrn de la matriz no vara. Por tanto, la fase de preprocesamiento, as comola factorizacin simblica de la matriz, se convierten en unas fases previas las cuales seejecutan solamente una vez.

    La aceleracin se ha calculado a partir del programa paralelo para un procesador. Enla Tabla 4.2 se muestran las diferencias de tiempo en segundos entre el programa parale-lo para un procesador y el programa secuencial. Se puede observar que las diferenciasno son significativas debido, fundamentalmente, a que la principal diferencia entre am-bos programas radica en la inclusin de funciones de comunicacin con tiempos deespera asociados. Esto no puede venir reflejado en el programa paralelo para un proce-sador, se aprecia, sin embargo, en la relativamente baja aceleracin conseguida para 2procesadores. El paso de 1 a 2 procesadores introduce un overhead en el tiempo deejecucin que va a ser arrastrado en los resultados de aceleracin obtenidos para ms de2 procesadores. Esto se puede ver ms claramente representando la aceleracin relativa.Definimos la aceleracin relativa para 2p procesadores como el cociente entre el tiempode ejecucin del algoritmo paralelo para p procesadores y el tiempo de ejecucin para2p procesadores. Idealmente este cociente debera ser 2. En la Figura 4.16 se muestranlos resultados obtenidos de esta aceleracin relativa para las matrices consideradas.

    Puede observarse que la aceleracin relativa se mantiene prcticamente en todos loscasos entre 1.5 y 2, siendo el resultado ms bajo el obtenido para 2 procesadores salvo enel caso de que se aumente mucho el nmero de procesadores. Debe tenerse en cuenta, eneste caso, que las matrices consideradas son bastante pequeas y es imposible mantenerla eficiencia del algoritmo al incrementar el nmero de procesadores debido al escasonmero de computaciones a realizar. Esto se ve reflejado en los resultados obtenidospara la matriz BCSSTM07, esta matriz es la ms pequea de las consideradas, y paraella ya se degrada el comportamiento para 32 procesadores, en cambio para la matrizZENIOS (la matriz ms grande considerada) el comportamiento se empieza a degradara partir de 64 procesadores.

    Para la matriz RANDOM1 se observa adems una superlinealidad, este compor-tamiento puede ser debido a dos motivos: a un mejor aprovechamiento de la jerarquade memoria, o a una mejor distribucin de las columnas a procesar, evitando dependen-cias y, por tanto, eliminando tiempos de espera.

    4.6.1 Implementacin en MPI

    La librera estndar de pase de mensajes MPI est disponible en el AP1000. Su im-plementacin se debe a David Sitsky del Department of Computer Science, ComputerSciences Laboratory, The Australian National University [102]. En esta seccin es-tablecemos una comparacin de los resultados obtenidos utilizando MPI y la libreraCellOS.

  • 76 Paralelizacin sobre sistemas de memoria distribuida

    Procesadores

    ZENIOS

    Procesadores

    Figura4.15: Aceleracin para las matrices prueba

    ERIS 1176LO -

    4 8 16 3* 64 128

    Procesadores

    8 16

    Procesadores

    1s - RANDOMl16 -14 -12 -10 -S-

    6-

    1 2 4 8 16Procesadores

    32 64 128

    8

  • 4.6. Tiempos de ejecucin para la distribucin bidimensional 77

    0.4 -

    O2 - BCSSTM070 2 4 8 16 3 2 64 L28

    Procesadores

    Procesadores

    8 16 32 64 L28

    Procesadores

    RANDOMl

    2 4 8 16 32 64

    Procesadores

    Figura 4.16: Aceleracin relativa para las matrices prueba

  • 78 Paralelizacin sobre sistemas de memoria distribuida

    MATRIZ SECUENCIAL PARALELOBCSSTM07 2.22 2.67ERIS 1176 13.54 15.20ZENIOS 21.28 23.17

    RANDOM 16.72 17.72RANDOM1 109.71 113.63

    Tabla 4.2: Tiempos de ejecucin del programa secuencial y del programa paralelo sobreun procesador

    En la Figura 4.17 se representa la aceleracin obtenida para cada una de las matri-ces utilizando las subrutinas nativas del AP1000 y las comunicaciones de baja latencia,las subrutinas nativas sin utilizar las comunicaciones de baja latencia y la librera MPIversin 1.4.3. En el caso de la librera MPI versin 1.4.3 las comunicaciones de bajalatencia no estn disponibles, sin embargo hay que destacar que la eficiencia es peor ala obtenida para las implementaciones con las funciones nativas sin esta utilidad. Estoes debido a la alta latencia del MPI para las comunicaciones punto a punto. En [103]se calcula una estimacin de la latencia obtenindose los valores de 246 microsegun-dos para Cellos mientras que en MPI tiene un valor de 318 microsegundos. Para estemismo tipo de comunicaciones tambin fueron medidas las velocidades de transferenciaobtenindose los valores de 2.76 MB/s para Cellos y 2.79 MB/s para MPI.

    En nuestro caso lo que ms va a afectar al rendimiento de nuestro programa es lalatencia, debido a que la mayora de las comunicaciones que se realizan son mensajesde corta longitud. La Tabla 4.3 muestra el nmero total de mensajes enviados en elprograma paralelo (Nm) y el tamao medio de estos mensajes (longitud) en Bytes paradiferente nmero de procesadores.

    4.7 Algoritmos paralelos segn una distribucin unidi-mensional de los datos

    En la seccin anterior llegamos a la conclusin de que el algoritmo paralelo ms efi-ciente es aquel en el cual cada procesador almacena columnas enteras de la matriz,ya que se corresponde con la configuracin que genera un menor nmero de comuni-caciones entre procesadores. Estudiamos ahora diferentes orientaciones del algoritmosuponiendo que cada columna de la matriz es almacenada en uno y slo uno de losprocesadores segn algn esquema de distribucin previamente establecido. Es decir,nos vamos a centrar en un modelo de programacin de grano medio (ver seccin 2.5).

  • 4.7. Algoritmos paralelo segn una distribucin unidimensional . . . 79

    6 _ BCSSTM07 ERISl176LO -

    5 -B-_-B___t, C s-

    ,,. _,.._.. 0

  • 80 Paralelizacin sobre sistemas de memoria distribuida

    P BCSSTM07

    248163264128

    Nm longitud7243 281.19ll443 267.2014618 244.4718167 211.1623149 172.0627305 148.8827305 148.88

    ERIS 1176 ZENIOSNm longitud Nm longitud

    25089 464.05 30087 59 1.5738821 448.80 45622 577.7747921 423.77 56959 550.3655643 391.03 66880 505.9263671 352.98 77902 449.5773293 312.01 88690 401.8084851 272.01 99483 362.06

    RANDOM RANDOM1Nm longitud Nm longitud

    15909 885.75 52456 1761.542435 1 867.87 79660 1741.3229476 837.16 94902 1706.5933528 787.84 105396 1646.0338139 716.41 116051 1545.5244414 626.20 130657 1395.6552276 537.16 152343 1207.39

    Tabla 4.3: Mensajes para las matrices prueba

  • 4.7. Algoritmos paralelo segn una distribucin unidimensional . . . 81

    La factorizacin de Cholesky estndar dispersa es tpicamente implementada en par-alelo asignando columnas enteras de la matriz a factor-izar sobre los diferentes proce-sadores. Las versiones paralelas de la factorizacin de Cholesky estndar de matricesdispersas segn el modelo de programacin de paralelismo de grano medio pueden serclasificadas en dos tipos fundamentales: el mtodo fan-out [36] y el mtodo fan-in [l0],basados en el algoritmo right-Zooking y en el Zeft-looking respectivamente. Ya que elflujo de datos del algoritmo de Cholesky modificado es bsicamente el mismo que en elalgoritmo de Cholesky estndar, muchas de las ideas expuestas en estos trabajos puedenser adaptadas para la implementacin del algoritmo de Cholesky modificado paralelo.

    En las siguientes secciones presentamos una adaptacin de los algoritmosfun-out yfan-in a la factorizacin de Cholesky modificada, y variantes a dichos algoritmos quemejoran el rendimiento del programa paralelo. Se asume para la descripcin de losdiferentes algoritmos que cada columna de la matriz es inicialmente almacenada enuno y slo uno de los procesadores segn algn esquema de distribucin previamenteestablecido. Finalizamos el captulo con una breve referencia al mtodo multifrontal.

    4.7.1 Algoritmos fan-out

    En el mtodofun-out (FO) el proceso es dirigido por los datos disponibles. Cuando unacolumna j ya ha recibido todas las modificaciones de las columnas previas de las quedepende, el procesador que contiene la columna j, calcula dj y normaliza la columna.Tan pronto como finaliza esta tarea enva dj y la columna j de L a todos los procesadoresque la necesiten (incluyndose el mismo) para modificar las columnas s (s > j) de lascuales son responsables. El procesador destino la recibe y realiza con ella todas lasmodificaciones oportunas. Cada columna es enviada una nica vez a cada procesadoraunque este la necesite para modificar ms de una columna. Se mantiene en una colalas columnas que ya han recibido todas las modificaciones o que no necesitan ser mod-ificadas por otras columnas. En estas columnas pueden ser calculadas las diagonales yse pueden actualizar sus valores con los valores finales de L. Por tanto las columnas nose modifican en orden si no en funcin de los datos disponibles.

    Ntese que cuando se realiza un envo, se enva la columna ya actualizada con losvalores de L, por tanto, se necesita enviar tambin la diagonal para hacer las modifica-ciones a columnas posteriores de la forma:

    j-1 j-1

    a,j = a,j - Cljklskd~=asj-CE,ka,R; s=j+l,...n. (4.1)k=O k=O

    El algoritmo en forma simplificada se muestra en la Figura 4.18, donde mycoZs(p)es el conjunto de ndices de las columnas de las cuales el procesador p es responsable,

  • 82 Paralelizacin sobre sistemas de memoria distribuida

    ncol[p] es inicialmente la cardinalidad de mycols(p),nmod[s] es inicialmente el nmerode columnas j < s que modifican la columna s y wers(j) es el conjunto de ndicesde las columnas que son modificadas por j; wnod[j] y users(j) se pueden calcularpreviamente a la ejecucin del algoritmo para la factorizacin numrica usando el rbolde eliminacin de A.

    or cada columna j E mycoZs(p) con nmod[j] = 0 docomputar djcomputar L,jncoZ[p] = ncol [17] - 1enviar dj y L,j a los procesadores responsable de las

    columnas con ndices en users(j)zndforNhile ncoZ[p] > 0 do

    esperar por la recepcin de una columna jfor s E mycoZs(p) n use,s(j) do

    modificar la columna snmod[s] = nmod[s] - 1if nmod[s] = 0 then

    computar d,computar L,,ncolb] = ncoZ[p] - 1enviar d, y L,, a los procesadores responsable de

    las columnas con ndices en users(s)endif

    endfor?ndwhile

    Figura 4.18: Mtodo fan-out para el procesador p (FO)

    En el mtodofan-out se envan columnas enteras a los procesadores que las necesi-tan, y los productos del lado derecho de la Ecuacin 4.1 se computan en el procesadordestino. Si se enva dj y L,j a las columnas que los necesitan en vez de a los proce-sadores que las contienen, entonces los productos del lado derecho de la Ecuacin 4.1pueden ser calculados por el procesador responsable de la columna j, el cual enva acada columna s de users(j) el vector:

    < A? >= (ZsjZkjdj)Ic~{s+l,...,n}

    En este caso el nmero de comunicaciones entre procesadores es mucho mayor que en el

  • 4.7. Algoritmos paralelo segn una distribucin unidimensional . . . 83

    for cada columna j E mycols(p) con nmod[j] = 0 docomputar djcomputar L,jncolb] = ncol b] - 1computar y enviar productos no localesfor s E mycols(p) n users(j) do

    computar < js > y modificar columna snmod[s] = nmod[s] - 1

    endforendforContina . . . .

    Figura 4.19: Mtodo fan-out con pre-multiplicacin para el procesador p (FOPM)

    algoritmo FO. Si una columna modifica varias columnas dentro de un mismo procesadordestino, ser necesario enviar varios mensajes, en concreto, uno por cada columna. Sis E users(j), p(s) recibe ~mycoZs(p(s)) II users(j) 1 vectores, etiquetado cada unocon el ndice de la columna destino. En contrapartida, el procesador destino no tieneque llevar a cabo la computacin correspondiente a la Ecuacin 4.1, incrementndoseel solape entre computaciones y comunicaciones, lo cual reduce los tiempos de espera.

    Este nuevo algoritmo, al que hemos denominado mtodo fan-out con pre-multiplicacin (FOPM), es descrito en las Figuras 4.19 y 4.20. En l, se distingueentre productos locales y no locales, entendiendo como productos no locales los vec-tores < js > para los cuales s $ mycols(p). Solamente los productos no locales sonenviados, evitando el envo de mensajes dentro del mismo procesador. En consecuencia,ser necesaria la inclusin de un cierto mecanismo de control, ya que si la modificacinde la columna s por la columna j E mycols(p(s)) finaliza antes de que la columnaj ha finalizado la modificacin de todas las columnas s* E mycoZs(p(j)) n wers(j),entonces la columna s se aade a una cola de columnas listas para ser normalizadas yutilizadas para modificar columnas posteriores.

    4.7.2 Algoritmos fan-in

    El principal problema del algoritmo fan-out es el elevado volumen de comunicacionesque genera. El nmero y volumen de comunicaciones se puede reducir si las modifica-ciones a una columna s por todas las columnas j pertenecientes a un mismo procesadorp(j) son acumuladas antes de ser enviadas desde p(j) a p(s). En este caso no se envauna columna para modificar varias, sino que se envan varias columnas acumuladas en

  • 84 Paralelizacin sobre sistemas de memoria distribuida

    Continuacin . . . .While nco@] > 0 d o

    esperar un mensaje para modificar una columna j E TTNJCO~S(~)modificar jnmod[j] = nmod[j] - 1if nmod[j] = 0 then

    computar djcomputar L,jnco@] = ncoZ[I] - 1computar y enviar productos no localesfor s E mycoZs(p) n users(j)

    computar < js > y modificar columna snmod[s] = nmod[s] - 1if nmod[s] = 0 then

    aadir la columna s a la colaendif

    endforendifwhile cola no vaca do

    conseguir una columna de la cola (llammosle j)computar djcomputar L,jncol [II] = ncolb] - 1computar y enviar los productos no localesfor s E mycoZs(p) fl users(j)

    computar < js > y modificar la columna snmod[s] = nmod[s] - 1if nmod[s] = 0 then

    aadir la columna s a la colaendif

    endforendwhile

    endwhile

    Figura 4.20: Mtodo fan-out con pre-multiplicacin para el procesador p (FOPM) (con-tinuacin)

  • 4.7. Algoritmos paralelo segn una distribucin unidimensional . . . 85

    or s = 1 to n doif s E mycoZs(p) o 3 j E mycols(p) I-I suppZiers(s) then

    U[13, s] = 0for j E mycoZs(p) n suppliers(s) do44 sI = u[l, SI + Lj(Lj, , bJT

    endforif s E mycoZs(p) then

    (ZSS, , LJT = (Gs, . . . . %JT - u[I), s]while pmods[s] # 0 do

    esperar por la recepcin de un vector u[P*, S] desdeotro procesador p*(Z SS, , Z,JT = (Z 33) , Z,JT - u[I)*, s]pmods[s] = pmods[s] - 1

    endwhilecomputar d,L, = L,/d,

    elseenviar uCI),S] a p(s)

    endifendif

    2ndfor

    Figura 4.21: Mtodo fan-in para el procesador p (FI)

    una para modificar una nica columna. Esto es lo que se conoce como algoritmo fan-in(FI) [10]

    El algoritmo en forma simplificada se muestra en la Figura 4.21, donde suppliers(s)es el conjunto de ndices de las columnas j tales que s E use,,(j), ub, s] es el vec-tor que acumula las modificaciones a la columna s llevadas a cabo por las columnasj E mycoZs(p), y pmods[s] es el nmero de procesadores p que proporcionan modifi-caciones a la columna s.

    En FI, las columnas son computadas en orden creciente de sus ndices, resultandoque una columna j no puede ser modificada hasta que todas las columnas s, s < j hansido totalmente modificadas. Para relajar esta limitacin, el siguiente algoritmo prop-uesto (Figura 4.22), al que hemos denominada algoritmo fan-in dirigido por los datosdisponibles (FIDD), combina la reduccin en el nmero y volumen de comunicacionesdel algoritmo fan-in con el carcter data-driven del algoritmo fan-out. Las columnas

  • 86 Paralelizacin sobre sistemas de memoria distribuida

    son modificadas tan pronto como es posible. La variable nZmod[s] es inicializada alvalor suPpZiers(s) fl mycoZs(p)].

    FIDD tiene el mismo nmero y volumen de comunicaciones que FI, pero con laestrategia data-driven se consigue reducir los tiempos de espera.

    La ejecucin de ambos algoritmos es acelerada si se utiliza un vector expandido,ub, s], para llevar a cabo la acumulacin de las modificaciones a una columna s. Deesta forma se eliminan referencias a vectores de ndices y se evitan bsquedas a travsde la columna. Cuando se han acumulado todas las modificaciones, el resultado finalpuede ser enviado en un formato comprimido junto con un vector de ndices fila o enun formato no comprimido. Nosotros nos referiremos a la implementacin de FIDDcon mensajes ub, s] comprimidos como FIDD1, y a la implementacin de FIDD conmensajes u[13, s] no comprimidos como FIDD2.

    4.8 Distribucin de las columnas entre los procesadores

    Las matrices han sido distribuidas cclicamente por columnas sobre la red de proce-sadores. Cada procesador almacenar su matriz local por columnas utilizando el modode almacenamiento comprimido CCS. Se ha optado por esta distribucin debido a susimplicidad de implementacin y el buen balanceo de la carga que proporciona.

    Una alternativa a esta distribucin es la asignacin de columnas segn el esquemasubrbol-a-subcubo descrito en [43]. El mapeo subrbol-a-subcubo sigue una estrate-gia divide-y-vencers basndose en el rbol de eliminacin de la matriz y distribuyendorecursivamente el trabajo de la factorizacin entre los P procesadores. El problema deeste mtodo es que causa un enorme desbalanceo de la carga para arboles desbalancea-dos. En general, este esquema se ha demostrado efectivo para matrices procedentes delos problemas de elementos finitos. Ya que nosotros estamos interesados en estudiar lafactorizacin dispersa paralela de propsito general, este mtodo de distribucin de lamatriz no es apropiado.

    En [32] Geist y Ng desarrollan una generalizacin del mapeo subrbol-a-subcubocon la finalidad de conseguir un buen balanceo de la carga, incluso para arboles deeliminacin arbitrariamente desbalanceados. Su estrategia est tambin basada en laestructura del rbol de eliminacin asociado a la matriz dispersa a factorizar. El pro-cedimiento se puede describir en dos etapas. En la primera etapa se divide el rbol entantas ramas como nmero de procesadores. En la segunda etapa, si la carga no est bienbalanceada, se divide la rama con una mayor carga computacional en dos nuevas ramassumando una de ellas a la rama ms pequea. Este proceso se aplica recursivamentehasta llegar a un balanceo de la carga aceptable.

  • 4.8. Distribucin de las columnas entre los procesadores 87

    Nhile T-KoZ[P] # 0 dowhile cola no vaca do

    conseguir una columna de la cola (llammosle j)computar djcomputar L,jncolb] = ncolb] - 1for s E users(j) do

    nZmod[s] = nZmod[s] - 1if nlmod[s] = 0 then

    Ub, s] = 0for 1 E mycoZs(p) n suppZiers(s) do

    ub, s] = u[l, SI + &&z, , I,1yendforif s E my~oZs(p) then

    (LS, , z7Lsy = (Gs, , %JT - u[p, s]mods[s] = pmods[s] - 1if pmods[s] = 0 then

    aadir la columna s a la colaendif

    elseenviar u[I, S] a p(s)

    endifendif

    endforendwhileesperar por la recepcin de un vector ~[p*,j] (j E UUJCO~S(~) )

    desde otro procesador p*(ljj, . ..) l,j)T = (ljj, . . .) z,jy - u[p*, j]pmods[j] = pmods[j] - 1if pmods[j] = 0 then

    aadir la columna j a la colaendif

    zndwhile

    Figura 4.22: Mtodo fan-in guiado por los datos disponibles para el procesador p(FIDD)

  • 88 Paralelizacin sobre sistemas de memoria distribuida

    4.9 Anlisis de las comunicaciones para la distribucinunidimensional

    Analizamos ahora el nmero y volumen de comunicaciones implicados en cada uno delos algoritmos previamente descritos. El nmero de mensajes enviados durante la ejecu-cin de los diferentes mtodos depende del patrn de la matriz a factorizar y del mapeode las columnas de la matriz sobre los procesadores. Suponemos para nuestro anlisisque el nmero de columnas de la matriz, N, es al menos tan grande como el nmero deprocesadores, P, y que las columnas de la matriz son distribuidas cclicamente. Con-sideramos que a es el nmero de entradas de la matriz y, por tanto, a es el nmeropromedio de entradas por columna.

    Proposicin 5 El nmero de mensajes entre procesadores para el algoritmo FO es:

    MFO=~I{d%P/ s >j asj #O)li

    cumplindose que:P(P - 1)

    N

  • 4.9. Anlisis de las comunicaciones para la distribucin unidimensional 89

    Demostracin:

    l Se enva cada columna a los procesadores que la necesitan. Esto es, la columna jes enviada a todos aquellos procesadores (incluyndose a si mismo) que contienencolumnas s, (s >generados por esa

    j) para las cuales a,j # 0. Por tanto, el nmero de mensajescolumna ser:

    I{s%P asj # 011.

    l En el mejor caso, todas las columnas s pertenecen al mismo procesador y, portanto, slo se enva un mensaje por cada columna, con lo cual:

    l El peor caso se obtiene para el caso denso. En este caso, todas las entradas a,j cons > j son distintas de cero, y por tanto las primeras N - P columnas tienen queser enviadas a todos los procesadores. A partir de ah, el nmero de entradas decada columna por debajo de la diagonal es menor que el nmero de procesadores,y por tanto, el nmero de procesadores al que tendrn que ser enviadas va dismi-nuyendo en una unidad:

    P-l

    MFoj / Usj#O Y S%P#j%P}lj

    cumplindose que:

    para el caso denso:

    0 5 MF,,, 5N ( N - l ) P - 1

    2 P

    y siendo el tamao del mensaje enviado por la columna j a la columna s:

    SFOPM= l{k / akj #O und k 2 s}I

  • 90 Paralelizacin sobre sistemas de memoria distribuida

    cumplindose que:SFoPM I maXj(aj - 1)

    siendo el tamao medio estimado:

    SQ

    FOPM = 2N

    Demostracin:

    l Para cada columna j, se realizan los productos de cada entrada akj por debajo dela diagonal (k > j) por todas las entradas a,j, con s 2 k. Estos productos seempaquetan y se envan al procesador p = k%P. Por tanto, por cada entrada pordebajo de la diagonal se enva un mensaje, de todos ellos habr que descontar losque van dirigidos a s mismo:

    l{S>j / %j#O y S%P#j%P}I.

    l En el mejor caso, todas las entradas por debajo de la diagonal generan mensajesdirigidos al propio procesador cumplindose, por tanto, 0 < MFOPM.

    l En el peor caso, todas las entradas por debajo de la diagonal generan un mensajedirigido a otro procesador, por tanto, MFOPM 5 Q - N.

    l En el caso denso todas las entradas de la matriz por debajo de la diagonal generanun mensaje, de los cuales habr que excluir los dirigidos a si mismo:

    MFOPM 5 N(N2- > _ $- > = N(N2- > p .

    l En cuanto al tamao, la entrada a,i modifica la diagonal en la columna s, portanto, todas las entradas por debajo (akj, k > s) modificarn las entradas bajo ladiagonal de la columna s:

    SFOPM = I{k / akj#O Y kZs}l.

    l Suponiendo que el nmero promedio de entradas por columna es s y teniendoen cuenta que el tamao de los mensajes enviados dentro de una columna varaentre f$ - 1 y 1, (tamaos correspondientes a la primera entrada bajo la diagonaly ltima entrada de la columna respectivamente), entonces tendremos:

    Sc%tri a

    F O P M = &_ = - . qN 1 2 N

  • 4.9. Anlisis de las comunicaciones para la distribucin unidimensional 91

    Proposicin 7 El nmero de mensajes enviados durante la ejecucin de FI es:

    MFI = 5 [{s / a,j # 0, j%P = p, s%P # p}lp=l

    cumplindose que:

    0 5 MFI 5P(2N-P-l)P-1

    2 P

    siendo el tamao del mensaje enviado por el procesador p al procesador q para modi-jicar la columna s (s E q):

    SFI = I{k / akj # 0, COn k 2 s, j E (1, . . . . S - l}(j%P = p y U,j # o)}l

    cumplindose que:SFI 5 maxj{aj}

    Demostracin:

    Cada procesador acumula las modificaciones a cada columna, de forma que elnmero de mensajes enviados se corresponde con el nmero de columnas quemodifica cada procesador, siendo este nmero igual al nmero de entradas situ-adas en filas diferentes dentro de cada procesador, excluyendo aquellas entradasa,j para las cuales s%P = p, es decir, excluyendo aquellas columnas quepertenecen al propio procesador. Por tanto, para cada procesador se envan elsiguiente nmero de mensajes:

    I{s / a,j # 0, j%P = P Y s%P # PII.

    En el mejor caso, todas las entradas a,j pertenecientes a un procesador p, cona,j # 0, cumplen que s%P = p, en cuyo caso MFI = 0.

    El peor caso se corresponde con el caso denso, en el cual tenemos entradas entodas las filas. Si tenemos en cuenta que el nmero de entradas por columna vadisminuyendo en una unidad a medida que avanzamos en el ndice columna, elnmero de entradas con ndice fila distinto en los P procesadores ser:

    &V-i)=P(2N-P-1)

    i=l2 .

    De todas ellas habr que descontar las que cumplen a,j # 0 y s%P = p, es decir,las que generan mensajes destinados al propio procesador. Por tanto:

    MFI 2P(2N - P - 1) P - 1

    2 P .

  • 92 Paralelizacin sobre sistemas de memoria distribuida

    l En cuanto al tamao del mensaje, el mensaje enviado por un procesador p paramodificar la columna s tendr un tamao igual al nmero de entradas akj # 0 conndice fila k (k 2 s) distinto, y situadas en las columnas j que verifiquen a,j # 0,ya que estas sern las entradas que modifiquen la columna s.

    l Dado que el patrn de la columna destino s es un superconjunto del de la columnafuente j, el tamao de un mensaje destinado a la columna s no podr ser nuncamayor que a/3 y por tanto:

    SFI 5 ma&?{%?}. q

    Corolario 4 Para matrices grandes, en el caso denso, el nmero de mensajes gener-ados por el algoritmo FOPM es mayor que el nmero de mensajes generado por elalgoritmo FO

    Demostracin:

    l Si suponemos que N >> P, entonces, por un lado:

    &,> P:

    MFI j) do6 . modificar la columna s con la columna j7 . nmod[s] = nmod[s] - 18 . if WLO~[S] = 0 then9 . aadir la columna s a la cola10. endif11. endfor

    112. endwhile

    Figura 5.3: Algoritmo right-looking paralelo (RL)

    5.4 Algoritmo right-looking

    En la versin right-Zooking del algoritmo de Cholesky estndar, una vez que una colum-na es normalizada, se emplea para modificar todas las columnas posteriores que depen-den de ella. En este esquema est basada la propuesta paralela desarrollada por Georgeet al. [37] para sistemas de memoria distribuida.

    Proponemos la adaptacin de este algoritmo para la factorizacin de Cholesky mod-ificada y para su ejecucin sobre sistemas de memoria compartida. En el programaparalelo cada tarea consiste en la computacin de una columna, es decir, el clculo de ladiagonal, su normalizacin y la modificacin de columnas posteriores. Con cada colum-na se mantiene un contador que almacena el nmero de modificaciones que quedan porrealizar a esa columna. Adems, una cola de tareas global y compartida mantiene to-das las columnas cuyos contadores son cero. Estas columnas ya han recibido todas lasmodificaciones y por tanto estn preparadas para ser normalizadas y modificar colum-nas posteriores. Cuando un procesador est libre se le asigna un ndice columna deesta cola, calcula su diagonal, normaliza la columna y realiza nuevas modificaciones.Los contadores de las columnas destino son decrementados para reflejar estas modifica-ciones, si alguno de ellos llega a cero se coloca el ndice columna correspondiente en lacola global de tareas disponibles. Un pseudo-cdigo del algoritmo ejecutado sobre cadaprocesador se muestra en la Figura 5.3.

    El patrn de acceso a la matriz est organizado atendiendo a las siguientes premisas:

  • 5.4. Algoritmo right-looking 111

    l Una columna puede ser modificada por varios procesadores antes de ser colocadaen la cola.

    l Una vez colocada en la cola es accedida por un nico procesador y usada por stepara modificar nuevas columnas.

    l Despus de que se han llevado a cabo todas las modificaciones esta columna novuelve a ser referenciada por ningn procesador.

    La nica interacin entre procesadores ocurre en el acceso a la cola global de tar-eas y en las modificaciones de una misma columna. Para evitar conflictos se utilizanoperaciones LOCK implementadas en la librera parmacs.

    El scheduling de tareas es totalmente dinmico, la cola de tareas se crea a la vez quese ejecuta el programa y los procesadores acceden a ella a medida que quedan libres,esto conduce a un buen balanceo de la carga.

    El problema de este planteamiento es que ms de un procesador puede modificar lamisma columna y, por tanto, tendr que acceder y escribir sobre la misma posicin dememoria. Esto genera un elevado nmero de conflictos de acceso a memoria y de op-eraciones de mantenimiento de la coherencia, a la vez que un elevado nmero de falloscache. Todo ello se traducen en un aumento en el nmero de accesos a memorias remo-tas, lo cual es una de las principales causas de rendimientos subptimos en arquitecturastipo NUMA.

    5.4.1 Resultados experimentales

    Para analizar el comportamiento de nuestros programas paralelos sobre el sistema deSilicon Graphics 02000 utilizamos un nuevo conjunto de matrices simtricas de lacoleccin Harwell-Boeing [22]. El sistema 02000 dispone de una gran capacidad dememoria, es por esto que utilizamos matrices ms grandes a las utilizadas en memoriadistribuida, en la cual el sistema de memoria del AP1000, as como su ring buffer-, nosimpona una limitacin en este sentido. La Tabla 5.1 muestra las caractersticas de lasmatrices usadas, donde N es el nmero de filas y columnas y cx es el nmero de entradasno nulas. Todas ellas proceden de problemas de ingeniera estructural excepto la matrizLSHP3466 que procede de problemas de elementos finitos. Los patrones de estas matri-ces se muestran en la Figura 5.4. A todas ellas se les ha aplicado el algoritmo minimumdegree para reducir el fill [9,4], los patrones tras aplicar este ordenamiento se muestranen la Figura 5.5.

    El comportamiento del sistema de memoria nos da una aproximacin a la localidaddel programa. Por esta razn se analizar el cdigo desde tres puntos de vista: tiemposde ejecucin, balanceo de la carga y comportamiento del sistema de memoria.

  • 112 Paralelizacin sobre sistemas de memoria compartida tipo NUMA

    BCSSTK14

    BCSSTK23

    BCSSTK15

    ::>:.\. :i,,

    ...

    ;, ,,,, .:.::>

    BCSSTK24

    LSHP3466

    BCSSTKlS

    BCSSTK30

    Figura 5.4: Patrones de las matrices prueba

  • 5.4. Algoritmo right-looking 113

    BCSSTK14

    BCSSTK23

    BCSSTKlS BCSSTK18

    BCSSTK24

    d

    LSHP3466

    BCSSTIUO

    Figura 5.5: Patrones de las matrices prueba ordenadas

  • 114 Paralelizacin sobre sistemas de memoria compartida tipo NUMA

    MATRIZ NBCSSTK14 1806

    Q en A36630

    Q en L116071

    BCSSTK15 3948 60882 707887BCSSTK18 11948 80519 668217BCSSTK23 3134 24156 450953BCSSTK24 3562 81736 291151BCSSTK30 28924 1036208 4677146LSHP3466 3466 13681 93713

    MATRIZ P=l P=2 P=4 P=8BCSSTK14 330 490 410 390BCSSTK15 6000 9600 7300 6300BCSSTK18 4500 7500 5600 4800BCSSTK23 3800 6800 5200 4400BCSSTK24 1100 1700 1300 1200BCSSTK30 54500 65100 48000 40600LSHP3466 200 300 250 230

    Tabla 5.1: Matrices prueba

    Tabla 5.2: Tiempos de ejecucin para el programa RL

    5.4.1.1 Tiempos de ejecucin

    La Tabla 5.2 muestra los tiempos de ejecucin obtenidos para el algoritmo right-Zookingparalelo (RL) en ms, siendo P el nmero de procesadores.

    Cabe destacar que el tiempo de ejecucin se incrementa considerablemente en elpaso de ejecucin secuencial a paralela debido a las sobrecargas ocasionadas por lasoperaciones de mantenimiento de la coherencia.

    5.4.1.2 Balanceo de la carga

    El lazo externo del programa est organizado como un lazo self-scheduling [ 105] in-teractuando con una cola global de tareas listas para ser ejecutadas. Como ya se hacomentado, cuando un procesador queda libre accede a esta cola global y coge unatarea de la cola, la ejecuta y coloca nuevas tareas en la cola cuando estn listas paraser ejecutadas. Esto conduce a un gran balanceo de la carga ya que la asignacin detareas a procesadores se realiza de una forma totalmente dinmica. En la Figura 5.6 se

  • 5.4. Algoritmo right-looking 115

    BCSSTK14 BCSSTKlS BCSSTK18 BCSSTK23 BCSSTK24 BCSSTK30 LSHP3466

    Figura 5.6: Balanceo de la carga en el programa RL

    muestra el balanceo de la carga obtenido para cada una de las matrices sobre 2, 4 y 8procesadores. Se utiliza como medida del balanceo:

    donde Itotales el nmero de instrucciones en punto flotante totales, P es el nmero deprocesadores y I,,, es el valor mximo del nmero de instrucciones en punto flotanteasignadas a un procesador. Utilizamos los contadores de eventos del R1OOOO para contarel nmero de instrucciones en punto flotante que ejecuta cada procesador.

    5.4.1.3 Comportamiento del sistema de memoria

    Las operaciones de mantenimiento de la coherencia cache y el movimiento de datos queestas operaciones originan es el motivo de que exista un incremento en el tiempo deejecucin al pasar de uno a dos procesadores. Este overhead se arrastra para un nmeromayor de procesadores.

    La Tabla 5.3 muestra el comportamiento del sistema de memoria para cada una delas matrices y para 1 y 2 procesadores. Se observa que para ms de un procesador dis-minuye considerablemente el reuso de las lneas cache de la cache secundaria quedandoreducido en un factor 3 en el mejor de los casos (matriz BCSSTK30) y en 1000 enel peor (matriz LSHP3466). Esto conduce a un elevado movimiento de datos entre lacache secundaria y memoria que influye notablemente en el tiempo de ejecucin delprograma, llegando incluso a lentificar el programa paralelo con respecto al secuencial.

    El programa paralelo se compone de las siguientes funciones:

    l CONSIGUETAREA() (A): Consigue un ndice columna, llammosle j, de la cola

  • 116 Paralelizacin sobre sistemas de memoria compartida tipo NUMA

    P 11 BCSSTK14 1 BCSSTKIS 1 BCSSTK18REUS0 CACHE PRIMARIA

    1 P 11 BCSSTK23 1 BCSSTK24 1 BCSSTK30 1 LSHP3466 1

    1 18.242 10.22

    MFXOPS18.48 14.07 15.6411.50 11.90 9.50

    Tabla 5.3: Comportamiento del sistema de memoria en el programa RL

  • 5.5. Mejoras al algoritmo right-looking paralelo 117

    de disponibles.

    l NORMALIZA() (B): Calcula el elemento diagonal de la columna j y normalizadicha columna.

    l MODIFICA() (C): Modifica las columnas s (s > j) que dependen de la columnaj.

    l INSERTACOLA( ) (D): Aade un ndice columna a la cola de disponibles cuandose han realizado todas sus modificaciones.

    Empleamos la utilidad SpeedShop para descubrir cual es la funcin que provocaeste aumento en los tiempos de ejecucin. Debe tenerse en cuenta, en este caso, que eluso de los contadores de eventos del R1OOOO introduce una sobrecarga en el programadebido al control software que aumenta el tiempo de ejecucin en no ms del 5 %. En laFigura 5.7 se muestra el tiempo que consume cada una de las funciones para cada unade las matrices en su ejecucin secuencial, indicando adems el porcentaje del tiempototal que supone. La suma de dichos porcentajes no alcanzan el 100 % debido a que unporcentaje del tiempo de ejecucin lo consume funciones del sistema operativo.

    Se observa que dentro de la factorizacin numrica la funcin ms costosa es la demodificacin de columnas posteriores, MODIFICA(). En la grfica 5.8 se muestra elcomportamiento paralelo de dicha funcin, tomando como tiempo paralelo el tiempodel procesador ms lento con respecto a dicha funcin. Cabe destacar que para dosprocesadores el tiempo de ejecucin es muy superior a su ejecucin secuencial. Hayque recordar que en esta versin del cdigo una misma columna de la matriz es modi-ficada por diferentes procesadores, circunstancia que ocurre muy habitualmente. Si unprocesador modifica una lnea cache, y luego otro procesador solicita la misma lnea, sedebe modificar la variable almacenada en memoria, por tanto aumenta el nmero de ac-cesos a memoria. Adems la escritura sobre una lnea cache invalida todas las posiblescopias que haya de esta lnea sobre otros procesadores, con lo cual aumenta el nmerode operaciones de coherencia y el nmero de fallos cache.

    En conclusin, esta versin del algoritmo paralelo es ineficiente debido a accesosa posiciones de memoria remotas en vez de locales con el consiguiente aumento de lalatencia en el acceso a memoria. Tenemos, por tanto, un problema de localidad.

    5.5 Mejoras al algoritmo right-looking paralelo

    En la propuesta anterior se genera un elevado movimiento de datos entre procesadoresque impone una gran penalizacin al rendimiento de la implementacin paralela. Para

  • 118 Paralelizacin sobre sistemas de memoria compartid