Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computação de Alto
Desempenho
COPPE/UFRJ
Alvaro Coutinho & Albino Aveleda
{alvaro,bino}@nacad.ufrj.br
Horários
SIAM www.siam.org
Referências
Designing and Building Parallel Programs
Ian Foster, 1995 , http://www-unix.mcs.anl.gov/dbpp
High Performance Cluster Computing (Volume 1):
Systems and Architecture
Rajkumar Buyya, Prentice Hall, 1999
High Performance Cluster Computing (Volume 2):
Programming and Applications
Rajkumar Buyya, Prentice Hall, 1999
How to Build a Beowulf – A Guide to the Implementation
and Application of PC Clusters
Thomas Sterling et al, The MIT Press, 1999
Referências
Beowulf Cluster Computing with Linux
William Gropp, Ewing Lusk and Thomas Sterling, MIT Press, 2003
IA-32 Intel Architecture Software Developer´s Manual
Volume 1: Basic Architecture
Intel Corporation, 2004 – http://www.intel.com
Parallel Programing with MPI
Peter Pacheco, Morgan Kaufmnn Publishers, 1997
Using MPI: Portable Parallel Programing with The
Message Passing Interface
William Gropp, Ewing Lusk and Anthony Skjellum, MIT Press, 1999
Layered Structure of CE&S
Aplicações Científicas:
universidades, centros de pesquisa, indústria de ponta
computação intensiva
alto desempenho
Demanda por poder
computacional
Operações necessárias a execução de aplicações
n equações lineares ➾2n3/3 operações de ponto flutuante
Desempenho do processador:
2GHz ➾ 2 x 109 operações de ponto flutuante por segundo
Taxa de acesso à memória
Memória
Principal
Unidade de
Controle
Modelo de Von Neumann
Todo computador é formado por 5 partes básicas:
Memória
Unidade lógica e aritmética (ULA)
Unidade de controle (UC)
Periféricos de entrada e saída
ULA: realiza operações aritméticas e lógicas com os
dados
UC: controla o tipo de operação a ser executado
Memória: armazena os dados e instruções que vão ser
utilizados pela ULA e UC
Os dados a serem operandos são lidos dos dispositivos
de entrada para a memória
Os resultados são enviados para a memória e daí para
os dispositivos de saída
Modelo de barramento de sistema
Processador
Memória Entrada
ULA, UC
Principal e Saída
Registradores
Controle
Barramento de Endereço
Barramento de Dados
The main components of a computer
system are:
· Processors
· Memory
· Communications Channels
Cray J90/SV1
Memory Classifications
Memory Function
bit = Menor unidade de memória (valor de 0 ou 1); normalmente abreviado como "b"
byte = 8 bits; normalmente abreviado como "B"
Prefixos comuns:
k=kilo=1000
M=mega=10^6
G=giga=10^9
T= tera=10^12
Memory Response
Memory response is characterized by two different measures:
· Access Time (also termed response time or latency) defines how
quickly the memory can respond to a read or write request.
· Memory Cycle Time refers to the minimum period between two
successive requests of the memory.
Access times vary from about 80 ns [ns = nanosecond = 10^(-9) seconds]
for chips in small personal computers to about 10 ns or less for the
fastest chips in caches and buffers (see below). For various reasons, the
memory cycle time is more than the speed of the memory chips (i.e., the
length of time between succesive requests is more than the 80 ns speed
of the chips in a small personal computer).
Hierarquia de Memória
Capacidade
Processador Cache Pequena
Acesso Rápido
Memória
Principal
Capacidade
Grande
Acesso lento
Memória
Secundária
Hierarquia de Memória
+
0,3 ns B
Reg.
3 ns KB/MB
Cache
Memória
30 ns MB/GB
Principal
3 ms GB/TB Memória
Secundária Custo
Conceitos de Localidades
O funcionamento da hierarquia de memória está
fundamentado em duas características
encontradas nos programas
Localidade Temporal
Posições de memória, uma vez referenciadas (lidas ou
escritas), tendem a ser referenciadas novamente dentro de
um curto espaço de tempo
Localidade Espacial
Se uma posição é referenciada, posições de memória cujos
endereços sejam próximos da primeira tendem a ser logo
referenciados
Interleaved Memory
Funcionamento da Cache
Durante a busca da palavra que está faltando
na cache, é trazido um bloco (ou linha) inteiro
da memória principal, ao invés de apenas uma
palavra
O objetivo é minimizar a taxa de falhas nos
próximos acessos, seguindo o princípio da
localidade espacial
O tamanho de um bloco é um parâmetro de
projeto na memórias caches, tamanhos usuais
são 32, 64 e 128 bytes
Bus Contention
xx
Taxonomia das Arquiteturas
Paralelas
Classificação de Flynn (1966)
Single Instruction Stream (SI)
Multiple Instruction Streams (MI)
Single Data Stream (SD)
Multiple Data Streams (MD)
Categorias de Arquiteturas
SISD(processadores convencionais)
SIMD (processadores vetoriais)
MIMD (multiprocessadores)
SISD
máquinas convencionais com uma CPU
(Uma unidade de processamento com
uma unidade de controle).
UC UP MEM
UC
SIMD
corresponde ao
caso das UP
arquiteturas UP
vetoriais onde a UC
mesma operação UP
é executada sobre
múltiplos UP
operandos Memória
MIMD
é o caso dos
multiprocessadores, onde
várias instruções podem
ser executadas ao UC UP
mesmo tempo em UC UP
unidades de Me
Mó
UC UP
processamento diferentes ria
M0 M1 Mn
...
P0 P1 Pn
Rede de Interconexão
Memória
P0 P1 P2 ……. PN
Memória
Barramento Único
P0 P0 ... P0
Arquitetura NUMA
Nessas arquiteturas a memória é dividida
em tantos blocos quanto forem os
processadores do sistema, e cada bloco
de memória é conectado via barramento a
um processador com memória local
O acesso aos dados que estão na
memória local é muito mais rápido do que
aos dados em uma memória remota
Arquitetura NUMA
P0 P1 Pn
...
M0 M1 Mn
Rede de Interconexão
Arquitetura CC-NUMA
Cada nó
processador
possui uma
Node 0 Node 1 Node n
cache local
para reduzir o P0 P1 Pn
tráfego na rede
de interconexão C0 C1 Cn
M0 M1
... Mn
Rede de Interconexão
Arquitetura de Memória
Sistemas Híbridos – SGI
Origin3000 server - Altix
Arquiteura DSM - Distributed
Shared Memory
ccNUMA - cache-coherent Non-
Uniform Memory Access
Interligação por Craylink
Vértice do cubo:
Roteador
2 Hubs
Até 4 processadores
Memória local
Arquitetura de Memória
Sistemas Híbridos – SGI - Origin3000 server -Altix
Interconnect Topologies for Parallel Systems
Mesh Topologies
Processo / Threads
Processo
Criado para a execução de um programa pelo
sistema operacional
Um processo pode gerar cópias, chamadas de
processos “filhos”
Threads
São partes autônomas de código, criadas dentro de
um mesmo processo
Todas as threads de um processo compartilham os
mesmos recursos, em particular o mesmo espaço de
endereçamento
A custo de criação, comunicação e sincronização
entre threads é bem menor que entre processos
Multithreading
Os sistemas operacionais modernos suportam o
conceito de threads, ou seja, tarefas
independentes dentro de um mesmo processo
que podem ser executadas em paralelo ou de
forma intercalada no tempo, dentro do esquema
tradicional de time-sharing
O contexto específico de uma thread é
semelhante ao contexto de uma função e,
consequentemente, a troca de contexto entre
threads implica no salvamento e recuperação de
contextos relativamente leves. Este fato é o
principal atrativo do uso de threads em
contraposição ao uso de processos
Multithreading
A comunicação entre tarefas é muito
simplificada numa implementação baseada em
threads, uma vez que neste caso as tarefas
compartilham o mesmo espaço de
endereçamento de memória do processo como
um todo que engloba as threads, eliminando a
necessidade do uso de esquemas especiais,
mais lentos de comunicação entre processos
providos pelos sistemas operacionais
As arquiteturas multithreading procuram reduzir
o overhead na troca de contexto entre threads
Paralelismo
As arquiteturas paralelas permitem a execução
das tarefas em menor tempo, através da
execução em paralelo de diversas tarefas
O paralelismo pode ser obtido em diversos
níveis, com ou sem o uso de linguagens de
programação paralela
Níveis de paralelismo:
Nível de instrução (granulosidade fina)
Nível de threads (granulosidade média)
Nível de processo (granulosidade grossa)
Escalonamento
Há dois tipos básicos de escalonamento
Baseado em processos
Baseado em threads
O controle é feito por um diagrama com pelo
menos três estados básicos:
Pronto
Executando
Aguardando
As linguagens de programação possuem
primitivas especificas para criação de threads e
processos
Conceitos Básicos
Execução concorrente está associada a
idéia de um servidor atendendo a vários
clientes através de uma política de
escalonamento
Execução paralela está associada ao
modelo de vários servidores atendendo a
vários clientes simultaneamente no tempo
Ementa
Introdução
Tópicos Básicos em arquitetura de
Computadores
Arquitetura de processadores e memória
Medidas de desempenho e análise
Clusters
Comentários Finais
Medidas de Desempenho
Vazão (throughput): taxa na qual os pedidos são
atendidos pelo sistema
Utilização: fração do tempo em que o recurso
permanece ocupado
Tempo de resposta: tempo decorrido entre o
pedido e o início/conclusão da realização do
serviço (latência)
Escalabilidade: um sistema é dito escalável
quando a eficiência se mantém constante à
medida que o número de processadores (n)
aplicado à solução do problema cresce
Algumas Metricas de Desempenho
Speed-up ideal 10
8
T1 6
Sp 4
T p 2
0
1 2 3 4 5 6 7 8
# proc
Medidas de Desempenho
Sp = Speed-up obtido anteriormente
p = número de processadores
Eficiência ideal
1,2
Sp 1
Ep 0,8
p 0,6
0,4
0,2
0
1 2 3 4 5 6 7 8
# pr oc
Lei de Amdahl
T s p
T1
Sp
Tp
Lei de Amdahl
Existe um limite fundamental no speedup
mencionado na lei de Amdahl que diz:
“Em qualquer sistema que tem dois ou
mais modos de processamento de
diferentes velocidades, o desempenho do
sistema será dominado pelo modo mais
lento.”
1
1 1
Sp S pred
1 Fpar
F par Fpar
1
1 P
P
(1 1.98) 1
Fpar 0.9898
(1 2) 1
1
S pred 13.89
1 0.9898
0.9898
16
Escalonamento do Problema
A lei de Amdahl só é relevante para um problema de
tamanho fixo, ou quando a fração serial é independente
do tamanho do problema, o que é difícil de se encontrar
na prática;
Geralmente a fração paralela aumenta com o aumento
do tamanho do problema;
A taxa de crescimento da fração paralela pode ser
caracterizada mantendo uma quantidade constante
enquanto p varia:
Tamanho (Amdahl), trabalho computacional, tempo de
execução, memória por processador, eficiência, etc.
Escalabilidade
s p 1
Sn
p 1 s
s s
n n
Comparação das duas leis
O fator de speedup calculado através da lei de
Gustafson considera que a execução em um único
processador deve ser s+np, onde n é o número de
parcelas paralelas que devem ser executadas
seqüencialmente. Então, a lei de Gustafson é
definida como sendo:
s np
Sn s np s (1 s)n
s p
Comparação das duas leis
Para exemplificar, suponha que a parcela serial
de um código corresponda a 5% e o mesmo
será executado em 20 processadores: de
acordo com a lei de Amdahl obtém-se um
speedup de 10,26 ao invés de 19,05 de acordo
com a lei de Gustafson.
Na prática, um programa paralelo encontra-se
situado em algum lugar entre essas duas leis.
Medição de Desempenho: os
Testes NPB
180
160
140
120
100 Mflop/s/proc
Mflop/s
80
60
40
20
0 Mflop/s
IBM SP (P2SC
Mflop/s/proc
160MHz) Cray T3E - 1200
SGI Origin 2000 - 195
Cluster NACAD
O Benchmark LINPACK
Surgiu como pacote de solução de sistemas lineares (A·x = b)
LINPACK100
Serial
LINPACK1000
Fontes e bibliotecas:
HPL,
BLAS otimizada (ATLAS, MKL, etc...).
Máquina DEDICADA;
http://www.top500.org
Lists the top 500 supercomputers
Updated in 06/XX and 11/XX
Presented by:
University of Mannheim
University of Tennessee
NERSC/LBL
Top500 - Lista
Brazil in TOP500 (11/2005)
Fonte: J. Dongarra, http://www.netlib.org/utk/people/JackDongarra/talks.html
Fonte: J. Dongarra, http://www.netlib.org/utk/people/JackDongarra/talks.html
Fonte: J. Dongarra, http://www.netlib.org/utk/people/JackDongarra/talks.html
O Cray XD1
O Cray XD1
Fonte: J. Dongarra, http://www.netlib.org/utk/people/JackDongarra/talks.html
Fonte: J. Dongarra, http://www.netlib.org/utk/people/JackDongarra/talks.html
Projeto de computadores
Integração Crescente X Limite Físico
Aplicações paralelas
Cluster Middleware
PC PC PC PC
Roteador/Firewall
Servidor de acesso
e manutenção
Maiores desafios
Escalabilidade (física e de aplicação)
Disponibilidade (gerenciamento de falhas)
Imagem única do sistema (parece ao usuário
como se fosse um único sistema)
Comunicação rápida (redes e protocolos de
comunicação)
Balanceamento de carga (CPU, rede, memória,
discos)
Gerenciabilidade (administração e controle)
Aplicabilidade (aplicações voltadas para o
cluster)
Segurança e encriptação (grid computing)
Cluster Middleware
Sistemas operacionais
Solaris MC
OpenMosix
Rocks
Sistema Operacional + OSCAR
Gerenciamento de recursos e despacho
PBS
NQS
SGE
Condor
LSF
Ambientes de programação
Threads (PCs, SMPs, ...)
POSIX Threads
Java Threads
MPI
PVM
Software DSMs (SHMEM da SGI)
Cluster - Beowulf
Definição: Vantagens:
PC padrão nos nós
Melhor relação preço-
Pentium, Alpha, desempenho
PowerPC, SMP
Menor custo inicial
Interconexão LAN/SAN
Configuração ajustável
Ethernet, Myrinet,
Invunerável ao fornecedor
Giganet, ATM
Escalável
SO Unix
Incorporação rápida de
Linux, BSD
novas tecnologias
Sistema de Troca de
Mensagens
Facilitado pelo hardware, redes e sistemas operacionais de
MPI, PVM
PC’s padrão, alcançando a capacidade de estações de
HPF trabalho científicas a uma fração do preço e a disponibilidade
de sistemas de troca de mensagens padronizados.
O uso de Clusters
Poder computacional com custo aceitável para
aplicações científicas:
– Restrições de tempo (aplicações de previsão de
tempo)
– Velocidade (aplicações de busca: Google – 15000
PCs)
– Quantidade de memória (terabytes)
Desvantagens:
Execução limitada pelo servidor
Beowulf
Componentes do nó de administração:
Sistema computacional stand-alone com
hardware completo e suporte de um sistema
operacional para gerenciamento
Processador
Memória
Disco rígido compartilhado pelos nós de
processamento
Rede
Outros dispositivos: CD-ROM, Floppy
Beowulf
Componentes do nó de processamento:
Sistema computacional stand-alone com hardware
completo ou não (sem vídeo, sem teclado e sem
mouse) e suporte de um sistema operacional para
gerenciamento completo da execução de aplicativos
em cada nó
Processador
Memória
Disco rígido
Rede
Outros dispositivos: CD-ROM, floppy
Beowulf
Rede de comunicação
Hardware
Interfaces: Hosts, Links e Dispositivos
Topologia
Software
Protocolos: Ethernet, IP, TCP, GM
Drivers
Desempenho
Hardware
Software
Taxonomia das Aplicações
Paralelas
Pouca ou Nenhuma Embaraçosamente Paralela
Comunicação (EP)
Explícita Explícita
Comunicação Não-Estruturada
Explícita (Vizinhos) Estruturada
(EE) (ENE)
Implícita Implícita
Comunicação Estruturada Não-Estruturada
Implícita (Global) (IE) (INE)
Comunicação Comunicação
Estruturada Não-Estruturada
Otimização e Programação
Antes de paralelizar:
Verificar
Compilar Executar Otimizar
Resultados
Perfilar o código
Vale a
pena
paraleliza Não
r?
Paralelização:
-Automática Se necessário, perfilar o
-Diretivas código novamente
-Bibliotecas paralelas otimizadas
Meta Ideal:
Um speedup linear com todas CPUs
Ferramentas de
Desenvolvimento
Bibliotecas Numéricas
Netlib:
http://www.netlib.org
ACTS (Advanced Computational Testing and
Simulation) Toolkit http://acts.nersc.gov/
PETSc (Portable, Extensible Toolkit for Scientific
Computation)
ScaLAPACK library extends LAPACK's high-
performance linear algebra software to distributed
memory
Ementa
Introdução
Tópicos Básicos em arquitetura de
Computadores
Arquitetura de processadores e memória
Medidas de desempenho e análise
Clusters
Comentários Finais
Centros de Supercomputação no
Brasil
SINAPAD
Centro Nacional de Supercomputação na Região Sul
http://www.cesup.ufrgs.br
super@cesup.ufgrs.br
CENAPAD-SP
Centro Nacional de Processamento de Alto Desempenho em São Paulo
http://www.cenapad.unicamp.br
cenapadsp@cenapad.unicamp.br
CENAPAD-NE
Centro Nacional de Processamento de Alto Desempenho no Nordeste
http://www.cenapadne.br
cenapad@cenapadne.br
CENAPAD-RJ
Centro Nacional de Processamento de Alto Desempenho no Rio de Janeiro
LNCC - Laboratório Nacional de Computação Científica
http://www.lncc.br
cadastro@lncc.br
CENAPAD-MGCO
Centro Nacional de Processamento de Alto Desempenho em Minas Gerais e Centro Oeste
http://www.cenapad.ufmg.br
osvaldo@cenapad.ufmg.br
CENAPAD-AMB
Centro Nacional de Processamento de Alto Desempenho Ambiental
Instituto Nacional de Pesquisas Espaciais - INPE
http://www.cptec.inpe.br
benicio@cptec.inpe.br
NACAD
Núcleo de Atendimento em Computação de Alto Desempenho-COPPE
http://www.nacad.ufrj.br
nacad@nacad.ufrj.br
Cluster de baixo custo montado no
NACAD
8 CPUs Intel Pentium III de 1GHz
Memória por CPU: 512MB RAM e
cache de 256KB
Memória Total: 4.0 Gbytes RAM
(distribuída)
Rede: dedicada com tecnologia Fast-
Ethernet (100 MBits/s)
Sistema Operacional: Linux
distribuição RedHat
Compiladores: Fortran-77, Fortran-90
e C/C++
Ferramentas para desenvolvimento
de aplicações paralelas
Sistema de fila PBS (Portable Batch
System)
Arquitetura do Cluster Mercury (NACAD)
Cluster Inforserver Itautec
– 16 nós duais de processamento (32 processadores)
– Pentium III – 1 GHZ
– 512MB de memória principal por nó - 256KB cache
SGI Altix 350
14 CPUs Intel Itanium2:
palavra de 64 bits
Pico Teórico de Performance:
6 GFlop/s por CPU
Memória: 28 Gbytes RAM
(compartilhada – cc-NUMA)
SGI NUMALink
Sistema operacional: RedHat
Enterprise Linux + SGI
ProPack
Compiladores: Intel e GNU
(Fortran-90 e C/C++) com
suporte OpenMP e MPI
Sistema de Fila PBS-Pro
Tendências
Grid Computing