Elementos de conexão e condições de paralelismo. Aleardo Manacero Jr.

Documentos relacionados
Elementos de conexão e condições de paralelismo. Aleardo Manacero Jr.

Subsistema de Entrada/Saída. Aleardo Manacero Jr.

Aula 3 Redes de Interconexão

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

Caracterização de Sistemas Distribuídos

Arranjo de Processadores

COMPUTADORES. Arquiteturas de Computadores Paralelos. Prof.: Agostinho S. Riofrio

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Processadores para computação de alto desempenho

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

Organização de Sistemas de Computadores

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

30/5/2011. Sistemas computacionais para processamento paralelo e distribuído

Processadores para computação de alto desempenho

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Barramento compartilhado

Topologias de Arquiteturas de Comunicação

Organização e comunicação em plataformas paralelas

Microarquiteturas Avançadas

Organização de Computadores II. Arquiteturas MIMD

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

Organização e Arquitetura de Computadores I

Arquiteturas Paralelas

Arquitetura e Organização de Processadores. Aula 4. Pipelines

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

Multiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011

Apresentação. Ementa da Disciplina. Objetivo da Disciplina. DCA-108 Sistemas Operacionais. Referências Bibliográfica. Referências Bibliográfica

Organização de Computadores I

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

Organização de Computadores 2005/2006 Processamento Paralelo

Algoritmos Computacionais

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 04: PROCESSAMENTO PARALELO: MULTICOMPUTADOR

Tópicos Avançados em Sistemas Computacionais: Infraestrutura de Hardware Aula 06

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

Identificação de Paralelismo. Aleardo Manacero Jr.

Processadores para computação de alto desempenho

Arquitetura e Organização de Computadores

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

ARQUITETURA DE COMPUTADORES

Atol Fortin, Bruno da Hora, Lucas Piva, Marcela Ortega, Natan Lima, Pedro Raphael, Ricardo Sider, Rogério Papetti. 28 de novembro de 2008

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Arquiteturas RISC e CISC. Adão de Melo Neto

Sistemas Distribuídos

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho

ENGENHARIA DE SISTEMAS MICROPROCESSADOS

Conceitos Básicos Processador

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura e Organização de Processadores. Aula 1. Introdução Arquitetura e Organização

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

SSC510 Arquitetura de Computadores. 10ª aula

Aula 1: Introdução à Organização de Computadores

Arquitetura de Computadores Aula 11 - Multiprocessamento

Barramento. Prof. Leonardo Barreto Campos 1

Organização e Arquitetura de Computadores I

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Estrutura da Apresentação. Introdução ao Processamento Paralelo e Distribuído. Conceitos em PPD. Conceitos em PPD 4/26/09.

Arquitetura de Computadores

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Informática básica. Professor: Francisco Ary

Supercomputador Pleiades

Sistemas Operacionais Distribuídos

CPU. Funções: Componentes: Processamento; Controle. UC (Unidade de Controle); Registradores; ALU s, FPU s etc. Arquitetura de Computadores 3

Unidade 12: Introdução ao Paralelismo:

Processadores para computação de alto desempenho

Programação Distribuída e Paralela. Jorge Barbosa

Sistemas Operacionais. Conceitos de Hardware

Organização de Computadores Computação paralela; Sistema de entrada e saída (I/O); Suporte a Sistema operacional. Professor: Francisco Ary

Introdução OpenMP. Nielsen Castelo Damasceno

Sistemas Distribuídos. Aleardo Manacero Jr.

18/08/2015. Capítulo 2: Manipulação de dados. Arquitetura de Computadores. Capítulo 2: Manipulação de Dados

Computação de alto desempenho

Computadores e Programação (DCC/UFRJ)

Breve Introdução aos Sistemas Operativos. Disciplina de Informática PEUS, U.Porto

Sistemas Operacionais. Adão de Melo Neto

Arquitetura de Computadores

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

Informática I. Aula 14. Aula 14-10/10/2007 1

Arquitetura de Computadores. Prof. João Bosco Jr.

Computadores Vetoriais

Processos Concorrentes

Sistemas distribuídos. Prof. Emiliano Monteiro

Multiprogramação leve em arquiteturas multi-core

Técnicas para vetorização de código. Bruno Cardoso Lopes Instituto de Computação - Unicamp

Arquitetura de Microprocessadores

Introdução à Computação: Sistemas de Computação

Infraestrutura de Hardware. Funcionamento de um Computador

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Programação Concorrente

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO

Arquitetura de Computadores

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

SEL-0415 Introdução à Organização de Computadores Aula 2 Prof. Dr. Marcelo Andrade da Costa Vieira

Introdução ao Fortran 90

Transcrição:

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