• Aucun résultat trouvé

Entretien avec le professeur Edgard Prévilon 1

Dans le document Rencontre avec www.crifpe.ca (Page 58-61)

De acordo com o que se referiu anteriormente, é comum dividir a optimização estrutural em três abordagens fundamentais: optimização dimensional ou paramétrica, optimização topológica e op- timização de forma [Silva 2010]. Na figura 2.3 mostra-se uma ilustração geral destes tipos de optimização.

Na optimização paramétrica ou dimensional, as variáveis de projecto são parâmetros relevantes em termos do comportamento de uma estrutura. Tipicamente, estes são parâmetros de definição

Optimização em Cálculo Estrutural

(a) (b) (c)

Figura 2.3: Representação esquemática das abordagens comuns em optimização estrutural: (a) optimização paramétrica, (b) optimização de forma e (c) optimização topológica.

de secção transversal, dimensões isoladas, parâmetros constitutivos, etc. Neste sentido, a optimi- zação paramétrica mistura-se muitas vezes com a optimização de forma. A optimização de forma permite alterar a geometria de uma estrutura de modo a se obter a configuração óptima. As va- riáveis de projecto são normalmente coordenadas de pontos relevantes ou parâmetros de definição geométrica. Actualmente, uma das abordagens mais comuns, especialmente quando complementa- das com algoritmos de geração de malha, é a manipulação de coeficientes de curvas representativas da geometria de uma peça (e.g. splines ou NURBS8). Na optimização topológica, por sua vez, a função-objectivo é optimizada manipulando a topologia da estrutura dentro de um domínio pos- sível. Essencialmente, este tipo de optimização estrutural corresponde a distribuir o material no interior do domínio de modo a responder da melhor forma à função que se quer maximizar e às diversas restrições associadas. As variáveis utilizadas, variáveis de densidade ou magnitude das propriedades em análise, permitem oscilar entre diferentes fases de material ou simplesmente va- zio. A temática da optimização topológica é um dos pontos essenciais deste trabalho, pelo que será retomada em detalhe no decorrer deste documento.

8As NURBS, Non-Uniform Rational Basis Spline, resultam de um modelo matemático usado habitualmente em gráficos gerados por computador que permite a representação de curvas e superfícies com grande flexibilidade e precisão, e são uma generalização não-uniforme de curvas Bézier.

Capítulo 3

Conceitos Gerais de Cálculo Paralelo

Descrevem-se alguns conceitos relevantes em computação paralela e distribuída. Resumem-se as principais arquitecturas de computação, procedimentos de programação e análise de desempenho.

3.1

Introdução

A necessidade de sistemas de computação paralela prende-se com a resolução de aplicações com re- quisitos de grande capacidade de processamento, seja pelo volume de dados seja pela complexidade dos problemas associados. Muitos problemas de engenharia, especialmente no que diz respeito à simulação numérica, são de tal forma exigentes em termos de recursos que a utilização de apenas uma máquina convencional se torna inviável.

Em termos genéricos, a computação paralela pode ser definida como sendo a resolução mais rápida de uma tarefa, recorrendo à utilização simultânea de múltiplos processadores [Leopold 2001], que comunicam e cooperam para a redução dos tempos de processamento [Almasi e Gottlieb 1994]. Estes sistemas podem ser classificados segundo diferentes arquitecturas e a comunicação efectuada segundo diferentes protocolos. O processamento e a sua avaliação, por sua vez, obedecem a certos conceitos e parâmetros, como é exposto nas secções que se seguem.

Desde o primeiro computador digital electrónico de aplicação geral que podem ser identificadas cinco gerações distintas de hardware: tubos de vácuo (1939–1950), díodos e transístores (1950– 1960), circuitos integrados em pequena, média e grande escala – SSI (Small-Scale Integration), MSI (Medium-Scale Integration) e LSI (Large-Scale Integration) – (1960–1970), circuitos integra- dos em muito alta escala – VLSI (Very-Large-Scale Integration) – (1970–1990) e ultraescala – VLSI (Ultra-Large-Scale Integration) – (1990– *) [Noor 1997]. Destaca-se o surgimento dos circui- tos VLSI, trazendo formatos mais compactos e conduzindo simultaneamente a maior complexidade e à redução de custos. Este foi um factor determinante no desenvolvimento de sistemas computa- cionais, quer no que diz respeito a arquitecturas de computação paralela quer a máquinas de von Neumann (vd. Sec. 3.2.1) [Palin 2007].

Note-se que também a evolução das redes de comunicação possibilita um aumento da eficiência e fiabilidade das ligações entre computadores, trazendo grandes benefícios no desenvolvimento de sistemas paralelos e distribuídos. Assim, outros autores [Grama et al. 2003] fazem a divisão cronológica da evolução dos sistemas computacionais da seguinte forma: batch era, processamento

Introdução

em lotes de cartões perfurados; time-sharing era, com a possibilidade de mais que um utilizador utilizar um dado computador; desktop era, com a democratização dos computadores pessoais; a network era, com a evolução da comunicação em rede e consequente influência nos paradigmas de processamento e cooperação.

É ainda comum a divisão histórica do processamento segundo duas fases: de processamento sequencial e de processamento paralelo [Palin 2007]. Em qualquer caso, a sequência de evolução em termos de computação começa no desenvolvimento de arquitecturas físicas, seguido do desenvolvi- mento de software de sistema (especialmente compiladores e sistemas operativos). Surgem depois as aplicações e atinge-se o ponto de saturação com o seu crescimento na aplicação em sistemas e plataformas dedicadas de resolução de problemas. Por sua vez, todos estes sistemas passam por 3 fases: I&D, comercialização e chegada a produto de consumo geral (commodity). Note-se que, inde- pendentemente dos critérios utilizados, todas as análises da evolução dos sistemas computacionais convergem na tendência para obter elevados desempenhos e capacidade de processamento recor- rendo a agregados de unidades de processamento com algum tipo de processamento cooperativo via rede.

Salienta-se o facto de existir ainda alguma ambiguidade na utilização de designações como com- putação paralela, distribuída ou concorrente, especialmente no caso dos dois primeiros. Um dado sistema pode ser simultaneamente classificado de paralelo e distribuído, dependendo da abordagem ou do paradigma de programação e desenvolvimento utilizado. Neste trabalho, o termo paralelo é assumido como a forma mais interactiva e dependente de processos de um sistema distribuído, onde existe comunicação entre os fluxos de tarefas durante a sua execução. Um sistema distribuído será, em termos genéricos, um sistema em que os diferentes processos paralelos são executados de forma independente, contribuindo, no final de um dado fluxo de instruções, com a sua parte para a resolução de um problema global. O termo concorrente é genericamente aplicado a processos que sejam executados em simultâneo.

Em termos de computação científica, o cálculo paralelo vai gradualmente assumindo um papel de crescente importância. Ao mesmo tempo que os modelos utilizados vão evoluindo, tornando-se mais sofisticados e detalhados, os tempos de execução tendem muitas vezes a aumentar também, apesar dos avanços na tecnologia de hardware [Rajan et al. 2004]. Note-se, no entanto, que os avanços têm ocorrido também ao nível do poder de computação em termos de algoritmia. À medida que o hardware foi evoluindo, também evoluiu o potencial para o desenvolvimento de estra- tégias e algoritmos de cálculo mais eficientes [Houstis e Rice 2000]. Todos estes avanços são ainda acompanhados pelo desenvolvimento de sistemas operativos, ferramentas de gestão e compiladores, contribuindo em conjunto para o crescimento dos recursos efectivos disponíveis para computação. Tudo isto contribuiu, em métodos computacionais em engenharia, para permitir a resolução de problemas de elevada dimensão, quer pelo número de graus de liberdade quer, por exemplo, em optimização, pelo número de variáveis de projecto envolvidas [Oden 2003]. Todos estes avanços, no entanto, não garantem o melhor desempenho dos métodos de resolução dos problemas. O desempe- nho de uma análise pelo método dos elementos finitos, por exemplo, é função de diversos factores: (i) a possibilidade e a eficiência de partição do problema em subdomínios; (ii) a estrutura de dados e algoritmos; (iii) a eficiência dos algoritmos utilizados no processamento de matrizes esparsas; (iv) a eficiência dos métodos de resolução iterativos; (v) a eficiência dos algoritmos utilizados ao nível das comunicações, especialmente com o aumento do número de subdomínios envolvidos [Ra- jan et al. 2004]. Estas limitações, juntamente com alguma inércia na exploração do potencial computacional actualmente disponível [Oden 2003], leva a que o número de trabalhos de métodos computacionais em engenharia utilizando explicitamente cálculo paralelo sejam comparativamente poucos. No entanto, nas últimas décadas, diversos autores têm investido no desenvolvimento de códigos e aplicações com cálculo paralelo em diversas áreas [Kayvantash e Thierauf 1991, Storaasli et al. 1993, Brown et al. 2000, Sonzogni et al. 2002, Yoshimura et al. 2002, Har e Fulton 2003, Rus et al. 2003,Tai e Zhao 2003,Chung et al. 2006,Tezduyar e Sameh 2006]. Em particular, em optimi- zação estrutural, desde os anos 80/90 que alguns autores recorrem ao cálculo paralelo na resolução de problemas [Sikiotis e Saouma 1988, El-Sayed e Hsiung 1991, Xicheng e Guixu 1992, Hsiung e

Conceitos Gerais

El-Sayed 1993]. Na última década, surgem ainda aplicações de optimização topológica em cálculo paralelo, para problemas de elevadas dimensões [Borrvall 2001, Kim et al. 2004, Vemaganti e La- wrence 2005,Mahdavi et al. 2006,Evgrafov et al. 2008,Wuppalapati et al. 2008,Coelho et al. 2011a].

3.2

Conceitos Gerais

Dans le document Rencontre avec www.crifpe.ca (Page 58-61)