Sistemas de Computação e Desempenho
(UCE Computação Paralela Distribuída)
João Luís Ferreira Sobral
Visão actual da computação paralela e distribuída
• Tendências actuais
– Movimento massivo na direcção de multi-core • 2-Core agora, 4-Core em 2008, 6-Core em 2009 • Sistemas heterogéneos no futuro
Visão actual da computação paralela e distribuída
• Tendências actuais
– Crescimento da utilização de “Clusters”
Rank Site Manufacturer Computer Country Year Processors RMax
1 DOE/NNSA/LANL IBM BladeCenter QS22/LS21 Cluster, PowerXCell 8i 3.2 Ghz / Opteron DC 1.8 GHz , Voltaire InfinibandUnited States 2008 122400 1026000 2 DOE/NNSA/LLNL IBM eServer Blue Gene Solution United States 2007 212992 478200 3 Argonne National Laboratory IBM Blue Gene/P Solution United States 2007 163840 450300 4 Texas Advanced Computing Center/Univ. of Texas Sun MicrosystemsSunBlade x6420, Opteron Quad 2Ghz, Infiniband United States 2008 62976 326000 5 DOE/Oak Ridge National Laboratory Cray Inc. Cray XT4 QuadCore 2.1 GHz United States 2008 30976 205000 6 Forschungszentrum Juelich (FZJ) IBM Blue Gene/P Solution Germany 2007 65536 180000 7 New Mexico Computing Applications Center (NMCAC)SGI SGI Altix ICE 8200, Xeon quad core 3.0 GHz United States 2007 14336 133200 8 Computational Research Laboratories, TATA SONSHewlett-PackardCluster Platform 3000 BL460c, Xeon 53xx 3GHz, InfinibandIndia 2008 14384 132800
9 IDRIS IBM Blue Gene/P Solution France 2008 40960 112500
10 Total Exploration Production SGI SGI Altix ICE 8200EX, Xeon quad core 3.0 GHz France 2008 10240 106100 11 Government Agency Hewlett-PackardCluster Platform 3000 BL460c, Xeon 53xx 2.66GHz, InfinibandSweden 2007 13728 102800
Visão actual da computação paralela e distribuída
• Tendências actuais
– EGEE – Enabling Grids for E-sciencE No
Site
Reports GIIS Host totalCPU freeCPU 1 CERN-PROD prod-bdii.cern.ch 3512 474 2 FZK-LCG2 giis-fzk.gridka.de 2680 458 3 USCMS-FNAL-WC1 uscmsbdii.fnal.gov 1509 820 4 IN2P3-CC cclcgip01.in2p3.fr 1688 1041 5 UKI- NORTHGRID-MAN-HEP niels002.tier2.hep.manchester.ac.uk 1800 1231 6 UKI-LT2-QMUL ce01.esc.qmul.ac.uk 1360 1004 7 SARA-LISA mu9.matrix.sara.nl 1350 984 8 INFN-T1 sg01-lcg.cr.cnaf.infn.it 1262 316 9 RAL-LCG2 site-bdii.gridpp.rl.ac.uk 1238 24 10 giHECie gridgate.ichec.ie 0 0 11 UKI-LT2-IC-LeSC mars-ce2.mars.lesc.doc.ic.ac.uk 806 685 12 INFN-LNL-2 t2-ce-02.lnl.infn.it 782 152 13 INFN-CATANIA grid012.ct.infn.it 766 61 14 UKI- NORTHGRID-LIV-HEP hepgrid9.ph.liv.ac.uk 642 617 15 INFN-PISA gridbdii.pi.infn.it 321 131 16 Taiwan-LCG2 lcg00125.grid.sinica.edu.tw 563 99 17 UKI- SCOTGRID-GLASGOW svr021.gla.scotgrid.ac.uk 536 126 18 HG-06-EKT ce01.athena.hellasgrid.gr 228 224 19 UKI-LT2-Brunel dgc-grid-44.brunel.ac.uk 413 4 maxCPU avgCPU 41245 36611
Visão actual da computação paralela e distribuída
• Paradigmas para o desenvolvimento de aplicações paralelas e distribuídas
–
Os “Parallelizing compilers” não obtêm um desempenho aceitável
–
Os paradigmas actuais centram-se em 3 linhas
• Multi-core -> Thread-based (e.g. loop-based, OpenMP) • Clusters -> Message Passing (MPI)
• Grids -> Workflows (GLITE, Job submission with file stage-in and stage-out)
–
A disciplina de sistemas de computação e desempenho incide no
desenvolvimento das competências necessárias para:
•
Identificar as características das arquitecturas que têm impacto no
desempenho
•
Escrever programas que adequadamente tirem partido dessas
Sistemas de Computação e Desempenho
Resultados da aprendizagem
• identificar e caracterizar a introdução dos diversos tipos de paralelismo na arquitectura interna dos processadores e no seu acesso à memória
• seleccionar as métricas, métodos e técnicas de avaliação de desempenho de programas em execução, para configurações da arquitectura de um sistema computacional
• avaliar quantitativamente o desempenho de um sistema de computação na execução de aplicações informáticas
• descrever e caracterizar os principais componentes de um sistema de computação em cluster ou em grelha
• avaliar criticamente a arquitectura dos sistemas de computação paralelos e distribuídos
Programa
• evolução recente da arquitectura de processadores: pipeline, superescalaridade, multi-threading, multi-core; hierarquia de memória em ambiente partilhado
• avaliação de desempenho na execução de aplicações: métricas, profiling, análise e
afinação de código (destaque para ciclos iterativos, manuseamento de matrizes e chamada de funções), benchmarking
• evolução do paralelismo nas arquitecturas: arquitecturas vectoriais, arquitecturas paralelas com memória partilhada e memória distribuída, arquitecturas distribuídas em rede; análise de desempenho em arquitecturas paralelas
Sistemas de Computação e Desempenho
Futuro da arquitectura de computadores
C a ch e s M e m ó ri a V ir tu a l R IS C S IM D M icr o p ro g ra m a çã o T im e s h a re d C C -U M A C C -N U M A N o t-C C -N U M A P a ssa g e m d e M e n sa g e n s Evolução Revolução V L IW ( E P IC ) G R ID /I n te rn e t P ip e lin in g S u p e re s c a la ri d a d e
Uma revolução obriga à alteração da forma de pensar dos programadores
Os processadores actuais
exploram paralelismo ao nível da instrução de forma transparente
Multi-threading
Processos comunicantes ILP
Sistemas de Computação e Desempenho
VLIW (Very Long Instruction Word)• O escalonamento dinâmico incrementa de forma considerável a complexidade do Hardware.
• VLIW efectua um escalonamento estático, sendo o compilador responsável por indicar as instruções que podem ser realizadas em paralelo.
=> tem-se revelado um fracasso
• O formato de instrução indica as operações que são realizadas em paralelo por cada unidade funcional.
• Exemplo IA-64:
Instrução 2 Instrução 1 Instrução 0
128 bits T e m -p la te
Opcode PR REG REG REG
40 bits
Sistemas de Computação e Desempenho
VLIW (cont.)• Limitações de VLIW
– O código gerado tende a ser de maior dimensão, porque é necessário inserir nop nos campos da instrução não preenchidos.
– Compatibilidade de código entre gerações dos mesmo processador uma vez que tende a expor a arquitectura interna do processador
– É mais penalizado com stalls que o escalonamento dinâmico
• EPIC – IA-64 / Itanium
– 64 registos de inteiros + 64 registos FP, ambos com 64 bits – 3 instruções em 128 bits (LIW?)
• menos bits que VLIW clássico, produzindo código mais compacto • possibilidade de ligação entre os vários grupos de instruções
Sistemas de Computação e Desempenho
Hyper-Threading (Intel)• A adição de mais unidades funcionais nos processadores actuais não conduz a ganhos significativos de desempenho.
• O processador tem a capacidade de simular vários processadores (CC-NUMA) ou pode executar vários fios de execução em simultâneo.
– baseia-se mais no paralelismo ao nível dos fios de execução ou dos processos e menos paralelismo ao nível da instrução.
• Implica um aumento de <5% de transístores por processador e pode conduzir a ganhos no desempenho até 35% (Xeon actuais, com grau 2). • Os ganhos de desempenho são proporcionados por uma utilização mais
Sistemas de Computação e Desempenho
Hyper-Threading (cont.)Super-escalar Multi-processador (2 vias) Hyper-Threading
Unidade Funcional 1 2 3 1 2 3 1 2 3 1 2 3 C ic lo s d e re ló g io 1 processador = 2 processadores ?
Não porque parte dos recursos do processador não são duplicados (i.é., são divididos pelos vários fios de execução) (caches, registos internos, buffers internos, etc.)
Sistemas de Computação e Desempenho
Hammer (AMD com 64 bits)• Estende o IA-32 para 64 bits:
• A pipeline possui mais dois estágios (12 contra 10) que a arquitectura K7 (Athlon XP)
Sistemas de Computação e Desempenho
UltraSparc T1 (T2)
- 8 cores
- 32 threads simultâneas (4 ou 8/core)
- 4 caches L2
Sistemas de Computação e Desempenho
Memória partilhada centralizada (CC-UMA, CC-NUMA)• Vários processadores partilham um barramento de acesso à memória
• As caches de cada processador contribuem para reduzir o tráfego no barramento e a latência dos acessos à memória
• um valor pode estar replicado em vários sítios => são necessários mecanismos para assegurar a coesão entre as caches dos vários processadores e a memória
• A largura de banda de acesso à memória é partilhada pelos vários processadores => limitação à escalabilidade deste tipo de arquitectura:
Cache Processor Cache Processor Cache Processor Singlebus Memory I/O
Sistemas de Computação e Desempenho
Memória distribuída – processadores conectados por uma rede de interligação (CC-NUMA, passagem de mensagens)
• Os sistemas interligados por um barramento tendem a limitar o número de processadores que efectivamente podem ser ligados
• A alternativa reside na utilização de uma rede dedicada à interligação dos vários processadores, possuindo cada processador a sua memória dedicada
Network Cache Processor Cache Processor Cache Processor Memory Memory Memory
Sistemas de Computação e Desempenho
Cluster de máquinas
• Constituídos pode HW “normal”, interligados por uma rede de alta velocidade (Gbit/s com muito baixa latência)
• Cada nodo de processamento pode ser uma máquina de memória partilhada com vários processadores
• Cada nodo possui uma cópia do SO
• Alta disponibilidade: quando falha uma máquina basta substituí-la por outra • Custos de administração na ordem do número de máquinas
• Exemplo (Cluster investigação da Universidade do Minho - 2006):
– 8 nodos com SAN FC 3TB
– 8 nodos com NVIDIA 7800 GTX
48 2-way / 4-way 1 GB/s, 3us (10 Gbit/s) 96GB / 768GB 3,0 GHz 2,0 GHz Intel Xeon 96 7 2-way 250 MB/s, 10us (2,0 Gbit/s) 10 GB / 112 GB 3,2 GHz Intel Xeon 14 Máximo de nodos Nodos Comunicação Memória Actual/Máxi ma Freq. Relógio Processador CPU
Computação paralela : Cluster Search
Se
rvices and Advanced Research Computing with HTC/HPC clusters
•
30 nós duplo Xeon
3.2GHz, 2 GB RAM
•
8 nós duplo Xeon-dual core
2.0 GHz, 4 GB RAM
•
rede 10Gbit/s Myrinet
•
armazenamento central SAN
com 3TB
•
Total de 92 cores,
Computação paralela : Cluster Search
Computação Paralela
GRID• Pode ser a próxima geração da internet
• "A computational grid is a hardware and software infrastructure that provides dependable, consistent, pervasive, and inexpensive access to high-end
computational capabilities.", Foster 1998.
• "coordinated resource sharing and problem solving in dynamic, multi-institutional virtual organizations.”, Foster and Al, 2000.
• A partilha de recursos é altamente controlada, com os fornecedores e os utilizadores dos recursos a definirem claramente o que é partilhado, que está autorizada a utilizar cada recurso e em que condições a partilha ocorre.
• a coordenação de recursos não deve ser centralizada (os vários recursos encontram-se em domínios diferentes)
• deve utilizar protocolos standard e abertos
• deve fornecer vários níveis, não triviais, de serviço
• requer novos paradigmas de programação? (os recursos dinâmicos, altamente heterogéneos e sujeitos a grandes variações de desempenho)
Sistemas de
Computação e
Desempenho
Iniciativa nacional GRID
(www.gridcomputing.pt)
- “apoiar o desenvolvimento de estruturas de suporte à computação distribuída para a partilha de recursos na resolução de problemas complexos com necessidade de processamento intensivo de dados” - “assegurar o desenvolvimento de
competências e capacidades nacionais de interesse estratégico para a evolução deste tipo de computação distribuída”
Sistemas de Computação e Desempenho
• Transístores por microprocessador (Lei de Moore):
T ra n s is to rs 1,000 10,000 100,000 1,000,000 10,000,000 100,000,000 1970 1975 1980 1985 1990 1995 2000 2005
Bit-level parallelism Instruction-level Thread-level (?)
i4004 i8008 i8080 i8086 i80286 i80386 R2000 Pentium R10000 R3000
Sistemas de Computação e Desempenho
• Evolução das arquitecturas (2003)
Evolução tecnológica:
• Ciclo de relógio ~ 30% por ano (até agora!) • Densidade de transístores ~35%
• Área do chip ~15% • Transístores por chip ~55% • Capacidade total ~100%
Capacidade das arquitecturas em três anos:
• 2 x Ciclo de relógio (4-6 GHz)
• 5x número de transístores (vários biliões) • 10x mais capacidade bruta
• 4x mais densidade RAM • 4x mais capacidade de disco
Capacidade Velocidade (latência) Lógica ~2x cada 3 anos ~2x cada 3 anos
DRAM ~4x cada 3 anos ~2x cada 10 anos Disco ~4x cada 3 anos ~2x cada 10 anos
Sistemas de Computação e Desempenho
•
Evolução das arquitecturas (engenharia de computadores)
•
Medição de desempenho
– Hardware: custo, dissipação de calor, consumo, área – Tempo de execução (tempo de reposta), débito
– Grau de disponibilidade do sistema
Avaliar os sistemas existentes Implementar os sistemas da nova geração Simular novos projectos e organizações Benchmarks Workloads
•
Como determinar o desempenho: limite = tempo de execução
Uma máquina X é n vezes mais rápida que outra Y se: Tempo de execução em Y
n = ---Tempo de execução em X
•
Lei de Amdahl
Ganho devido a uma melhoria E:
Tempo de execução sem E ganho =
---Tempo de execução com E
Se a melhoria E acelerar um factor A uma fracção F do programa e o resto do programa permanecer inalterado: 1
ganho = ---(1 – Fracção) + Fracção/Aceleração
Exemplo1:
qual o ganho se melhorarem as instruções de FP em 2X, sabendo que apenas 10% das instruções são FP?
Exemplo2:
qual o ganho se apenas se melhorarem as instruções de FP, sabendo que apenas 10% das instruções são FP: 053 , 1 2 1 , 0 ) 1 , 0 1 ( 1 = + − 111 , 1 1 , 0 ) 1 , 0 1 ( 1 = ∞ + + −
Sistemas de Computação e Desempenho
•
Níveis de abstracção
Linguagem de Alto Nível Linguagem Assembly Linguagem Máquina Especificação de sinais de controlo Compilador Assembler Interpretação da máquina temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111Sistemas de Computação e Desempenho
•
Tipos de métricas de desempenho
Compilador Linguagens de programação Aplicação Datapath Control Transistors Fios Pinos
ISA
Unidades Funcionais
(milhões) de Instruções por segundo: MIPS
(milhões) de (FP) operações por segundo: MFLOP/s
Ciclos por segundo (clock rate) Megabytes por segundo
Soluções por mês
•
Desempenho do CPU (análise quantitativa de desempenho)
– Tempo de execução de um programa• #Instruções x ciclos por instrução (CPI) x período do relógio (Tcc) • #I x CPI x Tcc
– Impacto de cada nível em cada parcela
– O CPI pode ser determinado para cada classe de instruções, sendo o CPI médio calculado multiplicando a frequência de cada instrução pelo seu CPI:
• Qual o impacto no desempenho se 30% dos saltos demorarem três ciclos?
– CPIBranch = 0,7x2 + 0,3x3 = 2,3 – CPIGlobal = 0,5x1 + 0,2x2 + 0,1x2 + 0,2x2,3 = 1,56 – Ganho = 1,5/1,56 = 0,96
∑
= = = n i i i i i global I I F onde F CPI CPI 1 # # *Combinação típica (mix) Operação Freq (Fi) Ciclos por
Instr. (CPIi) CPIi x Fi (% tempo)
ALU 50% 1 0,5 (33%) Load 20% 2 0,4 (27%) Store 10% 2 0,2 (13%) Branch 20% 2 0,4 (27%) Σ= 1,5 #I CPI Tcc Programa X Compilador X (X) Conj. instruções X X Organização X X Tecnologia X
Sistemas de Computação e Desempenho
•
Conjunto de Instruções (ISA)
Software
ISA
Hardware
Stack Acumulador Reg-Mem Load-store Push A Load A Load R1, A Load R1, A Push B Add B Add R1, B Load R2, A
Add Store C Store R1, C Add R3, R1, R2
Pop C Store R3, A