Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelos.pdfDefinindo melhor alguns conceitos...

Post on 06-Jun-2020

17 views 0 download

Transcript of Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelos.pdfDefinindo melhor alguns conceitos...

Definindo melhor alguns conceitos

  Processamento Paralelo: processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema.

  Processamento Distribuído: processamento de informações em um sistema cujos recursos estão sendo compartilhados por vários programas

  Computador Paralelo: computador de múltiplos processadores capaz de realizar processamento paralelo

  Supercomputador: computador de propósito geral capaz de resolver problemas em alta velocidade, comparando com outras máquinas da mesma época.

  A vazão de um dispositivo é o número de resultados produzidos por unidade de tempo. (throughtput)

  Speedup (aceleração): razão entre o tempo de execução necessário para o algoritmo seqüencial mais eficiente e o tempo necessário para se realizar a mesma computação numa máquina paralela

  Existem diversas definições de speedup: –  speedup absoluto(n)= T(melhor alg. seq. )/ T( prog // c/ n proc.) –  speedup aproximado(n)= T(prog.// c/1 proc.)/T( prog // c/ n proc.) –  speedup relativo (n)= T(prog. // c/(n-1) proc.)/T(prog.// c/ n proc.)

Terminologia

Computação concorrente

  Duas formas de se explorar a concorrência em computação em computação –  Paralelismo de controle e de dados

tempo t

7 + 3 string ==“casa”? 32 * 14 7 + 3 10 + 200 33 + 329

Paralelismo de Controle

  aplicando-se operações diferentes a diferentes dados simultaneamente. –  fluxo de dados entre processos pode ser arbitrariamente complexo

  Exemplo:

–  Pipelining: cada estágio trabalha em velocidade plena sobre uma parte particular da computação. A saída de um estágio é a entrada do estágio seguinte

Paralelismo de Controle

tempo

info 1

E4 E1 E2 E3

info 2 info 1

info 3 info 1 info 2

info 3 info 4 info 1 info 2

Paralelismo de Dados

  uso de vários processadores para executar a mesma operação ao mesmo tempo sobre elementos distintos de dados

  Um aumento de k vezes no número de unidades funcionais levaria a um aumento de k vezes a vazão do sistema

7 + 3 10 + 200 33 + 329

Aplicações

  Aplicações ou programas podem ser executados mais rapidamente, considerando duas formas de paralelismo

–  tratar o programa seqüencial como uma série de tarefas –  cada tarefa = uma instrução ou blocos de instruções

OU

–  especificar um programa paralelo, que resolve o problema através da especificação de tarefas ou processos concorrentes

Exploração de paralelismo

  Particionamento –  identificar em um programa, as tarefas que possam ser executadas em

paralelo (simultaneamente em mais de um processador)

•  caso extremo: cada linha do programa correspondendo a uma tarefa

um bom desempenho só é alcançado se um número máximo de comandos são executados simultaneamente

  É preciso considerar dependências de dados

problema: se quase todos os comandos são dependentes

Exemplo: programa seqüencial ! paralelismo de instruções

program nothing(){ input (A,B,C); if A>B then {

C=A-B; output (C); } else {

C = B-A; output (A,B,C) } A=0; B=1; for i=1 to 3 { input(C); A=A+C; B=B*C; } output (A,B,C);

}

Exemplo

Tarefa T1

input (A,B,C);

if A>B then{

C=A-B; output (C);

}else{

C = B-A; output (A,B,C)

}

Tarefa T3 B=1;

Tarefa T4 for i=1 to 3 { input(C); A=A+C; B=B*C; } output (A,B,C)

Tarefa T2 A = 0;

Exemplo

T1 T3 T2

T4 16

1 1

4

Exemplo: Soma n números

Problema: somar n números quaisquer

Programa seqüencial:

read (n, vetor);

soma = 0;

for (i = 0; i < n; i++)

soma = soma + vetor[i];

Como paralelizar o problema?

Modelando soma paralela de n números

+

+ + + + + + + +

+ + + +

+ +

1a.14

Speedup Factor

where ts is execution time on a single processor and tp is execution time on a multiprocessor.

S(p) gives increase in speed by using multiprocessor.

Typically use best sequential algorithm with single processor system. Underlying algorithm for parallel implementation might be (and is usually) different.

S(p) = Execution time using one processor (best sequential algorithm)

Execution time using a multiprocessor with p processors

ts

tp =

1a.15

Speedup factor can also be cast in terms of computational steps:

S(p) = Number of computational steps using one processor

Number of parallel computational steps with p processors

Speedup Factor

1a.16

Maximum Speedup speedup máximo usualmente p com p processadores (linear speedup).

Suponha que o melhor algoritmo sequencial tenha tempo Ts Se S(p) = Ts ⁄ Tp > p

então podemos usar o algoritmo paralelo em um processador e seu tempo seria p × Tp

Se S(p) < P pois o algoritmo sequencial tem tempo menor que p × Tp,

1a.17

Superlinear Speedup

superlinear speedup: maior que p Possível, devido a razões como:

–  tem mais memória em sistemas multiprocessados –  algoritmos não determinísticos

1a.18

Maximum Speedup - Amdahl’s law

Serial section Parallelizable sections (a) One processor

(b) Multiple processors

ft s (1 - f ) t s

t s

(1 - f ) t s / p t p

p processors

The speedup using multiple processors is limited by the time needed for the sequential fraction of the program

1a.19

Let •  f = proportion of a program that can be totally

parallelized –  (1 − f) is the proportion that remains serial

•  Then the maximum speedup that can be achieved by using P processors is

•  Amdahl used this argument to support the design of ultra-high speed single processor systems in the 1960s. (reflete monoprocessadores)

1 (1-f)+ f/P

Amdahl’s law

Sp (P) =

Gustafson’s law

!  Gustafon’s Law - 1988 Tipicamente, o grande interesse não é executar um problema no menor período de tempo (o que advoga Amdahl), mas resolver problema de grandes dimensões em um tempo razoável

!  A parte não paralelizável não deve ser fixa, mas um percentual de acordo com a dimensão do problema. Se essa parte paralelizável cresce pouco com o aumento da instância, é possível escalar o speedup com o aumento de processadores.

1a.20

Gustafson’s law

f ’ = fraction computed sequentially 1 – f ’ = parallel fraction

Gustafson’s so-called scaled speedup fraction

1a.21

S’(p) = p + (1 – p) f ’

Para pensar/pesquisar

•  Dê exemplo e discuta as reais diferenças entre

Amdahl’s e Gustafson’s Law

•  O que cada uma quer realmente representar?

Terminologias

•  Um algoritmo é escalável se o nível de paralelismo aumenta no mínimo linearmente com o tamanho do problema.

•  Uma arquitetura é dita escalável se continua a alcançar o mesmo desempenho por processador, mesmo para problemas maiores, com o aumento de processadores.

–  Se aplicável, o usuário pode resolver problemas maiores no mesmo intervalo de tempo através da compra de uma máquina paralela com maiores dimensões

  Algoritmos paralelos-de-dados são mais escaláveis do que algoritmos com paralelismo de controle –  o nível de paralelismo de controle é geralmente constante, independente do

tamanho do problema, enquanto o nível do paralelismo de dados é uma função crescente do tamanho do problema

Convergência entre Computação Paralela & Distribuída

•  Existia uma grande dificuldade de manter máquinas paralelas a frente aos projetos de chip-único –  Computadores paralelos se tornaram mais difíceis de se construir e se usar do

que se esperava.

  Motivo desta dificuldade: software

⇓Paralelizar e gerenciar algoritmos paralelos não é uma tarefa fácil

Programação Paralela

•  No início dos anos 90: processamento paralelo foi retomado.

•  O problema de programação paralela seria bem mais difícil de atacar do que se imaginava.

•  Pesquisa na área de programação em paralelo tem sido um tópico importante.

Mas ao mesmo tempo....

Internet

•  Enquanto muitos estudavam processamento paralelo associado processadores ligados internamente em uma máquina, um outro grupo se concentrava em paralelismo externo através de redes de computadores

•  a internet possibilitou a especificação de um tipo de paralelismo através de uma conexões entre processadores

Sistema Paralelo e Distribuído

  processamento distribuído renasceu como uma forma de paralelismo mais lenta

  computação distribuída e paralela são dois extremos num espectro de computação concorrente

  Sistema paralelo e distribuído é uma coleção de componentes de hardware e software que otimizam o desempenho por problema, vazão de múltiplos problemas e confiabilidade, ou uma combinação destes

Sistema Paralelo e Distribuído

•  Problemas: a aglomeração de muitos processadores através de canais de comunicação: o desempenho pode cair muito.

•  Para alcançar o máximo dos sistemas paralelos e distribuídos: projetistas e desenvolvedores de software precisam compreender a interação entre hardware e software

Sistema Paralelo e Distribuído

  computação distribuída é mais abrangente e universal do que computação paralela

  Paralelismo - forma restrita de computação distribuída

  sistema paralelo : voltado à solução de um problema único no menor tempo possível (otimização)

  Computação distribuída é mais geral e reúne outras formas de otimização...

Paralelismo é interessante ?

Na natureza, os eventos ocorrem em paralelo

  programação seqüencial ordena eventos paralelos   essa ordenação dificulta a trabalho do compilador   mas, maior desempenho com o uso de paralelismo

–  no entanto, não é trivial atingir alto desempenho em computadores paralelos

  aplicações como os Grandes Desafios são limitados computacionalmente

Investindo em paralelismo

Dificuldades encontradas

  pensar em paralelo é difícil

  conhecimento em paralelismo é recente

  pouco conhecimento sobre representações abstratas de computações paralelas

Investindo em paralelismo

Em relação a características da máquina

  Relação entre a velocidade do processador –  Elementos de processamento heterogêneos

  Desempenho da interconexão de comunicação –  Latência de comunicação –  Congestionamento –  Topologia da rede

  Hierarquia de memória

  Tendência hoje:

–  memória compartilhada distribuída

–  superprocessadores distribuídos

Quais características importantes das aplicações ?

  Processos/tarefas

  existe comunicação entre essas tarefas –  pode ser vantajoso executar várias tarefas em um só processador –  a tarefa perde o processador quando precisa de um dado a ser

comunicado

  paralelismo virtual X real –  Por exemplo: existem 100 processadores disponíveis –  cada processador pode estar executando vários processos: virtualmente

existem um total de 300 processos

Quais características importantes das aplicações ?

  difícil definir processos/tarefas totalmente independentes –  comunicação entre processos pode gerar um tráfego de mensagens

pesado

  comunicação entre processos: –  troca de mensagens: considera a topologia da rede de interconexão –  memória compartilhada: utilização de semáforos para proteção de

regiões críticas –  direct remote-memory access: existência de processadores dedicados à

comunicação

Modelos de Computação Paralela

  interface - uma máquina abstrata

  a abstração se faz necessária para facilitar a programação sem se preocupar com detalhes da máquina –  um modelo deve ser estável para ser um padrão

  um modelo contém os aspectos importantes tanto para os projetistas de software quanto para os da máquina

  as decisões de implementações são feitas para cada máquina destino, não havendo necessidade de se refazer programas

Aspectos Explorados pelo Modelo

Independência da arquitetura

Fácil entendimento

Aspectos Explorados pelo Modelo

Facilidade de programação

  O programador não deve se preocupar com detalhes da máquina destino –  modelos abstratos: programação mais fácil

  O compilador é que deve traduzir para uma estrutura do programa em execução considerando o sistema computacional destino –  tarefa do compilador: mais árdua

nível de abstração

nível de máquina

Exercício

Capitulo I do Livro disponibilizado por Ian Foster – um resumo Exercícios – 1, 2 e 3