Introdução ao Processamento de Alto
Desempenho (PAD)
Celso L. Mendes / Stephan StephanyLAC /INPE
Email: [email protected]
Estrutura do Minicurso • 4 aulas em 3 dias
• 18-19-20 fevereiro 2020 10:20hs – 12:00hs• Material: notas de aula, capítulo do livro, referências• Material auxiliar de apoio: www.lac.inpe.br/~celso/elac19
• Instrutor: Stephan Stephany • Email: [email protected] ([email protected])• LAC, sala 12, fone 3208-6548• Currículo Lattes: http://lattes.cnpq.br/9051364483671452• Currículo Lattes: http://lattes.cnpq.br/1446664587151293
2Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Estrutura do Minicurso • Aula 3
4. Arquiteturas para PADi. Hierarquia de Memória
ii. Sistemas Paralelos de Memória Compartilhada
iii. Sistemas Paralelos de Memória Distribuída
iv. Aceleradores
3Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Arquiteturas para PAD • Muitas vezes: extensões de arquiteturas tradicionais
• Sistemas mais antigos• Arquiteturas vetoriais (como no Cray-1)
• Sistemas modernos• Arquiteturas paralelas
• Visão da memória: compartilhada × distribuída• Aceleradores
• Caches para melhor acesso à memória• Tanto para sistemas paralelos como sequenciais
4Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Hierarquia de Memória • Motivação: gap entre velocidades (processador × memória)
5Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
• Solução de Compromisso• Criar memória cache entre CPU e memória principal• Características
• Velocidade próxima à da CPU• Contém sub-conjunto dos dados
da memória principal• Estruturada em blocos (linhas)• Controle feito por hardware
• Várias políticas de carregamento,
colocação/substituição de conteúdo
Hierarquia de Memória (cont.)
6
CPU
Memória Principal
Cache
Introdução ao Processamento de Alto Desempenho – PADCelso L. Mendes (LAC/INPE)
• Estrutura mais geral: múltiplos níveis de cache
Hierarquia de Memória (cont.)
7
Velocidade
Capacidade
Introdução ao Processamento de Alto Desempenho – PADCelso L. Mendes (LAC/INPE)
Hierarquia de Memória (cont.)
• Efetividade da cache: Princípios da Localidade
• Localidade Temporal• Se um dado é acessado, deverá ser acessado novamente em futuro
próximo
• Localidade Espacial• Se um dado é acessado, dados próximos em memória deverão ser
acessados em futuro próximo• Razão para estruturar a cache em blocos (linhas)
• Ambos os princípios são observados na prática• Caches existem em todos os sistemas atuais
8Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Hierarquia de Memória (cont.)
• Processadores Modernos• Um ou mais níveis de cache são internos ao chip da CPU
• Velocidade interna bem maior que a externa
• Pode haver caches separadas para dados e instruções• Em geral, caches de instruções são menores
• Otimização: instruções específicas de pré-carga (prefetch)
• Possível problema: consistência dos dados em cache• Exemplo: periféricos ligados diretamente à memória podem atualizar a
memória em posições que estão na cache• Solução: hardware de monitoramento, invalidação dos dados em cache
no caso de atualizações da memória
9Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Arquiteturas para PAD • Sistema paralelo: múltiplas CPUs
• Estruturas de memória possíveis• Memória compartilhada
• Todas as CPUs têm acesso a toda a memória• Número de CPUs limitado na prática
• Memória distribuída• Cada CPU só tem acesso à sua memória local• Facilmente expandível, programação mais complexa
10Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Compartilhada
• Estrutura Típica: Multiprocessador
11Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Compartilhada
• Convenção: Multiprocessadores Simétricos (SMP)• Todas as CPUs têm a mesma visão da memória
• Conflitos de acesso à memória são possíveis• Limite prático ao número máximo de CPUs
• Variações na estrutura de caches• Algumas caches podem ser internas às CPUs• Outras caches podem ser compartilhadas por mais de uma CPU
• Problema sério de consistência das caches• Solução Tipica: hardware de monitoramento e invalidação• Efeito colateral: tráfego adicional no barramento
12Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Compartilhada
• Comunicação entre processadores• Realizada através da memória compartilhada (rápida)• Acessos simultâneos podem ser um problema• Em geral, há supporte de hardware ou de software para disciplinar
acessos simultâneos à mesmo posição de memória
• Variações de organização• Pode haver vários barramentos, cada um com CPUs e memórias
• Sistema não é mais SMP: memórias próximas e distantes• NUMA: Non-Uniform Memory Access• Em geral, alocação das CPUs é feita pelo Sistema Operacional
13Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Distribuída
• Estrutura Típica: Multicomputador
14
Nó SMP
Introdução ao Processamento de Alto Desempenho – PADCelso L. Mendes (LAC/INPE)
Sistemas de Memória Distribuída
• Multicomputadores – características principais• Cada CPU só tem acesso direto à memória de seu nó• Em cada nó podem existir periféricos diversos• Cada nó tem uma imagem do Sistema Operacional• Trocas de dados entre processadores:
• Mesmo nó: através da memória compartilhada• Nós distintos: troca de mensagens
• Em sistemas de grande porte: diversos tipos de nós• Exemplo: Nós computacionais, nós de E/S, nós de login, etc.• Em geral, uso dos nós computacionais é exclusivo por job• Acesso de fora pode ser limitado a alguns nós
15Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Distribuída
• Redes de Interconexão• Fornecem conectividade de um nó a qualquer dos outros• Vários tipos de topologias possíveis
• Compromisso entre facilidade de expansão do sistema e menor distância entre os nós
• Objetivos típicos:• Diminuir a latência – tempo de acesso entre dois nós• Aumentar a largura de banda – capacidade de tráfego
• Capacidade de redundância e reconfiguração é importante
16Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Sistemas de Memória Distribuída
• Redes de Interconexão – Exemplo: Gemini (Cray XE/XK)• Torus 3-D; roteamento: X, Y, Z• Dois nós por roteador Gemini
• Coordenada X-Y-Z associada ao nó
• Rotas fixas entre dois nós A e B• Capacidade de warmswap
• Reconfiguração da rede sem
reboot do Sistema
• Múltiplos tipos de tráfego• Proc/Proc, E/S, WAN, etc• Uso compartilhado da rede
17
Y
X
Z
InterconnectNetwork
Introdução ao Processamento de Alto Desempenho – PADCelso L. Mendes (LAC/INPE)
Aceleradores• Objetivo
• Complementar CPU de propósito geral com maior capacidade de cálculos numéricos
• Longo histórico• Co-processadores aritméticos, DSPs, etc.
• Esquema predominante• CPU é usada para programação, coordenação da execução• Acelerador opera sobre partes críticas da tarefa
• Tipos de aceleradores: vários!
18Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Aceleradores (1): GPU• Graphics Processing Unit
• Inicialmente criada para processar exclusivamente gráficos• Mercados de massa: placas de video de PCs, consoles de jogos
• Preço accessível, devido à economia de escala• Difícil programação, tarefa para especialistas• Primeiros modelos: ponto-flutuante em precisão simples
• GPGPU: General Purpose GPUs• Possibilidade de uso em aplicações de PAD• Ponto-flutuante em precisão dupla• Esforço para facilitar as técnicas de programação
19Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
GPU (cont.)• GPU – Exemplo: Nvidia K40
• Mais de 7.1 bilhões de transistores• Relógio: 745 MHz• 15 “processadores” SMX, 192 núcleos/processador
• 2880 núcleos no total
• Threads são agrupados em conjuntos de 32 (warp)• Desempenho: mais que 1 Tflops efetivos, em precisão dupla
• 80% do desempenho de pico
• 6 canais de acesso à memória de 64 bits cada• Hierarquia de memória
• cache L1: em cada processador SMX• cache L2: compartilhada• memória principal (externa) DRAM, com ECC opcional
20Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
GPU (cont.)• Nvidia K40 – Diagrama de Blocos
21Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Processador SMX (15)
Cache L2
Cache L1
Control.Memória (6)fonte: Nvidia
GPU (cont.)• Nvidia K40 – Proc. SMX
22Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Núcleos (192)
Cache L1
fonte: Nvidia
Aceleradores (2): Proc. Many-Core
• Extensão de multi-core
• Princípios• Conjunto de núcleos simples, na mesma pastilha• Comunicação entre núcleos é interna (rápida)• Número de núcleos bem mais alto que o usual
• Exemplo: Intel MIC – Many-Integrated-Cores (Xeon-Phi)• Protótipo: Knights Ferry: 32 núcleos x86/Pentium• 1a geração: Knights Corner: ~60 núcleos+Vector Unit, Tianhe-2• 2a geração: Knights Landing: 72 núcleos, func. autônomo• 3a geração: Knights Hill: ???
23Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
Processador Many-Core (cont.)
• Intel Xeon-Phi – 1a Geração
24Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
fonte: Intel
Processador Many-Core (cont.)
• Intel Xeon-Phi – Arquitetura Interna
25Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)
fonte: Intel
Sistemas com Aceleradores
• Estrutura Típica
26Introdução ao Processamento de Alto Desempenho – PAD
Celso L. Mendes (LAC/INPE)