• Nenhum resultado encontrado

2.5 Optimização em Cálculo Estrutural

3.2.3 Avaliação de Desempenho

Existem múltiplos aspectos relevantes na avaliação de desempenho de um sistema de computação paralela, como a capacidade de processamento, a largura de banda e latência da rede de comunica- ções, a capacidade de processamento de cada processador, etc. Com a necessidade de uma medição objectiva da influência destes factores, a forma mais frequente de avaliação de desempenho consiste na comparação dos tempos de execução de algoritmos em série e em paralelo. Neste ponto, para além das características intrínsecas de processamento de cada parte do sistema, a comunicação e o seu peso no processo global constitui um dos elementos mais importantes. O custo das comu- nicações advém, por um lado, da programação do algoritmo e, por outro, das características de hardware do sistema. Estas características são habitualmente contabilizadas em termos de largura de banda — quantidade efectiva de informação que pode ser transmitida num dado período de tempo — e latência de comunicação — tempo necessário para o transporte de uma mensagem do processo emissor até ao processo receptor. Estes dois factores determinam a velocidade efectiva de transmissão de uma rede e são ilustrados na figura 3.5. Nesta figura mostram-se também as quatro parcelas principais na latência de comunicação [Hennessy e Patterson 2002]: overheads de emissão e de recepção, tempo de transferência e latência de rede. Os overheads de emissão e de recepção representam geralmente o factor dominante na latência e comunicação [Hennessy e Patterson 2002]

Conceitos Gerais

e correspondem ao tempo que os nós emissor e receptor despendem na interacção com a rede. Este é usualmente o tempo de comunicação entre os dispositivos e a própria rede, na transição entre buffers de memória, barramentos internos, dispositivos de rede e protocolos de comunicação. O transporte efectivo da mensagem na rede é representado pelo tempo de transferência e latência de rede. O tempo de transferência traduz a relação entre o comprimento da mensagem e a largura de banda efectiva disponível para cada nó e o tempo de latência da rede depende directamente da tipologia de rede e dos dispositivos de comutação intermédios, que induzem tempos de latência próprios [Pinho-da-Cruz 2007].

Envio da

Mensagem Latência de comunicação Recepção damensagem

Overhead de emissão

Tempo de

transferência Latênciade rede

Overhead de recepção

Figura 3.5: Representação esquemática da latência de comunicação de uma mensagem.

Em termos de avaliação de desempenho global de um sistema, os principais parâmetros utiliza- dos são o speed-up e a eficiência. O speed-up, Sp, traduz a relação entre o tempo da execução em

série e o tempo de execução em paralelo, ou seja, quantas vezes o programa paralelo é mais rápido que a sua versão sequencial. A definição de speed-up é

Sp=

ts

tp

, (3.1)

onde ts é o do tempo de execução do algoritmo sequencial e tp o tempo de execução do algoritmo

paralelo. Note-se que um sistema paralelo ideal, constituído por np processadores idênticos, terá

Sp= np. Este sistema terá uma eficiência, ep, de 1 (= 100%), definida por

ep=

Sp

np

. (3.2)

A eficiência é então um parâmetro que indica o grau de aproveitamento dos recursos de proces- samento, representando a fracção de tempo despendido pelos processadores exclusivamente na execução do algoritmo paralelo. Na realidade, os processadores não consomem tempo unicamente na execução do algoritmo. Parte é despendida noutras tarefas como, por exemplo, na comunicação entre os processadores ou em componentes do algoritmo executadas em série. Assim, os sistemas reais apresentam tipicamente valores de speed-up inferiores a npe eficiências inferiores a 1.

Um dos factores que limita o speed-up é a fracção do algoritmo executada de modo sequencial num sistema paralelo. Considere-se um programa constituído por uma parte S correspondente a uma fracção f intrinsecamente sequencial, i.e. não-paralelizável, e uma parte P correspondente a uma fracção (1− f) susceptível de ser paralelizada. Verifica-se o tempo de execução em paralelo, em npprocessadores, pode ser calculado como

tp= f ts+

(1− f)ts

np

. (3.3)

Assim, se a execução da parte susceptível de ser paralelizada num computador com npprocessadores

decorrer de modo ideal (com Sp= np), de acordo com a lei de Amdahl [Amdahl 1967], o speed-up

total será Sp= 1 f +1−fn p . (3.4)

Conceitos Gerais

Conclui-se assim que o máximo valor do speed-up é 1/f , com np→ +∞. A lei de Amdahl (vd. Fig.

3.6) permite prever o desempenho da versão paralelizada de um dado algoritmo. Mostra ainda que é necessário reduzir os blocos sequenciais para se melhorar o seu desempenho em paralelo. Note-se ainda que a execução da parte paralelizável de uma aplicação paralela dificilmente ocorre de modo ideal pelo que o valor de speed-up obtido será inferior ao previsto na equação 3.4. O aumento do número de processadores na resolução de um determinado problema pode acarretar o aumento dos tempos de comunicação entre processadores e dos conflitos na partilha de recursos. A partir de um dado ponto, este factor origina inevitavelmente a degradação acentuada do speed-up observado [Pinho-da-Cruz 2007]. (1-f)ts (1-f)t /ns p tp ts fts 1P 5P

S

P

P

P

P

P

S

P

P

P

P

P

Figura 3.6: Ilustração esquemática da relação entre os tempos de execução sequencial e paralela, para a lei de Amdahl (caso particular de 5 processadores em paralelo).

Note-se que, no entanto, existem situações em que o speed-up pode ser superior ao número de processadores np(eficiência superior a 100%). Este speed-up é dito sobrelinear e depende normal-

mente da divisão do domínio do problema global em subdomínios locais. Em algumas situações, as dimensões de um problema podem forçar a utilização de memória virtual por parte dos processa- dores. A divisão de domínios por um número suficiente de processadores pode reduzir os recursos individuais a níveis em que a utilização de memória primária seja suficiente, aumentando significa- tivamente o desempenho individual e podendo originar desempenhos globais sobrelineares [Barbosa 2000].

É ainda útil considerar os conceitos de granularidade e escalabilidade. A granularidade ca- racteriza o grau de interacção de um determinado processo. Consiste no número de instruções executadas por cada operação de comunicação [Ibbett e Topham 1989, Stone 1993], considerando- -se a execução de um grão de actividade entre cada duas operações de comunicação consecutivas. Assim, um processo que comunica com muita frequência apresenta um granularidade fina, sendo constituído por grãos de poucas instruções. Processos com granularidade grossa, em contrapar- tida, comunicam com pouca frequência e têm grãos de actividade com muitas instruções [Martins 1999]. Por sua vez, a escalabilidade traduz a característica de alguns sistemas manterem a sua eficiência aumentando simultaneamente o número de processadores e o grão computacional, i.e. a dimensão do problema. Assim, um sistema paralelo escalável permite que se aumente o speed - -up em proporção directa com o número de processadores. A resolução de problemas de maior dimensão origina um maior grão computacional, diminuindo o peso da latência de comunicação no desempenho. O aumento do tempo de execução de instruções num grão de actividade dimi- nui a fracção de tempo consumido em comunicação, tendendo em diversos sistemas a aumentar a eficiência [Grama et al. 1993, Das 1997]. Este fenómeno consiste numa das premissas essenciais

Conceitos Gerais

de procedimentos de decomposição de domínio [Smith et al. 1996]. A decomposição de domínio consiste num conjunto de estratégias de resolução de equações diferenciais parciais (e.g. método de Schwarz [Schwarz 1870]) que visam a obtenção mais rápida de soluções. Estas técnicas recorrem à divisão do problema em partições alocadas a cada um dos processadores para obter a solução global do problema original a partir das soluções de cada um dos subdomínios [Vasconcelos 1998]. Assim, assumindo como exemplo a resolução de um sistema de equações associado a um problema genérico de elementos finitos, tanto a construção do sistema quanto a sua resolução podem ser efectuados de forma dividida pelos diferentes processadores [Kim e Im 2003]. Esta partição não é, para um dado processador, independente da actividade dos processadores vizinhos. Na realidade, é necessária a comunicação de informações relativas às fronteiras dos subdomínios, associada às mútuas influências das diferentes partições sobre o domínio global. Assim, a relação entre os tem- pos despendidos pelos processadores na execução de instruções num grão de actividade e numa comunicação pode ser vista como uma razão entre um volume e uma área de superfície. No caso do problema de elementos finitos, o volume de cada subdomínio é a porção da malha de elementos finitos associada a um processador e a superfície corresponde aos graus de liberdade partilhados com a malha de outros processadores. A partição de domínios actua directamente sobre estas relações, optimizando a razão entre o volume e a área superficial dos subdomínios no sentido de aumentar a dimensão (volume) do problema local e reduzir a importância relativa da latência de comunicação [Sterling et al. 1999]. A eficiência de um algoritmo de partição de domínios influencia directamente a eficiência global da computação paralela, quer pela dimensão quer pela forma e partilha das fronteiras dos subdomínios. Na aplicação do método dos elementos finitos significa que a malha deve ser distribuída de modo a que (i) o número de elementos seja igual nos vários processadores e (ii) o número de elementos adjacentes a fronteiras comuns seja mínimo. Assim, consegue-se uma divisão equitativa da componente de processamento entre os vários processadores e minimizam-se as comunicações associadas às fronteiras. Refira-se ainda que neste trabalho a decomposição de domínios é feita utilizando a livraria METIS [Karypis e Kumar 1998].

O facto de a eficiência variar com o grão computacional levou à generalização da lei de Am- dahl (vd. Eq. 3.4) para problemas de dimensão crescente por parte de Gustafson [Gustafson 1988]. Considerando um computador paralelo associado a um número máximo de processadores np, determinou o tempo de execução de um problema de maior dimensão possível de resolver nessa

configuração, ou seja, o maior problema para a memória associada a np processadores. Calculou

ainda, por extrapolação do valor obtido anteriormente, o tempo necessário para resolver o mesmo problema numa máquina com um processador apenas, assumindo que tivesse memória suficiente para o seu armazenamento. Através da relação entre os valores obtidos definiu o valor de speed-up escalado (scaled speed-up) [Gustafson 1988,Davies 1994,Pinho-da-Cruz 2007]. Assim, considerando tp como o tempo de execução em np processadores, uma fracção f de processamento sequencial

e uma fracção (1− f) de processamento paralelo, o tempo necessário para a execução do mesmo programa numa máquina com um único processador pode ser calculado como

ts= f tp+ np(1− f)tp. (3.5)

Com base na lei de Amdahl (Eq. 3.1) pode calcular-se o speed-up escalado como Se= f tp+ np(1− f)tp tp (3.6) ou, simplificando, Se= f + (1− f)np. (3.7)

Note-se que, ao contrário do speed-up traduzido pela lei de Amdahl, o speed-up escalado é ilimitado, crescendo proporcionalmente ao número de processadores. Esta consideração é limitada na prática pois as condicionantes e os conflitos da comunicação em rede e a partilha de recursos tendem a reduzir este valor. Note-se que a maior diferença entre as duas definições de speed-up apresentadas é uma questão de abordagem. Por um lado, o modelo de Amdahl parte de um problema de dimensão

Programação em Sistemas de Computação Paralela

definida no sentido da minimização do tempo de processamento, i.e. maximização de speed-up e eficiência. Este modelo toma como referência o tempo de processamento num único processador. Por outro lado, no caso do modelo de Gustafson, a quantidade de memória disponível é considerada como uma restrição inicial e abordam-se problemas com dimensões demasiado elevadas para serem resolvidos em sistemas com menos que um número mínimo de processadores. Neste caso, o grão computacional e os recursos máximos alocados a cada processador são factores preponderantes, tomando como referência o sistema paralelo necessário para resolver o problema. O tempo de execução numa máquina hipotética de um único processador é previsto a partir da referência de execução em paralelo.