Processamento Concorrente e Paralelo
Transcrição
Processamento Concorrente e Paralelo
Processamento Concorrente e Paralelo Jairo Panetta ITA/IED Petrobras/E&P/Tecnologia Geofísica INPE/CPTEC/DMD/PAD 1 Bibliografia • Ananth Grama, Anshul Gupta, George Karypis, Vipin Kumar: Introduction to Parallel Computing, 2nd edition, Addison Wesley, 2003 – • M. Ben-Ari: Principles of Concurrent and Distributed Programming, Addison Wesley, 2006. – • 2 Técnicas de otimização e de compilação para paralelismo. John L. Hennessy, David A. Patterson: Computer Architecture: A Quantitative Approach, 4th edition, Morgan Kaufmann, 2007. – • Ênfase em hardware e seus impactos em software. Michael Wolfe: High Performance Compilers for Parallel Computing, Addison-Wesley, 1996. – • Um dos melhores livros em aplicações. David E. Culler, Jaswinder Pal Singh, Anoop Gupta: Parallel Computer Architecture, a Hardware/Software Approach, Morgan Kaufmann, 1999. – • Pioneiro em livros sobre concorrência (primeiro livro em 82). Jack Dongarra, Ian Foster, Geoffrey Fox, William Gropp, Ken Kennedy, Linda Torczon, Andy White: Sourcebook of Parallel Computing, Morgan Kaufmann, 2003. – • Princípios Gerais de Paralelismo; Visão Algoritmica. Biblia de arquitetura de computadores Papers. Introdução a Processamento Concorrente e Processamento Paralelo 3 Concorrência x Paralelismo • Suponha que um conjunto de programas cooperam para realizar uma computação. • Tradicionalmente, concorrência é utilizada quando os programas podem ser executados simultaneamente em um ou múltiplos processadores. • Tradicionalmente, paralelismo é utilizado quando os programas são executados simultaneamente em múltiplos processadores. 4 Processamento Concorrente é a composição de múltiplas partes de uma única computação que podem ser executadas simultaneamente 5 Processamento Paralelo é a execução simultânea de múltiplas partes de uma única computação para reduzir seu tempo de execução 6 Concorrente x Paralelo • Processamento Concorrente está estruturado para ser executado simultaneamente – mas não necessariamente realiza • Processamento Paralelo realiza a simultaneidade • Exemplo: Com uma única CPU (“core”), é possível realizar Processamento Concorrente e testar a correção de Processamento Paralelo, mas não é possível reduzir o tempo de execução. 7 Outra forma: • Processamento Concorrente mantêm duas ou mais ações em progresso simultaneamente. • Processamento Paralelo executa duas ou mais ações simultaneamente • Novamente, uma CPU (core) só faz Processamento Concorrente • Há vantagens em se estruturar uma computação concorrentemente, mesmo com uma única CPU – encapsulamento, melhor uso do recurso (CPU), etc... 8 Exemplos de Processamento Paralelo • Copiar (“xerox”) documento da ordem de 10.000 páginas utilizando – 1 copiadora – 2 copiadoras – ... • Cavar uma vala horizontal de 10km de comprimento por 2m de diâmetro utilizando – 1 trabalhador – 2 trabalhadores – ... • Escrever um arquivo em disco utilizando – 1 servidor de arquivos – 2 servidores de arquivos – ... • Prever numericamente o tempo no futuro utilizando – 1 CPU – 2 CPUs – ... 9 Características básicas de Processamento Paralelo • Requer a replicação (total ou parcial) de entidades trabalhadoras – – – – múltiplas copiadoras múltiplos trabalhadores múltiplos servidores de arquivos múltiplas CPUs • Requer alterar a forma de realizar a tarefa para usufruir da replicação • Ao replicar n entidades deseja-se dividir o tempo de execução da tarefa por n – máximo teórico; porque? 10 Copiar 10.240 páginas • Suponha: – original entregue em ordem crescente das páginas numeradas; – copia deve ser entregue da mesma forma – uma única pessoa divide o original em partes iguais a serem copiadas, entrega para os copiadores e recolhe as cópias – cada copiadora copia uma única parte – 1 segundo para copiar uma página – 5 segundos para encontrar uma página em um bloco de páginas – 5 segundos para juntar dois blocos de páginas copiadas • Estime o tempo (s) para realizar a tarefa utilizando – 1, 2, 4, 8, 16, 32 e 64 copiadoras 11 Estimativa Grosseira Hipótese: tempo total = tempo de entrega sequencial das partes + tempo de copiar uma parte + tempo de recolher a última parte Máquinas 12 Tempo (s) Ganho dividir copiar juntar total 1 0 10240 0 10240 1,00 2 5 5120 5 5130 2,00 4 15 2560 5 2580 3,97 8 35 1280 5 1320 7,76 16 75 640 5 720 14,22 32 155 320 5 480 21,33 64 315 160 5 480 21,33 falha hipótese da estimativa (recolhe cópias enquanto o último copiador trabalha) ERRADO Copiar 10.240 páginas • Como utilizar eficientemente 1024 copiadoras? – Alterando os mecanismos de distribuição de dados e de coleta de resultados • O procedimento (algoritmo) muda com o volume de paralelismo – pois muda o gargalo da tarefa • E se uma copiadora for 10% mais lenta que as outras? – típico de grande número de máquinas iguais • E se uma copiadora quebrar? – Tolerância a falhas é desejável; as vezes, imprescindível 13 Cavar vala de 10km • Exemplo atribuído ao Prof. Siang W. Song (IME/USP) • Similar ao exemplo anterior. Assuma terreno demarcado, número crescente de trabalhadores equipados e um capataz. – Quais são os fatores que impedem redução “ótima” do tempo de execução com o aumento do número de trabalhadores? • E se a vala for vertical? • Há problemas inerentemente sequenciais – alterar 1 bit na memória • Pequenas variações do problema podem causar grandes variações no algoritmo 14 Níveis de Paralelismo 15 Níveis de Paralelismo • Paralelismo ao nível de bits – BLP: Bit Level Parallelism – Acelera a execução de uma instrução aumentando a largura do datapath (microprocessadores de 4, 8, 16 e 32 bits) – Muito explorado até meados da década de 80; praticamente esgotado • Paralelismo ao nível de instruções – ILP: Instruction Level Parallelism – Execução simultânea de múltiplas instruções ou trechos: RISC, VLIW, Superscalar – Muito explorado até meados da década de 90; praticamente esgotado • Paralelismo ao nível de tarefas – TLP: Thread Level Parallelism – Múltiplos fluxos de execução simultâneos: Multi-core chips, Multithreading, etc... • Curso concentrado em TLP – Alguns casos de ILP Culler, Cap. 1 16 Paralelismo é utilizado desde os primórdios da computação 17 Soma de dois inteiros de n bits • Sejam X e Y dois inteiros de n bits – representados por xi e yi, i=0,...,n-1 – bit 0 o menos significativo • Obter sua soma Z=zi, utilizando operações lógicas de um bit: – “e” lógico, representado por xiyi – “ou” lógico, representado por xi + yi – “ou exclusivo” lógico, representado por xi # yi 18 M. D. Ercegovac, T. Lang, “Digital Systems and Hardware/Firmware Algorithms”, John Wiley & Sons Algoritmo tradicional • Seja ci o carry para o bit i – da soma dos bits 0,...,i-1 – defina c0=0 • Então (pense quando o bit resultante for 1) zi = xi # yi # ci ci+1 = xiyi + ci(xi # yi) • Ou seja: – bit i da soma é 1 sse • apenas um dos três bits xi yi ci for 1, ou • os três bits xi yi ci forem 1 – haverá carry sse • carry for gerado neste bit (xiyi), ou • houver carry do bit anterior (ci) e for propagado por este bit (xi # yi) 19 Algoritmo tradicional • Algoritmo: c0 = 0 for i = 0 : n-1 : 1 ! índice = primeiro : ultimo : passo zi = xi # yi # ci ci+1 = xiyi + ci(xi # yi) end for • Algoritmo sequencial (por que?) – recursão, pois ci+1 = f(ci) 20 Algoritmo tradicional • Interior do laço original: zi = xi # yi # ci ci+1 = xiyi + ci(xi # yi) • Defina gi (gera carry) e pi (propaga carry) por – gi = xiyi – pi = xi # yi • Então o interior do laço pode ser escrito: gi = xiyi; zi = pi # ci; pi = xi # yi ci+1 = gi + cipi • Os bits propaga e gera podem ser obtidos em um único passo (paralelo) para todos os i=0,...,n-1; – falta resolver a recursão no carry (obter todos simultaneamente) – quando resolvida, zi pode ser obtido em paralelo para todos os i 21 Recursões • Recursão de profundidade 1: ci+1 = f(ci) • Técnica para gerar recursão de profundidade 2: ci+2 = f(ci+1) = f(f(ci)) • E assim sucessivamente... • Técnica exaustivamente utilizada para gerar paralelismo, quer aumentando a profundidade da recursão quer, no extremo, eliminando a recursão 22 Carry – Lookahead Adder • Como ci+1 = gi + ci pi ci+2 = gi+1 + ci+1pi+1 • Então substituindo ci+1 por sua expressão ci+2 = gi+1 + (gi + ci pi)pi+1 = gi+1 + gi pi+1+ ci pi pi+1 • Algoritmo na metade dos passos do original: for i = 0 : n-1 : 2 gi = xi yi; gi+1 = xi+1 yi+1; pi = xi # yi; pi+1 = xi+1 # yi+1 ; zi = pi # ci; zi+1 = pi+1 # ci+1 ; ci+1 = gi + cipi; ci+2 = gi+1 + gi pi+1+ ci pi pi+1; end for 23 Carry – Lookahead Adder • Sucessivamente: de ci+1 = gi + ci pi ci+2 = gi+1 + ci+1pi+1 – geramos ci+2 = gi+1 + (gi + ci pi)pi+1 = gi+1 + gi pi+1+ ci pi pi+1 – e sucessivamente incrementando i e substituindo ci+1, ci+3 = gi+2 + gi+1pi+2 + gi pi+1 pi+2 + ci pi pi+1 pi+2 ci+4 = gi+3 + gi+2 pi+3 + gi+1pi+2 pi+3 + gi pi+1 pi+2 pi+3 + ci pi pi+1 pi+2 pi+3 ...... • Até obter cn-1 = f(c0), eliminando a recursão – Na prática, limitado por fan-in das portas lógicas 24 Carry – Lookahead Adder • Laço original gera um bit por iteração; há n iterações – recursão de profundidade 1 • Laço paralelo gera dois bits por iteração; há n/2 iterações – recursão de profundidade 2 • Laço paralelo pode gerar quantos bits forem necessários, aumentando a profundidade da recursão ou, eventualmente, eliminando-a 25 Métricas de Desempenho 26 Speed-up • Mede o ganho (no tempo de execução) em utilizar p processadores S(p) = T(1)/T(p) • Teoricamente, S(p) ≤ p • Na prática, características do computador alteram tais limites 27 Eficiência • Mede a eficiência em utilizar p processadores E(p) = T(1) / (p*T(p)) E(p) = S(p) / p 28 Lei de Amdahl - Sumário Se a fração seqüencial do tempo de execução de um programa é f, o ganho (speed-up) máximo é S(p) = 1/f para qualquer número de processadores. Gene M. Amdahl, “Validity of the single processor approach to achieving large scale computing capabilities”, AFIPS spring joint computer conference, 1967 29 Lei de Amdahl em Detalhe 30 Lei de Amdahl - Demonstração 31 Lei de Amdahl - Implicações Speed-up máximo em função da fração do tempo de execução sequencial mantida sequencial na execução paralela 1000 1000 500,2 90,9 10 9,91 Speed-up 100 1 1 10 100 Processadores f=0 32 f=0,1% f=1% f=10% 1000 Formas de Speed-up face a Amdahl • Tipicamente, a fração do tempo sequencial diminui com o tamanho do problema – Técnica comum quando o speed-up não é bom: aumentar artificialmente o tamanho do problema(1) – Mas há casos em que o aumento é necessário para observar efeitos invisíveis em problemas menores(2) • Strong speed-up – Mantém o tamanho do problema e escala o número de processadores • Weak speed-up – Escala o tamanho do problema com o número de processadores (1) D. H. Bailey: Twelve Ways to Fool the Masses When Giving Performance Results on Parallel Computers, Supercomputing Review, Aug. 1991 33(2)J. L. Gustafson: Reevaluating Amdahl’s Law, CACM May 1988 Porque Paralelismo? Há Motivos Perenes 34 Desde que existem computadores • Aplicações (usuários) requerem computadores cada vez mais potentes • Velocidade e poder computacional de CPUs crescem a velocidade assombrosa – Base: Lei de Moore (veremos em seguida) • Requisitos das aplicações (usuários) crescem mais rapidamente do que a velocidade das CPUs • Acoplar múltiplas CPUs é uma forma viável de reduzir a distância entre as necessidades dos usuários e a velocidade de uma única CPU 35 Requisitos dos Usuários • Usuários estão insatisfeitos com os modelos matemáticos utilizados nas simulações computacionais (não representam aspectos críticos da realidade) • Modelos matemáticos mais precisos requerem computadores ordens de magnitude mais velozes que os atualmente disponíveis (verdade “desde sempre”) • Exemplo: Modelo de Circulação Global 36 Ex: Modelo Global do CPTEC 37 Resolução Horizontal (km) Flops por Dia de Previsão (normalizado) Dias de Previsão por Dia de CPU (1 CPU NEC SX6) 210 1 995 105 6 100 63 52 16 40 219 7 20 727 1 Complexidade O(1/resolução4) Forecast Days per Day as function of Model Resolution (km) and Processor Count 700 600 26 (ECMWF) F o recast D ays 500 79 79 83 (BOM) 40 (ECMWF) 400 26 (ECMWF) 300 63 79 60 (UK) 40 (ECMWF) 63 200 26 (ECMWF) 26 (ECMWF) 79 63 100 26 (ECMWF) 79 53 42 0 1 53 53 63 63 38 26 (ECMWF) 53 42 53 42 10 (ES) 10 (ES) 10 (ES) 42 42 10 Velocidade mínima para produção10 (ES) 100 Processors 1000 10 (ES) 10 (ES) 10000 Aumentando a Resolução 39 Caso geral: Top500 • Lista dos 500 computadores mais rápidos do mundo – métrica: velocidade efetiva na solução de sistema denso de equações lineares em dupla precisão utilizando Linpack (High Performance Linpack) de tamanho escolhido pelo usuário – classificação: velocidade efetiva medida em flop/s (floating point operations per second) – submissão: usuários interessados executam HPL e enviam resultados (logo, pode haver máquinas potentes fora da lista) – site: http://www.top500.org – importância: Rara base histórica de dados (duas listas por ano, mantidas desde 1993) – início: planilha de Linpack compilada por Jack Dongarra desde 1980; vide http://www.netlib.org • Ser número 1 no Top500 é objeto de desejo (“priceless”) – HPL é um dos programas mais extensamente otimizados, por fabricantes, da história de computação – Dificilmente um programa obterá velocidade efetiva maior que a do HPL na mesma máquina 40 Top 500 June 2009 V Pico (TFlop) V Linpack (TFlop) RoadRunner – Los Alamos, 129 600 USA 1 456 1 105 IBM Blade: PowerPC + Cell Jaguar – Oak Ridge, USA 150 152 1 381 1 059 Cray XT5: Opteron Jugene – Juelich, Germany 294 912 1 002 825 IBM Blue Gene/P: PowerPC Pleiades – NASA Ames, USA 51 200 608 487 SGi Altix (Xeon) BlueGene/L – Lawrence Livermore, USA 212 992 596 478 IBM Blue Gene/L: PowerPC Máquina - Local http://www.top500.org 41 Cores (CPUs) Fabricante Processador Top500: Visão Histórica Soma #1 #500 LapTop http://www.top500.org 42 Projeção de Desempenho Cray 2 1 GFlop/s O(1) Thread ASCI Red 1 TFlop/s O(103) Threads Jack Dongarra, Invited Talk, SIAM 2008 Annual Meeting 43 Roadrunner 1 PFlop/s O(106) Threads ?? 1 EFlop/s O(109) Threads Caso geral: Gordon Bell Award • Aplicação completa mais rápida do mundo no ano – premio dado anualmente no Supercomputing – nos últimos anos, também é necessário ter conteúdo científico – alto esforço de otimização, mas menor que HPL; por isso, mais próxima do “usuário comum” – submetida por usuários 44 HPL x Gordon Bell 10.000,00 Máquina de propósito específico 1.000,00 TFlop/s 100,00 Gordon Bell (precisão mista) supera HPL (precisão dupla) 10,00 1,00 1992 1994 1996 1998 2000 2002 2004 0,10 0,01 Ano Gordon Bell 45 HPL 2006 2008 2010 Sumário: Porque Paralelismo? • Usuários continuarão a demandar maior potência computacional, alcançável por paralelismo – até quando paralelismo resolve? – “I know how four ox can push a wagon, but not 1024 chickens” • Entretanto, há motivos mais recentes para usar paralelismo – motivos alheios à vontade dos usuários e dos fabricantes 46 Porque Paralelismo? Há Motivos Recentes 47 Lei de Moore • Enunciado: • A quantidade de componentes por circuito integrado dobra a cada ano (1965) • ... a cada dois anos (1975) • ... a cada 18 meses (atual) 48 Lei de Moore Primeira forma (1965): – Quantidade de componentes por circuito integrado que minimiza o custo por componente dobra a cada ano – Observação (não “lei”) no trabalho original – Extrapolação baseada em 5 pontos – Moore sugeriu reconsiderar após 10 anos Segunda forma (1975): – Quantidade de componentes por circuito integrado dobra a cada dois anos – Moore nunca disse 18 meses (intel aponta 18 meses) – Profecia auto realizável Gordon Moore: “Cramming more components onto integrated 49 circuits”, Eletronics v.38, N.8, 1965; Verificação da Lei de Moore Dobra a cada 24 meses Dobra a cada 18 meses http://www.intel.com/technology/mooreslaw 50 Força Motriz da Lei de Moore Tecnologia de Litografia constantemente reduz tamanho de componentes em CI G. Moore, palestra convidada ISSCC 2003 51 Até recentemente Canalizar aumento no número de componentes para aumentar a freqüência de operação gera CPUs progressivamente mais rápidas G. Moore, palestra convidada ISSCC 2003 52 Mas o ganho anual em velocidade de um processador é bem menor que o ganho anual no número de componentes, pois há barreiras 53 Mas há barreiras: Memory Wall •A velocidade de acesso à memória escala mais lentamente que a velocidade da CPU, ao longo dos anos •Acesso à memória torna-se o gargalo da eficiência •Largura de banda (bandwidth) vem sendo acomodada (economia) •Latência (latency) é a questão crucial J. L. Gaudiot, palestra convidada SBAC 2006 54 Mas há barreiras: Power Wall •Dissipação atingiu níveis intoleráveis Figura: Fred Pollack, palestra convidada MICRO 1999 S. Borkar, “Design Challenges of Technology Scaling”, IEEE Micro, July 1999 55 Dissipação de Potência Pentium e Dissipador, 2005 Pentium e Dissipador, 1995 www.tomshardware.com/2005/11/21/the_mother_of_all_cpu_charts_2005 56 Dissipação de Potência impede novo aumento de frequência www.tomshardware.com/2005/11/21/the_mother_of_all_cpu_charts_2005 57 Em síntese Ida à memória limita aumento de velocidade de programas, pois freqüência da memória não escala proporcionalmente à frequência da CPU e a latência menos ainda (memory wall) Dissipação térmica atinge nível absurdo (power wall) E há outras barreiras... 58 Paralelismo: Novos Motivos Como usar maior número de componentes para gerar máquinas mais rápidas? Aumentar a freqüência não é mais possível. Tendência clara: Múltiplas CPUs de menor freqüência no mesmo chip 59 Paralelismo: Novos Motivos 60 Por enquanto, poucas CPUs por chip. 61 Forte tendência de muitas PUs no mesmo chip, idênticas ou não, com uma ou múltiplas threads Fonte: INTEL e AMD Comparando ganhos anuais Métrica Ganho Anual Lei de Moore (dobra a cada 18 meses) 1,58 HPL (mínimos quadráticos) Gordon Bell (mínimos quadráticos) 1,89 1,86 • HPL melhor que Moore devido a paralelismo • Transformar ganho de Moore em ganho de velocidade requer paralelismo 62 Porque Paralelismo: Conclusão Paralelismo (uso simultâneo de múltiplas CPUs em um programa) é uma tecnologia disponível que reduz a distância entre as necessidades dos usuários e a velocidade de uma única CPU Mas também é a forma viável de converter o aumento no número de componentes da Lei de Moore em aumento da velocidade de processamento 63 Sumário: Tópicos Abordados • • • • • • • • 64 Definição de Paralelismo Níveis de Paralelismo Recursões e sua resolução Métricas de Desempenho Paralelo Lei de Amdahl Necessidade e Utilidade de Paralelismo Lei de Moore Memory Wall, Power Wall