modelo de programação paralela - uff

41
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

Upload: vankhanh

Post on 04-Jan-2017

220 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Modelo de Programação Paralela - UFF

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 2: Modelo de Programação Paralela - UFF

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 3: Modelo de Programação Paralela - UFF

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

Page 4: Modelo de Programação Paralela - UFF

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 5: Modelo de Programação Paralela - UFF

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 6: Modelo de Programação Paralela - UFF

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 7: Modelo de Programação Paralela - UFF

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 8: Modelo de Programação Paralela - UFF

Modelos de Computação Paralela

!  Memória Compartilhada •  Com ou sem uso de threads

!  Memória Distribuída •  Troca de mensagens

!  Paralelismo de Dados !  Híbrido

Page 9: Modelo de Programação Paralela - UFF

Modelos de Computação Paralela

Memória Compartilhada sem uso de threads •  Processos podem a vir compartilhar espaço de memória

•  Através de semáforos para não ocorrer deadlock

•  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)

•  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 10: Modelo de Programação Paralela - UFF

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 11: Modelo de Programação Paralela - UFF

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 12: Modelo de Programação Paralela - UFF

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 13: Modelo de Programação Paralela - UFF

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 14: Modelo de Programação Paralela - UFF

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 15: Modelo de Programação Paralela - UFF

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 16: Modelo de Programação Paralela - UFF

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 17: Modelo de Programação Paralela - UFF

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 18: Modelo de Programação Paralela - UFF

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 19: Modelo de Programação Paralela - UFF

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 20: Modelo de Programação Paralela - UFF

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 21: Modelo de Programação Paralela - UFF

Memória Global

P1 P2 P3 P4 Pn

Page 22: Modelo de Programação Paralela - UFF

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 23: Modelo de Programação Paralela - UFF

d1 d1

Memória compartilhada

P1 P2 P3 Pn

Passo 1: cada processador realiza sua computação

Page 24: Modelo de Programação Paralela - UFF

d1 d1

Memória compartilhada

P1 P2 P3 Pn

Passo 1: P1 escreve na memória

d1

Page 25: Modelo de Programação Paralela - UFF

d1 d1

Memória compartilhada

P1 P2

d1

P3 Pn

Passo 2: P2 lê da memória

d1

Page 26: Modelo de Programação Paralela - UFF

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 27: Modelo de Programação Paralela - UFF

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 28: Modelo de Programação Paralela - UFF

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 29: Modelo de Programação Paralela - UFF

Memória compartilhada

P1

x x

P2 P3 P4 P5 P6 P7 P8

M1 M2 M3 M4 M5 M6 M7 M8

Page 30: Modelo de Programação Paralela - UFF

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 31: Modelo de Programação Paralela - UFF

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 32: Modelo de Programação Paralela - UFF

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 33: Modelo de Programação Paralela - UFF

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 34: Modelo de Programação Paralela - UFF

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 35: Modelo de Programação Paralela - UFF

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 36: Modelo de Programação Paralela - UFF

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 37: Modelo de Programação Paralela - UFF

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 38: Modelo de Programação Paralela - UFF

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 39: Modelo de Programação Paralela - UFF

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 40: Modelo de Programação Paralela - UFF

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 41: Modelo de Programação Paralela - UFF

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.