04.07.2014 Views

download completo - SET - USP

download completo - SET - USP

download completo - SET - USP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Desenvolvimento e implementação de um Método de Elementos Finitos paralelo para análise não linear de...<br />

153<br />

• Paralelização do programa. A paralelização do programa foi desenvolvida em uma máquina do<br />

tipo PC utilizando o sistema operacional Linux. Primeiro paralelizou-se a integração de<br />

elementos, depois a montagem da matriz Hessiana e por último a solução do sistema.<br />

• Processamento de modelos com grande número de graus de liberdade. Estão sendo<br />

processados exemplos reais que antes não eram passíveis de serem processados devido ao<br />

consumo de memória excessivo e ao tempo de processamento.<br />

Os mesmos passos serão seguidos para a paralelização do algoritmo de elementos de<br />

contorno.<br />

3 DESENVOLVIMENTO<br />

A paralelização do código do método de elementos finitos está finalizada. Inicialmente<br />

paralelizou-se a integração dos elementos, depois a montagem da matriz e por fim a solução do<br />

sistema. A comunicação entre os nós foi implementada com o envio apenas dos dados necessários<br />

para a execução dos escravos.<br />

Foi implementada uma fase de pré-processamento da montagem da matriz, definindo-se<br />

rotulação direta das posições relativas dos graus de liberdade para balancear o processamento da<br />

montagem da matriz. Assim, tanto a integração dos elementos quanto o tempo de montagem da<br />

matriz se tornaram balanceados. Essa modificação não apenas balanceou a carga entre os<br />

processadores escravos como também proporcionou um ganho de desempenho tanto no programa<br />

seqüencial quanto no paralelo.<br />

Outra modificação efetuada no código foi a otimização do uso da memória nos escravos. Os<br />

escravos passaram a alocar apenas a memória necessária para o cálculo da parte que lhes cabe.<br />

Dessa forma, apenas o processador mestre precisa de mais memória para a montagem da matriz<br />

completa e da solução do sistema.<br />

A solução do sistema foi paralelizada utilizando o software aberto MUMPS (Multifrontal<br />

Massively Parallel Solver) (Amestoy et al., 2006) versão 4.8.4. Ele foi escolhido por suportar tanto<br />

arquitetura seqüencial quanto paralela, estar totalmente adaptado para o formato da matriz<br />

comprimida utilizada pelo MA27 e utilizar o ambiente de passagem de mensagem MPI. Há um ganho<br />

de desempenho com a adoção do software MUMPS, tanto no caso seqüencial quanto no caso<br />

paralelo. Dependendo do modelo que está sendo utilizado alcança-se um desempenho (caso<br />

seqüencial) de até 5 vezes mais rápido que o MA27.<br />

No atual estágio, a integração dos elementos e montagem da matriz são feitos nos escravos,<br />

que enviam os resultados para o mestre que então redistribui a matriz para que o sistema seja<br />

resolvido. Atualmente está em fase de implementação o cálculo da solução da matriz distribuída, sem<br />

a necessidade de comunicação com o mestre, diminuindo o tráfego e a necessidade de memória no<br />

mestre para o armazenamento da matriz completa.<br />

O algoritmo do método de elementos de contorno está em fase de análise e preparação para<br />

a paralelização. Como os passos de tempo nesse tipo de método são calculados independentemente,<br />

a paralelização será feita dividindo-se o total de passos de tempo entre os processadores escravos.<br />

4 RESULTADOS OBTIDOS<br />

Para uma análise global do programa paralelizado, utilizou-se um toróide com 201.600 graus<br />

de liberdade. A Figura 1 mostra os resultados, considerando-se o comportamento do speedup de<br />

acordo com o número de escravos e cada parte do programa.<br />

Cadernos de Engenharia de Estruturas, São Carlos, v. 11, n. 53, p. 151-155, 2009

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

Saved successfully!

Ooh no, something went wrong!