3. Homem na Lua
Software
Data: 1969
64kb, 2kb, RAM, Fortran
Tem que funcionar!
Apolo XI
Velocidade: 3500km/h
Peso: 13.500 kg
Extremamente Complexo
Homem na Lua
Distância: 356.600 km
Nunca feito antes
Precisa retornar à Terra
5. 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
6. 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*
8. 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.
10. 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
12. 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
13. 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
14. 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
15. 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
16. 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