• Nenhum resultado encontrado

Ferramentas para Programação em Processadores Multi-Core

N/A
N/A
Protected

Academic year: 2021

Share "Ferramentas para Programação em Processadores Multi-Core"

Copied!
20
0
0

Texto

(1)

1

Ferramentas para Programação

em Processadores Multi-Core

Prof. Dr. Gerson Geraldo H. Cavalheiro

Departamento de Informática

Universidade Federal de Pelotas

Programa de Verão 2008

Petrópolis, 14 a 17 de janeiro de 2008.

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 2

Etapas do curso



Apresentação de modelos



Aplicação de modelos



Arquiteturas multi-core



Programação multithread



Ferramentas de programação



Prática de programação

Ferramentas para Programação em Processadores Multi-Core

Motivação 1/4



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

Ferramentas para Programação em Processadores Multi-Core

Motivação 2/4



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;

(2)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

5

Motivação 3/4



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

Muita fina

Intra-instrução

Proc. Superescalares

Fina

Entre-Instruções

Proc. Vetoriais

Fina/Média

Blocos

UMA

Média

Procedimentos

UMA/NUMA

Grossa

Processos

SC-NUMA/NORMA

Muito Grossa

Aplicações

Comp em grade ?...

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

6

Motivação 3/4



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

Muita fina

Intra-instrução

Proc. Superescalares

Fina

Entre-Instruções

Proc. Vetoriais

Fina/Média

Blocos

UMA

Média

Procedimentos

UMA/NUMA

Grossa

Processos

SC-NUMA/NORMA

Muito Grossa

Aplicações

Comp em grade ?...

Motivação 4/4

X

Nosso escopo:

Multiprogramação leve



Diversos níveis de concorrência



Intra-instrução



CISC – Complex Instruction Set Computer, superescalares



Entre instruções



Hardware pipeline, registradores vetoriais



De bloco



Diretivas paralelizantes, compiladores paralelizantes



De processos



Funções, procedimentos, subprogramas



De processos



Troca de mensagens



De aplicações



Grades computacionais

Taxonomia: uma abordagem



Concorrência



Possibilidade de execução simultânea de dois ou mais fluxos

de execução, não impedindo disputa por recursos



Importante: a definição inclui a idéia de disputa por recursos

mas não é restrita à ela!



Ótica de Sistemas Operacionais



Mais ainda, concorrência incorpora a idéia de que existe uma

convergência dos fluxos para um ponto comum



Uma eventual sincronização



A produção do resultado final

(3)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

9

Taxonomia: uma abordagem



Concorrência



Indica independência temporal



O número de atividades concorrentes pode ser maior que a

quantidade de recursos de processamento disponíveis



Paralelismo



Indica execução simultânea



A quantidade de recursos de processamento disponível permite que

duas ou mais atividades sejam executadas simultaneamente



É usual utilizar a expressão programação paralela para o tipo

de programação focada em desempenho



Na nossa terminologia, programação paralela e programação

concorrente são utilizadas com o mesmo significado

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

10

Taxonomia: uma abordagem



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.

Ferramentas para Programação em Processadores Multi-Core

Taxonomia: uma abordagem



Modelos de máquina:



Descrevem as características das máquinas.



Modelos para a aplicação:



Representam o paralelismo de um algoritmo.



Modelos de execução:



Detalham a forma de programação.

Ferramentas para Programação em Processadores Multi-Core

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.

(4)

13

Modelos para máquinas

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

14

Arquitetura de von Neumann



Modelo de von Neumann

(von Neumann, 1945)



Execução seqüencial



Memória para dados e programas



Efeito colateral

Processador

Memória

Unidade de controle Unidade lógica e aritmética Banco de registradores Entrada Saída

Arquitetura de von Neumann



Modelo de von Neumann



Execução seqüencial



Memória para dados e programas



Efeito colateral



Gargalo de

von Neumann

Processador

Memória

Unidade de controle Unidade lógica e aritmética Banco de registradores Entrada Saída

Arquitetura de von Neumann



Modelo de von Neumann



Gargalo de von Neumann



Introdução de cache

Processador

Memória

Unidade de controle Unidade lógica e aritmética Banco de registradores Entrada Saída

Cache

(5)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

17

Arquiteturas paralelas



Classificação de Flynn

(Flynn, 1972)



Segundo fluxos de controle e de dados

MIMD

multicomputadores,

multiprocessadores

MISD

dataflow, pipeline

Múltiplo

SIMD

array, sistólico

SISD

von Neumann

Simples

Múltiplo

Simples

Dados

Controle

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

18

Arquiteturas paralelas



Classificação de Flynn

(Flynn, 1972)



Classificação por compartilhamento de memória



Extensão a classificação de Flynn para a classe MIMD

considerando a apresentação da memória

MIMD

Fracamente acoplado

Espaço de endereçamento múltiplo

Fortemente acoplado

Espaço de endereçamento único

NORMA

NOn-Remote Memory Access

UMA

Uniform Memory Access

NUMA

Non Uniform Memory Access

Ferramentas para Programação em Processadores Multi-Core

Arquiteturas paralelas



UMA: Uniform Memory Access



Multi

processador



Memória global a todos os processadores



Tempo de acesso idêntico a qualquer endereço de memória

P

1

Meio de

comunicação

P

2

P

p

M

1

M

m

. . .

. . .

Configuração de uma máquina UMA com

p processadores e m módulos de memória

Ferramentas para Programação em Processadores Multi-Core

Arquiteturas paralelas



UMA: Uniform Memory Access



Multi

processador



Memória global a todos os processadores



Tempo de acesso idêntico a qualquer endereço de memória



Cada processador pode contar com uma cache própria

P

1

Meio de

comunicação

P

2

P

p

M

1

M

m

. . .

. . .

Configuração de uma máquina UMA com

p processadores e m módulos de memória

(6)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

21

Arquiteturas paralelas



UMA: Uniform Memory Access



SMP: Symmetric MultiProcessor



Os processadores são idênticos e operam como definido pela

arquitetura von Neumann



O acesso a memória é compartilhado

P

1

Barramento ou crossbar

P

2

P

p

Memória

. . .

22

Modelos para aplicação

Grafos representando aplicações



Um grafo é a forma mais comum:



Grafos de tarefas



Grafo de precedência



Grafo de fluxo de dados

Grafos representando aplicações



O algoritmo é dividido em tarefas:



os vértices representam as tarefas



os arcos as relações de dependência



Em relação ao conhecimento do grafo



Em tempo de execução:



Escalonamento dinâmico



A priori (antes de executar):

(7)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

25

Grafos de tarefas



O algoritmo é dividido em tarefas, as tarefas

compartilham recursos (dados) entre si:



Vértices representam as tarefas



Arcos representam os recursos compartilhados

1

5

3

2

7

6

4

1

1

1

2

2

2

2

2

3

6

5

Representação:

7 11 1 # 7 vértices 11 arcos 1 com peso

5 1 3 2 2 1 # vertice 1, liga com 5 peso: 1...

1 1 3 2 4 1 # vertice 2, ...

5 3 4 2 2 2 1 2

2 1 3 2 6 2 7 5

1 1 3 3 6 2

5 2 4 2 7 6

6 6 4 5 # vertice 7, ...

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 26

Grafo de precedência

6

15

1

2

3

5

8

12

13

9

16

17

14

4

7

10

11

18



O algoritmo é dividido em tarefas, as tarefas

dependem de resultados prévios:



Vértices representam as tarefas



Arcos representam a ordem de execução das tarefas

Ferramentas para Programação em Processadores Multi-Core

Grafo de precedência



O algoritmo é dividido em tarefas, as tarefas

dependem de resultados prévios:



Informações do grafo:



Sucessores / Predecessores



Define ordem entre as tarefas



Largura



Quantidade máxima de concorrência



Caminho crítico



Maior caminho no grafo



Granularidade



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

Ferramentas para Programação em Processadores Multi-Core

Grafo de fluxo de dados

6

15

1

2

3

5

8

12

13

9

16

17

14

4

7

10

11

18



Estende o grafo de precedência indicando o(s)

dado(s) comunicado(s) entre as tarefas.

(8)

29

Modelos de execução

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

30

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

Principais modelos



PRAM



Modelos com atraso de comunicação



LogP



BSP / CGM

PRAM



Parallel Random Access Machine.



Surgiu em 1978 e é uma referência.

(9)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

33

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

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 34

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

Ferramentas para Programação em Processadores Multi-Core

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, ...)

Ferramentas para Programação em Processadores Multi-Core

PRAM



Inicializar um vetor de tamanho n com valor 0 em todas

posições.

Entradas:

- Vetor A[n]

- Processador i, 0 <= i < p

For( j = 0 ; n/p

1 ; j++ )

If( (j*p + i) < n )

Write( 0, A[j*p + i] );

... ... Segmentos com p posições ...

...

Segmento 0

Segmento 1

Segmento n/p

(10)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

37



Inicializar um vetor de tamanho n com valor 0 em todas

posições.

PRAM

Entradas:

- Vetor A[n]

- Processador i, 0 <= i < p

For( j = 0 ; j < (n/p – 1) ; j++ )

If( (j*p + i) < n )

Write( 0, A[j*p + i] );

... ... Segmentos com p posições ...

...

Segmento 0

Segmento 1

Segmento n/p

Supondo p = 100 e n = 1000

-O processador 0 inicializa as posições: 0

,

100

,

200

... 900

-O processador 1 inicializa as posições: 1

,

101

,

201

... 901

-O processador 99 inicializa as posições: 99

,

199

,

299

... 999

passos

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

38



Criar p-1 cópias de um vetor de tamanho n.

PRAM

Entradas:

- Vetor A[n]

- Processador i, 0 <= i < p

For( j = 0 ; j <= n ; j++ ) {

Read( A[j], x );

Write( x, A[n*i+j] );

}

...

Vetor A



Criar p-1 cópias de um vetor de tamanho n = 2

k

PRAM

Entradas:

- Vetor A[n]

- Processador i, 0 <= i < p

For( j = 0 ; j <= n ; j++ ) {

Read( A[j], x );

Write( x, A[n*i+j] );

}

... ... ...

...

Vetor A

(original)

Cópia 1

Cópia p-1

Supondo p = 100

-O processador 0 sobre escreve A com o valor original.

-O processador 1 produz a cópia 1.

-O processador 99 produz a cópia 99.

PRAM



Dado um vetor

A

, com n elementos, tal que n = 2

k

,

encontrar a soma dos elementos deste vetor.

Entradas:

- Vetor A[n], n = 2k

- Processador i, 0 <= i < p

Read( A[i], a );

Write( a, B[i] );

For( j = 0 ; j < log n ; j++ ) {

If( i <= n/2 ) {

Read( B[2*i], x );

Read( B[2*i+1], y );

z = x + y;

Write( z, B[i] );

}

If( i == 0 ) Write( z, S );

A

B

+

j = 0

+

j = 1

+

j = 2

+

j = 3

(11)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

41

PRAM



Dado duas matrizes

A

e

B

com m x m elementos,

encontrar a matrix

C = A * B

.

Entradas:

- Matrizes A[m,m] e B[m,m]

- Processador (i, j), 0 <= i,j < m

Atenção: m

2

processadores!

aux = 0;

For( j = 0 ; j < m-1 ; j++ ) {

For( k = 0 ; k < m-1 ; k++ ) {

Read( A[i,k], a );

Read( B[k,j], b );

aux = aux + a*b;

}

}

Write( aux, C[i,j] );

A

B

i

j

C

C[i,j]

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

42

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

Ferramentas para Programação em Processadores Multi-Core

Modelos com atraso de comunicação



Modelos



UET: Unit Execution Time



UCT: Large Communication Time



LCT: Unit Communication Time



SCT: Short Communication Time



Algoritmos de lista

Ferramentas para Programação em Processadores Multi-Core

Grafo para os exemplos

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

(12)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 45

UET

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

v4 v7 v9

v2 v5 v8 v10

v1 v3 v6 v11

Processador

Tempo

UET

Tempo de computação das tarefas é unitário, não considera custo de comunicação.

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 46

UET – UCT

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

v4

v7 v9

v2 v6 v3 v11

v1 v5 v8 v10

Processador

v5

v11

v8

v1’ v3

v11

v1 v4 v2 v6

Tempo

v1”

v9

v10

Tempo de computação das tarefas é unitário, não considera custo de comunicação.

Sem duplicação

Com duplicação

UET - LCT

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

v5 v8

v11

v2 v6

v9

v10

v1 v3 v4 v7

v4

v7 v9

v2 v6

v3

v11

v1

v5 v8 v10

v1

v1

Tempo

Sem duplicação

Com duplicação

Processador

Tempo de computação das tarefas é unitário, mas o tempo de comunicação é dado

por

γ

> 1.

No exemplo,

γ

= 2,5 tempos

SCT

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

v7

v2 v4

v9

v1 v3 v6 v11

v5

v7 v9

v8 v10

v3

v1

v6 v11

v2

v4

Tempo

Sem duplicação

Com duplicação

Processador

Premissa: a maior comunicação consome menos tempo que a menor computação.

(13)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

49

Algoritmo de lista



O algoritmo é dividido em tarefas, as tarefas

dependem de resultados prévios:



Vértices representam as tarefas



Arcos representam a ordem de execução das tarefas



Propriedade interessante:



Onde:



T

1

: Custo total de computação



T

: Custo de computação no caminho crítico



p

: número de processadores disponíveis

T

1

T

p

T

1

p p

T

p

+ T

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

50

Algoritmo de lista



Teorema de Graham (1969):



O tempo de processamento paralelo é dependente do

tempo de processamento necessário para computar as

tarefas no caminho crítico.



Não considera outros custos (overhead, comunicação).



Existem heurísticas para implementação desta

estratégia em algoritmos de escalonamento dinâmicos.

T

1

T

p

T

1

p p

T

p

+ T

Ferramentas para Programação em Processadores Multi-Core

Modelos realísticos



Duas categorias:



Aproximam máquinas de forma genérica



LogP



Permitem algoritmos portáveis e eficazes



BSP

Ferramentas para Programação em Processadores Multi-Core

LogP



Número finito de processadores, custos de

comunicação.



L

- Tempo de trânsito da mensagem



o

- custo adicional de envio e recepção



g

- intervalo entre envios/recepções seguidos



P

- número de processadores

(14)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 53

LogP

o

v1

Tempo

Processador

P

1

P

2

v3

. . .

v0

v2

v4

. . .

o

L

g

L

- Tempo de trânsito da mensagem

o

- custo adicional de envio e recepção

g

- intervalo entre envios/recepções

seguidos

P

- número de processadores

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

54

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 genéricos.

LogP

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

Tempo

Processador

v11

v2 v6

v1 v5 v8 v10

o = 0,125

L = 0,25

g <= 1

v3 v4 v7 v9

LogP

v1

v2

v4

v10

v3

v5

v7

v6

v8

v9

v11

v11

v2 v6

v1 v5

v8 v10

Tempo

o = 0,125

L = 0,25

g <= 1,5

Processador

v3 v4 v7

v9

v11

v2 v6

v1 v5 v8 v10

o = 0,125

L = 0,25

g <= 1

v3 v4 v7 v9

(15)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

57

BSP - princípios



BSP – Bulk Synchronous Parallel



Modelo programação



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



Arquitetura:



p processadores com memória local



Meio de interconexão gerenciado por um roteador



Processadores são sincronizados em intervalos regulares de L

unidades de tempo



Algoritmo:



Seqüência de superpassos:



Computações locais



Comunicações com outros processadores



Uma barreira a cada L unidades de tempo

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 58

BSP - princípios



Parâmetros:



n

– tamanho do problema



p

– número de processadores



L

– tempo mínimo entre duas sincronizações (latência)



g

– relação computação/comunicação da arquitetura



Modelo de custo:

T

1

+ gH + LT



T

1

: custo total da computação



H

: custo total de comunicação



T

: número de superpassos.

Ferramentas para Programação em Processadores Multi-Core

BSP – princípios

. . .

. . .

Superpasso

Barreira

Comunicação

Ferramentas para Programação em Processadores Multi-Core

BSP



BSP



Abstração para o multithreading

(16)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

61

Classificação de Skillicorn e Talia



Paralelismo implícito



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



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



Mapeamento implí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

62

Ferramentas de Programação

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

Modelo

Arquitetura

Ferramenta de programação

Ferramentas de programação



Modelo von Neumann



Tarefa: instruções



Executadas seqüencialmente;



Lógicas e aritméticas;



Leitura e escrita em memória.



Comunicação: memória



Informações transmitidas entre instruções.



Sincronização: dependência de dados



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

terminado.

(17)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

65

Ferramentas de programação

Execução Seqüencial: modelo von Neumann

I1: MOV DX, 0

I2: MOV AX, [313]

I3: ADD DX, AX

I4: DEC AX

I5: CMP AX, 0

I6: JNE I3

I7: MOV AX, [313]

I8: CALL RotinaImpressão

Efeito da execução de

uma instrução:

Escrita em memória

Comunicação

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

66

Ferramentas de programação

Execução Seqüencial: modelo von Neumann

I1: MOV DX, 0

I2: MOV AX, [313]

I3: ADD DX, AX

I4: DEC AX

I5: CMP AX, 0

I6: JNE I3

I7: MOV AX, [313]

I8: CALL RotinaImpressão

Premissa para executar

uma instrução:

Dados de entrada

em memória

Sincronização

Ferramentas para Programação em Processadores Multi-Core

Ferramentas de programação

Execução Seqüencial: modelo von Neumann

I1: MOV DX, 0

I2: MOV AX, [313]

I3: ADD DX, AX

I4: DEC AX

I5: CMP AX, 0

I6: JNE I3

I7: MOV AX, [313]

I8: CALL RotinaImpressão

I1

I2

I3

I4

I5

I6

I7

I8

Ferramentas para Programação em Processadores Multi-Core

Ferramentas de programação

Tarefa

Código

Seqüen-cial

Parte do

todo

Produz

resultado

Sincronização

Controle

Depen-

dência

Exclusi-vidade

(18)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008 14 a 17 de janeiro de 2008 69

Ferramentas de programação

Tarefa

Código

Seqüen-cial

Parte do

todo

Produz

resultado

Sincronização

Controle

Depen-

dência

Exclusi-vidade

O que deve ser feito:

Comunicação

Sessões críticas e dependências entre tarefas

Troca de dados entre tarefas

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

70

De Modelos para Ferramentas



Modelos para aplicação:



Estratégia mais comum: Grafos

Um grafo representando as relações entre tarefas

pode incluir mais ou menos informações sobre

a execução:

• Dependência de execução; ou,

• Dependência de dados.

De Modelos para Ferramentas



Modelos para aplicação:



No modelo von Neumann

O grafo representa a ordem em que as instruções

devem ser executadas, considerando a ordem em

que encontram-se definidas no código-fonte.

Ordem Lexicográfica

De Modelos para Ferramentas



Modelos para aplicação:



Casos práticos na concorrência: Cilk



Linguagem:



spawn(função)



sync // aguarda o término de todos as filhas



Arquitetura:



n processadores executando



Memória compartilhada

(19)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

73

De Modelos para Ferramentas



Modelos para aplicação:



Casos práticos na concorrência: Athapascan-1



Linguagem:



shared<x>



fork<função>(parâmetros) // modos de acesso



Arquitetura:



n processadores executando



Memória compartilhada



Grafo controlando a troca de dados entre tarefas

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

74

De Modelos para Ferramentas



Modelos para aplicação:



Casos práticos na concorrência: Anahy



Linguagem:



id = athread_create(função, parâmetros)



athread_join(id, res) // sincroniza e recupera



Arquitetura:



n processadores executando



Memória compartilhada



Grafo controlando a ordem de execução, informando

relações de troca de dados

Ferramentas para Programação em Processadores Multi-Core

De Modelos para Ferramentas



Modelos para máquinas:



Casos práticos na concorrência:multiprogramaçãoleve



Shared Memory Machines



Implementação do modelo MIMD (Flynn)



O programa em execução é composto possui diversos

fluxos de execução, cada um executando sua própria

seqüência de instruções e acessando um conjunto de dados

distintos em uma memória compartilhada.



Exemplo:



Threads POSIX, OpenMP, Cilk, Anahy

Ferramentas para Programação em Processadores Multi-Core

De Modelos para Ferramentas



Modelos para máquinas:



Casos práticos na concorrência: SPMD



Single Program, Multiple Data



Releitura do modelo SIMD (Flynn)



O programa em execução é composto de um único fluxo

de execução, sobre o qual é executado em várias

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

conjuntos disjuntos de dados.



Exemplo:



MPI (Message Passing Interface), PVM (Parallel Virtual

Machine), aplicações escritas com sockets

(20)

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

77

De Modelos para Ferramentas



Modelos para máquinas:



Casos práticos na concorrência: MPMD



Multiple Program, Multiple Data



Releitura do modelo MIMD (Flynn)



O programa em execução é composto de diversos fluxos

de execução, sobre o qual é executado em várias

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

conjuntos disjuntos de dados.



Exemplo:



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

Machine), aplicações escritas com sockets

Gerson Geraldo H. Cavalheiro

Ferramentas para Programação em Processadores Multi-Core LNCC – Programa de Verão 2008

14 a 17 de janeiro de 2008

78

Um programa PRAM com threads

void *func( void* in ) {

int n = (int) in; // Quem sou ?

for( i = (TAM/NTH)*i ; i < (TAM/NTH)/*(i+1) ; i++)

somalocal += vet[i]; // Realiza as somas parciais

m.lock(); // Escreve na memória com

somatotal += somatotal; // a semântica de uma operação

m.unlock(); // de escrita concorrente

return NULL;

}

#define TAM 100

#define NTH 10

int vet[TAM]; // suponha inicializado

int somatotal = 0;

pthread_mutex m;

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.

Ferramentas para Programação

em Processadores Multi-Core

Prof. Dr. Gerson Geraldo H. Cavalheiro

Departamento de Informática

Universidade Federal de Pelotas

Programa de Verão 2008

Referências

Documentos relacionados

Pequenos RNAs nucleolares (small nucleolar RNAs – snoRNAs) possuem ~ 60 – 300 nt, são moléculas de ação trans que funcionam como guias específicos para complexos protéicos

Dentro desta mercantilização, os trabalhadores são expostos às exaustivas horas de trabalho; à remuneração não condizente; à dívidas por servidão, não possuem

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

 Rendimentos de trabalho por conta própria, os quais são os auferidos no exercício, de forma independente, de profissão em que predomine o carácter

No Capitulo 7, foi apresentada nossa proposta para o fornecimento dos servigos para tolerancia a faltas no ambiente operacional Seljuk-Amoeba. Como foi possivel observar durante

a alma está usando esse manto vermelho quando sai, em meio à noite escura, de si mesma e de todas as coisas criadas com ânsias, em amores inflamada e sobe por esta secreta escada

PRODUTOS ORIUNDOS DA AGRICULTURA FAMILIAR -

Alguns danos provocaram perdas significativas de rigidez à tração, de até 25%, comparando-se valores obtidos em ensaios de tração confinada de geotêxteis danificados com