Elementos de conexão e condições de paralelismoaleardo/cursos/hpc/conexao2019.pdf · envolvendo...

Post on 06-Nov-2019

0 views 0 download

Transcript of Elementos de conexão e condições de paralelismoaleardo/cursos/hpc/conexao2019.pdf · envolvendo...

Elementos de conexão e condições de paralelismo

Aleardo Manacero Jr.

Elementos de Conexão

O que é conectividade?

Define como os elementos de processamento (CPU e memória) de um sistema de alto desempenho serão interligados.

O que se deve considerar?

Número de conexões que cada nó deve ter. Esse valor é o GRAU do nó.

Caminho mínimo entre dois nós. O maior desses caminhos mínimos é definido como DIÂMETRO da rede.

O que se deve considerar?

Quantos canais são necessários entre duas metades de uma rede. Isso é denominado LARGURA DE BISSECÇÃO.

Formas de tráfego dos dados. Isso é definido através de uma FUNÇÃO DE ROTEAMENTO.

Exemplo

Tipos de redes de conexão

Redes estáticas Nessas redes as conexões entre os nós

são fixas. As ligações são diretas entre cada dois pontos.

Redes dinâmicas Aqui as conexões variam com o tempo.

Não existem ligações diretas entre dois nós.

Exemplos de redes estáticas

Exemplos de redes estáticas

Exemplos de redes estáticas

Exemplos de redes estáticas

Exemplos de redes estáticas

Exemplos de redes estáticas

Exemplos de redes estáticas

Toróide

Exemplos de redes estáticas

Exemplos de redes estáticas

Cubo 3-conexo

Sumário de características de redes estáticas

Exemplos de redes dinâmicas

Redes multiestágios (ômega)

Redes Crossbar

Redes em barramento

Exemplos de redes dinâmicas

Exemplos de redes dinâmicas

Exemplos de redes dinâmicas

1

Exemplos de redes dinâmicas

Exemplos de redes dinâmicas

Exemplos de redes dinâmicas

Sumário de características de redes dinâmicas

Produtos comerciais

Myrinet

Estrutura de rede logaritmica (Clos) em fat-tree

Faz uso de acesso remoto direto a memória (RDMA), evitando overhead do SO

Latência para msg pequenas de 2.2s na versão MX-10G

Produtos comerciais

Myrinet

Produtos comerciais

Myrinet

Produtos comerciais

Desempenho unidirecional da myrinet (1G)

Produtos comerciais

Desempenho bidirecional da myrinet (1G)

Produtos comerciais

Custos da Myrinet 2000 (dados de 2009)

Switch 16 portas – 6.600 dolares

Switch 256x256 – 128.000 dolares

Placa de rede – 500 a 800 dolares

Cabos – 75 a 200 dolares por 3 metros

Produtos comerciais

QsTenGProduzida pela Quadrics

Banda de passagem de 1.3 Gbyte/s

Latência inferior a 3s

Estrutura de fat-tree

Produtos comerciais

QsNet

QsTenG

Produtos comerciais

Infiniband

Introduzida pela Intel e um consórcio envolvendo gigantes como IBM, HP, Cisco, Microsoft e outros, a partir de 2001

Estrutura totalmente configurável, porém a mais usada é também a fat-tree

Largura de banda de até 20 Gbits/s

Produtos comerciais

Produtos comerciais

Produtos comerciais

Infiniband

(Mellanox 648 portas)

Produtos comerciais

Produtos comerciais

Infiniband

Produtos comerciais

Custos Infiniband

Switch Mellanox 36 portas – 10.000 dolares

Switch Mellanox 648 portas – 60.000 dolares

Placa de rede – 300 a 500 dolares

Cabos – 150 a 200 dolares por 3 metros

Produtos comerciais

10 Gigabit Ethernet

Produtos comerciais

10 Gigabit Ethernet

Produtos comerciais

Custos Ethernet 10G

Switch 48 portas – 15.000 dolares

Placa de rede – 200 a 300 dolares

Cabos – 100 a 200 dolares por 3 metros

Produtos comerciais

Switches de 40Gbps e 100Gbps

Uso em conexões em Datacenters

Interessantes para clouds e HPC

Tecnologia Infiniband

Condições de Paralelismo

Condições de paralelismo

Solução para a computação de alto desempenho é paralelismo, porém ...

Nem tudo pode ser paralelizado e mesmo quando isso é possível, existem restrições na forma em que isso ocorre.

Essas restrições estão bem definidas através das chamadas condições de paralelismo.

Condições de paralelismo

São três:Dependência de dados

(ou Condições de Bernstein)

Dependência de controle

Dependência de recursos

Dependência de recursos

É bastante natural, restringindo o paralelismo ao volume de recursos que podem ser simultaneamente utilizados.

Trata de recursos como registradores, memória, canais de conexão, acesso a arquivos, etc.

Dependência de controle

Ocorre quando as instruções que devem ser executadas (e portanto paralelizadas) dependem de resultados que serão conhecidos apenas em tem po de execução

Não se pode contornar essa dependência quando ela ocorre.

Dependência de dados

Assume três formas:

Fluxo

Antidependência

Saída

Dependência de fluxo de dados

Ocorre quando o resultado (saída) de um grupo de instruções (S1) é necessário (entrada) para a execução de um segundo grupo de instruções (S2)

A = X + Y

B = A + C

D = B * 2

Antidependência

Ocorre quando a saída de um grupo de instruções (S2) for entrada para um grupo de instruções (S1), que o anteceda numa execução sequencial.

A = 2

X = A + 1

A = 5

Dependência de saída de dados

Ocorre quando uma das saídas de dois grupos de instruções (S1 e S2) forem comuns.

A = 2

X = A + 1

A = 5

Condições de Bernstein

Formalizam as dependências de fluxo de dados.

Algumas definições:

Processo fragmento de um programa

Conjunto de entrada (Ii) entradas necessárias para executar Pi

Conjunto de saída (Oi) saídas produzidas pela execução de Pi

Condições de Bernstein

Dois processos podem executar em paralelo (Pi // Pk ; i<k) se:

Ii Ok = antidependência

Ik Oi = fluxo

Oi Ok = saída

Condições de Bernstein

Ampliando-se tais condições para n processos temos:

P1 // P2 // P3 // ... // Pn se e somente se:

Pi // Pj para todo i,j = 1...n e i j

Situações indeterminadas

Embora existam situações facilmente verificáveis quanto ao paralelismo, existem várias outras em que é impossível saber se duas ou mais instruções podem ou não ser paralelizadas.

Essa situações, tipicamente, estão relacionadas com ciclos de repetição

Situações indeterminadas

Índice de uma variável indexada também é indexado

A[i] = A[b[i]] + C;

Índice (em um ciclo) não contém a variável de indexação

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

A[ j ] = b[ j+3 ] * C;

Situações indeterminadas

Variável tem índices diferentes numa expressão

A[i] = B[j] * A[j];

Índice não é linearmente dependente da variável de indexação do ciclo

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

A[i*j] = b[j];

Exemplo de paralelização

Dado o conjunto de instruções:P1: C = D*EP2: M = G+CP3: A = B+CP4: C = L+MP5: F = G/E

Pode-se chegar ao seguinte grafo de dependências....

Exemplo (continuação)

Grafo de dependência

Exemplo (continuação)

Extração de paralelismo

Análise de dependência indica quais pontos de um programa não podem ser paralelizados

O problema é como identificar os pontos passíveis de paralelização

Todas as técnicas para isso fazem uso de grafos dirigidos

Extração de paralelismo

O grau de paralelismo de um programa depende das restrições de dependência aqui examinadas (dados, controle e recursos) e também do tipo de arquitetura de conexão existente na máquina.

Essa última dependência resulta na granulação de um programa.

Exemplo de grafo

Responsabilidade na extração (1)

Depende da granulação do programa

Então o que significa, exatamente, granulação?

Granulação de um programa

Diz respeito ao tamanho dos conjuntos de instruções cujas instruções devem, obrigatoriamente, serem executadas sequencialmente.

Tipicamente são definidos três tamanhos de grãos:

FinoMédioGrosso

Grão fino

São os menores grãos possíveis.

Normalmente envolvem conjuntos de poucas instruções, até, no máximo, pequenos ciclos não-recursivos (ILP – Instruction-Level Parallelism).

Representam um alto grau de paralelismo.

Demandam muita comunicação e controle.

Grão médio

Envolvem procedimentos, funções, rotinas, tarefas, etapas de um trabalho ou partes pouco complexas de um programa.

Grau médio de paralelismo

Necessidades intermediárias de comunicação e controle.

Em geral é pouco usado

Grão grosso

Obviamente são os maiores.

Envolvem programas inteiros ou partes complexas de um programa.

Pequeno grau de paralelismo

Pouca necessidade de comunicação e controle.

Grande uso em sistemas de troca de mensagens, como clusters.

Impacto da granulação

O tamanho do grão ótimo para uma dada aplicação é fortemente dependente do modo de comunicação do sistema.

Se a comunicação é rápida o grão pode ser fino (precisa de muita comunicação)

Se a comunicação é lenta o grão deve ser médio ou grosso (evitando comunicação)

Responsabilidade na extração (2)

Para granulação fina a extração do paralelismo deve ser feita pelo compilador (nível de instruções e laços)

Para granulação média e grossa a extração deve ser feita pelo programador (funções e programas)

Esses parâmetros estão mudando com a introdução de arquiteturas manycores, como GPUs

Extração de paralelismo

Outro aspecto a resolver na obtenção de paralelismo diz respeito a quem o restringe

Nesse caso temos dois tipos:

Paralelismo de hardwareMultiplicidade de elementosArquitetura

Paralelismo de softwareDependências de dados e controleEstilo de programação

Software X Hardware

A existência dos paralelismos de hardware e software cria o problema do correto casamento entre os dois.

Esse casamento é medido pelo balanceamento entre o número de instruções paralelas e o número de elementos de processamento.

Exemplo de balanceamento

Paralelismo de software

Paralelismo de hardware

Exemplo de balanceamento

Uso de replicação de instruções

Balanceamento por multiplicação de grãos

Comentários finais

Os aspectos relativos à obtenção de paralelismo e definição de granulosidade voltarão a ser trabalhados em outros momentos do curso

É importante aqui compreender que o paralelismo é a solução para computação de alto desempenho, mas

... não é uma fonte inesgotável de recursos