Processamento Paralelo Arquitetura de Sistemas Paralelos e

Transcrição

Processamento Paralelo Arquitetura de Sistemas Paralelos e
Processamento Paralelo
Arquitetura de Sistemas
Paralelos e Distribuídos
Prof. João Paulo A. Almeida
([email protected])
2013/01
Informações gerais
•  Página web:
http://nemo.inf.ufes.br/jpalmeida/ensino/
2013-01-ppd
•  Carga horária semestral total: 60 horas
•  Horário:
–  terças 15:00-17:00
–  sextas 16:00-18:00
•  Local: CT-9 sala 202
Avaliação
•  Duas provas parciais e trabalhos
•  A média parcial (MP) é calculada por:
MP = 0,6*P + 0,4*T
onde:
P é a média aritmética das provas parciais e
T é a média aritmética das notas dos trabalhos.
•  A média final (MF) será:
MF = MP, se MP ≥ 7,0 (e houver presença)
MF = (PF + MP)/2, se MP < 7,0
(PF é a nota da prova final)
•  Se MF ≥ 5,0 -> Aprovado
•  Se MF < 5,0 -> Reprovado
Material didático
•  COULOURIS, George F.; DOLLIMORE, Jean;
KINDBERG, Tim. Sistemas distribuídos:
conceitos e projeto. 4. ed. Porto Alegre:
Bookman, 2007.
•  Distributed Systems: Concepts and Design,
4. ed. Addison Wesley, 2005.
–  Existe uma 5ª edição em inglês
•  Pelo menos os capítulos:
–  1, 2, 4, 5, 9, 19, 20
Material didático
•  Capítulo 3, seções 3.1 e 3.2 de "Introduction to Parallel
Computing" (2nd Edition) de Ananth Grama, George
Karypis, Vipin Kumar, Anshul Gupta, Addison Wesley,
2003.
•  Artigos e tutoriais online:
–  P.A. Bernstein. Middleware. Communications of the ACM,
Vol. 39, No. 2, February 1996, 86-98.
–  P. Eugster, P. Felber, R. Gerraoui, A.M. Kermarrec, The
Many Faces of Publish/Subscribe, ACM Computing Surveys,
Vol. 35, No. 2, June 2003, pp. 114–131.
–  Tutorial Java RMI:
•  http://java.sun.com/docs/books/tutorial/rmi/index.html
–  Tutorial JMS:
•  http://java.sun.com/j2ee/1.4/docs/tutorial/doc/JMS.html#wp84181
Níveis de paralelismo
1.  Paralelismo no nível de instrução
2.  Várias linhas de execução em um mesmo
processador
3.  Várias linhas de execução em diferentes
processadores (SMP, dual, quad core)
4.  Computadores paralelos
•  interconectados com redes dedicadas de alta
velocidade
5.  Cluster de computadores
6.  Computadores na Internet
Autonomia
•  Redes compartilhadas, comunicação peer-topeer, máquinas heterogêneas, problemas de
segurança, …
Paralelismo no nível de instrução
•  Velocidade (throughput) versus custo
•  Metodologias básicas para melhorar a
velocidade (fixando circuito e ISA):
–  Simplificar organização da máquina de modo a
reduzir o período do clock;
–  Reduzir número de ciclos de clock necessários
para executar uma instrução;
–  Sobrepor a execução das instruções (pipelines!!!)
•  Uma CPU, fazendo uso mais adequado do
hardware
Paralelismo no nível de instrução
•  Exemplo da lavanderia
•  Patrícia, Fernanda, Pedro, João
têm cada um saco de roupas para lavar, secar e
dobrar
•  O ciclo de lavagem leva 30 minutos
•  O de secagem leva 30 minutos
•  O tempo para dobrar é de 30 minutos
•  O funcionário leva 30 minutos
para colocar as roupas no armário
A
Lavanderia sequencial
6 PM
A
7
8
9
10
11
12
1
2 AM
30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
Tempo
B
C
D
• De maneira sequencial, eles levam 8 horas para 4 cargas
• Quanto tempo levaria se eles utilizassem a técnica de
pipeline?
Lavanderia paralela (pipeline)
6 PM
T
a
s
k
O
r
d
e
r
7
8
9
30 30 30 30 30 30 30
10
11
12
1
Tempo
A
B
C
D
• Lavanderia Pipelined leva 3.5 horas para 4
cargas!
2 AM
Paralelismo no nível de instrução
•  5 estágios básicos
–  Carrega (fetch)
instrução (F)
–  decodifica instrução
instruction / lê
registradores (R)
–  executa (X)
–  acessa memória (M)
–  armazena resultados
nos registradores (W)
I-Fetch
Decode
Execute
Memory
Write
Result
Paralelismo no nível de instrução
Instrução
F
R
X
M
W
F
R
X
M
W
F
R
X
M
W
F
R
X
M
W
F
R
X
M
F
R
X
Paralelismo no nível de instrução
•  Pipelining é um mecanismo que permite a
sobreposição temporal das diversas fases da
execução de instruções
•  Aumenta o throughput das instruções (mais
instruções são executadas por unidade de
tempo). Porém, pipeline não ajuda na latência
da execução de uma única instrução
Paralelismo no nível de instrução
•  Assume independência entre fases da execução
da instrução
•  Não é sempre o caso (ex., saltos condicionais)
levam a ociosidade
•  Afeta a eficiência
•  Um assuntos para arquitetura de
computadores...
Níveis de paralelismo
1.  Paralelismo no nível de instrução
2.  Várias linhas de execução em um mesmo
processador
3.  Várias linhas de execução em diferentes
processadores (SMP, dual, quad core)
4.  Computadores paralelos
•  interconectados com redes dedicadas de alta
velocidade
5.  Cluster de computadores
6.  Computadores na Internet
Autonomia
•  Redes compartilhadas, comunicação peer-topeer, máquinas heterogêneas, problemas de
segurança, …
Várias linhas de execução: um processador
•  Paralelismo
“simulado”
–  processos
–  threads
•  “Logicamente” há
várias linhas de
execução
•  “Fisicamente” não há
•  Um assunto de
sistemas
operacionais...
•  ... mas uso de multithreading / processos
é muito importante
na programação de
sistemas distribuídos
Fonte: Douglas Schmidt http://www.cs.wustl.edu/~schmidt/PDF/mt-unix4.pdf
Níveis de paralelismo
1.  Paralelismo no nível de instrução
2.  Várias linhas de execução em um mesmo
processador (single core)
3.  Várias linhas de execução em diferentes
processadores/cores (SMP, dual, quad core)
4.  Computadores paralelos
•  interconectados com redes dedicadas de alta
velocidade
5.  Cluster de computadores
6.  Computadores na Internet
Autonomia
•  Redes compartilhadas, comunicação peer-topeer, máquinas heterogêneas, problemas de
segurança, …
Vários processadores, memória compartilhada
Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed.,
by B. Wilkinson & M. Allen,
Vários processadores, memória compartilhada
Symmetric Multiprocessing / SMP:
Processadores idênticos / multi core
Memória compartilhada
Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed.,
by B. Wilkinson & M. Allen,
Quad Pentium
multi-core: vários processadores, mesmo chip
Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers 2nd ed.,
by B. Wilkinson & M. Allen,
Processador de 3 cores Xenon no Xbox 360
Multi-computadores / Computadores paralelos
Memória Local
Processador de 1+1+6 cores Cell no PS3
http://beautifulpixels.blogspot.com/2008/08/multi-platform-multi-core-architecture.html
Memória Compartilhada Distribuída
NUMA (Non-Uniform Memory Access)
Acesso à memória local é mais rápido que acesso à memória remota
Taxonomia de Flynn
Single
Instruction
Multiple
Instruction
Single
Data
SISD
(PCs /
Mainframes)
MISD
(redundância, ex:
avião)
Multiple
Data
SIMD
(vector / array)
MIMD
(maioria dos
supercomputad
ores atuais)
Arquiteturas são frequentemente híbridas
CUDA
•  NVIDIA fala:
– 240 stream
processors
•  Mais claro:
–  30 cores
–  8 SIMD/core
Fonte (texto): http://s09.idav.ucdavis.edu/talks/02_kayvonf_gpuArchTalk09.pdf
Cyclops64 (Blue Gene/C)
Arquitetura celular
Objetivo: 1.1 Pflops
Cyclops64 (Blue Gene/C)
•  Cada chip contém 80 processadores de 64-bits /
500 MHz, cada processador suporta 2 linhas de
execução (threads).
•  80 gigaflops por chip (desempenho teórico de
pico)
Cyclops64 (Blue Gene/C)
x4
Cyclops64 (Blue Gene/C)
x4
x48
Cyclops64 (Blue Gene/C)
x4
x48
x72
Para quem perdeu as contas...
• 
• 
• 
• 
2 x 80 x 4 x 48 x 72
2.211.840 linhas de execução
1.1 Pflops
13.8 TB RAM
Blade server farms
http://en.wikipedia.org/wiki/Image:IBM_bladecenter_%28front%29.jpg
Dificuldades
•  HVAC - heating, ventilating, and air conditioning
•  Refrigeração
–  desempenho por watt dissipado
•  Refrigeração a líquido
•  (Interessante: localização de grandes
datacenters em locais frios, longe do equador)
Dificuldades
•  Falhas
•  Com muitos elementos não há como não haver
falhas
•  Faça um cálculo de probabilidade:
–  1024 máquinas, com taxa λ de falha...
–  Qual a taxa de falha da máquina como um todo,
se a máquina tivesse que funcionar a todo
momento?
Computação de alto desempenho na Internet
•  Formação de clusters virtuais (grid) (na
Internet)
•  BOINC
•  SETI@home, FOLDING@home, Einstein@home
•  500 Tflop/s (média), Jan. 2007
•  925 Tflops/s (média), Fev. 2008
•  1.287 Pflops, Dez. 2008
–  Com 565000 computadores
•  5.1 PFLOPS as of April 21, 2010
•  9.2 petaFLOPS as of March 2013
–  596224 active computers
•  Universidade da Califórnia, Berkeley
•  http://en.wikipedia.org/wiki/BOINC
Botnets
Date created
Name
Estimated no. of bots
Spam capacity
Aliases
2009 (May)
BredoLab
30,000,000
3.6 billion/day
Oficla
2008 (around)
Mariposa
12,000,000
0?
?
?
Conficker
Zeus
10,500,000+
3,600,000 (US Only)
10 billion/day
DownUp,
DownAndUp,
DownAdUp, Kido
-1n/a
Zbot, PRG,
Wsnpoem,
Gorhax, Kneber
2007 (Around)
Cutwail
1,500,000
74 billion/day
Pandex, Mutant
(related to:
Wigon, Pushdo)
?
Grum
560,000
39.9 billion/day
Tedroo
?
Mega-D
509,000
10 billion/day
Ozdok
?
Kraken
495,000
9 billion/day
Kracken
http://en.wikipedia.org/wiki/Botnet
Diferentes modelos de interação em
software
•  Middleware
•  RPC – Remote Procedure Call
•  Orientado a objetos distribuídos
–  Distributed Objects
–  Remote Method Invocation
•  Orientado a passagem de mensagem
•  Orientado a eventos (publish/subscribe)
•  Orientado a streams (fluxo de dados)
–  Multimedia streams: áudio e vídeo
•  Orientado a serviços