• Nenhum resultado encontrado

2.3 COMPUTADORES DE ALTO DESEMPENHO

2.3.2 Modelos de concorrência

2.3.2.2 Multiprocessadores

O ganho de desempenho nos computadores vetoriais está restrito à concepção de nova tecnologia dos componentes, tanto no aumento da capacidade de memória

Memória Central Proc. Instrução Proc. Escalar Controle Mem. Instrução Mem. local Instrução Pipelines Aritméticos Controle Vet. Instrução Proc. Vetorial

como na diminuição do ciclo do processador. Assim, uma maneira de aumentar o nível de paralelismo é realizar diferentes instruções (ou iguais) sobre os diferentes dados com o uso de vários processadores independentes simultaneamente.

Uma gama muito grande de computadores enquadram-se nesta classificação, sendo que a forma de conexão entre eles (interconexão), o número de processadores interligados (granulometria) e, principalmente, a arquitetura da memória (local ou global) são parâmetros que distinguem os vários grupos de multiprocessadores existentes.

O conceito de granulometria e de interconexão não são questões tão relevantes para o interesse do programador no desenvolvimento de programas que aproveitem este tipo de arquitetura. Ressalta-se, porém, que estes dois fatores podem ser importantes com relação a execução do software com um número muito grande (mais de cem) de processadores trabalhando em conjunto, neste caso é aconselhável verificar o estudo apresentado em REZENDE (1995) e em ALMEIDA & ÁRABE (1991) para maior compreensão destes parâmetros.

O tipo de acesso à memória é um fator que abre caminho para duas novas formas bem distintas de desenvolvimento de algoritmos para o maior aproveitamento de sua arquitetura específica. Por um lado, há os computadores com memória global (memória compartilhada), onde todos os processadores têm acesso a ela. A busca ou a mudança do valor de uma determinada variável é feita por qualquer processador a qualquer momento, desde que seja bem controlado pelo programador. Por outro lado, existem os computadores onde cada processador tem sua memória local (memória distribuída). Assim, as alterações são feitas localmente e os dados são conhecidos pelos demais processadores mediante a troca de mensagem ocorrida pela rede de interconexão.

Dessa forma, com estes dois tipos de modelos de sistemas computacionais existentes, são apresentadas, a seguir, algumas vantagens e desvantagens inerentes a ambos os paradigmas de memória:

Memória Compartilhada: conforme DeCEGAMA (1989) três problemas principais

ocorrem com este tipo de memória: conflito de software, conflito de hardware e alto custo para escalabilidade.

O conflito de software ocorre quando dois ou mais processadores alteram a mesma variável sem a devida sincronização das instruções. Um exemplo deste tipo de problema é quando dois processadores (A e B) buscam uma variável Ki quase ao

mesmo tempo para sua atualização numa mesma instrução. Assim, o procedimento correto do código deveria fazer com que o processador A altere Ki e posteriormente

B a atualize novamente. Mas em virtude das diferentes velocidades de cada processador, pode-se ocorrer que A altere Ki e B a modifique, sem levar em

consideração a atualização de A, já que os dois processadores já tinham buscado esta mesma variável em memória única. Desta forma, percebe-se que a sincronização dos processos entre os vários processadores tem fator importante para evitar este problema, que é conhecido como racing condition.

O conflito de hardware está ligado ao acesso simultâneo de um ou mais processadores à memória, devendo-se também usar métodos de sincronização para o controle de busca e envio de dados na memória pelos diferentes processadores. Neste caso, este fator é solucionado por sistemas de controle eletrônicos à memória.

O terceiro e maior empecilho que tem causado o não avanço deste tipo de arquitetura refere-se ao alto custo para aumentar o número de processadores que podem ser ligados para acesso à memória. Isto porque para se fazer uma arquitetura em que se tenha, por exemplo, 30 processadores próximos e que tenham acesso à memória, é necessário sistemas eficientes de controle de temperatura e de ligação entre processador e memória.

Memória Distribuída: ainda conforme DeCEGAMA (1989), é mostrado que os

computadores de memória distribuída têm dois tipos de conflito que devem ser ressaltados.

O primeiro estaria relacionado ao fato de que a forma geral de se resolver um problema, com este tipo de arquitetura é particionando os dados entre os vários processadores e trocando mensagens para atualizar as dependências entre as várias partes divididas do mesmo problema. Contudo, estas trocas de mensagens acarretam uma grande perda de tempo no processo e quanto mais dependente for o algoritmo numérico mais lento é o envio e o recebimento de dados entre os processadores.

A outra forma de conflito para esta arquitetura, conforme DeCEGAMA (1989), é a pouca disponibilidade de compiladores autoparalelizantes (parallelising

compilers), ou seja, compiladores que averiguem no software os pontos que possam

ser implicitamente paralelizados sem a necessidade de adaptar os programas existentes para computadores convencionais, ou seja, seqüenciais. Alega-se assim, a insuficiência de tais compiladores devido a complexidade que existe para este procedimento.

Mas estes dois problemas de conflito, destacados por DeCEGAMA (1989), têm sido objeto de estudo para serem superados por pesquisadores do mundo inteiro desde há última década (80). Para o conflito ocasionado pela troca de mensagem, podem ser lembrados os trabalhos de NOOR & PETERS (1989), JOHNSSON & MATHUR (1990), FARHAT & ROUX (1991), ADELI & KAMAL (1992), entre outros.

Nesses trabalhos, os autores procuram basicamente diminuir tal empecilho, estudando novos procedimentos numéricos com o intuito de se obter o mínimo possível de trocas de mensagens. Isto fez com que novas rotinas, até então já bem definidas, fossem abordadas sob outro enfoque, como por exemplo, a resolução de sistemas lineares advindos do MEF, que de maneira geral, era resolvido mediante o emprego do método direto de Gauss ou qualquer uma variante deste, como o Método de Cholesky. Começou-se assim, a serem explorados métodos iterativos para se resolver o mesmo problema, podendo-se citar os trabalhos de BITZARAKIS et al. (1997) e SCHMIT & LAI (1994).

Por fim, o problema da falta de compiladores autoparalelizantes têm também sido alvo de pesquisa pelas empresas do setor de computadores de alto desempenho, destacando-se a CRAY (1998) e a IBM (1998), que têm desenvolvido software do tipo HPF, sigla de High Performance Fortran com esta finalidade. Acredita-se que futuramente, o mercado estará dominado por computadores de alto desempenho em memória distribuída com o uso de compiladores autoparalelizantes. Vale ressaltar que mesmo com a utilização de tais procedimentos denominados de implícitos, o desempenho de um programa não fica totalmente alcançado, já que tais autoparalelizadores apenas paralelizam situações (processos, instruções, laços) em casos bem óbvios para estes procedimentos. Portanto, para maior ganho de

desempenho, cabe ao programador paralelizar manualmente as características intrínsecas de seu programa.

Este tipo de paralelização manual - conhecida como paralelização explícita - é uma alternativa de otimização de programa para a arquitetura de computadores de alto desempenho em memória distribuída.

O MEF ADAPTADO AOS MULTICOMPUTADORES

3.1 INTRODUÇÃO

Este capítulo tem o intuito de fazer a ligação entre o estudo de computadores de alto desempenho de memória distribuída (MIMD) e sua aplicação no campo da engenharia das estruturas com o uso do método dos elementos finitos (MEF). Dessa forma, apresenta-se primeiramente o esboço geral do método dos elementos finitos, e os procedimentos necessários para a solução de um problema do MEF na análise de estruturas estáticas.

Em seguida, atenção especial é dada as metodologias empregadas para computadores de arquitetura paralela de memória distribuída, principalmente dando- se ênfase à técnica empregada neste trabalho: o simples particionamento dos graus de liberdade da matriz de rigidez entre os vários processadores para a resolução do sistema linear particionado, com o emprego de um método iterativo.

Documentos relacionados