Table Of ContentUniversidade Federal do Esp(cid:237)rito Santo
Departamento de InformÆtica
Impacto de EstratØgias Combinat(cid:243)rias no
Precondicionador Paralelo baseado no Algoritmo
H(cid:237)brido SPIKE
Brenno Albino Lugon
Orientadora: Profa. Dra. Lucia Catabriga
Coorientadora: Profa. Dra. Maria Cristina Rangel
22 de dezembro de 2015
Brenno Albino Lugon
Impacto de EstratØgias Combinat(cid:243)rias no
Precondicionador Paralelo baseado no Algoritmo
H(cid:237)brido SPIKE
Disserta(cid:231)ªo de Mestrado
Profa. Dra. Lucia Catabriga
Universidade Federal do Esp(cid:237)rito Santo
Orientadora
Profa. Dra. Maria Cristina Rangel
Universidade Federal do Esp(cid:237)rito Santo
Coorientadora
Profa. Dra. Maria Claudia Silva Boeres
Universidade Federal do Esp(cid:237)rito Santo
Prof. Dr. `lvaro Luiz Gayoso de Azeredo Coutinho
Universidade Federal do Rio de Janeiro
22 de dezembro de 2015
Life’s a show
And we all play our parts
And when the music starts
We open up our hearts
It’s all right
If some things come out wrong
We’ll sing a happy song
And you can sing along
Where’s there’s life
There’s hope, everyday’s a gift
Wishes can come true
Whistle while you work
So hard all day
To be like other girls
To fit in in this glittering world
Don’t give me songs
Don’t give me songs
Give me something to sing about
I need something to sing about
Bu(cid:27)y Summers
S06E07: "Once More, With Feeling"
Bu(cid:27)y the Vampire Slayer
Resumo
Neste trabalho, utilizamos o algoritmo paralelo h(cid:237)brido SPIKE como um
precondicionador para um mØtodo iterativo nªo-estacionÆrio combinando as
arquiteturas de mem(cid:243)ria distribu(cid:237)da e compartilhada, MPI e OpenMP. A (cid:28)m de obter
um bom precondicionador, aplicamos um conjunto de estratØgias modeladas como
problemas combinat(cid:243)rios tais como matching, reordenamentos para minimizar a largura
de banda da matriz, particionamento de grafos e problema quadrÆtico da mochila que
efetuam permuta(cid:231)ıes nas linhas e colunas da matriz. Os experimentos computacionais
demonstram a e(cid:28)ciŒncia do precondicionador paralelo e a grande in(cid:29)uŒncia de cada
uma das estratØgias combinat(cid:243)rias apresentadas. AlØm disso, os resultados
apresentados demonstram uma excelente escalabilidade para atØ 64 cores em aplica(cid:231)ıes
de elementos (cid:28)nitos.
Palavras-chaves: precondicionador paralelo, SPIKE, estratØgias combinat(cid:243)rias
Abstract
In this work, we use the parallel hybrid SPIKE algorithm as a preconditioner for a
nonstationary iterative method combining distributed and shared memory
architectures, MPI and OpenMP. In order to obtain a good preconditioner we apply a
set of strategies modeled as combinatorial problems such as matching, reorderings to
reduce matrix bandwidth, graph partitioning and the quadratic knapsack problem that
perform permutations in the rows and columns of the matrix. Computational
experiments demonstrate the e(cid:30)ciency of the parallel preconditioner and a great
in(cid:29)uence of each presented combinatorial strategies. In addition, the results show
excellent scalability for up to 64 cores in (cid:28)nite element applications.
Keywords: parallel preconditioner, SPIKE, combinatorial strategies
Agradecimentos
Agrade(cid:231)o primeiramente a Deus e, em seguida, as minhas professoras orientadoras,
Lucia Catabriga, Maria Cristina Rangel e Maria Claudia Boeres por todo o apoio e
direcionamento que recebi durante toda minha gradua(cid:231)ªo e mestrado.
Agrade(cid:231)o enormemente os meus pais Sergio Lugon e Gezella Albino pelo suporte da
minha vida, e aos meus irmªos, Ryann Lugon, Boby Luiz, Megg FantÆstico e Fred, sendo
que esses trŒs œltimos se dizem cachorros.
Ao restante da minha fam(cid:237)lia, minhas av(cid:243)s Janete e Gaida e minha tia e segunda mªe,
Elza. AminhacomadreKenyaeminhaa(cid:28)lhadaManuelaqueconstantementemetiravam
do isolamento da frente do computador, me lembrando que eu ainda tinha uma vida.
Ao meu namorado de longa data, Robson.
A minha amiga Cinthia Meireles, pelas altas discussıes (cid:28)los(cid:243)(cid:28)cas interplanetÆrias na
madrugada. Ao Marcelo Carrion e Leonardo Muniz por, alØm da amizade, grande
ajuda na implementa(cid:231)ªo e entendimento de diversas etapas deste trabalho. Agrade(cid:231)o
ao conhecido Laborat(cid:243)rio da diversid...Otimiza(cid:231)ªo, LabOtim, e todos os ass(cid:237)duos
frequentadores com quem estive boa parte do tempo.
Agrade(cid:231)o a CAPES pelo aux(cid:237)lio (cid:28)nanceiro, ao Laborat(cid:243)rio de Computa(cid:231)ªo Cient(cid:237)(cid:28)ca
(LNCC) e a Universidade Federal do Rio Grande do Sul (UFRGS) por terem me
concedido acesso aos seus clusters.
Por (cid:28)m, todo mundo que de alguma forma contribuiu para a realiza(cid:231)ªo deste trabalho.
v
SumÆrio
Resumo iii
Abstract iv
Agradecimentos v
SumÆrio vi
Lista de Figuras viii
Lista de Tabelas x
1 Introdu(cid:231)ªo 1
2 Conceitos BÆsicos 5
2.1 Sistemas Lineares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.1 Precondicionamento . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2 Matrizes Esparsas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.1 Armazenamento Otimizado . . . . . . . . . . . . . . . . . . . . . . 8
2.2.2 Largura de Banda . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.3 Fill-in . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 Grafos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Permuta(cid:231)ıes de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3 Programa(cid:231)ªo Paralela 14
3.1 Message Passing Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Open Multi-Processing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3 Abordagem H(cid:237)brida MPI e OpenMP . . . . . . . . . . . . . . . . . . . . . 17
4 Algoritmo h(cid:237)brido SPIKE 18
4.1 Algoritmo ClÆssico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.1 PrØ-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1.2 Fatora(cid:231)ªo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.1.3 P(cid:243)s-processamento . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.2 EstratØgias SPIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.3 Precondicionador SPIKE-TU . . . . . . . . . . . . . . . . . . . . . . . . . 24
5 EstratØgias Combinat(cid:243)rias 26
5.1 Matching e Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
vi
SumÆrio vii
5.2 Reordenamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.3 Particionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
5.4 Problema QuadrÆtico da Mochila (PQM) . . . . . . . . . . . . . . . . . . 32
5.5 Exemplo NumØrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
6 Implementa(cid:231)ıes 36
6.1 SPIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
6.2 Produto matriz-vetor paralelo . . . . . . . . . . . . . . . . . . . . . . . . . 37
6.2.1 Decomposi(cid:231)ªo 1D por Linhas . . . . . . . . . . . . . . . . . . . . . 37
6.2.2 Decomposi(cid:231)ªo 1D por Colunas . . . . . . . . . . . . . . . . . . . . 38
6.2.3 Decomposi(cid:231)ªo 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
6.3 Pardiso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
7 Testes Computacionais 42
7.1 In(cid:29)uŒncia do Precondicionador . . . . . . . . . . . . . . . . . . . . . . . . 43
7.1.1 Matriz rail_79841 . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
7.1.2 Matriz mario001 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
7.1.3 Matriz atmosmodj . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
7.1.4 Matriz dw8192 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
7.1.5 Matriz G3_circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
7.1.6 Matriz parabolic_fem . . . . . . . . . . . . . . . . . . . . . . . . . 50
7.1.7 Matriz largebasis . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
7.1.8 Matriz CoupCons3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
7.1.9 Matriz Dubcova3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
7.1.10 Matriz nlpkkt120 . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
7.1.11 Matriz FEM_2D_3381977 . . . . . . . . . . . . . . . . . . . . . . . . 55
7.1.12 Matriz FEM_3D_938586 . . . . . . . . . . . . . . . . . . . . . . . . . 56
7.2 In(cid:29)uŒncia das EstratØgias Combinat(cid:243)rias . . . . . . . . . . . . . . . . . . . 57
7.2.1 Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
7.2.2 Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
7.2.3 Reordenamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
7.2.4 Problema QuadrÆtico da Mochila (PQM) . . . . . . . . . . . . . . 62
7.2.5 Melhor escolha de EstratØgias Combinat(cid:243)rias . . . . . . . . . . . . 64
7.3 In(cid:29)uŒncia do tamanho k˜ das matrizes B e C . . . . . . . . . . . . . . . . 66
i i
7.3.1 Matriz rail_79841 . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
7.3.2 Matriz G3_circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4 In(cid:29)uŒncia do cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.4.1 Altix-xe (LNCC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.4.2 Enterprise 3 (UFES) . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.4.3 Gauss (UFRGS) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.5 Speedup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.5.1 Aplica(cid:231)ªo de Elementos Finitos 2D . . . . . . . . . . . . . . . . . . 73
7.5.2 Aplica(cid:231)ªo de Elementos Finitos 3D . . . . . . . . . . . . . . . . . . 76
7.6 AnÆlise de Desempenho . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8 Conclusªo e Trabalhos Futuros 80
ReferŒncias BibliogrÆ(cid:28)cas 82
Lista de Figuras
1.1 Matriz com estrutura de banda estreita. . . . . . . . . . . . . . . . . . . . 2
2.1 Armazenamento CSR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2 Exemplo de Largura de Banda . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Exemplo de como ocorre o (cid:28)ll-in . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 Representa(cid:231)ªo de um hipergrafo . . . . . . . . . . . . . . . . . . . . . . . . 11
2.5 Matriz e grafo correspondente . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.1 Comunica(cid:231)ªo distribu(cid:237)da via troca de mensagens . . . . . . . . . . . . . . 15
3.2 Comunica(cid:231)ªo via mem(cid:243)ria compartilhada . . . . . . . . . . . . . . . . . . 16
3.3 Modelo Fork-Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4 Abordagem h(cid:237)brida MPI e OpenMP . . . . . . . . . . . . . . . . . . . . . 17
4.1 Particionamento bloco tridiagonal em 4 processadores . . . . . . . . . . . 19
4.2 Decomposi(cid:231)ªo A = D×S . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3 Esquematiza(cid:231)ªo do sistema reduzido Sˆxˆ = gˆ . . . . . . . . . . . . . . . . . 21
4.4 EstratØgia LU/UL para V . . . . . . . . . . . . . . . . . . . . . . . . . . 24
i
4.5 Esquematiza(cid:231)ªo da matriz S do sistema reduzido truncado . . . . . . . . . 25
5.1 Exemplo de funcionamento do algoritmo weighted bipartite matching . . . 28
5.2 Matching aplicado na matriz gemat12 . . . . . . . . . . . . . . . . . . . . 29
5.3 Reordenamento Espectral aplicado na matriz gemat12 . . . . . . . . . . . 31
5.4 Particionamento aplicado na matriz gemat12 . . . . . . . . . . . . . . . . 32
5.5 Exemplo NumØrico: Matriz original . . . . . . . . . . . . . . . . . . . . . . 33
5.6 Exemplo NumØrico: matching e scaling . . . . . . . . . . . . . . . . . . . 33
5.7 Exemplo NumØrico: reordenamento Espectral . . . . . . . . . . . . . . . . 34
5.8 Exemplo NumØrico: particionamento . . . . . . . . . . . . . . . . . . . . . 34
5.9 Exemplo NumØrico: Problema QuadrÆtico da Mochila . . . . . . . . . . . 35
6.1 Decomposi(cid:231)ªo 1D por linhas para o SpMV . . . . . . . . . . . . . . . . . . 38
6.2 Decomposi(cid:231)ªo 1D por colunas para o SpMV . . . . . . . . . . . . . . . . . 38
6.3 Decomposi(cid:231)ªo 2D para o SpMV . . . . . . . . . . . . . . . . . . . . . . . . 39
6.4 Decomposi(cid:231)ªo 2D para o SpMV modi(cid:28)cado para o SPIKE . . . . . . . . . 39
7.1 Layout das pÆginas: In(cid:29)uŒncia do precondicionador . . . . . . . . . . . . . 44
7.2 matriz rail_79841: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . 45
7.3 matriz rail_79841: % das estratØgias combinat(cid:243)rias no tempo total . . . 45
7.4 matriz mario001: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . . 46
7.5 matriz mario001: % das estratØgias combinat(cid:243)rias no tempo total . . . . . 46
viii
Lista de Figuras ix
7.6 matriz atmosmodj: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . . 47
7.7 matriz atmosmodj: % das estratØgias combinat(cid:243)rias no tempo total . . . . 47
7.8 matriz dw8192: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . . . . 48
7.9 matriz dw8192: % das estratØgias combinat(cid:243)rias no tempo total . . . . . . 48
7.10 matriz G3_circuit: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . 49
7.11 matriz G3_circuit: % das estratØgias combinat(cid:243)rias no tempo total . . . 49
7.12 matriz parabolic_fem: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . 50
7.13 matriz parabolic_fem: % das estratØgias combinat(cid:243)rias no tempo total . 50
7.14 matriz largebasis: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . 51
7.15 matriz largebasis: % das estratØgias combinat(cid:243)rias no tempo total . . . 51
7.16 matriz CoupCons3D: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . 52
7.17 matriz CoupCons3D: % das estratØgias combinat(cid:243)rias no tempo total . . . 52
7.18 matriz Dubcova3: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . . 53
7.19 matriz Dubcova3: % das estratØgias combinat(cid:243)rias no tempo total . . . . . 53
7.20 matriz nlpkkt120: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . . . . 54
7.21 matriz nlpkkt120: % das estratØgias combinat(cid:243)rias no tempo total . . . . 54
7.22 matriz FEM_2D_3381977: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda 55
7.23 matriz mat: % das estratØgias combinat(cid:243)rias no tempo total . . . . . . . . 55
7.24 matriz FEM_3D_938586: Con(cid:28)gura(cid:231)ªo da esparsidade e largura de banda . 56
7.25 matriz FEM_3D_938586: % das estratØgias combinat(cid:243)rias no tempo total . 56
7.26 In(cid:29)uŒncia do matching - Con(cid:28)gura(cid:231)ªo da esparsidade . . . . . . . . . . . 57
7.27 In(cid:29)uŒncia do scaling: Itera(cid:231)ıes do Gmres . . . . . . . . . . . . . . . . . . 58
7.28 In(cid:29)uŒncia do scaling: Tempo de execu(cid:231)ªo (seg) do Gmres . . . . . . . . . 59
7.29 In(cid:29)uŒncia do reordenamento: Itera(cid:231)ıes do mØtodo Gmres . . . . . . . . . 60
7.30 In(cid:29)uŒncia do reordenamento: Tempo de execu(cid:231)ªo (seg) do Gmres . . . . 61
7.31 In(cid:29)uŒncia do PQM: Itera(cid:231)ıes do mØtodo Gmres . . . . . . . . . . . . . . 62
7.32 In(cid:29)uŒncia do PQM: Tempo de execu(cid:231)ªo (seg) do Gmres . . . . . . . . . . 63
7.33 Escolha mais simples × melhor escolha de estratØgias: Itera(cid:231)ıes . . . . . . 64
7.34 Escolha mais simples × melhor escolha de estratØgias: Tempo (seg) . . . . 65
7.35 matriz rail_79841: In(cid:29)uŒncia do tamanho de k˜ . . . . . . . . . . . . . . . 67
7.36 matriz G3_circuit: In(cid:29)uŒncia do tamanho de k˜ . . . . . . . . . . . . . . . 68
7.37 Speedup do cluster Altix-xe (LNCC) . . . . . . . . . . . . . . . . . . . . . 70
7.38 Speedup do cluster Enterprise 3 (UFES) . . . . . . . . . . . . . . . . . . . 71
7.39 Condi(cid:231)ıes de contorno 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.40 Tempo (seg) para diferentes n(cid:243)s MPI e 1 thread . . . . . . . . . . . . . . . 74
7.41 Speedup de 1, 2, 4 e 8 threads OpenMP . . . . . . . . . . . . . . . . . . . 75
7.42 Speedup para diferentes n(cid:243)s MPI e 1 thread . . . . . . . . . . . . . . . . . 75
7.43 Condi(cid:231)ıes de contorno 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.44 Tempo (seg) para diferentes n(cid:243)s MPI e 1 thread . . . . . . . . . . . . . . . 77
7.45 Speedup de 1, 2, 4 e 8 threads OpenMP . . . . . . . . . . . . . . . . . . . 77
7.46 Speedup para diferentes n(cid:243)s MPI e 1 thread . . . . . . . . . . . . . . . . . 78
7.47 TAU: Fun(cid:231)ıes com maior tempo de processamento (barras separadas) . . 79
7.48 TAU: Fun(cid:231)ıes com maior tempo de processamento (barras agrupadas) . . 79
Description:7.5.2 Aplicação de Elementos Finitos 3D . híbrido por ser capaz de tirar vantagem da robustez dos métodos diretos e do baixo custo.