Vous êtes sur la page 1sur 37

Programao Paralela

Normalmente arquiteturas MIMD com memria compartilhada ou distribuda so criadas para computar programas das mais diversas reas da cincia. Tais programas necessitam ser muito bem elaborados para explorar ao mximo os recursos de uma mquina paralela. Um algoritmo paralelo pode ser definido como um conjunto de processos (partes de um programa) que podem ser executados simultaneamente e tais processos podem se comunicar uns com os outros, a fim de resolver um determinado problema. J um algoritmo seqencial que executado passo a passo de forma serial ou seqencial como foi definido durante a sua programao

Um fato de extrema importncia na maioria dos sistemas paralelos, principalmente os que exploram o paralelismo explicito (no em nvel de instruo), que o sistema paralelo em si a combinao de um algoritmo paralelo e uma arquitetura paralela na qual o algoritmo implementado. Ou seja, para que um sistema paralelo atinja o seu objetivo principal, que a melhora de desempenho na resoluo de determinados problemas, necessrio alem de uma arquitetura fsica composta por vrios processadores um algoritmo que explore todo este potencial de arquitetura. Pois nada adianta ter os recursos necessrios para melhorar o desempenho se estes no forem devidamente utilizados. Entretanto a tarefa de construir algoritmos paralelos timos, que empreguem da melhor maneira possvel todos os subsdios oferecidos pela arquitetura paralela no nada fcil, e seja talvez uma das tarefas mais difceis na construo de um sistema paralelo.
2

Uma prtica constantemente utilizada por programadores a reutilizao de algoritmos, pois se um algoritmo realiza uma funo de forma eficiente, porque no utiliz-lo em outro programa que ir necessitar das funcionalidades deste algoritmo. Esta tcnica de reutilizao tambm normalmente empregada na computao paralela, entretanto, muitos pesquisadores consideram que a melhor forma de se obter o paralelismo ideal reconstruindo o algoritmo inteiro, modelando-o para a arquitetura na qual ele ser executado. Sobre este problema Patterson comentou:
O maior obstculo ao sucesso dos sistemas multiprocessadores no o custo dos processadores usados em sua arquitetura, nem os problemas na topologia para conexo de redes, muito menos a indisponibilidade de linguagens de programao adequadas a tais sistemas; mas a grande dificuldade o fato de que poucos programas de aplicao importantes tm sido reescritos para executar suas tarefas em sistemas multiprocessadores. (PATTERSON, 2000, p. 416).
3

Assim reutilizao de algoritmos no recomendvel nem para arquiteturas paralelas semelhantes, por exemplo, no se pode afirmar que um algoritmo projetado para ser executado em um computador contendo 8 processadores vai ser executado mais rapidamente em um sistema semelhante com 64 processadores, a menos que esse programa seja remodelado para esta arquitetura. Isso ocorre porque quanto maior a quantidade de processadores, maior ser o esforo computacional para sincronizar os processos, e maior ainda ser a utilizao da rede de interconexo que interliga os processadores. Por mais absurdo que possa parecer bem provvel que um programa especificamente projetado para ser executado em um computador com 8 processadores faa melhor uso desta arquitetura, do que de uma arquitetura com 64 processadores. Portanto, fcil concluir que o programador, neste caso, tem que ser um especialista em hardware e software para tentar fazer um bom uso dos recursos de cada mquina paralela.
4

Aplicaes Paralelas Os sistemas computacionais, em geral, so projetados com o propsito de agilizar a execuo de uma determinada tarefa. Entretanto algumas aplicaes, principalmente cientficas, requerem grande poder computacional. Algumas dessas aplicaes podem consumir muito tempo de processamento, e em casos extremos podem se tornar impraticveis devido ao longo tempo de computao. Uma tcnica que vem tendo muito destaque para melhorar o desempenho de tais aplicaes a explorao do paralelismo apresentado por essas aplicaes. Pois a maioria das aplicaes possui algum nvel de paralelismo, que pode ser explorado de maneira que o programa possa ter seu tempo de execuo reduzido.

Ento aplicaes paralelas fazem uso de mltiplos processadores para resolver um determinado problema, e isso possvel atravs da execuo simultnea de diversos passos que compem o problema e podem ser executados de forma simultnea. Isso permite que uma aplicao paralela faa uso de vrios processadores, o que no ocorre em programas seqenciais, que essencialmente executam conjuntos bsicos de passos a serem executados de forma seqencial, sem nenhum nvel de paralelismo. Mesmo com o possvel benefcio de reduo do tempo de execuo da aplicao, o uso do paralelismo requer alguns cuidados que no so necessrios em aplicaes seqncias. Por exemplo, a aplicao paralela apesar de possuir uma semntica parecida com a aplicao seqencial deve tratar de aspectos inerentes s suas caractersticas paralelas tais como: definir quais processos podem ser executados de forma paralela e gerenciar de forma eficiente a sincronizao e comunicao entre tais processos.
6

A construo de um algoritmo paralelo segue basicamente os seguintes passos: Identificar pontos do programa que podem ser executadas de forma paralela;

Distribuir as entradas e sadas de dados pertinentes aplicao, bem como os dados intermedirios gerados durante a execuo das tarefas e que esto associados ao programa;

Gerenciar da melhor forma possvel o acesso aos dados compartilhados pelos processadores, para execuo de um dado problema. Diminuindo a comunicao entre processos;

Sincronizar eficientemente os processadores nos mais diversos estgios de execuo que um programa paralelo possa vir a possuir, de forma que os processadores no fiquem com uma carga de trabalho muito elevada ou muito baixa.

Para a construo de aplicaes paralelas podem ser utilizados basicamente trs tipos de ferramentas de programao : Compiladores: Fazem a paralelizao de forma automtica. Neste tipo de ferramenta o programa normalmente construdo de forma seqencial. Ficando a cargo do prprio compilador explorar o paralelismo da aplicao. Normalmente consegue-se um ganho de desempenho pequeno se comparado explorao explicita do paralelismo, mas a construo do aplicativo exige o mnimo esforo do programador, j que este ira programar normalmente (de forma seqencial), sem se preocupar em descobrir qual trecho de cdigo deve ser paralelizado e como isso ser realizado.

Extenses de paralelizao: So normalmente bibliotecas que possuem primitivas de comunicaes, que facilitam o gerenciamento dos processos existentes em aplicaes paralelas. Essas bibliotecas podem ser utilizadas a partir de linguagens de programao normalmente seqenciais (C++, Fortran, Pascal, etc).

Linguagens de Programao Paralelas: Especialmente projetadas para serem usadas em ambientes paralelos, tais linguagens possibilitam a construo de aplicaes bem estruturadas e possuem rotinas de gerenciamento de processos paralelos muito eficientes, dinamizando desta forma a comunicao, sincronizao e gerenciamento da aplicao paralela.

obvio que todas as ferramentas apresentadas possuem algumas vantagens e desvantagens. O compilador paralelo facilita a programao e agiliza o desenvolvimento da aplicao, mas normalmente no consegue fazer o uso ideal dos recursos fornecidos por cada arquitetura paralela. Por sua vez as linguagens de programao paralelas conseguem um timo desempenho em arquiteturas paralelas, entretanto esse tipo de prtica exige que o programador aprenda uma nova linguagem de programao, o que pode levar um tempo considervel e consumir um tempo precioso na construo da aplicao paralela. Desta forma a ferramenta que atualmente merece maior ateno so as extenses paralelas, que podem ser usadas pelo programador em uma linguagem de programao j conhecida por ele, ficando a cargo dele apenas aprender como usar de forma eficiente as rotinas que possibilitam a programao paralela. Alm de que esse tipo de ferramenta permite uma melhor adaptao de cdigos seqenciais para cdigos paralelos, e finalmente consegue explorar de forma eficiente todos os recursos de uma arquitetura paralela.
10

No que se refere a programao paralela alguns aspectos devem ser tratados: Tarefas Para que um programa obtenha um bom desempenho em uma arquitetura paralela, ou melhor, em varias arquiteturas necessrio decomp-lo em um conjunto de tarefas (tambm conhecido como processos), que so unidades de programas bem definidas que fazem parte da aplicao principal. A execuo simultnea de mltiplas tarefas para resolver um dado problema pode reduzir o tempo de execuo. As tarefas podem ser executadas todas juntas ou em qualquer seqncia. Tarefas tambm podem apresentar dependncia, e desta forma necessitam esperar que outras tarefas sejam executadas para terminar sua prpria tarefa.
11

Decomposio/Particionamento A decomposio de problemas em tarefas envolve o particionamento da aplicao. O Particionamento definido como um conjunto especifico de tarefas que ir resolver um dado problema em um computador paralelo da maneira mais eficiente possvel. Existem dois mtodos para se particionar tarefas: Particionamento Esttico: Neste mtodo as tarefas so particionadas durante a programao e no em tempo de execuo, desta forma cada processador recebe sua carga de trabalho antes de iniciar a computao. Particionamento Dinmico: Neste mtodo o particionamento feito durante a execuo do programa.

12

Escalonamento Uma vez que o programa foi dividido em processos, cada processo pode ser executado em um processador diferente. A esse mapeamento entre processos e processadores d se o nome de escalonamento, o qual tem por objetivo o aumento da utilizao de recursos computacionais fornecidos pela arquitetura paralela. O escalonamento comumente observado em Sistemas Operacionais, porem este conhecido como escalonamento local, e refere-se ao problema de atribuio das fatias de tempo (time-slices) de um processador aos processos. O escalonamento citado aqui faz referncia a um escalonamento global aplicvel geralmente em Sistemas Distribudos ou Paralelos. O escalonamento da mesma forma que o particionamento, tambm pode ser esttico ou dinmico
13

14

Escalonamento Sendo que no esttico os processos e a ordem em que eles sero executados so conhecidos antes da execuo do programa, para se realizar um bom escalonamento esttico necessrio conhecer o tempo de execuo de cada tarefa bem como o tempo que cada unidade de processamento e seus recursos levaram para executar tal tarefa o que no nada fcil, outra dificuldade neste modelo, que se uma unidade de processamento parar de funcionar, o programa ira ser abortado, j que no h como fazer o reescalonamento das tarefas, pois esse esttico. No dinmico os processos so atribudos aos seus processadores durante a execuo. Neste ambiente no se faz necessrio conhecer totalmente o ambiente no qual o programa paralelo ira ser executado, j que normalmente o programa ira se adaptar e moldar a arquitetura paralela, o que oferece uma melhor utilizao dos processadores disponveis, incrementando desta forma a flexibilidade quanto ao aproveitamento do nmero de processadores que compem a arquitetura. Se o problema se adapta a qualquer nmero de processadores (1-n) ento o algoritmo chamado de escalvel. 14

Granularidade O nmero e o tamanho das tarefas decompostas em uma dada aplicao determinam a granularidade do problema. Desta forma, granularidade refere-se ao tamanho de uma tarefa em um processador e a performance de um algoritmo paralelo depende da granularidade do programa. Se um programa for dividido em um pequeno nmero de grandes tarefas (chamada de granularidade-grossa) a tendncia que esse algoritmo seja mais adequado para arquiteturas com um nmero pequeno de processadores e desta forma se torne uma aplicao com um nvel de paralelizao muito baixo. J se um programa for dividido em um grande nmero de pequenas tarefas (granularidade-fina), o programa ter um nvel de paralelizao maior, entretanto bem provvel que neste caso o programa faa maior uso da rede interconexo, podendo desta forma perder desempenho devido ao alto grau de comunicao requerido entre as tarefas. O programador de aplicaes paralelas deve balancear a granularidade da aplicao tentando manter um alto coeficiente de paralelizao e da mesma forma tentando reduzir 15 a necessidade de comunicao entre as tarefas.

Tamanho do Problema Outro aspecto que deve ser observado a relao entre o nmero de processadores e o tamanho do problema. O programador deve estar atento a esse fator. Na verdade o tamanho do problema j foi um dos maiores empecilhos enfrentados por sistemas computacionais, j que em 1967 Amdahls definiu que em um dado problema de tamanho fixo, o paralelismo no teria grandes ganhos de desempenho, pois logo atingiria o pico de ganho de desempenho e no continuaria a aumentar o desempenho conforme fosse crescendo o nmero de processadores. A esta afirmao se deu o nome de lei de Amdahls, tal lei causou certo marasmo dentre as pesquisas de sistemas paralelos, at que em 1988 Gustafson, observou que Amdahls assume que o nmero de processador independente do tamanho do problema, o que normalmente nunca o caso. Na prtica o tamanho do problema e escalar ao nmero de processadores. Quando dado mais poder computacional, o problema geralmente se expande para fazer uso das facilidades da arquitetura tal descoberta permitiu que os 16 estudos sobre sistemas paralelos tomassem novos rumos.

Modelos de algoritmos paralelos Alm de escolher alguma ferramenta de programao, necessrio ter-se em mente como o algoritmo ser paralelizado, principalmente se o desenvolvedor do aplicativo escolher uma ferramenta na qual necessite paralelizar a aplicao de forma direta como ferramentas de extenso e linguagens paralelas. Modelos de algoritmos paralelos so formas de estruturar algoritmos paralelos atravs de tcnicas de decomposio, mapeamento e estratgias de minimizao das interaes entre as tarefas.

17

Data Parallelism
Explora os dados a serem processados pelo programa paralelo. Cada tarefa executa operaes semelhantes sobre dados diferentes. Este modelo emprega balanceamento de carga de trabalho esttico o que normalmente garante um bom balanceamento de carga. O paralelismo de dados apresenta timos resultados, pois geralmente no requer muita comunicao o que diminui o overhead e o tempo gasto com a comunicao, portanto este modelo apresenta ganhos de desempenho exponenciais (quanto mais processadores melhor), e quanto maior a entrada de dados melhor seu desempenho. Um exemplo desta prtica um algoritmo de multiplicao de matrizes no qual as colunas e as linhas das matrizes a serem multiplicadas so distribudas entre os diversos processadores que compem a arquitetura paralela, e cada processador executa o mesmo cdigo para multiplicar essas linhas e colunas, completando desta forma a aplicao. >>>>> prova de 28/04/2006 at aqui!!!

18

Task Graph
Neste modelo o inter-relacionamento entre as tarefas do problema utilizado para agrupar os dados relacionados. Procurando-se deixar os dados que se inter-relacionam sempre onde possam ser acessados de forma mais rpida (por exemplo, na memria local), facilitando a comunicao ou pelo menos reduzindo o custo da comunicao entre os processos. O modelo Task Graph utilizado para resolver problemas nos quais vrios dados esto associados e as tarefas necessitam interagir entre elas, fazendo uso desses dados. Este tipo de modelo mais facilmente implementado em arquiteturas de memria compartilhada, mas pode ser implementado em arquiteturas de memria distribuda tambm. Desta forma um programa paralelo pode ser representado por um grafo de tarefas (task graph) nos quais os ns representam mdulos e arestas indicam a necessidade de comunicao entre esses ns. Um exemplo de aplicao que utiliza este modelo o mtodo de ordenao quicksort.
19

Work Pool
Tambm conhecido como Task Pool, caracterizado por um mapeamento dinmico entre tarefas e processadores visando desta forma um alto grau de balanceamento de carga entre os processadores. Tal mapeamento pode ser centralizado ou descentralizado. As tarefas podem ser armazenadas em listas de prioridade, tabelas hash, ou em rvores. As tarefas podem ser estticas ou dinmicas, desta forma um processo pode gerar uma tarefa e coloc-la numa lista global (work pool) para ser executada. Em arquiteturas de passagem de mensagem esse modelo normalmente usado quando a quantia de dados associados tarefa relativamente pequena se comparada com a computao associada com as tarefas. O mesmo exemplo da multiplicao de matriz pode ser utilizado aqui, mas neste caso os processadores iro buscar as tarefas a serem executadas (as linhas e colunas) em uma lista.
20

Processor Farm Neste modelo existe um processador principal (tambm chamado de mestre) que responsvel por gerenciar um grupo de processadores (chamados de escravos), no qual cada escravo processa assincronamente tarefas submetidas pelo mestre. O mestre gerencia o trabalho dos escravos e faz o balanceamento de carga. Este modelo muito utilizado tanto por arquiteturas de memria compartilhada quanto por memria distribuda, entretanto necessrio ter-se cuidado para que o processador mestre no se torne um gargalo neste modelo. Utilizando a mesma aplicao de multiplicao de matrizes, neste mtodo um processador ficar responsvel por distribuir as colunas e linhas a serem multiplicadas.

21

Pipeline ou Produtor-Consumidor
Este modelo segue o modelo de pipeline empregado pelos processadores, ou seja, um fluxo de dados passado atravs de uma sucesso estgios. Cada estgio executa uma tarefa diferente sobre este fluxo de dados. Essa execuo simultnea de diferentes tarefas sobre um fluxo de dados tambm chamado de stream parallelism. Cada processo no pipeline pode ser visto como o consumidor de uma seqncia de dados do processo que o precede e um produtor de dados para o processo seguinte do pipeline, da o nome ProdutorConsumidor. Utilizando mais uma vez o exemplo da multiplicao de matriz, neste mtodo cada estgio seria responsvel por uma operao, sendo, o primeiro estgio responsvel pela entrada de dados, o segundo pela multiplicao, o seguinte pela soma e o ltimo pela sada, terminando desta forma todos os estgios do pipeline necessrios por essa aplicao.

22

Em alguns casos mais de um modelo de programao paralela pode ser aplicado para a resoluo de um problema. Um modelo hbrido pode ser construdo aplicando vrios modelos de forma hierrquica ou aplicando-se mltiplos modelos de forma seqencial para diferentes fases do algoritmo. Ainda no que se refere a modelos de programao existem mais dois modelos que podem ser considerados como modelos bsicos para os discutidos anteriormente: Sncrona e Asincrona. - Na estrutura sncrona (Partitioning Algorithms) dois ou mais processos esto ligados por um ponto comum de execuo usado com propsitos de sincronizao. Um processo ir atingir um ponto no qual ter de esperar por outros (um ou mais) processos. Aps os processos terem alcanado o ponto de sincronizao, eles podem continuar a execuo do programa at o prximo ponto de sincronizao. - A estrutura assncrona permite que os processos pertencentes ao algoritmo trabalhem com o dado mais recente fornecido pela execuo de outros processos (um ou mais). Quando um processo termina um estgio este atualiza as informaes necessrias e inicia o prximo estgio.
23

Em comparao com algoritmos sncronos, os assncronos requerem menos acesso memria compartilhada, o que reduz a disputa por memria. Em geral, algoritmos assncronos so mais eficientes devido aos processos nunca esperam outro processo. Isso normalmente diminui o tempo de execuo o resultado dos processos que so executados mais rapidamente pode ser usado para eliminar processos mais lentos; menos competio por memria. Entretanto algoritmos assncronos so difceis de programar. Sua anlise mais complexa que a de um algoritmo sncrono. Sendo ainda s vezes at mesmo impossvel de resolver um dado problema de maneira assncrona.

24

AVALIAO DE DESEMPENHO Quando um sistema paralelo utiliza dois processadores, logo se cria a expectativa de que qualquer programa executado nesta mquina ser processado duas vezes mais rpido do que numa mquina monoprocessada. Porm, isso no verdade. Para que a execuo paralela atinja o mximo de desempenho, o cdigo do programa originalmente desenvolvido de forma seqencial deve, de alguma maneira, ser 100% paralelizado. A lei de Amdahl sugere que muito difcil alcanar uma performance de pico esperada para as arquiteturas paralelas mas, ainda que no se consiga paralelizar totalmente um algoritmo e alcanar sempre a performance ideal em sistemas paralelos, possvel atingir ganhos de desempenhos considerveis paralelizando os ncleos de programas (parte principal do programa na qual se concentra a maior parte do esforo computacional) de forma que o programa paralelo obtenha ganhos de desempenho considerveis.
25

AVALIAO DE DESEMPENHO Uma questo muito importante a ser abordada por qualquer pesquisador de sistemas paralelos, o de como verificar e explorar o ganho de performance em um sistema paralelo, j que a performance em sistemas paralelos o resultado de interaes complexas entre recursos de hardware e software. Envolvendo caractersticas de aplicaes, tal como, estrutura do algoritmo, parmetros de entrada, tamanho do problema e fsicas, como, nmero de processador, taxas de transferncia da rede de interconexo, etc. Todos esses aspectos determinam como a aplicao explora os recursos disponveis em arquiteturas paralelas e consequentemente como influenciam na performance.

26

AVALIAO DE DESEMPENHO Uma boa maneira de se conseguir uma tima interao entre hardware e software e atingir um bom desempenho usando sistemas paralelos analisando o comportamento de cada atributo da arquitetura frente a um conjunto de algoritmos (tais algoritmos so denominados Benchmarks) que teste tal arquitetura da maneira mais completa possvel. Desta forma faz-se necessrias ferramentas para analisar de forma concisa como um algoritmo faz uso da arquitetura paralela. Softwares de analise e mtricas de performance so divididos em estticos e dinmicos. Medidas estticas incluem: nmero de ns, grau de sincronizao, tamanho do caminho a ser percorrido, caminho mximo que um n de entrada tem de fazer a um n de sada, tamanho do problema, etc. Mtricas dinmicas so: tempo de computao total entre os processadores, tempo de comunicao, tempo de execuo, volume de comunicao, volume de entrada/sada, entre outros.
27

Medidas em computao paralela faz referncia execuo de uma aplicao paralela com P processadores, onde K diferentes atividades e N regies de cdigos podem estar sendo monitoradas. Esses parmetros podem ser medidos analisando diferentes parmetros, por exemplo, medir atividades de computao, comunicao, aceso a memria, I/O (Input/Output entrada/sada) ou regies do cdigo como loops, rotinas, etc. Vrios parmetros podem ser medidos em arquiteturas paralelas:
Parmetros de tempo; Parmetros quantitativos como: Nmero de operaes de entrada e sada (I/O); Nmero de bytes lidos e escritos (read/written); Nmero de acessos memria; Nmero de perdas de cache (cache misses); Nmero de bytes enviados e recebidos (sent/received);

Ento as propriedades de mtricas de sistemas paralelos devem ser extensamente estudadas, pois elas influenciam diretamente no desempenho de uma aplicao

28

O tamanho do problema j foi um dos maiores empecilhos enfrentados por sistemas computacionais, j que em 1967 Amdahls definiu que em um dado problema de tamanho fixo, o paralelismo no teria grandes ganhos de desempenho, pois logo atingiria o pico de ganho de desempenho e no continuaria a aumentar o desempenho conforme fosse crescendo o nmero de processadores. A esta afirmao se deu o nome de lei de Amdahls, tal lei causou certo marasmo dentre as pesquisas de sistemas paralelos, at que em 1988 Gustafson, observou que Amdahls assume que o nmero de processador independente do tamanho do problema, o que normalmente nunca o caso. Na prtica o tamanho do problema e escalar ao nmero de processadores. Quando dado mais poder computacional, o problema geralmente se expande para fazer uso das facilidades da arquitetura, tal descoberta permitiu que os estudos sobre sistemas paralelos tomassem novos rumos.

29

Elapsed Time Existem diversas medidas para a caracterizao de performance de um sistema paralelo, mas as que mais se destacam so: tempo de execuo, speedup e eficincia. Historicamente o tempo de execuo ou o tempo decorrido (elapsed time) uma das mtricas mais populares para verificar a performance em um dado sistema. O tempo de execuo serial o tempo decorrido do inicio da execuo do programa at o seu termino em um computador seqencial. J o tempo de execuo paralelo o tempo decorrente do momento em que o programa inicialmente executado na arquitetura paralela at o momento que o ultimo processador empregado para a resoluo do problema termina a execuo.

30

Speedup Em conjunto com o tempo decorrido existe uma mtrica denominada speedup (acelerao ou ganho de desempenho) que extremamente utilizada em bibliografias sobre arquitetura paralela. O speedup o produto do tempo decorrido de uma arquitetura pela outra, um bom motivo para se utilizar o speedup que ele combina todos os efeitos tpicos da computao paralela e apresenta resultados grficos Existem duas modalidades bem definidas para se medir o speedup, que so: Speedup absoluto; Speedup Relativo.

31

Speedup O speedup absoluto definido como o tempo decorrido na execuo seqencial do melhor algoritmo dividido pelo tempo de execuo decorrente no algoritmo paralelo. J speedup relativo definido como o tempo decorrente de um algoritmo paralelo em um processador e o tempo decorrente do mesmo algoritmo paralelo em N processadores. A razo para se usar speedup relativo que a performance de algoritmos paralelos varia de acordo com o nmero de processadores disponveis em uma arquitetura e comparando o mesmo algoritmo com vrios nmeros de processadores possvel verificar de forma mais sincera a degradao do uso do paralelismo, do que se usando o speedup absoluto que faz a comparao com um algoritmo serial, o que pode no ser to imparcial.

32

Speedup Existem vrios parmetros que podem ser expressos atravs do speedup, os mais significantes so o speedup de tamanho de problema fixo (fixed-size speedup) que foi descrito por Amdahls, e o speedup de tempo fixo (fixed-time speedup), descrito por Gustafsons que o mais usado atualmente.

Tam an h o d o Prob lem a

W1

W1

W1

W1

Tem p o d e Execu o

TW1

TW1 TW1 WN WN WN WN TW1 TWN WTN WTN WTN 1 2 3 4 1 2 3 4

N m ero p r ocess ad or es

N m ero p r oces s ad or es

Am d ah ls - fixed - siz e speed u p


W1 W1

Tam an h o d o Prob lem a W1 W1 WN WN

Tem p o d e Execu o

TW1 TW1 WT1 WT1 WN WN WTN TWN WTN WTN

N m ero p r ocess ad or es

N m ero p r ocess ad or es

33

Gu s t afs on - fixed - tim e speed u p

Speedup Na pratica pode-se definir a acelerao (speedup) ou ganho que sofre cada arquitetura, medindo-se o tempo de execuo na arquitetura seqencial dividido pelo tempo consumido pela execuo na arquitetura paralela, para executar o mesmo problema, isso para o speedup absoluto. No caso do speedup relativo s colocar no lugar do tempo de execuo do programa seqencial o tempo do algoritmo paralelo executado com apenas um processador.

Acelerao=

Tem poExecu Seqencial o Tem poExecu Paralelo o

SPEEDUP Absoluto

Tem poExecu oParalel 1 o Acelerao= Tem poExecu oParalel N o


SPEEDUP Relativo

34

Eficincia Outra medida que pode ser empregada no estudo de arquiteturas paralelas e derivada do speedup a eficincia. Eficincia uma medida da frao de tempo para o qual um processador realmente usado. Em sistemas paralelos ideais o speedup igual ao nmero de processadores e a eficincia igual a um. Na pratica o speedup menor que o nmero de processadores e a eficincia fica entre zero e um. A analise de eficincia permite determinar a melhor combinao de algoritmo e arquitetura para um problema. A eficincia relata o tamanho do problema e o nmero de processadores requeridos para manter o sistema eficiente, e isso ira ajudar a determinar a escalabilidade do sistema, sua velocidade e largura de banda da rede de comunicao. Existe um referencia direta entre o nmero de processadores, tamanho do problema e a eficincia, de forma que se for aumentado o nmero de processadores a eficincia ser reduzida, e aumentando o tamanho do problema aumentada eficincia, desta forma se for aumentado ambos a eficincia ser constante.
35

Eficincia Uma pergunta natural ento : qual o limite para se aumentar o nmero de processadores proporcionalmente ao tamanho do problema? Isso depende da arquitetura, mas se o tamanho do problema constante enquanto o nmero de processadores aumenta a eficincia apresenta quedas, por causa do acrscimo de overhead (controle de comunicao entre os processadores) causado pelo nmero de processadores. J se o tamanho do problema aumenta enquanto o nmero de processadores constante ento a eficincia aumenta (no caso sistemas paralelos escalares) devido ao baixo overhead insignificante perto da computao do problema. Desta forma pode-se manter a eficincia desde que se aumente de forma proporcional o tamanho do problema. claro que muito difcil encontrar a relao exata entre o tamanho do problema ideal para cada arquitetura, j que o problema pode estar associado a inmeros aspectos de hardware e software.
36

Eficincia A eficincia considerada um mtodo analtico que investiga a escalabilidade dos algoritmos. Tal mtrica obtida pela formula E = S/p, sendo S o speedup e p o nmero de processadores. Portanto o nmero processadores deve se escolhido de forma a maximizar a eficincia e o speedup da arquitetura. Cada algoritmo paralelo tem um inerente aumento de concorrncia entre os processadores que determina o nmero mximo de processadores que podem ser simultaneamente usado durante a resoluo de um dado tamanho do problema.

37