Processamento Concorrente e Paralelo

Transcrição

Processamento Concorrente e Paralelo
Processamento
Concorrente e
Paralelo
Jairo Panetta
ITA/IED
Petrobras/E&P/Tecnologia Geofísica
INPE/CPTEC/DMD/PAD
1
Bibliografia
•
Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing,
2nd edition, Addison Wesley, 2003
–
•
M. Ben-Ari: Principles of Concurrent and Distributed Programming, Addison Wesley, 2006.
–
•
2
Técnicas de otimização e de compilação para paralelismo.
John L. Hennessy, David A. Patterson: Computer Architecture: A Quantitative Approach, 4th
edition, Morgan Kaufmann, 2007.
–
•
Ênfase em hardware e seus impactos em software.
Michael Wolfe: High Performance Compilers for Parallel Computing, Addison-Wesley, 1996.
–
•
Um dos melhores livros em aplicações.
David E. Culler, Jaswinder Pal Singh, Anoop Gupta: Parallel Computer Architecture, a
Hardware/Software Approach, Morgan Kaufmann, 1999.
–
•
Pioneiro em livros sobre concorrência (primeiro livro em 82).
Jack Dongarra, Ian Foster, Geoffrey Fox, William Gropp, Ken Kennedy, Linda Torczon, Andy
White: Sourcebook of Parallel Computing, Morgan Kaufmann, 2003.
–
•
Princípios Gerais de Paralelismo; Visão Algoritmica.
Biblia de arquitetura de computadores
Papers.
Introdução a
Processamento
Concorrente e
Processamento
Paralelo
3
Concorrência x Paralelismo
• Suponha que um conjunto de programas
cooperam para realizar uma computação.
• Tradicionalmente, concorrência é utilizada
quando os programas podem ser executados
simultaneamente em um ou múltiplos
processadores.
• Tradicionalmente, paralelismo é utilizado
quando os programas são executados
simultaneamente em múltiplos processadores.
4
Processamento
Concorrente é a
composição de múltiplas
partes de uma única
computação que podem ser
executadas
simultaneamente
5
Processamento Paralelo é
a execução simultânea de
múltiplas partes de uma
única computação para
reduzir seu tempo de
execução
6
Concorrente x Paralelo
• Processamento Concorrente está estruturado
para ser executado simultaneamente
– mas não necessariamente realiza
• Processamento Paralelo realiza a
simultaneidade
• Exemplo: Com uma única CPU (“core”), é
possível realizar Processamento Concorrente e
testar a correção de Processamento Paralelo,
mas não é possível reduzir o tempo de
execução.
7
Outra forma:
• Processamento Concorrente mantêm duas ou
mais ações em progresso simultaneamente.
• Processamento Paralelo executa duas ou mais
ações simultaneamente
• Novamente, uma CPU (core) só faz
Processamento Concorrente
• Há vantagens em se estruturar uma
computação concorrentemente, mesmo com
uma única CPU
– encapsulamento, melhor uso do recurso (CPU), etc...
8
Exemplos de Processamento Paralelo
•
Copiar (“xerox”) documento da ordem de 10.000 páginas utilizando
– 1 copiadora
– 2 copiadoras
– ...
•
Cavar uma vala horizontal de 10km de comprimento por 2m de diâmetro
utilizando
– 1 trabalhador
– 2 trabalhadores
– ...
•
Escrever um arquivo em disco utilizando
– 1 servidor de arquivos
– 2 servidores de arquivos
– ...
•
Prever numericamente o tempo no futuro utilizando
– 1 CPU
– 2 CPUs
– ...
9
Características básicas de
Processamento Paralelo
• Requer a replicação (total ou parcial) de
entidades trabalhadoras
–
–
–
–
múltiplas copiadoras
múltiplos trabalhadores
múltiplos servidores de arquivos
múltiplas CPUs
• Requer alterar a forma de realizar a tarefa para
usufruir da replicação
• Ao replicar n entidades deseja-se dividir o
tempo de execução da tarefa por n
– máximo teórico; porque?
10
Copiar 10.240 páginas
• Suponha:
– original entregue em ordem crescente das páginas numeradas;
– copia deve ser entregue da mesma forma
– uma única pessoa divide o original em partes iguais a serem
copiadas, entrega para os copiadores e recolhe as cópias
– cada copiadora copia uma única parte
– 1 segundo para copiar uma página
– 5 segundos para encontrar uma página em um bloco de páginas
– 5 segundos para juntar dois blocos de páginas copiadas
• Estime o tempo (s) para realizar a tarefa utilizando
– 1, 2, 4, 8, 16, 32 e 64 copiadoras
11
Estimativa Grosseira
Hipótese: tempo total = tempo de entrega sequencial das partes +
tempo de copiar uma parte + tempo de recolher a última parte
Máquinas
12
Tempo (s)
Ganho
dividir
copiar
juntar
total
1
0
10240
0
10240
1,00
2
5
5120
5
5130
2,00
4
15
2560
5
2580
3,97
8
35
1280
5
1320
7,76
16
75
640
5
720
14,22
32
155
320
5
480
21,33
64
315
160
5
480
21,33
falha hipótese da estimativa
(recolhe cópias enquanto o último copiador trabalha)
ERRADO
Copiar 10.240 páginas
• Como utilizar eficientemente 1024 copiadoras?
– Alterando os mecanismos de distribuição de dados e de coleta
de resultados
• O procedimento (algoritmo) muda com o volume de
paralelismo
– pois muda o gargalo da tarefa
• E se uma copiadora for 10% mais lenta que as outras?
– típico de grande número de máquinas iguais
• E se uma copiadora quebrar?
– Tolerância a falhas é desejável; as vezes, imprescindível
13
Cavar vala de 10km
• Exemplo atribuído ao Prof. Siang W. Song (IME/USP)
• Similar ao exemplo anterior. Assuma terreno demarcado, número
crescente de trabalhadores equipados e um capataz.
– Quais são os fatores que impedem redução “ótima” do tempo de
execução com o aumento do número de trabalhadores?
• E se a vala for vertical?
• Há problemas inerentemente sequenciais
– alterar 1 bit na memória
• Pequenas variações do problema podem causar grandes variações
no algoritmo
14
Níveis de Paralelismo
15
Níveis de Paralelismo
• Paralelismo ao nível de bits
– BLP: Bit Level Parallelism
– Acelera a execução de uma instrução aumentando a largura do
datapath (microprocessadores de 4, 8, 16 e 32 bits)
– Muito explorado até meados da década de 80; praticamente esgotado
• Paralelismo ao nível de instruções
– ILP: Instruction Level Parallelism
– Execução simultânea de múltiplas instruções ou trechos: RISC, VLIW,
Superscalar
– Muito explorado até meados da década de 90; praticamente esgotado
• Paralelismo ao nível de tarefas
– TLP: Thread Level Parallelism
– Múltiplos fluxos de execução simultâneos: Multi-core chips,
Multithreading, etc...
• Curso concentrado em TLP
– Alguns casos de ILP
Culler, Cap. 1
16
Paralelismo é utilizado
desde os primórdios da
computação
17
Soma de dois inteiros de n bits
• Sejam X e Y dois inteiros de n bits
– representados por xi e yi, i=0,...,n-1
– bit 0 o menos significativo
• Obter sua soma Z=zi, utilizando operações
lógicas de um bit:
– “e” lógico, representado por xiyi
– “ou” lógico, representado por xi + yi
– “ou exclusivo” lógico, representado por xi # yi
18
M. D. Ercegovac, T. Lang, “Digital Systems and
Hardware/Firmware Algorithms”, John Wiley & Sons
Algoritmo tradicional
• Seja ci o carry para o bit i
– da soma dos bits 0,...,i-1
– defina c0=0
• Então (pense quando o bit resultante for 1)
zi = xi # yi # ci
ci+1 = xiyi + ci(xi # yi)
• Ou seja:
– bit i da soma é 1 sse
• apenas um dos três bits xi yi ci for 1, ou
• os três bits xi yi ci forem 1
– haverá carry sse
• carry for gerado neste bit (xiyi), ou
• houver carry do bit anterior (ci) e for propagado por este bit (xi # yi)
19
Algoritmo tradicional
• Algoritmo:
c0 = 0
for i = 0 : n-1 : 1 ! índice = primeiro : ultimo : passo
zi = xi # yi # ci
ci+1 = xiyi + ci(xi # yi)
end for
• Algoritmo sequencial (por que?)
– recursão, pois ci+1 = f(ci)
20
Algoritmo tradicional
• Interior do laço original:
zi = xi # yi # ci
ci+1 = xiyi + ci(xi # yi)
• Defina gi (gera carry) e pi (propaga carry) por
– gi = xiyi
– pi = xi # yi
• Então o interior do laço pode ser escrito:
gi = xiyi;
zi = pi # ci;
pi = xi # yi
ci+1 = gi + cipi
• Os bits propaga e gera podem ser obtidos em um único passo
(paralelo) para todos os i=0,...,n-1;
– falta resolver a recursão no carry (obter todos simultaneamente)
– quando resolvida, zi pode ser obtido em paralelo para todos os i
21
Recursões
• Recursão de profundidade 1:
ci+1 = f(ci)
• Técnica para gerar recursão de profundidade 2:
ci+2 = f(ci+1) = f(f(ci))
• E assim sucessivamente...
• Técnica exaustivamente utilizada para gerar
paralelismo, quer aumentando a profundidade da
recursão quer, no extremo, eliminando a recursão
22
Carry – Lookahead Adder
• Como
ci+1 = gi + ci pi
ci+2 = gi+1 + ci+1pi+1
• Então substituindo ci+1 por sua expressão
ci+2 = gi+1 + (gi + ci pi)pi+1 = gi+1 + gi pi+1+ ci pi pi+1
• Algoritmo na metade dos passos do original:
for i = 0 : n-1 : 2
gi = xi yi;
gi+1 = xi+1 yi+1;
pi = xi # yi;
pi+1 = xi+1 # yi+1 ;
zi = pi # ci;
zi+1 = pi+1 # ci+1 ;
ci+1 = gi + cipi; ci+2 = gi+1 + gi pi+1+ ci pi pi+1;
end for
23
Carry – Lookahead Adder
• Sucessivamente: de
ci+1 = gi + ci pi
ci+2 = gi+1 + ci+1pi+1
– geramos
ci+2 = gi+1 + (gi + ci pi)pi+1 = gi+1 + gi pi+1+ ci pi pi+1
– e sucessivamente incrementando i e substituindo ci+1,
ci+3 = gi+2 + gi+1pi+2 + gi pi+1 pi+2 + ci pi pi+1 pi+2
ci+4 = gi+3 + gi+2 pi+3 + gi+1pi+2 pi+3 + gi pi+1 pi+2 pi+3 + ci pi pi+1 pi+2 pi+3
......
• Até obter cn-1 = f(c0), eliminando a recursão
– Na prática, limitado por fan-in das portas lógicas
24
Carry – Lookahead Adder
• Laço original gera um bit por iteração; há n
iterações
– recursão de profundidade 1
• Laço paralelo gera dois bits por iteração; há n/2
iterações
– recursão de profundidade 2
• Laço paralelo pode gerar quantos bits forem
necessários, aumentando a profundidade da
recursão ou, eventualmente, eliminando-a
25
Métricas de Desempenho
26
Speed-up
• Mede o ganho (no tempo de execução)
em utilizar p processadores
S(p) = T(1)/T(p)
• Teoricamente, S(p) ≤ p
• Na prática, características do computador
alteram tais limites
27
Eficiência
• Mede a eficiência em utilizar p
processadores
E(p) = T(1) / (p*T(p))
E(p) = S(p) / p
28
Lei de Amdahl - Sumário
Se a fração seqüencial do tempo de
execução de um programa é f, o ganho
(speed-up) máximo é
S(p) = 1/f
para qualquer número de processadores.
Gene M. Amdahl, “Validity of the single processor approach
to achieving large scale computing capabilities”, AFIPS
spring joint computer conference, 1967
29
Lei de Amdahl em Detalhe
30
Lei de Amdahl - Demonstração
31
Lei de Amdahl - Implicações
Speed-up máximo em função da fração do tempo de execução sequencial mantida
sequencial na execução paralela
1000
1000
500,2
90,9
10
9,91
Speed-up
100
1
1
10
100
Processadores
f=0
32
f=0,1%
f=1%
f=10%
1000
Formas de Speed-up face a Amdahl
• Tipicamente, a fração do tempo sequencial diminui com
o tamanho do problema
– Técnica comum quando o speed-up não é bom: aumentar
artificialmente o tamanho do problema(1)
– Mas há casos em que o aumento é necessário para observar
efeitos invisíveis em problemas menores(2)
• Strong speed-up
– Mantém o tamanho do problema e escala o número de
processadores
• Weak speed-up
– Escala o tamanho do problema com o número de processadores
(1)
D. H. Bailey: Twelve Ways to Fool the Masses When Giving
Performance Results on Parallel Computers, Supercomputing
Review, Aug. 1991
33(2)J. L. Gustafson: Reevaluating Amdahl’s Law, CACM May 1988
Porque Paralelismo?
Há Motivos Perenes
34
Desde que existem computadores
• Aplicações (usuários) requerem computadores cada vez
mais potentes
• Velocidade e poder computacional de CPUs crescem a
velocidade assombrosa
– Base: Lei de Moore (veremos em seguida)
• Requisitos das aplicações (usuários) crescem mais
rapidamente do que a velocidade das CPUs
• Acoplar múltiplas CPUs é uma forma viável de reduzir a
distância entre as necessidades dos usuários e a
velocidade de uma única CPU
35
Requisitos dos Usuários
• Usuários estão insatisfeitos com os modelos
matemáticos utilizados nas simulações
computacionais (não representam aspectos
críticos da realidade)
• Modelos matemáticos mais precisos requerem
computadores ordens de magnitude mais
velozes que os atualmente disponíveis (verdade
“desde sempre”)
• Exemplo: Modelo de Circulação Global
36
Ex: Modelo Global do CPTEC
37
Resolução
Horizontal
(km)
Flops por
Dia de Previsão
(normalizado)
Dias de Previsão
por Dia de CPU
(1 CPU NEC SX6)
210
1
995
105
6
100
63
52
16
40
219
7
20
727
1
Complexidade O(1/resolução4)
Forecast Days per Day as function of Model Resolution (km) and Processor Count
700
600
26 (ECMWF)
F o recast D ays
500
79
79
83 (BOM)
40 (ECMWF)
400
26 (ECMWF)
300
63
79
60 (UK)
40 (ECMWF)
63
200
26 (ECMWF)
26 (ECMWF)
79
63
100
26 (ECMWF)
79
53
42
0
1
53 53
63
63
38
26 (ECMWF)
53
42
53
42
10 (ES)
10 (ES) 10 (ES)
42 42
10
Velocidade mínima para
produção10 (ES)
100
Processors
1000
10 (ES)
10 (ES)
10000
Aumentando a Resolução
39
Caso geral: Top500
• Lista dos 500 computadores mais rápidos do mundo
– métrica: velocidade efetiva na solução de sistema denso de equações
lineares em dupla precisão utilizando Linpack (High Performance
Linpack) de tamanho escolhido pelo usuário
– classificação: velocidade efetiva medida em flop/s (floating point
operations per second)
– submissão: usuários interessados executam HPL e enviam resultados
(logo, pode haver máquinas potentes fora da lista)
– site: http://www.top500.org
– importância: Rara base histórica de dados (duas listas por ano,
mantidas desde 1993)
– início: planilha de Linpack compilada por Jack Dongarra desde 1980;
vide http://www.netlib.org
• Ser número 1 no Top500 é objeto de desejo (“priceless”)
– HPL é um dos programas mais extensamente otimizados, por
fabricantes, da história de computação
– Dificilmente um programa obterá velocidade efetiva maior que a do
HPL na mesma máquina
40
Top 500 June 2009
V Pico
(TFlop)
V Linpack
(TFlop)
RoadRunner – Los Alamos,
129 600
USA
1 456
1 105
IBM Blade:
PowerPC + Cell
Jaguar – Oak Ridge, USA
150 152
1 381
1 059
Cray XT5:
Opteron
Jugene – Juelich, Germany
294 912
1 002
825
IBM Blue Gene/P:
PowerPC
Pleiades – NASA Ames,
USA
51 200
608
487
SGi Altix (Xeon)
BlueGene/L – Lawrence
Livermore, USA
212 992
596
478
IBM Blue Gene/L:
PowerPC
Máquina - Local
http://www.top500.org
41
Cores
(CPUs)
Fabricante Processador
Top500: Visão Histórica
Soma
#1
#500
LapTop
http://www.top500.org
42
Projeção de Desempenho
Cray 2
1 GFlop/s
O(1) Thread
ASCI Red
1 TFlop/s
O(103) Threads
Jack Dongarra, Invited Talk, SIAM 2008 Annual Meeting
43
Roadrunner
1 PFlop/s
O(106) Threads
??
1 EFlop/s
O(109) Threads
Caso geral: Gordon Bell Award
• Aplicação completa mais rápida do mundo
no ano
– premio dado anualmente no Supercomputing
– nos últimos anos, também é necessário ter
conteúdo científico
– alto esforço de otimização, mas menor que
HPL; por isso, mais próxima do “usuário
comum”
– submetida por usuários
44
HPL x Gordon Bell
10.000,00
Máquina de
propósito
específico
1.000,00
TFlop/s
100,00
Gordon Bell (precisão mista)
supera HPL (precisão dupla)
10,00
1,00
1992
1994
1996
1998
2000
2002
2004
0,10
0,01
Ano
Gordon Bell
45
HPL
2006
2008
2010
Sumário: Porque Paralelismo?
• Usuários continuarão a demandar maior
potência computacional, alcançável por
paralelismo
– até quando paralelismo resolve?
– “I know how four ox can push a wagon, but not 1024
chickens”
• Entretanto, há motivos mais recentes para usar
paralelismo
– motivos alheios à vontade dos usuários e dos
fabricantes
46
Porque Paralelismo?
Há Motivos Recentes
47
Lei de Moore
• Enunciado:
• A quantidade de componentes por circuito
integrado dobra a cada ano (1965)
• ... a cada dois anos (1975)
• ... a cada 18 meses (atual)
48
Lei de Moore
Primeira forma (1965):
– Quantidade de componentes por circuito
integrado que minimiza o custo por
componente dobra a cada ano
– Observação (não “lei”) no trabalho original
– Extrapolação baseada em 5 pontos
– Moore sugeriu reconsiderar após 10 anos
Segunda forma (1975):
– Quantidade de componentes por circuito
integrado dobra a cada dois anos
– Moore nunca disse 18 meses (intel
aponta 18 meses)
– Profecia auto realizável
Gordon Moore: “Cramming more components onto
integrated
49
circuits”, Eletronics v.38, N.8, 1965;
Verificação da Lei de Moore
Dobra a cada 24 meses
Dobra a cada 18 meses
http://www.intel.com/technology/mooreslaw
50
Força Motriz da Lei de Moore
Tecnologia de Litografia constantemente
reduz tamanho de componentes em CI
G. Moore, palestra convidada ISSCC 2003
51
Até recentemente
Canalizar aumento no número de componentes para
aumentar a freqüência de operação gera CPUs
progressivamente mais rápidas
G. Moore, palestra convidada ISSCC 2003
52
Mas o ganho anual em
velocidade de um
processador é bem menor
que o ganho anual no
número de componentes,
pois há barreiras
53
Mas há barreiras: Memory Wall
•A velocidade de acesso à memória escala mais lentamente que a
velocidade da CPU, ao longo dos anos
•Acesso à memória torna-se o gargalo da eficiência
•Largura de banda (bandwidth) vem sendo acomodada (economia)
•Latência (latency) é a questão crucial
J. L. Gaudiot, palestra convidada SBAC 2006
54
Mas há barreiras: Power Wall
•Dissipação atingiu níveis intoleráveis
Figura: Fred Pollack, palestra convidada MICRO 1999
S. Borkar, “Design Challenges of Technology Scaling”, IEEE Micro, July 1999
55
Dissipação de Potência
Pentium e Dissipador, 2005
Pentium e Dissipador, 1995
www.tomshardware.com/2005/11/21/the_mother_of_all_cpu_charts_2005
56
Dissipação de Potência impede novo
aumento de frequência
www.tomshardware.com/2005/11/21/the_mother_of_all_cpu_charts_2005
57
Em síntese
Ida à memória limita aumento de velocidade
de programas, pois freqüência da
memória não escala proporcionalmente à
frequência da CPU e a latência menos
ainda (memory wall)
Dissipação térmica atinge nível absurdo
(power wall)
E há outras barreiras...
58
Paralelismo: Novos Motivos
Como usar maior número de componentes
para gerar máquinas mais rápidas?
Aumentar a freqüência não é mais possível.
Tendência clara:
Múltiplas CPUs de menor freqüência no
mesmo chip
59
Paralelismo: Novos Motivos
60
Por enquanto, poucas CPUs por chip.
61
Forte tendência de muitas PUs no
mesmo chip, idênticas ou não,
com uma ou múltiplas threads
Fonte: INTEL e AMD
Comparando ganhos anuais
Métrica
Ganho Anual
Lei de Moore
(dobra a cada 18 meses)
1,58
HPL
(mínimos quadráticos)
Gordon Bell
(mínimos quadráticos)
1,89
1,86
• HPL melhor que Moore devido a paralelismo
• Transformar ganho de Moore em ganho de velocidade
requer paralelismo
62
Porque Paralelismo: Conclusão
Paralelismo (uso simultâneo de múltiplas
CPUs em um programa) é uma tecnologia
disponível que reduz a distância entre as
necessidades dos usuários e a velocidade
de uma única CPU
Mas também é a forma viável de converter
o aumento no número de componentes da
Lei de Moore em aumento da velocidade
de processamento
63
Sumário: Tópicos Abordados
•
•
•
•
•
•
•
•
64
Definição de Paralelismo
Níveis de Paralelismo
Recursões e sua resolução
Métricas de Desempenho Paralelo
Lei de Amdahl
Necessidade e Utilidade de Paralelismo
Lei de Moore
Memory Wall, Power Wall