Transcript
Page 1: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Definindo melhor alguns conceitos Concorrência

termo mais geral, um programa pode ser constituído por mais de um thread/processo concorrendo por recursos

Paralelismo

uma aplicação é executada por um conjunto de processadores em um ambiente único (dedicado)‏

Computação distribuída

aplicações sendo executadas em plataformas distribuídas

Page 2: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Definindo melhor alguns conceitos Qualquer que seja o conceito, o que queremos?

estabelecer a solução do problema

lidar com recursos independentes

aumentar desempenho e capacidade de memória

fazer com que usuários e computadores trabalhem em espírito de colaboração

Page 3: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

O que paralelizar? • Pode estar em diferentes níveis de sistemas

computacionais atuais – Hardware – Sistema Operacional – Aplicação

• As principais questões que são focadas são

– Desempenho – Corretude – Possibilidade de explorar o paralelismo

Page 4: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Por que paralelizar? Aplicação Paralela

– várias tarefas

– vários processadores

• redução no tempo total de execução

Page 5: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Programação Paralela • Criação e gerenciamento de processos

– estático ou dinâmico

• Comunicação

– memória compartilhada: visão de um único espaço de endereçamento global

– memória distribuída: troca explícita de mensagens

Page 6: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Programação Paralela

• Expressão de Paralelismo: Paradigmas

– SPMD ( Single Program Multiple Data )‏

– MPMD (Multiple Program Multiple Data )‏

• Metas

– aumento no desempenho

– maior eficiência

Page 7: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes

Como especificar uma solução paralela pensando em todos esses detalhes?

O que queremos?

Executar a solução paralela o mais rápido possível?

Todos os detalhes influem no desempenho eficiente da solução?

Então

Um modelo de programação paralela deve especificar a metodologia de execução e detalhes que influenciam na execução da aplicação naquela arquitetura

Um modelo não deve especificar detalhes de um sistema/máquina específico

Page 8: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 9: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 10: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 11: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 12: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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.

Page 13: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 14: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação

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.

Page 15: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela

Memória Compartilhada

• Com ou sem uso de threads

Memória Distribuída

• Troca de mensagens

Page 16: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Memória Compartilhada sem uso de threads

• Processos podem compartilhar espaço de memória • Através de semáforos para não ocorrer deadlock

Page 17: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Memória Compartilhada sem uso de threads • Uma vantagem deste modelo:

• todos os processos podem acessar igualmente os dados compartilhados.

• Não há necessidade de explicitar a troca de dados entre processos • como em memória distribuída

Page 18: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Memória Compartilhada sem uso de threads • Uma desvantagem desse modelo:

• o gerenciamento da localidade de dados: ou seja, trazer dados para a cache para economizar acesso a memória principal

Page 19: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Threads

• Utilização de múltiplos "light weight”

• Por exemplo, podemos pensar que dependendo do problema, uma sub-rotina possa ser definida como uma thread

• Comunicação entre threads realizada por memória compartilhada

• Sincronização entre as threads necessárias se duas ou mais threads estão atualizando o mesmo endereço de memória

Page 20: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Memória Distribuída (troca de mensagens) • Cada tarefa tem sua memória local • Pode haver uma ou mais tarefas por processador e

em vários processadores • A troca de informações é realizada através de

mensagens • Para tal, geralmente é utilizada uma biblioteca de

troca de mensagens • Exemplo: Message Passing Interface (MPI) library

• Se tornou padrão entre aplicações industriais e acadêmicas de fato

• MPI-1 em 1994 • MPI-2 em 1996 • MPI-3 in 2012

Page 21: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelos de Computação Paralela Modelo de Paralelismo de Dados

Paralelismo é realizado em uma estrutura global comum

Um conjunto de tarefas trabalha em conjunto nesta estrutura

A mesma operação sobre elementos diferentes

Pode ser implementado em memória compartilhada ou memória distribuída

Compartilhada – estrutura na memória global

Distribuída – estrutura dividida entre as diferentes memórias.

Page 22: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelo PRAM Mas como pensar em paralelo?

Abstrair de formas de como implementar....

O que tínhamos com computação sequencial?

Memória

CPU

Page 23: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Modelo PRAM Mas como pensar em paralelo?

Abstrair de formas de como implementar....

Como podemos pensar em paralelo?

Memória

CPU

Memória

CPU CPU CPU

Page 24: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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.

Page 25: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 26: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 27: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 28: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 29: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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.

Page 30: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória Global

P1 P2 P3 P4 Pn

Page 31: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Comunicação em uma máquina PRAM

Comunicação através da memória global: Pi quer passar x para Pj

– Pi escreve x em um local de memória global em um determinado passo

– Pj pode acessar o dado naquele local no próximo passo

Page 32: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

d1 d1

Memória compartilhada

P1 P2 P3 Pn

Passo 1: cada processador realiza sua computação

Page 33: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

d1 d1

Memória compartilhada

P1 P2 P3 Pn

Passo 1: P1 escreve na memória

d1

Page 34: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

d1 d1

Memória compartilhada

P1 P2

d1

P3 Pn

Passo 2: P2 lê da memória

d1

Page 35: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 36: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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

Page 37: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Solução todos os processadores devem saber sobre x: broadcasting ou difusão

Pior caso deste procedimento log2 P passos

– P1 acessa a memória global:

– P2 comunica com P1 ou seja, de alguma forma, P1 informa x para P2

– P1 e P2 informam x 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

Page 38: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2 P3 P4 P5 P6 P7 P8

M1 M2 M3 M4 M5 M6 M7 M8

Page 39: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x

PASSO 1 (inicialização)

x

P2

x

P3 P4 P5 P6 P7 P8

M1 M2 M3 M4 M5 M6 M7 M8

Page 40: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x

PASSO 1 (inicialização)

x

P2

x

P3 P4 P5 P6 P7 P8

M1 M2 M3 M4 M5 M6 M7 M8

x

Page 41: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 2

M1 M2 M3 M4 M5 M6 M7 M8

x

x

Page 42: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 2

M1 M2 M3 M4 M5 M6 M7 M8

x

x

x

Page 43: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 3

M1 M2 M3 M4 M5 M6 M7 M8

x

x

x

x x

Page 44: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 3

M1 M2 M3 M4 M5 M6 M7 M8

x

x

x

x x

x x

Page 45: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 4

M1 M2 M3 M4 M5 M6 M7 M8

x

x

x

x x

x x

x x x x

Page 46: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

Memória compartilhada

P1

x x

P2

x

P3 P4 P5 P6 P7 P8

PASSO 4

M1 M2 M3 M4 M5 M6 M7 M8

x

x

x

x x

x x

x x x x

x x x x

Page 47: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

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, P7 e P8 lêem M1, M2, M3 e M4

P5, P6, P7 e P8 escrevem M5, M6, M7 e 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

Page 48: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

broadcasting

P1 lê de x;

P1 escreve em M[1];

Para h:= 1 até log P faça {

se 2h-1 < i ≤ 2h então {

Pi lê de M[i - 2h-1];

Pi escreve em M[i];

}

}

Page 49: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

A Procura o vetor V é divido em P pedaços: S1, S2, …, SP

– Pi procura por x em Si

– pior caso: n/P passos

Total: log P + n/P passos, no pior caso

Como o algoritmo poderia ser melhorado??

– Definição de uma variável Achou

Com computador mais poderoso algoritmo mais rápido.

Page 50: Definindo melhor alguns conceitosboeres/slides_AP/AlgParalelosI.pdf · Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais

PRAM mais poderoso: CREW PRAM para achar x, o algoritmo executa n/P passos

leituras concorrentes são permitidas

– todos os processadores podem acessar x em um passo

– todos os processadores podem consultar Achou em um passo

– mas ao encontrar, o processador tem que atualizar Achou

Quantos passos nas seguintes situações?

– somente um dos elementos tem valor x

– x pode ser um valor repetido em V

• mais de um processador pode atualizar Achou simultaneamente.


Recommended