• Nenhum resultado encontrado

Modelos para Concorrência

N/A
N/A
Protected

Academic year: 2021

Share "Modelos para Concorrência"

Copied!
92
0
0

Texto

(1)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    1

Modelos para Concorrência



Modelos para descrição de concorrência

Programa Interdisciplinar de Pós­Graduação em Computação Aplicada

Universidade do Vale do Rio dos Sinos

(2)

Resumo

Apresentação de modelos

Aplicação

Máquina

Execução

Skillicorn e Talia

Aplicação de modelos 

(3)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    3

Motivação 1/3

Existência de modelos bem aceitos para 

a computação seqüencial:

Modelo de von Neumann

Para a arquitetura

Máquina de Turing

complexidade

Com estes modelos fica fácil o 

desenvolvimento de programas... 

(4)

Motivação 2/3

Não existe um modelo universal para 

computação paralela;

Existem duas características 

antagônicas:

simplicidade

realidade

Modelos simples não aproximam o comportamento 

de máquinas reais;

Modelo realistas são de difícil uso.

(5)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    5

Motivação 3/3

Existem vários níveis de concorrência...



 

 



  





















 



 

(6)

Motivação 3/3

Existem vários níveis de concorrência...



 

 



  









 









 



(7)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    7

Taxonomia: concorrência

Programa concorrente:

Decomposto em atividades independentes

Programa paralelo

Atividades são executadas em processadores 

independentes, potencialmente ao mesmo tempo

Programa distribuído

As atividades executam em processadores 

independentes, cada um com sua própria memória

 

(8)

Taxonomia: concorrência

Programa concorrente:

Decomposto em atividades independentes

Programa paralelo

Atividades são executadas em processadores 

independentes, potencialmente ao mesmo tempo

Programa distribuído

As atividades executam em processadores 

independentes, cada um com sua própria memória

(9)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    9

Taxonomia: uma proposta

Modelos para a aplicação:

Representam o paralelismo de um algoritmo.

Modelos de máquina:

Descrevem as características das máquinas.

Modelos de execução:

Detalham a forma de programação.

(10)

Criando uma aplicação paralela

1) Escolha de um modelo para a máquina;

2) Construa uma representação para o 

algoritmo;

3) Escolha de um modelo de execução;

4) Procura por um escalonamento;

5) Identifique a arquitetura;

6) Procure uma ferramenta de programação;

7) Implemente.

(11)

11

Modelos para aplicação

(12)

Descrição da Concorrência

Paralelismo de dados

O paralelismo é encontrado na execução de 

um mesmo cálculo sobre conjuntos distintos 

de dados

Paralelismo de tarefas

O paralelismo é encontrado na viabilidade de 

execução simultânea de diferentes trechos de 

código.

(13)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    13

Paralelismo de dados

 

 





















(14)

Paralelismo de dados













(15)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    15

Paralelismo de dados

 





 

 



 

  

 



 



(16)

Paralelismo de tarefas











 









 

 

 

(17)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    17

Grafo de precedência 1/3

Um grafo é a forma mais comum:

Grafos de fluxo de dados:

Os arcos representam a evolução dos dados

Pode­se transformar em grafo de precedência

Grafo de precedência;

Grafo de dependência.

Grafo de tarefas

(18)

Grafo de precedência 2/3

O algoritmo é dividido em tarefas:

os vértices representam as tarefas;

os arcos as relações de dependência.

Quando o grafo é formado em tempo de 

execução:

Escalonamento dinâmico;

Quando o grafo é conhecido antes do 

lançamento:

(19)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    19

Grafo de precedência 3/3



















Representa a ordem de execução entre 

as tarefas

(20)

Grafo de dependência

Além de representar a ordem, representa 

os dados trocados entre tarefas



















(21)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    21

Informações no grafo

Sucessores

Quem executa após

Predecessores

Quem deve ser executado antes

Largura

Quantidade máxima de concorrência

Caminho crítico

Maior caminho no grafo

Granularidade

Relação entre execução e comunicação

(22)
(23)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    23

Primeira proposta

Feita por Flynn em 1966:

Classifica as máquinas conforme os fluxos:

de instruções

de dados

     Dados

instr.

Simples

Múltiplo

Simples

SISD

sequêncial

SIMD

Múltiplo

MISD

MIMD

(24)

Outras classificações

Velocidade de comunicação

Multi­computadores

Multi­processadores

Tipo de acesso a memória

UMA – uniforme

NUMA – espaço de endereçamento compartilhado vs. 

distribuído

Memória compartilhada vs. Troca de mensagens

(25)

25

Modelos de execução

(26)

Modelos de execução

Modelo usado no desenvolvimento

Predição de custos;

Planejamento da comunicação.

Ligado ao modelo da máquina

Bridge models

Modelos abstratos entre um programa real e 

uma dada arquitetura

(27)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    27

Modelos de execução

Abstração do modelo de programação

Oferecem uma visão da arquitetura e das ferramentas de 

exploração destas.

Definem a semântica da execução dos programas.

Permitem compreender o funcionamento dos algoritmos:

prever desempenho

comparar diferentes algoritmos

Representações abstratas

(28)

Modelos de execução

Abstração do modelo de programação

Exemplo:



Abstração da arquitetura: 

Memória: células endereçáveis individualmente

Instruções:

de acesso à memória (LD, STR)

de exploração da ULA (lógicas e aritméticas)

de E/S (read, write)

Abstração da execução

Programas executam sequencialmente, em tempo finito.

Memória

UC

ULA

(29)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    29

Principais modelos

PRAM

Modelos com atraso de comunicação

LogP

BSP / CGM

(30)

PRAM

Parallel Random Access Machine

Surgiu em 1978 e é uma referência

Usado para análise de algoritmos 

(31)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    31

PRAM (características)

Parallel Random Access Machine

Primeiro modelo proposto

Abstração de arquitetura:

Síncrono

número infinito de processadores

memória compartilhada e ilimitada

Tempo de acesso uniforme à memória

Abstração de execução:

processadores executando de forma síncrona

operações lógicas e aritméticas e de acesso a memória

Modelo não realista

manutenção da memória global não escalável

(32)

PRAM

Arquitetura:

n processadores (ilimitado)

compartilhamento de memória global (de tamanho finito)

Programação:

Instruções de acesso a ULA

De acesso a memória (read, write)

Memória (de tamanho ilimitado)

P1

P2

P3

P4

P5

Pn

(33)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    33

PRAM

Modelos restritos de PRAM: mais realistas

p­PRAM

limita o número de processadores

Limitações no acesso à memória compartilhada:

EREW: Exclusive Read, Exclusive Write

Uma célula de memória pode ser acessada por somente um 

processador

CREW: Concurrent Read, Exclusive Write

Uma célula de memória pode ser acessada por vários 

processadores para leitura, mas em caso de escrita, apenas 

um pode ter acesso

CRCW: Concurrent Read, Concurrent Write

Vários processadores podem acessar (leitura ou escrita) uma 

mesma posição

Regras para escrita concorrente (Maior, Soma, ...)

(34)

PRAM

Dado um vetor A,

   com n elementos, tal

   que n = 2

k

, encontrar

   a soma dos elementos

   deste vetor.

Executar o programa

   em uma arquitetura

   com n processadores

























(35)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    35

PRAM

Exemplo de Programa

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

A

4 4 4 4

B

8 8 8 8

B

16 16

B

4 4 4



16 16

B

(36)

PRAM

Exemplo de Programa









 

 

 



 

 





 

(37)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    37

PRAM

Exemplo de Programa

           



(38)

PRAM

Exemplo de Programa

           

(39)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    39

PRAM

Exemplo de Programa

            



(40)

PRAM

Exemplo de Programa

            

(41)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    41

PRAM

Ineficiência



 

 



(42)

PRAM

Ineficiência

 



(43)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    43

Modelos com atraso de comunicação

Fornece um suporte para a comunicação

Processadores com memória local

Vários resultados teóricos

Considera o essencial das máquinas 

reais

Mas não considera

Overhead de comunicação, banda passante

(44)

Grafo para os exemplos





   





(45)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    45

Grafo para os exemplos























(46)

Grafo para os exemplos























  

   

   







(47)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    47

Grafo para os exemplos

























 

   

   





 

(48)

Grafo para os exemplos























 



 





   





 

(49)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    49

Grafo para os exemplos

























 

 







  





 

 





(50)

Modelos realísticos

Duas categorias:

Aproximam máquinas de forma genérica

LogP

Permitem algoritmos portáveis e eficazes

BSP / CGM

(51)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    51

LogP

Número finito de processadores, custos de 

comunicação.

L ­ Tempo de trânsito da mensagem

(pequena)

o ­ custo adicional de envio e recepção

g ­ intervalo entre envios/recepções 

seguidos

P ­ número de processadores

Máximo de L/g mensagens na rede

(52)

LogP

Dados foram medidos em muitas máquinas 

reais;

Pode­se prever o custo de programas com 

precisão;

Existem extensões para mensagens 

grandes;

É difícil obter resultados para grafos 

(53)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    53

BSP e CGM

Modelos semelhantes

Origens distintas:

BSP – Bulk Synchronous Parallel

Modelo programação

CGM – Coarse Grained Multicomputer

Modelo teórico que considera o tamanho do 

problema

Separação explícita do cálculo e da 

comunicação

(54)

BSP – Princípios

Super­Etapa

Sincronização

Parâmetros: 

n ­ número de processadores

l ­ custo de sincronização 

(custo de uma barreira)

g ­ banda passante

 (total de operações realizadas por 

todos processadores em um segundo / número total de pacotes 

entregues na erde em um segundo)

w – trabalho de cada superstep 

(custo computacional)

comunicação

 l/g­relação

(55)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    55

BSP – Custo

Complexidade de um superstep:

Max{l,w,gh

s

,gh

r

}

Onde:

h

s

 corresponde ao número de pacotes enviados

h

r

 corresponde ao número de pacotes recebidos

Padrões de comunicação

1­relation – um manda para todos

p­relation – todos mandam para um

h­relation – todos mandam para todos

(56)

BSP – Princípios

 

 

 





(57)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    57

BSP – Exemplo

(58)

BSP – Parallel Slackness



 

 



   

 

(59)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    59

CGM 

(coarse grained computers)

Modelo teórico

Dois parâmetros:

p – número de processadores

n – tamanho do problema

Suposições:

n/p >> p

Memória local  O(n/p)

n/p­relações

Objetivo: minimizar a comunicação

(60)

Vantagens destes modelos

BSP/CGM

Abstrai totalmente a máquina

Os algoritmos elaborados em CGM são bons

Existem várias bibliotecas disponíveis

(61)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    61

BSP – BSPLib

 



 

 



 



 



 

 





 





(62)

Classificação de Skillicorn e Talia

Paralelismo implícito

Paralelismo explícito, decomposição implícita

Decomposição explícita, mapeamento implícito

Mapeamento explícito, comunicações implícitas

Comunicação explícita, sincronizações implícitas

Programador faz tudo

Número de Processos vs. Comunicações

Fixo/dinâmico

Ilimitado vs. limitado

(63)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    63

Nosso modelo de programa concorrente

Um grafo G, composto de tarefas T e dados 

X representa a execução de uma 

aplicação A

 

 



















(64)

Nosso modelo de programa concorrente

Uma função F executa o grafo respeitando a 

ordem de precedência das tarefas





















(65)

65

Ferramentas de Programação

(66)

Ferramentas de programação

Modelos podem ser explorados em arquiteturas 

reais através de ferramentas de programação

Compõem “níveis de abstração” dos recursos 

oferecidos pelas arquiteturas e pelos modelos





 

(67)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    67

Ferramentas de programação

Modelo von Neumann

Tarefa:  

Executadas seqüencialmente;

Lógicas e aritméticas;

Leitura e escrita em memória.

Comunicação: 

Informações transmitidas entre instruções.

Sincronização:  

Uma instrução inicia enquanto a anterior não tenha 

terminado.

(68)

Ferramentas de programação

  































 

 

 



 

(69)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    69

Ferramentas de programação

  































 



 





 

(70)

Ferramentas de programação

  































 

















(71)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    71

Ferramentas de programação





 











 





 





O que deve ser feito:

(72)

Ferramentas de programação





 











 





 





O que deve ser feito:

 

  



(73)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    73

De Modelos para Ferramentas

 

Estratégia mais comum: Grafos

 

 

 

  

 

(74)

De Modelos para Ferramentas

 

No modelo von Neumann

 







(75)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    75

De Modelos para Ferramentas

 

Casos práticos na concorrência: 

Linguagem

 

// aguarda o término de todos as filhas

Arquitetura:

n processadores executando

Memória compartilhada

Grafo controlando a ordem de execução das tarefas

(76)

De Modelos para Ferramentas

 

Casos práticos na concorrência: 

Linguagem



 // modos de acesso

Arquitetura:

n processadores executando

Memória compartilhada

Grafo controlando a troca de dados entre tarefas

(77)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    77

De Modelos para Ferramentas

 

Casos práticos na concorrência: 

Linguagem

  

 // sincroniza e recupera 

Arquitetura:

n processadores executando

Memória compartilhada

Grafo controlando a ordem de execução, informando 

relações de troca de dados

(78)

De Modelos para Ferramentas



Casos práticos na

 

concorrência:

 

 





Implementação do modelo MIMD (Flynn)

O programa em execução é composto possui 

 , cada um executando sua própria 

seqüência de instruções e acessando 

 em uma memória compartilhada.

Exemplo:

Threads POSIX, OpenMP, Cilk, Anahy

(79)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    79

De Modelos para Ferramentas



Casos práticos na concorrência: 

ingle rogram, ultiple ata

Releitura do modelo SIMD (Flynn)

O programa em execução é composto de um 

 , sobre o qual é executado em várias 

instâncias a mesma seqüência de instruções, sobre 

.

Exemplo:

MPI (Message Passing Interface), PVM (Parallel Virtual 

Machine), aplicações escritas com sockets

(80)

De Modelos para Ferramentas



Casos práticos na concorrência: 

ultiple rogram, ultiple ata

Releitura do modelo MIMD (Flynn)

O programa em execução é composto de 

 , sobre o qual é executado em várias 

instâncias a mesma seqüência de instruções, sobre 

.

Exemplo:

MPI­2 (Message Passing Interface), PVM (Parallel Virtual 

(81)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    81

De Modelos para Ferramentas

 

 





 







(82)

Processos Leves



 processadores;

Memória compartilhada.



 

(83)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    83

Processos Leves

 





 processadores.

Memória compartilhada.

Programa com múltiplos 

fluxos de execução;

Execução independente 

sobre cada processador;

A memória armazena 

dados do programa.

(84)

Processos Leves

 





 processadores;

Memória compartilhada.

Programa com múltiplos 

fluxos de execução;

Execução independente 

sobre cada processador;

A memória armazena 

dados do programa.

(85)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    85

Processos Leves

Visões: programa vs. Execução











     



(86)

Um programa PRAM com threads









 

 

 









 

(87)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    87

Processos Comunicantes





 processadores;

Memória local ao processador.

Programa com múltiplos fluxos de execução;

Execução independente sobre cada processador;

A memória local a cada nodo armazena dados do 

programa.

Trocas de informação entre os processadores 

através de mensagens. 

(88)

Processos Comunicantes















(89)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    89

Processos Comunicantes













 

(90)

Processos Comunicantes

Toda a troca de dados é explícita.

Toda a sincronização é explícita.

Necessidade de endereçamento e conhecer 

os participantes em uma troca de dados.

Primitivas básicas: .

Outras primitivas para comunicação em 



(91)

Gerson Cavalheiro Processamento de Alto Desempenho – 2005  PIPCA/UNISINOS    91

Um programa BSP com MPI

                               

(92)

Conclusão

Modelos são utilizados para auxiliar no 

desenvolvimento de aplicações concorrentes, 

oferecendo uma abstração dos recursos a serem 

explorados.

A quantidade de modelos pode ser parcialmente 

explicada pela diversidade de arquiteturas paralelas 

disponíveis.

Embora não haja um modelo universalmente aceito 

para a programação concorrente, os que existem 

podem ser utilizados na prática.

Referências

Documentos relacionados

Pesquisadora responsável: Enfermeira Cleuza Aparecida Vedovato Orientadora: Profª. Justificativa da pesquisa: O diagnóstico de uma situação é fundamental para a

Considerações finais: Espera-se que esta proposta de avaliação do Curso de Recepcionista em Serviços de Saúde, ofertado pelo Departamento de Gestão de Pessoas da Secretaria

Acredita-se que as pes- soas especiais devem estar presentes não só como ouvintes, mas como agentes que possam estar envolvidos nas discussões e decisões sobre uma

Entendo ainda que o Instituto Unibanco (IU) e o Banco Mundial (BM) 1 são dois exemplos de instâncias promotoras das parcerias público-privadas na educação. É

Com o objetivo de oferecer produtos, serviços e soluções inovadoras, que atendam às necessidades de lazer, bem-estar e conforto, despertando as pessoas para uma vida mais prazerosa

XIII ICERD - Convenção Internacional pela Eliminação de Todas as Formas de Discriminação Racial IDH-M - Índice de Desenvolvimento Humano Municipal INSPIR - Instituto

mostram que a inoculação de microrganismos solubilizadores de P distribuídos sobre o organomineral no sulco de plantio resultou em maior crescimento de massa seca da parte aérea

• Etapa 4: Modelos Propostos Nesta etapa, a teoria dos jogos é adotada para pesquisar o mecanismo de concorrência no mercado eletrônico. Três modelos de jogos e um modelo estendido