elementos de conexão e condições de paralelismoaleardo/cursos/hpc/conexao2019.pdf · envolvendo...
TRANSCRIPT
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