1 / 106

Definindo 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.

glen
Télécharger la présentation

Definindo melhor alguns conceitos

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Definindo melhor alguns conceitos • Processamento Paralelo: processamento de informação concorrente que pertencem a um ou maisprocessos 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.

  2. Terminologia • 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.)

  3. 32 * 14 7 + 3 string ==“casa”? 10 + 200 33 + 329 7 + 3 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

  4. 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

  5. info 2 info 1 info 3 info 2 info 1 info 4 info 1 info 3 info 2 Paralelismo de Controle E1 E2 E3 E4 tempo info 1

  6. 10 + 200 33 + 329 7 + 3 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. 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

  8. 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

  9. 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); • }

  10. 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 T2 A = 0; Tarefa T3 B=1; Tarefa T4 for i=1 to 3 { input(C); A=A+C; B=B*C; } output (A,B,C)

  11. T2 T3 1 1 T1 4 T4 16 Exemplo

  12. 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?

  13. + + + + + + + + + + + + + + + Modelando soma paralela de n números

  14. 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

  15. 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

  16. 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....

  17. 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

  18. 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

  19. 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

  20. 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...

  21. 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

  22. Investindo em paralelismo • Dificuldades encontradas • pensar em paralelo é difícil • conhecimento em paralelismo é recente • pouco conhecimento sobre representações abstratas de computações paralelas

  23. 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

  24. 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

  25. 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

  26. 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

  27. Aspectos Explorados pelo Modelo • Independência da arquitetura • Fácil entendimento

  28. nível de abstração nível de máquina 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

  29. Aspectos Explorados pelo Modelo • O modelo deve ser capaz de oferecer facilidades tais que seja fácil: • Decompor o programa em tarefas paralelas • Mapear as tarefas nos processadores físicos • custo de comunicação • heterogeneidade dos processadores • Sincronização entre tarefas: é preciso ter conhecimento do estado global da estrutura de execução do programa (quando é necessário sincronizar?)

  30. Abstraindo para Programar • Maior facilidade de programação: o esforço intelectual é reduzido quando nos concentrarmos em "uma coisa de cada vez” • duas dimensões: • dimensão espacial • dimensão temporal

  31. Dimensão Espacial • A cada momento, conjuntos de tarefas independentes são implementadas • cada tarefa ou processador não sabe o que acontecerá "a seguir" • detalhamento de informações globais levam a uma programação difícil Dimensão Temporal programas são composições de ações seqüenciais que preenchem o sistema computacional como um todo: pode-se definir com maior conhecimento o que vai acontecer a seguir

  32. Níveis de Paralelismo • Dependendo do nível considerado, a exploração do paralelismo é diferente • nível de aplicações ou fases de aplicações • a nível de tarefas • a nível de instruções - a execução da instrução necessita da busca, análise e execução propriamente dita • dentro dos circuitos aritméticos

  33. Algoritmos • Quando queremos resolver um problema computacionalmente, temos que analisar a complexidade deste. No domínio seqüencial, se procura definir um algoritmo que resolva o problema em tempo mínimo. • Mas quando se tratando de algoritmos paralelos, mais um parâmetro • número de processadores • operações independentes devem ser executadas em paralelo. • qual o tamanho dos processos? noção de granulosidade (granularity) • a razão entre o tempo de computação necessário para executar uma tarefa e a sobrecarga de comunicação durante essa computação.

  34. Modelos de Computação • Modelo de Computação Seqüencial: von Neumann • plataforma base para que usuários e projetistas • complexidade de tempo do pior caso: tempo máximo que o algoritmo pode levar para executar qualquer entrada com n elementos • complexidade de tempo esperado: complexidade média • critério de custo uniforme: qualquer instrução RAM leva uma unidade de tempo para ser executada e também o acesso a registradores Modelo de Computação Paralela • O desempenho do programa paralelo depende de certos fatores dependentes da máquina: • grau de concorrência; • escalonamento e alocação de processadores; • comunicação e sincronização.

  35. Modelo PRAM – modelo ideal • conjunto de p processadores operando sincronamente sob o controle de um único relógio, compartilhando um espaço global de memória • algoritmos desenvolvidos para este modelo geralmente são do tipo SIMD • todos os processadores executam o mesmo conjunto de instruções, e ainda a cada unidade de tempo, todos os processadores estão executando a mesma instrução mas usando dados diferentes.

  36. Modelo PRAM – modelo ideal • propriedades chaves: • execução síncrona sem nenhum custo adicional para a sincronização • comunicação realizada em uma unidade de tempo, qualquer que seja a célula de memória acessada • comunicação é feita usando a memória global

  37. Passo do algoritmo PRAM • fase de leitura: os processadores acessam simultaneamente locais de memória para leitura. Cada processador acessa no máximo uma posição de memória e armazena o dado lido em sua memória local • fase de computação: os processadores executam operações aritméticas básicas com seus dados locais • fase de gravação: os processadores acessam simultaneamente locais de memória global para escrita. Cada processador acessa no máximo uma posição de memória e grava um certo dado que está armazenado localmente

  38. Modelo PRAM • análise e estudo de algoritmos paralelos • definição de paradigma de programação paralela • avaliação do desempenho desses algoritmos independentemente das máquinas paralelas • se o desempenho de um algoritmo paralelo para o modelo PRAM não é satisfatório, então não tem sentido implementá-lo em qualquer que seja a máquina paralela • se eficiente, no entanto, podemos simulá-lo em uma máquina real : simulação deve ser eficiente

  39. Padrões de Acesso no Modelo PRAM • Exclusive Read (ER): vários processadores não podem ler ao mesmo tempo no mesmo local • Exclusive Write (EW): vários processadores não pode escrever no mesmo local de memória • Concurrent Read (CR): vários processadores podem ler ao mesmo tempo o mesmo local de memória • Concurrent Write (CW): vários processadores podem escrever no mesmo local de memória ao mesmo tempo Combinações são usadas para formar as variantes do PRAM: EREW, CREW, ERCW e CRCW

  40. Prioridades do CRCW • Para resolver conflitos no caso de vários processadores tentarem escrever ao mesmo tempo no mesmo local de memória global: • Comum - vários processadores concorrem a escrita no mesmo local de memória global durante o mesmo instante de relógio - todos devem escrever o mesmo valor; • Arbitrário - dentre os vários processadores, um é selecionado arbitrariamente e seu valor armazenado no local de memória disputado; • Prioridade - dentre os vários processadores, aquele com o menor índice é escolhido para escrever o seu valor no local concorrido.

  41. Memória Global P1 P2 P3 P4 Pn

  42. Comunicação em uma máquina PRAM • Comunicação através da memória global: Piquer passar x para Pj • Piescreve x em um local de memória global em um determinado passo • Pjpode acessar o dado naquele local no próximo passo

  43. Memória compartilhada d1 P1 P2 P3 Pn d1 d1 d2 d3 dn PASSO 2 PASSO 1

  44. Observações • os processadores operam sincronamente: a cada passo, todas os processadores executam a mesma instrução sobre dados distintos • uma instrução pode ser simplesmente uma operação aritmética ou uma comparação de dois números • processadores ativos: somente um subconjunto de processadores executem uma instrução e processadores restantes ficam ociosos/inativos

  45. Exemplo • V vetor com n elementos. • x um dado valor • Problema: xV? • Ambiente: P processadores tipo EREW PRAM Analisando o problema: todos os processadores tem que saber o valor de x não podem acessar a célula de x simultaneamente depois, cada processador tem que olhar os elementos de V sinalização da localização do valor x no vetor V

  46. Solução • todos os processadores devem saber sobre x: broadcasting ou difusão • Pior caso deste procedimento log2P passos • P1 acessa a memória global: • P2comunica comP1 ou seja, de alguma forma, P1 informa x para P2 • P1 e P2informamx para P3 e P4 • assim por diante • processadores não têm permissão de acesso simultâneo  gravam x em lugares distintos: Mié um dos P locais de memória global • Um vetor M auxiliar é utilizado

  47. Solução do broadcasting (leitura) • P1 lê x • P1 escreve x em M1 • P2 lê M1 • P2 escreve em M2 • P3 e P4 lêem M1 e M2 • P3 e P4 escrevem em M3 e M4 • P5, P6, P7e P8 lêem M1, M2, M3e M4 • P5, P6, P7e P8 escrevem M5, M6, M7e M8 • e assim por diante a cada passo: duas vezes o número de processadores ativos do passo anterior podem ler e escrever  log P passos

  48. broadcasting • P1 lê de x; • P1 escreve em M[1]; • Para h:= 1 até logP faça { • se 2h-1< i ≤ 2hentão { • Pi lê de M[i - 2h-1]; • Pi escreve em M[i]; • } • }

  49. Memória compartilhada x x x x x x x x x x x M1 M2 M3 M4 M5 M6 M7 M8 P1 P2 P3 P4 P5 P6 P7 P8 x x x x x x PASSO 3 PASSO 1 PASSO 2 PASSO 4

  50. A Procura • o vetor Vé divido em P pedaços: S1, S2, …, SP • Pi procura por xemSi • pior caso: n/P passos Total: log P + n/Ppassos, no pior caso • Como o algoritmo poderia ser melhorado?? • Definição de uma variável Achou • Com computador mais poderoso  algoritmo mais rápido.

More Related