The future is parallel but it may not be easy Adriano Tabarelli, Alex Morinaga, Caio Silva, Cássia Ferreira, Daniel Santos, Eduardo Apolinário, Hugo Posca, Thiago Batista, Paulo Floriano Universidade de São Paulo - MAC0412 25 de novembro de 2008
Michael J. Flynn, 2007 Apresentação Original Processor performance scaling by improving clock frequency has now hit power limits. The new emphasis on multi core architectures comes about from the failure of frequency scaling not because of breakthroughs in parallel programming or architecture.
Michael J. Flynn, 2007 Apresentação Original Solving these problems requires both an understanding of underlying issues such as parallelizing control structures and dealing with the memory bottleneck. For many applications performance comes at the price of programmability and reliability comes at the price of performance.
Sumário Tópicos Abordados 1 Os limites da computação sequencial 2 O surgimento da computação paralela 3 A difícil transição e seus problemas
Sumário Tópicos Abordados 1 Os limites da computação sequencial 2 O surgimento da computação paralela 3 A difícil transição e seus problemas
Computação Sequencial Abordagens Relevantes Desenvolvimento 1 Altas frequências de processamento 2 Eficiência de algoritmos sequenciais VERSUS Limitações 1 Velocidade do clock 2 Memory Wall 3 Power Wall
Pontos positivos DESENVOLVIMENTO DA COMPUTAÇÃO SEQUENCIAL
Altas frequências de processamento 3 GHz
Altas frequências de processamento 3 GHz Mais ciclos por segundo implicam em mais operações executadas em um mesmo tempo (maior eficiência); A arquitetura de processadores diferentes pode influenciar o numero de operações executadas com o mesmo clock; Principais fabricantes e suas altas frequências: AMD Athlon 64 FX - 2600 MHz (FX-55), 2800 MHz (FX-57); Opteron Single-core - 1600-3000 MHz; Intel Xeon -2.0 GHz - 3.6 GHz; Pentium 4-3.2-3.6 GHz.
Eficiência de algoritmos sequenciais Complexidades otimizadas A realização de uma tarefa com complexidades reduzidas foi possível devido a novas idéias baseadas no método sequencial de resolução de problemas; Não é possível tornar mais eficientes (em tempo de solução) certos algoritmos sem alterar a arquitetura do que será usado para realizar os cálculos necessários. Como exemplo, a evolução dos sort s ao longo do tempo, até alcançar o quicksort, com a menor complexidade possível para um algoritmo sequencial baseado em comparações, O(nlogn). Em termos sequenciais, o tempo necessário para ordenar uma sequência de n números depende apenas do processador.
Pontos negativos LIMITAÇÕES DA COMPUTAÇÃO SEQUENCIAL
Velocidade do clock Próxima do limite A capacidade de processamento de uma CPU é determinada pela frequência do cristal oscilador; Primeiro computador comercial: 2MHz, clocks mais rápidos atualmente: P4 3GHz; A frequência máxima possível a ser obtida é a da luz, cujo limite está próximo de ser alcançado.
Memory Wall Uma das principais barreiras
Memory Wall Uma das principais barreiras Velocidade do processador dobra a cada 2 anos, e da memória, a cada 6 anos; Dados são calculados mais rapidamente, mas demoram muito tempo no caminho até o processador, ou retornando dele; Tenta-se, de alguma forma, diminuir o espaço entre memória e CPU para reduzir o tempo real; A solução das memória cache L1 e L2 esbarram no preço e na baixa capacidade de armazenamento; A cada ano, a discrepância aumenta.
Power Wall Uma barreira física
Power Wall Uma barreira física Energia trafegando sempre se perde emitindo calor; Quanto mais veloz o tráfego e maior a quantidade de energia em trânsito, maior calor é despendido; Os materiais utilizados para fabricar os chips esquentam e têm perigo de danos; Sistemas de arrefecimento já começam a ter dificuldade de dissipar o calor excedente.
Sumário Tópicos Abordados 1 Os limites da computação sequencial 2 O surgimento da computação paralela 3 A difícil transição e seus problemas
Computação Paralela Abordagens Relevantes 1 Um novo paradigma computacional 2 Driblando alguns problemas da computação sequencial 3 Nível de paralelismo nos dias atuais 4 Influência direta no poder computacional dos processadores
Computação paralela como novo paradigma computacional Uma nova proposta de solução
Computação paralela como novo paradigma computacional Uma nova proposta de solução Combina habilidades computacionais preexistentes organizando as idéias e a obtenção da solução de uma forma diferente Requer habilidade do programador em saber lidar com as novas ferramentas e usufruir ao máximo do que elas oferecem
Novas saídas para problemas sequenciais Driblando as Walls Com a possibilidade de aumentar a performance apenas aumentando o número de cores, elimina-se a necessidade de investir em clocks mais rápidos; Mantendo o clock baixo, mantém-se baixa a temperatura do chip, eliminando a necessidade de se investir em dissipadores mais poderosos; A velocidade do processador pode ficar compatível com a velocidade de comunicação com a memória sem prejudicar a performance, evitando assim a memory wall.
Nível de paralelismo atual Quanto de paralelo há no que usamos 199 threads no total
Nível de paralelismo atual Quanto de paralelo há no que usamos 666 threads no total
Nível de paralelismo atual Quanto de paralelo há no que usamos Hoje em dia qualquer computador pessoal é no mínimo dual core Boa parte dos programas usuais não são paralelizados Toda a parte de divisão de tarefas fica a cargo do Sistema Operacional
Transição
Sumário Tópicos Abordados 1 Os limites da computação sequencial 2 O surgimento da computação paralela 3 A difícil transição e seus problemas
A Transição Abordagens Relevantes 1 Algoritmos sequenciais em multi-cores 2 Dificuldade de projeção e pensamento em paralelo 3 Tempo ganho no paralelismo contra tempo perdido em overhead de threads 4 Gargalos dos algoritmos paralelos 5 Memória compartilhada versus memória distribuída 6 Componentes mais complexos e a probabilidade de falhas
Algoritmos sequenciais aplicados a multi-cores Influência da arquitetura no tempo de execução Programas gerados por algoritmos sequenciais rodam em apenas um dos processadores; Apenas uma thread a ser executada; Com relação àquele programa, outros processadores ficam ociosos; Desperdicio de energia; Desperdicio de capacidade de processamento.
O Pensamento Paralelo Suas principais dificuldades, pela fuga do trivial O cérebro humano é sequencial Boa parte da matemática é sequencial O modelo de programação que estamos acostumados a usar é sequencial
Paralelismo X Overhead Os ganhos e as perdas da programação paralela
Paralelismo X Overhead Os ganhos e as perdas da programação paralela
Os gargalos dos algoritmos paralelos Condições e necessidades para seu perfeito funcionamento Granularidade: Medida entre a taxa de computação e a taxa de comunicação. Granularidade pequena: partes pequenas, processamento mais rápido, maior número de comunicações; Granularidade grande: partes grandes, tempo de processamento mais longo, menor quantidade de comunicações; Não existe um melhor, depende da aplicação.
Os gargalos dos algoritmos paralelos Condições e necessidades para seu perfeito funcionamento Balanceamento de carga: Nem todas as tarefas demoram o mesmo tempo para serem executadas. Caso seja necessário sincronizar, deve-se esperar a tarefa mais demorada terminar. Uma noção melhor do que cada tarefa faz e de quanto tempo ela demora implica em um melhor balanceamento.
Memória compartilhada versus memória distribuída As vantagens e desvantagens de cada uso Memória distribuída Memória compartilhada
Memória compartilhada versus memória distribuída As vantagens e desvantagens de cada uso Distribuída Cada processador tem acesso a uma memória privativa Baixo custo Comunicação através de mensagens (depende da velocidade do meio de comunicação) Compartilhada Acessada simultaneamente por cada processador Simples programação Mudanças no cache de um processador devem ser replicadas
Resumo O que foi visto e analisado Computação sequencial: limites de velocidade e energia da CPU, barreira da memória e complexidades computacionais eficientes. Computação paralela: uma nova saída, métodos diferentes de desenvolver a resolução do problema, divisão, paralelismo. A transição: envolve problemas como dificuldade de implementação, reestruturação de algoritmos preexistentes, overhead de threads, gerenciamento da memória entre os processadores.
The future is parallel but it may not be easy A tecnologia sequencial atingiu seu limite. A única forma de se melhorar a performance dos processadores é a paralelização. Apesar disso, ainda não sabemos como utilizar o poder do paralelismo, portanto, temos muito poder de computação desperdiçado. Uma possível solução para este problema ainda parece muito distante: compiladores paralelizantes. It s the future, but we know it won t be easy.
Dúvidas, questionamentos?