1.08k likes | 1.25k Views
Definindo melhor alguns conceitos. Processamento Paralelo : processamento de informação concorrente que pertencem a um ou mais processos que resolvem um único problema.
E N D
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.
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.)
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
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
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
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
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 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)
T2 T3 1 1 T1 4 T4 16 Exemplo
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
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
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
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?)
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
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
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
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.
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.
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.
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
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
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
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
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.
Memória Global P1 P2 P3 P4 Pn
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
Memória compartilhada d1 P1 P2 P3 Pn d1 d1 d2 d3 dn PASSO 2 PASSO 1
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
Exemplo • V vetor com n elementos. • x um dado valor • Problema: xV? • 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
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
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
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]; • } • }
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
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.