Paralelização em Sistemas
Computacionais
Bruno DominguesPrincipal Architect
IEEE Chairman of Computer Society para o Centro-Norte do Brasil
Agenda
• Introdução
• Princípios Computacionais
• Analise de Tempo/Espaço
• Estudos de Caso: MapReduce
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
Homem na Lua
SkyDive Stratos, 2012
Dezenas de Gigabytes
Apolo XI, 1969
64kb
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
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*
Problema Serial
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.
Problema Paralelo
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
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
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
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
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
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
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
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
Ο(𝑀 + 𝑅)
Obrigado!