Processamento de Alto Desempenho Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Sumário • • • • • • • • • Introdução ao Processamento de Alto Desempenho Desafios e considerações Taxonomia de arquiteturas paralelas Classificação quanto à memória Multiprocessadores Multicomputadores Máquinas paralelas Requisitos básicos de PAD Medidas de desempenho Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • O que é Processamento de Alto Desempenho? – (quadro 1) • Primeiros trabalhos utilizando paralelismo – Década de 40 – Sistema Model V • Stibitz e Willians (Bell Telephone) – Formado por 2 processadores – Já mostrava um bom exemplo de uma arquitetura paralela • 2 programas diferentes poderiam ser executados ao mesmo tempo Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Máquinas são geralmente criadas utilizando o modelo de Von Neumann – Dados e programas são armazenados na memória – Memória é separada da CPU – Instruções e dados são trocados entre a memória e a CPU Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Fluxo de dados limita a velocidade do computador – Velocidade de conexão entre a memória e o processador define esta velocidade • Geralmente, as instruções são executadas em um tempo menor do que a sua transferência • Isto é denominado Gargalo de Von Neumann – (quadro 2) Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • O Gargalo de Von Neumann é um dos principais precursores do paradigma de Programação Paralela e Concorrente • Adição de mais processadores supera o Gargalo de Von Neumann – Cada um com sua taxa individual de transferência Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • No mundo real, as coisas acontecem em paralelo – Natural que computações possam ser realizadas em paralelo, ou não impedidas de tal • Programação sequencial – Inevitável ordenar as ações a serem realizadas – Impede novos conceitos • Dificuldade de perceber o paralelismo em alguns casos Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Aplicações complexas – Aplicações de hoje em dia esperam muito mais dos processadores – Precisam de poder computacional muito além do existente • • • • • • • Inteligência artificial Simulações (principalmente Monte Carlo) Algoritmos de busca e processamento de grafos Processamento de imagens Procura por petróleo Bancos de dados (principalmente em tempo real) Etc... Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Aplicações complexas – Aplicações de hoje em dia esperam muito mais dos processadores – Precisam de poder computacional muito além do existente • • • • Previsão do tempo Simulações físicas com alta carga computacional Bioinformática Computação gráfica Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Hoje em dia, paralelismo traz muito benefício para a computação – Principalmente para a área da pesquisa • Mas, por que exatamente utilizar paralelismo? – O Processamento Paralelo surge com o intuito de melhorar o desempenho de tais aplicações – Proporciona um custo relativamente pequeno para a aquisição de um ambiente paralelo Processamento de Alto Desempenho – Prof. Mateus Raeder Introdução ao PAD • Supercomputadores são muito caros – Alguns por mais de US$130,000.000,00 • A obtenção de computadores pessoais é mais barata – Agrupar computadores pessoais mais baratos – Mesmo desempenho (teórico) do que um supercomputador – Preço mais baixo Processamento de Alto Desempenho – Prof. Mateus Raeder Desafios e considerações • Idealmente, a modelagem de programas paralelos deve ser a mais abstrata possível – Permitindo a execução do programa em diferentes arquiteturas – Aumentar o tempo de vida dos programas • Arquiteturas novas surgindo • Ocultar aspectos de arquitetura – (quadro 3) Processamento de Alto Desempenho – Prof. Mateus Raeder Desafios e considerações • O controle da execução em paralelo é bastante complexo • O modelo paralelo criado deve: – Decompor o programa em partes paralelizáveis – Mapear as tarefas aos processadores • Decisão de onde alocar cada tarefa • Influenciada pelo tipo de processadores (homogêneos x heterogêneos) – Comunicação entre as tarefas paralelas – Sincronização das tarefas Processamento de Alto Desempenho – Prof. Mateus Raeder Desafios e considerações • Facilidade de entendimento – O modelo deve ser o mais entendível possível – Ocultar ao máximo a complexidade – De uso simples • Previsibilidade de desempenho – É possível prever o desempenho pra diferentes arquiteturas • Evitar comunicação exagerada • Balancear a carga de trabalho adequadamente Processamento de Alto Desempenho – Prof. Mateus Raeder Taxonomia de Arquiteturas Paralelas • A classificação de arquiteturas paralelas mais difundida na área é a de Flynn – Fluxo de instruções – Fluxo de dados • Resulta em 4 classes (quadro 4) – – – – SISD (Single Instruction, Single Data) SIMD (Single Instruction, Multiple Data) MISD (Multiple Instruction, Silgle Data) MIMD (Multiple Instruction, Multiple Data) Processamento de Alto Desempenho – Prof. Mateus Raeder Taxonomia de Arquiteturas Paralelas • SISD – – – – Fluxo de instruções alimenta a unidade de controle (C) Ativa a CPU (P) Atua sobre um único fluxo de dados Máquinas tradicionais de Von Neumann (pessoais) • SIMD – Única instrução (uma unidade de controle) – Executada de forma síncrona sobre um conjunto de dados diferentes – Unidade de controle é alimentada por um fluxo de instruções – A mesma instrução, é enviada para todas as CPUs • Mesmo programa sobre diferentes dados (máquinas vetoriais) Processamento de Alto Desempenho – Prof. Mateus Raeder Taxonomia de Arquiteturas Paralelas • MISD – Várias instruções sobre um único dado – Classe considerada vazia • Diferentes instruções acessam e operam a mesma posição de memória ao mesmo tempo • Impraticável • MIMD – Vários instruções sobre vários dados – É a arquitetura desejada em computadores paralelos – Cada processador executa um programa com seus próprios dados • De maneira assíncrona Processamento de Alto Desempenho – Prof. Mateus Raeder Classificação quanto à Memória • Classificadas quanto ao compartilhamento da memória – Memória compartilhada – Memória distribuída Processamento de Alto Desempenho – Prof. Mateus Raeder Classificação quanto à Memória • Memória compartilhada – Um único espaço de endereçamento para todos os processadores – Comunicação entre os processadores através de escrita e leitura da memória • Memória distribuída – Múltiplos espaços de endereçamento privados – Cada processador com o seu espaço de endereçamento Processamento de Alto Desempenho – Prof. Mateus Raeder Classificação quanto à Memória • Multiprocessador x Multicomputador • Multiprocessador – – – – N processadores acessam uma memória compartilhada Comunicação através de leitura e escrita na memória Espaço de endereçamento global Tipos de multiprocessadores: • UMA (Uniform Memory Access) • NUMA (Non-Uniform Memory Access) • COMA (Cache-Only Memory Architecture) Processamento de Alto Desempenho – Prof. Mateus Raeder Multiprocessadores • UMA (quadro 5) – Memória centralizada (equidistante aos processadores) – Acesso uniforme, através do barramento (um de cada vez) • NUMA (quadro 6) – Pares processador/memória conectados através de um barramento • Memória é dividida em blocos • Cada bloco associado a um processador • Aparentemente distribuído, mas possui espaço de endereçamento único • Quando o acesso é “local”, o tempo é reduzido Processamento de Alto Desempenho – Prof. Mateus Raeder Multiprocessadores • COMA (quadro 7) – Assemelham-se às arquiteturas NUMA – Memórias cache para cada processador • Capacidade de armazenamento bem maior que uma memória cache normal – Dados podem migrar de uma memória para a outra • Diminui o número de cópias redundantes da NUMA • Maior dificuldade para encontrar o dado Processamento de Alto Desempenho – Prof. Mateus Raeder Multicomputadores • Espaço de endereçamento privado • Cada processador possui sua memória local • Os pares processador/memória são interconectados através de uma rede de interconexão (quadro 8) • Quando um processo necessita de dados de outro processo? – Utiliza troca de mensagens através da rede – Memórias não-locais não podem ser acessadas diretamente – Classificação • NORMA (NOn-Remote Memory Access) Processamento de Alto Desempenho – Prof. Mateus Raeder Máquinas Paralelas • Diversas formas de construir uma máquina paralela • Algumas classificações de máquinas paralelas – – – – – – PVP SMP DSM MPP NOW COW Processamento de Alto Desempenho – Prof. Mateus Raeder Máquinas Paralelas • PVP (Parallel Vector Processor) – Processadores especiais para operações vetoriais • Operações aritméticas, por exemplo – Aplicações matemáticas e simulações físicas obtêm ganho significativo de desempenho • SMP (Symmetric Multi Processing) – Constituída de processadores comerciais (comuns) – Conectados através de um barramento de alta velocidade à uma memória compartilhada • Mesma velocidade no acesso à memória (Symmetric) • Utilização do barramento exclusivo Processamento de Alto Desempenho – Prof. Mateus Raeder Máquinas Paralelas • DSM (Distributed Shared Memory) – Possuem uma memória distribuída fisicamente entre as máquinas – Porém, com um único espaço de endereçamento • Todas enxergam as memórias como se fossem uma só – Conectados por uma rede de acesso mais lento ao meio • Acesso mais rápido nas posições mais próximas – Importância da localização dos dados • MPP (Massive Parallel Processors) – PVP utilizam uma quantidade pequena de processadores de alto desempenho – MPP utiliza uma grande quantidade (milhares) de processadores de baixo ou médio desempenho para aumentar o desempenho • Quantidade ao invés de qualidade • Cada processador possui uma memória local (troca de mensagens) Processamento de Alto Desempenho – Prof. Mateus Raeder Máquinas Paralelas • NOW (Network Of Workstations) – Conjunto de estações de trabalho interligadas por uma rede padrão – Tem custo muito baixo – Processadores possuem memória privada, restringindo o acesso a sua memória local • Troca de mensagens – Redes padrão não otimizadas para alto desempenho • Comunicação mais lenta • Gargalo – Utilização não visa alto desempenho, mas sim compartilhamento de recursos • Diferente do MPP, dificilmente encontra-se NOW para aplicações paralelas • Uso acadêmico Processamento de Alto Desempenho – Prof. Mateus Raeder Máquinas Paralelas • COW (Cluster Of Workstations) – Evolução da NOW – Também composto por estações de trabalho, porém, projetado para prover alto desempenho • Estações conectadas por uma rede de alto desempenho • Facilitando a comunicação entre os processos – Muitos sistemas COW descartam periféricos como monitor, teclado e mouse • Headless workstations (estações de trabalho sem cabeça) • Toda estrutura para o desenvolvimento paralelo Processamento de Alto Desempenho – Prof. Mateus Raeder Requisitos básicos de PAD • Quando falamos de programação paralela, alguns fatores básicos devem ser atendidos – Desempenho – Portabilidade – Modularidade • Primordialmente, buscamos DESEMPENHO – Alguns minutos de processamento podem fazer diferença – Aplicações meteorológicas, por exemplo • Possuem alto custo computacional • De nada adianta conseguir calcular amanhã a previsão do tempo para hoje • Precisão pode ser diminuída - Aumenta desempenho, mas diminui credibilidade Processamento de Alto Desempenho – Prof. Mateus Raeder Requisitos básicos de PAD • A existência de diversas arquiteturas paralelas exige PORTABILIDADE – O programa paralelo deve se adaptar a certa variedade de máquinas – Programador não deve se preocupar com soluções específicas • A MODULARIDADE procura facilitar o desenvolvimento – Aplicações são complexas – Divisão em módulos facilita a implementação • Isola componentes • Proporciona facilidade na manutenção do programa Processamento de Alto Desempenho – Prof. Mateus Raeder Medidas de Desempenho • Quando utilizamos uma solução paralela, devemos constatar: – Se obtivemos ganho ou perda de desempenho – Se existe sub/sobre-utilização de recursos • Se o balanceamento de carga foi adequado • Foram criadas métricas de desempenho para quantificar estas informações – Fator de aceleração (speedup) – Eficiência (efficiency) – Desequilíbrio de carga Processamento de Alto Desempenho – Prof. Mateus Raeder Speedup • É o fator de aceleração da versão paralela em relação à sequencial • Quantifica o ganho de desempenho – Calculando-se o speedup, temos quantas vezes a versão paralela é mais rápida que a sequencial – Calculado para cada processo – Speedup ideal: com x processos, x vezes mais rápido – Gera uma curva em um gráfico speedup = TempoSequencial TempoParalelo Se speedup > 1: versão paralela reduziu o tempo Se speedup < 1: versão paralela aumentou o tempo Processamento de Alto Desempenho – Prof. Mateus Raeder Eficiência • Indica se os recursos estão sendo bem utilizados • Razão entre o speedup e o número de processos utilizados eficiência = speedup número de processos • Idealmente, cada unidade deveria ter ficado 100% ativa – Devido aos custos de comunicação, processamento, inicialização, esta eficiência ideal não é alcançada Processamento de Alto Desempenho – Prof. Mateus Raeder Desequilíbrio de carga • Distribuição do trabalho entre os recursos • O trabalho deve ser distribuído de forma a ocupar sempre todos os processos – Isto não ocorre quando alguns processos possuem muito mais carga que outros – Sub-utiliza uns, sobrecarrega outros – Perda de desempenho (desperdício de poder computacional) – Má divisão do trabalho, execução em ambientes heterogêneos, etc – Técnicas de balanceamento de carga Processamento de Alto Desempenho – Prof. Mateus Raeder