Diogo t.robaina edp

136 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
136
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Diogo t.robaina edp

  1. 1. Solução Numérica de Equações Diferenciais Parciais Parabólicas usando o Método Hopscotch com Refinamento Não-Uniforme Mauricio J. M. Guedes a,b , Diogo T. Robaina a , Lúcia M. A. Drummond a , Mauricio Kischinhevsky a , Otton T.S. Filho a a: Instituto de Computação, UFF, Rua Passo da Pátria, 156 - Bloco E - 3° andar, São Domingos, Niterói - RJ, CEP 24210-240. b: CASNAV, Marinha do Brasil, Pça. Br. de Ladário, s/no , Ilha das Cobras, ed. 8 - 3º andar, Centro, Rio de Janeiro-RJ, CEP 20091-000. E-mail: mauricio532@hotmail.com, professor_robaina@yahoo.com.br, lucia@ic.uff.br, kisch@ic.uff.br, otton@ic.uff.br 1 - INTRODUÇÃO Equações Diferenciais Parciais (EDPs) são utilizadas para estudar uma vasta gama de fenômenos da natureza, nas mais diversas áreas de aplicação. Para a resolução computacional, é necessário discretizar o domínio, com a criação de uma malha de pontos. Em situações reais, a malha a ser utilizada é bastante refinada, com possivelmente milhões de pontos e, além disso, para estudar efeitos de longo prazo as EDPs devem ser integradas sobre longos intervalos de tempo. Tais modelos computacionais requerem uma quantidade de memória e de CPU que podem estar além da capacidade até mesmo dos mais modernos supercomputadores. Assim, o processamento paralelo aparece como uma alternativa atraente. Este artigo apresenta um modelo de resolução da EDP evolutiva de difusão pura empregando processamento paralelo. Para a resolução numérica foi escolhido o método Hopscotch, por ser um dos métodos mais rápidos de resolução de uma EDP e por ser adequado a paralelização. O domínio é dividido em subdomínios, e cada subdomínio é associado a um processador. O modelo apresentado aqui permite o refinamento seletivo dos subdomínios para tratar de descontinuidades na fronteira. Essa característica se torna importante quando o ambiente é compartilhado, pois permite refinar apenas os subdomínios necessários, evitando sobrecarregar os outros processadores envolvidos na resolução. 2 – ASPECTOS TEÓRICOS 2.1 – Equações Diferenciais Parciais (EDPs) A seguir são apresentadas as condições de contorno que são comumente encontradas na solução de equações diferenciais parciais (ref. [1]). EDPs podem ser classificadas em três categorias básicas: Elípticas (associadas a problemas estacionários, em estado de equilíbrio), Parabólicas e Hiperbólicas, evolutivas com características difusiva ou convectiva. O problema a ser tratado neste trabalho é evolutivo, considera apenas o fenômeno de difusão como fator de modificação do estado do sistema, estando associado à denominação EDP parabólica. Os problemas evolutivos envolvem a variação temporal das grandezas físicas de interesse. A partir dos valores iniciais dessas grandezas em um certo tempo t0, calcula-se, pela solução numérica da EDP, seus novos valores em sucessivos intervalos de tempo ∆t, até alcançarmos o instante final tf. Os problemas transientes necessitam de valores para a variável dependente em t = 0 (condições iniciais), além de condições de fronteira para t > 0. Podemos escrever, esquematicamente: Valor inicial de φ + Variação espacial e temporal de φ, dada pela equação diferencial + condições de fronteira = Novo valor de φ Figura 1 – Equação diferencial 2.2 – Discretização Para tratar computacionalmente um problema diferencial é necessário expressar de forma adequada a região (domínio) onde o problema será resolvido. Como usualmente não é possível obter soluções numéricas sobre o domínio, uma região contínua, devido à infinidade de pontos envolvida, inicialmente o domínio é discretizado, isto é, substituído por um conjunto finito de pontos representativos. Somente nesses pontos é que as soluções serão obtidas. Figura 2 – Discretização do domínio Intuitivamente, percebe-se que, quanto maior for o número de pontos da discretização, mais fiel será o resultado numérico obtido. Obviamente, maior também será o custo computacional. A necessidade de se resolverem problemas com alta precisão, em tempo hábil (como previsão do tempo), tem levado a uma constante busca tanto por técnicas de solução mais eficientes, como por computadores com maior desempenho. A utilização de técnicas de programação paralela é um excelente meio para o cálculo de problemas complexos. 2.3 – Condições de Contorno a) Condições de contorno de Dirichlet: especifica o valor da função no contorno. b) Condições de contorno de Neumann: especifica uma derivada normal à função no domínio (i.é., um fluxo). c) Condições de contorno de Cauchy: especifica uma combinação dos dois tipos anteriores. Este trabalho usa condições de contorno de Dirichlet, sem que haja dificuldade para o emprego das outras condições de contorno. 2.4 – Equações de Diferenças Finitas Os métodos de diferenças finitas consistem em substituir as derivadas parciais presentes na equação diferencial por aproximações por diferenças finitas. As ref. [2], [3] e [4] dão mais detalhes sobre esses métodos. No método explícito, as equações são independentes, permitindo, portanto, solução por cômputo direto. É rápido, mas exibe problemas de estabilidade. Em métodos implícitos, têm-se condições de estabilidade mais favoráveis; no entanto, as 1
  2. 2. equações resultantes são acopladas, o que exige a resolução de um sistema de equações a cada passo de integração no tempo, o que pode tornar os métodos lentos e de difícil paralelização. Este trabalho usa a equação parabólica a seguir para modelar a difusão de calor em uma placa (α é a constante de difusividade térmica):       ∂ ∂ + ∂ ∂ = ∂ ∂ 2 2 2 2 yxt ϕϕ α ϕ Discretizando a derivada no tempo em 1a ordem em ∆t e as derivadas espaciais em 2a ordem em ∆x e ∆y, obtém-se, usando a seguinte notação: ; e( )yxtt ji ,,, ϕϕ = ( yyxxttt ji ∆+∆+∆+=+ ++ ,,1 1,1 ϕϕ ) para o modo explícito: ( ) ( )t ji t ji t ji t ji t ji t ji kk 1,1,,1,1, 1 , 41 −+−+ + ++++−= ϕϕϕϕϕϕ e para o modo implícito: ( ) ( )1 1, 1 1, 1 ,1 1 ,1 1 ,, 41 + − + + + − + + + +++−+= t ji t ji t ji t ji t ji t ji kk ϕϕϕϕϕϕ onde 2 h t∆ = αk , hyx =∆=∆ . O método Hopscotch utiliza essas duas discretizações, como será visto a seguir. 2.5 – Método Hopscotch O método Hopscotch (ref. [3], [5] e [6]) é uma combinação dos métodos explícito e implícito. O método consiste em aplicar as equações explícita e implícita em cada ponto do domínio, de modo alternado. Os pontos resolvidos pela equação explícita são sempre calculados primeiro. Assim, quando os pontos a serem resolvidos pelo método implícito forem calculados, todos os seus pontos adjacentes necessários para o cálculo já estarão resolvidos. Deste modo, não é necessário resolver um sistema de equações. É incondicionalmente estável, ver ref. [7] para a prova. O exemplo a seguir ilustra a aplicação do método. Primeiro, aplica-se o método explícito (pontos brancos) alternadamente, começando no ponto acima e à esquerda. Depois, o método implícito é aplicado (pontos pretos) ao resto dos pontos. Note que todos os pontos necessários ao cálculo da fórmula implícita já estão no tempo t + 1, e assim esse cálculo se torna explícito, dispensando a resolução de um sistema de equações. Esse procedimento configura um meio- passo, e está ilustrado na figura 3. O passo se completa com a repetição do procedimento, invertendo o método de cálculo utilizado em cada ponto do domínio. Os pontos cinza são pontos da fronteira. meio-passo + meio-passo = um passo Figura 3 – Aplicação do método Hopscotch Uma desvantagem do método Hopscotch é que ele não lida bem com discontinuidades na fronteira, devido à sua característica de considerar primeiro aproximadamente a metade dos pontos e depois os pontos restantes. Uma das maneiras de lidar com esse problema é refinar a malha nas proximidades de uma eventual descontinuidade (ref. [8]). 3 – IMPLEMENTAÇÃO Foi usada a linguagem C para a implementação dos programas e adotado o padrão MPI para a troca de mensagens. Ver ref. [9] para uma implementação paralela usando gradiente conjugado e a ref.[10] para uma implementação paralela de um método Hopmoc, que é uma extensão do método Hopscotch. 3.1 – Divisão do Domínio Será considerado aqui, como exemplo ilustrativo, uma subdivisão utilizando 9 processadores, cada um deles com um subdomínnio 5x5, mas o programa permite que se use qualquer quantidade de processadores e qualquer tamanho de subdomínio, com a restrição de que exista sempre o mesmo número de linhas e colunas., isto é, o número de subdomínios deve ser um quadrado perfeito, por exemplo, 9, 16, 25, 36, 49, 64 e assim por diante. 5x55x5 fronteira 5x5 5x5 5x5 5x5 5x5 5x5 5x5 Figura 5 – Divisão do domínio Independentemente do número de subdomínios definidos, existirão nove tipos de subdomínios, de acordo com a existência e posição da fronteira. Os tipos de subdomínio estão descritos no item 4.2.4. Os exemplos são para o caso de subdomínios com discretização 5x5. Cada processador trabalhará apenas em um subdomínio. 3.2 – Comunicação entre os Processadores Um meio passo do método é o cálculo alternado dos pontos pelas equações explícita e implícita. Com todos os pontos calculados, a complementação do passo será usar a fórmula explícita para calcular os pontos que foram calculados com a fórmula implícita, e vice-versa. O cálculo dos valores dos pontos localizados nas bordas de um subdomínio depende dos valores de pontos localizados nos subdomínios adjacentes. Assim, a cada meio passo haverá a necessidade de comunicação entre os processos. A posição relativa dos subdomínios é mostrada na figura 6 a seguir. 2
  3. 3. N NE L SESSO O NO Figura 6 – Posição relativa dos subdomínios Essa comunicação consistirá de valores em pontos de um subdomínio que devem ser mandados para os seus vizinhos. Assim, cada subdomínio terá pontos dos subdomínios adjacentes. Esses pontos são chamados de franja. As franjas são enviadas por cada processador conforme a figura 7 a seguir. Nessa ilustração foi usado um subdomínio 10x10 para maior clareza. noroeste oeste leste nordeste sudoeste sudeste norte sul Figura 7 – Subdomínio (10x10) com as franjas enviadas As franjas são recebidas de cada vizinho conforme figura 8 a seguir. Subdomínio 5x5franja noroeste oeste sudoeste sul sudeste leste norte nordeste Figura 8 – Subdomínio com as franjas recebidas O Método Hopscotch exige uma franja de duas camadas. A comunicação deve ser síncrona, pois um subdomínio necessita dos outros para poder prosseguir. Para um domínio dividido igualmente, o subdomínio que o processador está resolvendo é determinado da seguinte maneira: a) divide-se o número do processo (rank) pelo número de colunas. O resultado indicará em que coluna o subdomínio está. b) Obtém-se o resto dessa divisão. O resultado indicará em que linha está o subdomínio. 3.4 – Tipos de Subdomínios Existem nove tipos de subdomínio de acordo com a existência ou não de fronteira e sua posição no domínio. Os tipos de subdomínio estão mostrados no exemplo da figura 9 a seguir, que usa uma subdivisão em 36 subdomínios. 1 4 4 4 4 7 2 5 5 5 5 8 2 5 5 5 5 8 2 5 5 5 5 8 2 5 5 5 5 8 3 6 6 6 6 9 Figura 9 – Tipos de Subdomínio 3.5 – Refinamento não-uniforme O programa permite que os subdomínios tenham refinamentos diferentes. Na presença de gradientes elevados, a linha de ação mais comum é refinar a malha onde esses gradientes ocorrem, e deixar a malha menos refinada nas regiões com gradientes pequenos. No caso de uma discontinuidade, é necessário que a malha seja mais refinada nas proximidades dela, para que seja obtida a precisão requerida. Como o refinamento de uma malha é computacionalmente dispendioso, o programa permite refinamentos diferentes em cada subdomínio. Ë claro que, em ambientes homogêneos, o tempo de processamento será dado pelo subdomínio mais refinado, já que a comunicação é síncrona. Apesar de a facilidade não reduzir, nesse caso, o tempo de processamento já obtido com a paralelização, essa facilidade é útil em ambientes compartilhados, já que só sobrecarrega os processadores alocados aos subdomínios refinados. Em ambientes heterogêneos, o subdomínio mais refinado seria associado ao processador mais rápido, reduzindo o tempo de processamento. 4 – O PROBLEMA Encontrar a distribuição de temperatura sobre uma chapa de 3m x 3m, submetida às condições de fronteira de Dirichlet com uma discontinuidade conforme a figura 10 a seguir. Figura 10 - Chapa metálica aquecida nas bordas Os parâmetros do problema são: α (difusividade térmica) = 1 m2 /s. ο 00 , =jiϕ (a placa está inicialmente a zero grau). Inicialmente o domínio será discretizado usando uma malha regular de 60 x 60 pontos, o que fornece h = 5,0 cm, propiciando a precisão 3 500º 30 o 100 o 100 o0 300 o 3 3
  4. 4. inicialmente requerida para resolver o problema. Essa malha será chamada de malha não refinada. Na presença de discontinuidade, essa discretização não é mais suficiente, devido aos elevados gradientes nas proximidades da discontinuidade. Por isso, é necessária uma discretização que forneça h = 1,25 cm, o que é conseguido com uma malha de 240 x 240 pontos, malha essa chamada de refinada. Na versão paralela, são usados 9 subdomínios, cada um deles endereçado a um processador. Para tratar o caso sem a discontinuidade, o domínio é dividido em 9 subdomínios, cada um com malha 20 x 20. No caso em que há descontinuidade na fronteira, o domínio teria de ser dividido em 9 subdomínios de 80 x 80 pontos. Mas como o programa tem a flexibilidade de tratar subdomínios com refinamentos diferentes, apenas o subdomínio que contém a discontinuidade precisa ter esse refinamento. O domínio para a resolução paralela então fica como mostrado na figura 11 a seguir. 20 x 20 40 x 40 80 x 80 20 x 20 40 x 40 40 x 40 20 x 20 20 x 20 20 x 20 Figura 11 - Refinamento dos subdomínios O tempo de processamento do programa será ditado pelo subdomínio com refinamento 80 x 80, já que o processamento é síncrono, e assim, em termos da aplicação, o refinamento não-uniforme não conduziria a um menor tempo de processamento, se o ambiente for homogêneo. Se o ambiente for heterogêneo, isto é, tendo processadores com velocidades diferentes, o subdomínio mais refinado poderia ser associado ao processador mais rápido, deixando os processadores mais lentos responsáveis pelo processamento dos subdomínios menos refinados, levando a um menor tempo de processamento do programa. Mas em se tratando de ambientes paralelos compartilhados, isto é, não dedicados exclusivamente a uma única aplicação, a desnecessidade de se refinar todos os subdomínios sobrecarrega bem menos o sistema. Por exemplo, se considerarmos que o processamento do subdomínio 20 x 20 gasta 1 unidade de tempo, o processamento do subdomínio 40 x 40 gastará 4 unidades de tempo, e o subdomínio 80 x 80 gastará 16 unidades de tempo. Assim, a resolução do problema consumirá 33 unidades de tempo. Se não houvesse a facilidade de refinamento não-uniforme, todos os subdomínios teriam de ter refinamento 80 x 80, o que consumiria 144 unidades de tempo. 5 – RESULTADOS Foram considerados dois estágios na evolução da distribuição de temperaturas na chapa. Um no início da propagação dos valores de fronteira para o interior do domínio, e outro com a propagação já bastante disseminada no domínio mas ainda não tendo atingido a estabilização. A Tabela 1 a seguir apresenta os resultados obtidos em tempo de processamento para o primeiro estágio. Tabela 1 – Tempos de processamento para o primeiro estágio Tempo (segundos) malha Seqüencial Paralelo Não refinada 0,10 0,05 Refinada 1,67 0,07 A Tabela 2 a seguir apresenta os resultados obtidos em tempo de processamento para o segundo estágio. Tabela 2 – Tempos de processamento para o segundo estágio Tempo (segundos) malha Seqüencial Paralelo Não refinada 5,31 3,41 Refinada 90,02 5,78 As figuras 12 e 13 a seguir apresentam a distribuição de temperaturas na chapa para o programa seqüencial em todo o domínio e a distribuição de temperaturas apenas no subdomínio em que existe a descontinuidade, no início da distribuição de temperaturas, usando a malha refinada. Figura 12 – Domínio completo, com refinamento 240 x 240 Figura 13 – Subdomínio com refinamento 80 x 80. As figuras 14 e 15 a seguir apresentam a distribuição de temperaturas na chapa, já próxima da estabilização, para o programa seqüencial em todo o domínio e a distribuição de temperaturas apenas no 4
  5. 5. subdomínio em que existe a discontinuidade, usando a malha refinada. Figura 14 – Domínio completo, com refinamento 240 x 240 Figura 15 – Subdomínio com refinamento 80 x 80. 6 – CONCLUSÕES Neste trabalho, utilizou-se o laboratório da Pós-graduação em computação da UFF para analisar os resultados experimentais obtidos pelo programa de resolução da equação diferencial parabólica de difusão 2D. A rede local do laboratório é heterogênea, e foram utilizados 9 processadores nos testes, três Pentium IV com 1,4 GHz de freqüência de “clock” e 512 Mb de memória RAM; e seis AMD ATHLON com 1,4 GHz de freqüência de “clock”e 256 Mb de memória RAM. A rede estava compartilhada com outras aplicações durante os testes, e por isso cada caso foi executado dez vezes para diminuir os efeitos de outras aplicações nos tempos dos testes. Foi considerado o menor tempo obtido em cada uma das dez execuções de cada estágio para cada grau de refinamento da malha. Os tempos mostraram que o desempenho da versão paralela é bem superior para a malha mais refinada. Para a malha menos refinada o ganho não é tão grande porque o tempo de comunicação torna-se proporcionalmente maior em relação ao tempo de processamento. O método Hopscotch, aliado ao processamento paralelo, mostrou-se uma ferramenta poderosa para a resolução das EDP difusivas. O refinamento da malha conduziu a resultados mais precisos, permitindo maior qualidade no acompanhamento da evolução dos efeitos provocados pela descontinuidade. O programa paralelo levou a uma redução substancial no tempo de processamento em relação à versão seqüencial. A capacidade, já implementada, de refinamento não-uniforme da malha, apesar de não diminuir o tempo de processamento do programa em si, considerando a versão paralela, contribui para uma diminuição global de processamento, o que é útil em ambientes compartilhados com outras aplicações. Se for considerado um ambiente heterogêneo, uma redução no tempo de processamento pode ser obtida associando o subdomínio com a malha mais refinada ao processador mais rápido. O balanceamento de carga, necessário para reduzir ainda mais o tempo de processamento e a capacidade de tratar domínios que não sejam quadrados para aumentar a versatilidade do programa são aperfeiçoamentos que estão sendo desenvolvidos. É necessário também executar o programa em ambiente exclusivo para avaliar com precisão os “speed-ups”conseguidos pela versão paralela. 8 - REFERÊNCIAS [1] Eric W. Weisstein. "Boundary Conditions." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/BoundaryConditions.ht ml [2] Fortuna, A. O., Técnicas Computacionais para Dinâmica dos Fluidos, Edusp, São Paulo, 2000. [3] Mitchell, A.R. & Griffiths, D.F., The Finite Difference Method in Partial Differential Equations, John Wiley & Sons Ltd., UK, 1980. [4] Finney, Ross L., Calculus, Addison-Wesley Inc, EUA, 1994. [5] A.R. Gourlay, Hopscotch: a fast second order partial differential equation solver, J. Inst. Maths. Applics., 6:375-390, 1970. [6] A.R. Gourlay e G.R. McGuire, General hopscotch algorithms for the numerical solution of partial differential equations, J. Inst. Maths. Applics., 7:216- 227, 1971. [7] Verwer&Sommeijer, Stability Analysis of an Odd- Even-line Hopscotch Method fot Three –Dimensional Advection-Difusion Problems, Society for Industrial and Applied Mathematics, vol 34, No 1, pp. 376- 388,1987. [8] University of Oxford, Physical and Theoretical Chemestry Laboratory, UK, http://physchem.ox.ac.uk/~rgc/john/Thesis. [9] Leonardo A. P. e Silva, Implementação Paralela do algoritmo Gradiente Conjugado utilizando MPI, UFRGS, RS, 2002. [10] Cabral, F. L., Métodos Hopmoc para resolução de equações de convecção-difusão e sua implementação paralela, Dissertação de Mestrado, UFF, 2001. 5

×