Paralelização em Sistemas Computacionais por Bruno Domingues

18
Paralelização em Sistemas Computacionais Bruno Domingues Principal Architect IEEE Chairman of Computer Society para o Centro-Norte do Brasil [email protected]

Transcript of Paralelização em Sistemas Computacionais por Bruno Domingues

Page 1: Paralelização em Sistemas Computacionais por Bruno Domingues

Paralelização em Sistemas

Computacionais

Bruno DominguesPrincipal Architect

IEEE Chairman of Computer Society para o Centro-Norte do Brasil

[email protected]

Page 2: Paralelização em Sistemas Computacionais por Bruno Domingues

Agenda

• Introdução

• Princípios Computacionais

• Analise de Tempo/Espaço

• Estudos de Caso: MapReduce

Page 3: Paralelização em Sistemas Computacionais por Bruno Domingues

Homem na Lua

SoftwareData: 1969

64kb, 2kb, RAM, Fortran

Tem que funcionar!

Apolo XIVelocidade: 3500km/h

Peso: 13.500 kg

Extremamente Complexo

Homem na LuaDistância: 356.600 km

Nunca feito antes

Precisa retornar à Terra

Page 4: Paralelização em Sistemas Computacionais por Bruno Domingues

Homem na Lua

SkyDive Stratos, 2012

Dezenas de Gigabytes

Apolo XI, 1969

64kb

Page 5: Paralelização em Sistemas Computacionais por Bruno Domingues

Desafios

Precisamos paralelizar as operações com os dados mas isso é muito complexo e caro...

O negócio não consegue acessar os dados relevantes e o tempo todo precisa de dados externos...

Não podemos tratar em tempo os dados dos clientes para melhorar a interação com eles...

Não dá para colocar todos os dados no modelo star-schema...

Os relatórios de BI não dizem algo que já não se sabe...

Não é mais possível processar os dados dentro da janela de ETL...

Não é possível predizer com boa margem de certeza se não se pode explorar os dados e desenvolver os próprios modelos

Page 6: Paralelização em Sistemas Computacionais por Bruno Domingues

O que é computação paralela?

• Tradicionalmente, software são escritos para serem

seriais:

– Rodar em um único computador tendo apenas uma CPU;

– Um problema é quebrado em uma séria de problemas

discretos;

– Instruções são escritas uma depois da outra;

– Apenas uma instrução pode ser executada em um

determinado instante*

Page 7: Paralelização em Sistemas Computacionais por Bruno Domingues

Problema Serial

Page 8: Paralelização em Sistemas Computacionais por Bruno Domingues

Computação Paralela

• Computação paralela é a forma em quem múltiplos

cálculos são realizados de forma paralela;

• De forma simples, é usa-se múltiplos recursos

computacionais de forma simultânea para resolver

um problema:

– Rodando em múltiplas CPUs

– O problema é quebrado de forma que possam ser resolvidos

de forma paralela;

– Cada parte é então quebrada em series de instruções;

– Essas instruções de cada parte são executadas

simultaneamente em diferentes CPUs.

Page 9: Paralelização em Sistemas Computacionais por Bruno Domingues

Problema Paralelo

Page 10: Paralelização em Sistemas Computacionais por Bruno Domingues

Motivação

• Principais razões:

– Economia de tempo/dinheiro;

– Resolve grandes problemas: e.g. pesquisa da Internet /

processamento de base de dados de milhões de transações

por segundo;

– Permite concorrência;

– Uso de recursos remotos;

– Limites da computação serial:

• Velocidade das transações – a velocidade da computação serial está

diretamente relacionado a quão rápido movemos o dado pelo hardware;

• Limites de miniaturização;

• Limitações econômicas – os custos de fazer uma CPU (core) mais rápido

esbarra com problemas de viabilidade econômica e fisicas

Page 11: Paralelização em Sistemas Computacionais por Bruno Domingues

Perspectiva Histórica da Lei de Moore

0.1

1

10

100

1000

10000

100000

1970 1980 1990 2000 2010

Densidade de Potência (W/cm²)

Densidade de Potência (W/cm²)

4004 8008

8080

80858086

268

386

486

Pentium©

Superfície Solar

Bocal de Foguete

Reator Nuclear

Placa Quente

Desempenho por frequencia:+20% GHz = +13% perf / +70% W

Desempenho por # core:

x2 cores = +70% perf / +13% W

Térmica

Page 12: Paralelização em Sistemas Computacionais por Bruno Domingues

Arquitetura Von Neumann

• Nos últimos 50 anos, virtualmente todos

os computadores seguem o modelo

conhecido como computador de von

Neumann. Nome dados ao matemático

Húngaro John von Newmann.

• Um computador von Newmann use o

conceito de programa armazenado. A

CPU executa o programa armazenado

que especifica a sequencia de

operações de leituras e escritas na

memória

Page 13: Paralelização em Sistemas Computacionais por Bruno Domingues

Taxonomia de Flynn

• Existem diferentes formas de classificar o

paralelismo. O mais usado deste 1966 é chamado de

taxonomia de Flynn

• A taxonomia de Flynn distingue arquitetura de

computadores multiprocessador de acordo como

eles podem ser classificados em duas dimensões de

Instruções e Dados. Cada uma destas dimensões

possuem apenas dois possíveis estados: Single ou

Multiple

Page 14: Paralelização em Sistemas Computacionais por Bruno Domingues

Lei de Amdahl

• A Lei de Amdahl diz que o potencial de aumento de velocidade de um

programa é definido pela fração de código (P) que pode ser

paralelizada:

𝑣𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑𝑒 =1

1 − 𝑃• Se nada na código pode ser paralelizável, P=0 então a velocidade = 1

(i.e. sem aumento). Se todo o pedaço de código pode ser

paralelização, P=1 então o aumento de velocidade é infinito (em

teoria – lembre-se de Métodos Matemáticos da Física)

• Se 50% do código pode ser

paralelizável, o maior aumento de

velocidade = 2, significando que o

código pode ser executado na

metade do tempo, i.e. duas vezes

mais rápido

Page 15: Paralelização em Sistemas Computacionais por Bruno Domingues

Lei de Amdahl

• Introduzindo o número de processadores/nós

realizando uma fração do trabalho, a relação poderá

ser então normalizada da seguinte forma:

𝑉𝑒𝑙𝑜𝑐𝑖𝑑𝑎𝑑𝑒 =1

𝑃𝑁 + 𝑆

• Onde P= fração paralela, N = numero de

processadores/nós e S= fração serial

Page 16: Paralelização em Sistemas Computacionais por Bruno Domingues

Lei de Amdahl

• Não demora muito para perceber que existe um

limite para o paralelismo. Por exemplo, com P =0.5,

0.9 e 0,99 (50%, 90% e 99% do código paralelizável)

velocidade

--------------------------------

N P = .50 P = .90 P = .99

----- ------- ------- -------

10 1.82 5.26 9.17

100 1.98 9.17 50.25

1000 1.99 9.91 90.99

10000 1.99 9.91 99.02

Page 17: Paralelização em Sistemas Computacionais por Bruno Domingues

Estudo de Caso: MapReduce

Partição 1

Partição 2

Partição 3

Partição 4

Partição 5

Worker

Worker

Worker

Worker

Worker

Saída 1

Saída 2

Master

Programa

usuário

Ο(𝑀 + 𝑅)

Page 18: Paralelização em Sistemas Computacionais por Bruno Domingues

Obrigado!