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 1
Exemplos de redes dinâmicas
Exemplos de redes dinâmicas
Exemplos de redes dinâmicas
Exemplos de redes dinâmicas
Sumário de características de redes dinâmicas
Redes reais para CAD 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.2 s na versão MX-10G
Redes reais para CAD Myrinet
Redes reais para CAD Myrinet
Redes reais para CAD Desempenho unidirecional da myrinet (1G)
Redes reais para CAD Desempenho bidirecional da myrinet (1G)
Redes reais para CAD 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
Redes reais para CAD QsTenG Produzida pela Quadrics Banda de passagem de 1.3 Gbyte/s Latência inferior a 3 s Estrutura de fat-tree
Redes reais para CAD QsNet
Redes reais para CAD QsTenG
Redes reais para CAD 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
Redes reais para CAD
Redes reais para CAD
Redes reais para CAD Infiniband (Mellanox 648 portas)
Novos modelos de rede Infiniband
Novos modelos de rede 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
Novos modelos de rede 10 Gigabit Ethernet
Novos modelos de rede 10 Gigabit Ethernet
Novos modelos de rede Custos Ethernet 10G Switch 48 portas 15.000 dolares Placa de rede 200 a 300 dolares Cabos 100 a 200 dolares por 3 metros
Condições de Paralelismo
Condições de paralelismo Embora a solução para a computação de alto desempenho seja o paralelismo, 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: P2: P3: P4: P5: C = D*E M = G+C A = B+C C = L+M 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 As análises de dependência indicam que 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 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: Fino Médio Grosso
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 agora são afetados pela 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 hardware Multiplicidade de elementos Arquitetura Paralelismo de software Dependências de dados e controle Estilo 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