Computação de Alto Desempenho

126
Computação de alto desempenho Aleardo Manacero Jr. DCCE/UNESP Grupo de Sistemas Paralelos e Distribuídos

Transcript of Computação de Alto Desempenho

Page 1: Computação de Alto Desempenho

Computação de alto desempenho

Aleardo Manacero Jr.DCCE/UNESP

Grupo de Sistemas Paralelos e Distribuídos

Page 2: Computação de Alto Desempenho

Programa

1. Introdução

2. Processadores para CAD

3. Sistemas de memória

4. Paralelismo usando bibliotecas de baixo nível

5. Paralelismo usando openMP

Page 3: Computação de Alto Desempenho

Programa

6. Conectividade e condições de paralelismo7. Identificação de paralelismo e modelos de paralelização8. Avaliação de desempenho e otimização de programas paralelos9. Paralelismo usando MPI10. Paralelismo usando GP-GPUs

Page 4: Computação de Alto Desempenho

Bibliografia

Pacheco, P. – Parallel Programming with MPI

Pacheco, P. - Introduction to Parallel Programming

Shen, J.P., and Lipasti, M.H. - Modern Processor Design: Fundamentals of Superscalar Processors

Hwang, K. – Advanced Computer Architectures

Dowd, K. & Severance, D. – High Performance Computing

Page 5: Computação de Alto Desempenho

Bibliografia

Hennessy, J.L., Patterson, D.A., and Goldberg, D. - Computer Architecture: A Quantitative Approach, 5th edition, 2012

Patterson, D.A., Hennessy, J.L., et al - Computer Organization and Design: The Hardware/Software Interface, 3rd Edition, 2011

Culler, Singh e Gupta - Parallel Computer Architecture,

Etc......

Page 6: Computação de Alto Desempenho

Website da disciplina

http://www.dcce.ibilce.unesp.br/~aleardo/cursos/hpc

O que tem lá:

Avisos sobre a disciplina

Material de aula

Regras de avaliação

Page 7: Computação de Alto Desempenho

Introdução

Porque precisamos de desempenho?Porque queremos resolver problemas complexos, grandes ou com muitos dados

mas

Nossos computadores são LENTOS!!

Page 8: Computação de Alto Desempenho

Introdução

Um bilhão de operações aritméticas por segundo é rápido o suficiente?

Como saber se é suficiente ??

Vamos a um exemplo prático...

Page 9: Computação de Alto Desempenho

Introdução

Um sistema de previsão metereológica trabalha usando um “cubo” cuja base é a área em que se quer prever o tempo e a altura corresponde a altitude a considerar.

Page 10: Computação de Alto Desempenho

Exemplo

Page 11: Computação de Alto Desempenho

Exemplo

Page 12: Computação de Alto Desempenho

Exemplo

Page 13: Computação de Alto Desempenho

Exemplo

Page 14: Computação de Alto Desempenho

Exemplo

Nesse cubo se faz um reticulado (formando uma matriz tridimensional), com o número de pontos determinado pela precisão desejada.

Page 15: Computação de Alto Desempenho

Exemplo

Considerando-se como sistema os EUA e Canadá (área de 20 milhões de km2), como sendo um “cubo” de altitude 20km, com pontos de discretização a cada 1km, teríamos aproximadamente 4.108 pontos para cálculo.

Page 16: Computação de Alto Desempenho

Exemplo

Se para determinar as condições de cada ponto (temperatura, pressão, umidade, vento) realizarmos 5000 instruções de máquina, teremos 2.1012 operações

Para fazer a previsão de dois dias, com informações de hora em hora (o que é impreciso), teremos aproximadamente 1.1014 operações no total.

Page 17: Computação de Alto Desempenho

Exemplo

Numa CPU que realize 1 bilhão de operações por segundo (1x109) isso levaria cerca de 1.105 segundos,

o que resulta em cerca de 27,8 horas!!!

Mas um i7 realiza cerca de 6 bilhões de operações por segundo, então como fica essa conta?

Page 18: Computação de Alto Desempenho

Exemplo

Numa CPU que realize 6 bilhões de operações por segundo (6x109) isso levaria cerca de 16,6.103 segundos,

o que resulta em cerca de 4,6 horas!!!

Para reduzir esse tempo para algo que permita reação (menos que dez minutos), nosso computador teria que fazer cerca de 200 bilhões de operações por segundo!!

Page 19: Computação de Alto Desempenho

Exemplo (um adendo)

Um Xeon (W-2140B) tem velocidade máxima de 87 Gflops (16 núcleos de 5,44 Gflops cada), o que permitiria fazer o mesmo processamento em cerca de 1150 segundos,

ou cerca de 19 minutos!!!

Esse é um valor razoável, mas vale apenas se os 16 núcleos operarem em paralelo

Page 20: Computação de Alto Desempenho

Conclusão do exemplo

Precisamos de um “supercomputador” para fazer essa previsão.

Mas será que dá para implementar esse supercomputador??

Apenas se usarmos paralelismo....

Page 21: Computação de Alto Desempenho

Porque só com paralelismo?

Suponham que temos uma máquina capaz de realizar um 200 bilhões de operações por segundo.

Se a usarmos para executar o comando

for (i=0; i < DuzentosBi; i++)

z[i] = x[i] + y[i];

O que acontecerá??

Page 22: Computação de Alto Desempenho

Porque só com paralelismo?

Para executar o comando listado é preciso fazer 600 bilhões de acessos à memória em um segundo

Se cada acesso ocorresse na velocidade da luz, teríamos como distância média d, entre CPU e memória, o seguinte:

d = v (um acesso) / número de acessos = 3.108 / 0,6.1012

= 5.10-4m = 0,5mm

Page 23: Computação de Alto Desempenho

Porque só com paralelismo?

Assim o “diâmetro” da memória é, no máximo, o dobro dessa distância, o que resulta em DIAM = 2 * d = 1,0.10-3m

Se a memória tiver que armazenar as posições dos três vetores do exemplo, então o diâmetro de uma posição é dado por

10 átomos ≃diam ( pos)=DIAM

√0,6 .1012≃1. 10−9m

Page 24: Computação de Alto Desempenho

Mas e Xeon a 87 Gflops??

Considerando o código anterior, mas fazendo 87 bilhões de acessos à memória em um segundo temos:

d = v (um acesso) / num de acessos

= 3.108 / 87.109

= 3,4.10-3m = 3,4mm

Page 25: Computação de Alto Desempenho

Mas e o Xeon a 87 Gflops??

Assim o diâmetro da memória é, no máximo, o dobro dessa distância, o que resulta em DIAM = 2 * d = 6,8.10-3m

Se a memória tiver que armazenar as posições dos três vetores do exemplo, então o diâmetro de uma posição é dado por

≈ 230 átom osdiam ( pos)=DIAM

√87 .109≃23 .10−9m

Page 26: Computação de Alto Desempenho

Exemplos de aplicação

Produção de batatas Pringles

Exploração de petróleo

Aerodinâmica

Geociências

Data mining

Machine learning

E-commerce

Page 27: Computação de Alto Desempenho

Exemplos de aplicação

Page 28: Computação de Alto Desempenho

Exemplos de aplicação

Page 29: Computação de Alto Desempenho

Exemplos de aplicação

Page 30: Computação de Alto Desempenho

Exemplos de aplicação

Page 31: Computação de Alto Desempenho

Exemplos de aplicação

Page 32: Computação de Alto Desempenho

Exemplos de aplicação

Page 33: Computação de Alto Desempenho

Como se faz(ia) CAD?

Uso de supercomputadores (processamento vetorial)

Uso de máquinas massivamente paralelas

Uso de clusters de computadores

Uso de grids

Uso de processadores paralelos (multicores e GPUs) híbridos

Page 34: Computação de Alto Desempenho

Diferenças entre sistemas

Os sistemas do slide anterior se diferenciam por terem arquiteturas diferentes

Cada arquitetura apresenta recursos de hardware e possibilidades de desempenho diferentes

Mas então o que é arquitetura

Page 35: Computação de Alto Desempenho

Arquitetura de um computador

É como são definidas a organização do hardware e as necessidades de software de um sistema

No hardware temos:CPUCacheMemóriaBarramentosMicrocódigosPipelines

Page 36: Computação de Alto Desempenho

Arquiteturas convencionais

A máquina de Von Neumann

Page 37: Computação de Alto Desempenho

Gargalo de von Neumann

A máquina de von Neumann, embora bastante eficiente em sua origem, é um problema pois...

... obriga que se faça sempre um acesso estritamente sequencial aos dados e instruções

Page 38: Computação de Alto Desempenho

Gargalo de von Neumann

Uma alternativa para esse problema é acelerar os processos de acesso aos dados e instruções e de execução das mesmas, o que é feito através de

Memória cache

Pipeline

Page 39: Computação de Alto Desempenho

Gargalo de von Neumann

Cache: Faz o armazenamento intermediário de dados e instruções (normalmente separados) em memória rápida.

Seu uso é possível graças ao Princípio da Localidade.

Page 40: Computação de Alto Desempenho

Gargalo de von Neumann

Pipeline:Substitui a unidade de controle (UC) por unidades especializadas em etapas do processo de execução de uma instrução.

Page 41: Computação de Alto Desempenho

Gargalo de von Neumann

Outra alternativa.....

.... o uso de arquiteturas não-convencionais (paralelas)

Page 42: Computação de Alto Desempenho

Arquiteturas paralelas

A forma de estruturação do hardware de sistemas paralelos pode variar bastante.

Essas variações envolvem a forma como as máquinas são ligadas e as maneiras de organização dos dados e das instruções dos programas.

Page 43: Computação de Alto Desempenho

Classificação de Flynn

Uma forma de sistematizar a variedade de configurações é a classificação proposta por Flynn, em termos do fluxo de instruções e dados, que resulta em:

SISD sistemas convencionais

SIMD computadores vetoriais

MISD arrays sistólicos

MIMD paralelismo massivo

Page 44: Computação de Alto Desempenho

Classificação de Flynn

Na classificação de Flynn as siglas têm o seguinte significado:

S / M = single ou multiple streams

I = instruction stream (fluxo de instruções)

D = data stream (fluxo de dados)

Page 45: Computação de Alto Desempenho

Como obter o paralelismo?

Basicamente são dois tipos de sistemas:

Os multiprocessadores

X Os multicomputadores

A diferença entre eles é a forma de acoplamento entre os elementos de processamento.

Page 46: Computação de Alto Desempenho

O que muda no processador?

Nada...

Exceto pelo maior número de elementos de processamento.

Page 47: Computação de Alto Desempenho

O que muda na memória?

Quase tudo....

No caso de multiprocessadores a memória aparece em três diferentes modelos de acesso:

UMA, NUMA e COMA

Page 48: Computação de Alto Desempenho

Memória UMA

Todos os dados, independente de sua localização física, têm tempo de acesso uniforme para todos os processadores.

Page 49: Computação de Alto Desempenho

Memória NUMA

Aqui os tempos de acesso mudam conforme a localização física dos dados.

Page 50: Computação de Alto Desempenho

Memória NUMA

Cluster hierárquico

Page 51: Computação de Alto Desempenho

Memória COMA

O acesso aos dados é feito considerando a memória local como memória cache.

Page 52: Computação de Alto Desempenho

E para os multicomputadores?

O padrão de acesso é através de troca de mensagens!

Page 53: Computação de Alto Desempenho

Como programas tratam a memória?

Os modelos de acesso descritos não consideram como se dá o direito de acesso dos programas aos dados na memória.

Isso é feito pelos modelos PRAM (Parallel Random Access Machine)

Page 54: Computação de Alto Desempenho

Modelos PRAM

Definem as formas de acesso para operações de leitura e escrita na memória. Assim temos:

EREW Escrita e Leitura exclusivas

CREW Escrita exclusiva, Leitura concorrente

ERCW Escrita concorrente, Leitura exclusiva

CRCW Escrita e Leitura concorrentes

Conflitos de escrita são resolvidos por protocolos como “todos iguais”, “último a escrever”, etc

Page 55: Computação de Alto Desempenho

Um pouco de história (antiga)

As máquinas de alto desempenho seguiram, em seus primeiros anos, quatro caminhos:

Multiprocessadores com memória compartilhada

Multiprocessadores com troca de mensagens

Máquinas vetoriais

Máquinas massivamente paralelas (SIMD)

Page 56: Computação de Alto Desempenho

Multiprocessadores com memória compartilhada

COMA

crossbar

Clusters de SMPs

Page 57: Computação de Alto Desempenho

Multiprocessadores com troca de mensagens

Caltech

Conectividade interessante

Page 58: Computação de Alto Desempenho

Máquinas vetoriais

Projeto fracassado

Seymour Cray fez projeto

Page 59: Computação de Alto Desempenho

Máquinas massivamente paralelas (SIMD)

Seymour Cray fez projeto

Big fail

Big hit

Uso de transputers

Page 60: Computação de Alto Desempenho

Máquinas massivamente paralelas (SIMD)

Page 61: Computação de Alto Desempenho

Padrão atual

Incremento de ambientes multicomputadores: Clusters (Beowulf),

Grades (grid computing) e

Soluções multicore (incluindo GPUs)

Uso de ambientes mistos, com clusters de nós multiprocessadores

Uso de processadores auxiliares de baixo (muitas vezes nem tanto) custo

Page 62: Computação de Alto Desempenho

CAD no mundo

Quem produz equipamentos de CAD, hoje em dia, são empresas americanas e chinesas (poucas japonesas e européias)

Quem usa CAD, hoje em dia, está no hemisfério norte

Existe um levantamento que ranqueia equipamentos de alto desempenho em funcionamento, o Top500 Report

Page 63: Computação de Alto Desempenho

O que diz o Top500

Detalhes em www.top500.org

De novembro de 2019 destacam-se:

Clusters totalizam mais de 91% das máquinas, embora não sejam as mais potentes

Summit (em Oak Ridge) é a atual nº 1, com 148.600 TFlops

78,8% das máquinas entre China (45,6), EUA (23,4), Japão (5,8) e França (4.0)

Page 64: Computação de Alto Desempenho

O que diz o Top500

Outros destaques:

3 máquinas na América Latina (no Brasil)

A máquina mais potente do Brasil é um cluster do LNCC (1849 Tflops, na posição 193)

As outras estão na Petrobrás (195) e SENAI (347)

6 máquinas no hemisfério sul (Austrália (3) e Brasil (3))

No hemisfério sul o sistema mais potente está na Austrália (posição 47, com 4407 TFlops)

Page 65: Computação de Alto Desempenho

O que diz o Top500

Santos Dumont – LNCC é a máquina brasileira mais potente, com 1849 TFlops

Page 66: Computação de Alto Desempenho

O que diz o Top500

Outros destaques:

458 clusters, usando processadores tipicamente Intel (Xeon)

144 sistemas com coprocessadores (principalmente Nvidia (135) e Intel Xeon Phi (5))

Uso intenso de Infiniband e Gigabit Ethernet como redes de conexão, embora Cray Interconnect e outros padrões proprietários tenham maior desempenho total

Page 67: Computação de Alto Desempenho

Distribuição por países

desempenho

Page 68: Computação de Alto Desempenho

Distribuição por países

USA

China

Japão

UKFrança

Alemanha

Page 69: Computação de Alto Desempenho

Área de aplicação

desempenhoSistemas

Page 70: Computação de Alto Desempenho

Área de aplicação

Universidades

Pesquisa

Indústria

Page 71: Computação de Alto Desempenho

Desempenho global

#1

#500

Total

Page 72: Computação de Alto Desempenho

Previsões do futuro (em 2015)

2016

2019/20

Page 73: Computação de Alto Desempenho

Previsões do futuro (em 2016)

2016 confirmado

2020

Page 74: Computação de Alto Desempenho

Previsões do futuro (em 2017)

Curva mudandoinclinação

2020 ??

Page 75: Computação de Alto Desempenho

Previsões do futuro (em 2018)

Inclinação mudou

2021 ??

Page 76: Computação de Alto Desempenho

Previsões do futuro

2021 ??Será a Lei de Moore?

Page 77: Computação de Alto Desempenho

Tipos de arquitetura

Sistemasdesempenho

Page 78: Computação de Alto Desempenho

Tipos de arquitetura

Clusters

MPP

SMP

ConstelaçãoSingle

2003

Page 79: Computação de Alto Desempenho

Tipos de Sistema Operacional

Sistemasdesempenho

Page 80: Computação de Alto Desempenho

Mecanismos de comunicação

Sistemas desempenho

Page 81: Computação de Alto Desempenho

Mecanismos de comunicação

desconhecido

hipercubo

toróide

SP switch

hipercubohyperplex

myrinet

Gigabit Ethernet

Infiniband

10G

2000 2005 2010

outros

2015

40G

25G

AriesOmni

Page 82: Computação de Alto Desempenho

ALGUNS SISTEMAS

(alguns novos, outros nem tanto !)

Page 83: Computação de Alto Desempenho

IBM Stretch Supercomputer

Page 84: Computação de Alto Desempenho

Lançado em 1961

Capacidade de 100 bilhões de operações

Por dia!!!!

Tinha 150 mil transistores....

i7 tem 1.17 bilhões

IBM Stretch Supercomputer

Page 85: Computação de Alto Desempenho

Algumas inovações importantes:

Multiprogramação

Pipeline

Proteção de memória

Byte de oito bits

IBM Stretch Supercomputer

Page 86: Computação de Alto Desempenho

Earth Simulator

Page 87: Computação de Alto Desempenho

IBM BlueGene/L (2004)

Page 88: Computação de Alto Desempenho

IBM BlueGene/L

Page 89: Computação de Alto Desempenho

IBM BlueGene/L

Page 90: Computação de Alto Desempenho

IBM RoadRunner (2008)

Page 91: Computação de Alto Desempenho

IBM RoadRunner

Page 92: Computação de Alto Desempenho

IBM RoadRunner

Page 93: Computação de Alto Desempenho

IBM RoadRunner

Page 94: Computação de Alto Desempenho

IBM RoadRunner

Page 95: Computação de Alto Desempenho

Cray XT4 (2006)

Page 96: Computação de Alto Desempenho

Cray XT5 (Jaguar - 2009)

Page 97: Computação de Alto Desempenho

Cray XT5

Page 98: Computação de Alto Desempenho

Cray XK7 - Jaguar (2009/12)

Page 99: Computação de Alto Desempenho

Jaguar

Page 100: Computação de Alto Desempenho

Tianhe (2010)

Page 101: Computação de Alto Desempenho

IBM BlueGene/P

Page 102: Computação de Alto Desempenho

BlueGene/Q - Sequoia (2012)

Page 103: Computação de Alto Desempenho

Cray XK7 - Titan (2012/3)

Page 104: Computação de Alto Desempenho

Cray XC-40 (2014)

Desempenho esperado de 75 Tflops/rack

Até 128 Xeon E5 por rack

Cray Linux (versão do SuSE Linux)

Page 105: Computação de Alto Desempenho

Cray XC-40

Page 106: Computação de Alto Desempenho

Sunway Taihulight (2016)

Page 107: Computação de Alto Desempenho

Summit (2018)

Page 108: Computação de Alto Desempenho

Summit (2018)

Page 109: Computação de Alto Desempenho

Summit (2018)

GPU

Power9

Page 110: Computação de Alto Desempenho

Summit (2018)

Page 111: Computação de Alto Desempenho

Frontier (2021 ??)

Page 112: Computação de Alto Desempenho

O que usar?

Page 113: Computação de Alto Desempenho
Page 114: Computação de Alto Desempenho

Padrão atual

Incremento de ambientes multicomputadores, principalmente através dos conceitos de:

cluster de estações de trabalho (Beowulf),

computação por grades (grid computing) e

computação ubíqua (ubiquitious computing)

Page 115: Computação de Alto Desempenho

Clusters

Page 116: Computação de Alto Desempenho

Clusters

Page 117: Computação de Alto Desempenho

Grids

Page 118: Computação de Alto Desempenho

Grids

Page 119: Computação de Alto Desempenho

Padrão atual

Incremento no uso de processadores dedicados, como:

processadores gráficos (GPU),

FPGA e

cell processors (em desuso)

Page 120: Computação de Alto Desempenho

Cray XD1

Page 121: Computação de Alto Desempenho

Cray XD1

Page 122: Computação de Alto Desempenho

D-Wave 2 Quantum Computer

Page 123: Computação de Alto Desempenho

D-Wave 2 Quantum Computer

Page 124: Computação de Alto Desempenho

Onde chegaremos

Page 125: Computação de Alto Desempenho

Onde chegaremos

Lei de Moore

Problemas com consumo de energia e resfriamento dos processadores (top500 agregou dados sobre consumo de energia)

Uso cada vez mais intenso de clusters e suas derivações (multicores, grids, clouds, etc)

Tendência de máquinas orientadas para aplicação (Google e TPUs)

Page 126: Computação de Alto Desempenho

Onde chegaremos