Introdução Processamento Paralelo Esbel Tomás Valero Orellana Bacharelado em Ciência da Computação Departamento de Ciências Exatas e Tecnológicas Universidade Estadual de Santa Cruz evalero@uesc.br 23 de Fevereiro de 2011 Introdução 1 / 33
Conteúdo Introdução 1 Introdução 2 3 Introdução 2 / 33
Conteúdo Introdução 1 Introdução 2 3 Introdução 3 / 33
Velocidade de processamento A contínua busca por um maior poder de cálculo e processamento tem sido a força principal no desenvolvimento do hardware de computadores; Introdução 4 / 33
Velocidade de processamento A necessidade de maior poder de computo é sempre crescente; Introdução 5 / 33
Velocidade de processamento Segundo a Wikipedia: FLOPS (ou flops) é acrônimo de computação que significa Floating point Operations Per Second; Nome Nro. Operações kiloflops 10 3 megaflops 10 6 gigaflops 10 9 teraflops 10 12 petaflops 10 15 hexaflops 10 15 Introdução 6 / 33
Velocidade de processamento Qual é a causa desta necessidade sempre crescente por maior poder computacional? Introdução 7 / 33
Velocidade de processamento Qual é a causa desta necessidade sempre crescente por maior poder computacional? A resolução de problemas complexos nos leva a níveis mais profundos de conhecimentos. Introdução 7 / 33
Velocidade de processamento Qual é a causa desta necessidade sempre crescente por maior poder computacional? A resolução de problemas complexos nos leva a níveis mais profundos de conhecimentos. Diversa áreas da vida moderna impulsionam esta necessidade. Introdução 7 / 33
Velocidade de processamento Qual é a causa desta necessidade sempre crescente por maior poder computacional? A resolução de problemas complexos nos leva a níveis mais profundos de conhecimentos. Diversa áreas da vida moderna impulsionam esta necessidade. São as ciências e as engenharias os elementos que mais exigem poder computacional. Porque? Introdução 7 / 33
Mecanismos das ciências e as engenharias Por séculos Introdução 8 / 33
Mecanismos das ciências e as engenharias Atualmente Simulações computacionais são mais baratas e confiáveis. Introdução 9 / 33
Conteúdo Introdução 1 Introdução 2 3 Introdução 10 / 33
A resolução de um problema computacional deve ser feita em um tempo razoável. Temos um problema de grande porte se ele não pode ser resolvido em intervalo de tempo razoável com os computadores atuais. Tempo razoável? Introdução 11 / 33
A resolução de um problema computacional deve ser feita em um tempo razoável. Temos um problema de grande porte se ele não pode ser resolvido em intervalo de tempo razoável com os computadores atuais. Tempo razoável? Exemplo: Previsão do clima no Brasil nos próximos dois dias. Introdução 11 / 33
Exemplo - Previsões climáticas Computadores: Os equipamentos atuais trabalham na ordem dos gigaflops (10 9 operações de ponto flutuante por segundo), Objetivo: fazer uma previsão do tempo para o Brasil a cada hora nos próximos dois dias, Incógnitas: temperatura, pressão, umidade, velocidade do vento, etc. Discretização do problema: cobrir a região de interesse com uma grade e calcular as variáveis em cada vértice, Introdução 12 / 33
Exemplo - Previsões climáticas construímos uma grade cúbica cobrindo a troposfera sobre o Brasil onde cada cubo tem uma aresta de 0.1km, Introdução 13 / 33
Exemplo - Previsões climáticas Área do Brasil é de 8.5 milhões de km 2 8.5E +06 km 2 20km 10 3 cubos por km 3 = 1.7E +11 vértices Consideremos 100 flop para determinar as condições climáticas em um vértice da grade, Para prevermos o tempo em uma determinado instante de tempo 1.7E + 11 vértices 100 flop = 1.7E + 13 operações Nosso problema 2 dias = 48 horas, temos 1.7E + 13 flop 48 horas = 8.2E + 14 1E + 15 flop Introdução 14 / 33
Exemplo - Previsões climáticas Tempo necessário para resolver o problema nos computadores atuais 10 15 flop /10 9 flops s = 10 6 s 11 dias!!! Introdução 15 / 33
Exemplo - Previsões climáticas Tempo necessário para resolver o problema nos computadores atuais 10 15 flop /10 9 flops s = 10 6 s 11 dias!!! Computador mais veloz, um teraflop (10 12 ) 10 15 flop /10 12 flops por s = 10 3 s 20 min!!! Introdução 15 / 33
Exemplo - Previsões climáticas Tempo necessário para resolver o problema nos computadores atuais 10 15 flop /10 9 flops s = 10 6 s 11 dias!!! Computador mais veloz, um teraflop (10 12 ) 10 15 flop /10 12 flops por s = 10 3 s 20 min!!! Modificações simples no problema anterior fazem um computador de um trilhão de operações insuficiente. Introdução 15 / 33
Exemplo - Movimento de corpos estelares Problema: Estimar as posições dos corpos estelares, Introdução 16 / 33
Exemplo - Movimento de corpos estelares Problema: Estimar as posições dos corpos estelares, Cada corpo estelar é atraído por todos os outros por forças gravitacionais, O movimento de um corpo é modelado calculando a força de todos os corpos que atuam sobre ele, Se temos N corpos teremos N 1 forças atuando sobre ele, Aproximadamente N 2 flop para determinar a posição de todos os corpos, Após determinamos as posições dos corpos o cálculo é repetido (iterativo), Introdução 16 / 33
Exemplo - Movimento de corpos estelares A galaxia tem aproximadamente 10 11 estrelas, Se cada operação fosse feita em 1 µs (estimativa otimista), (10 11 ) 2 flop = 10 22 operações 10 6 s por operação = 10 16 s 1 bilhão de anos!!! Isso para uma iteração, Introdução 17 / 33
Exemplo - Movimento de corpos estelares A galaxia tem aproximadamente 10 11 estrelas, Se cada operação fosse feita em 1 µs (estimativa otimista), (10 11 ) 2 flop = 10 22 operações 10 6 s por operação = 10 16 s 1 bilhão de anos!!! Isso para uma iteração, Mesmo aprimorando o algoritmo para N lg N, o tempo de cálculo é aproximadamente 1 ano!!! Introdução 17 / 33
Outros exemplos Simulações de biomoléculas; Simulações estocásticas, métodos de Monte Carlo; Prospecção e exploração de hidrocarbonetos; Biotecnologia (genoma, árvores filogéneticas); Processamento de imagens (renderização de filmes, efeitos especiais); Nanotecnologias. Introdução 18 / 33
Capacidade de armazenamento Poder computacional = velocidade de realizar operações aritméticas? Introdução 19 / 33
Capacidade de armazenamento Poder computacional = velocidade de realizar operações aritméticas? Para obtermos elevado poder computacional necessitamos grandes capacidades de armazenamento; Um computador que realize trilhões de operações por segundo e tenha acesso a poucos milhões de palavras de memória, tem pouca utilidade. Poder computacional = Velocidade + Armazenamento. Introdução 19 / 33
Conteúdo Introdução 1 Introdução 2 3 Introdução 20 / 33
Construindo um computador potente Desejamos construir um computador capaz de realizar (10 15 ) operações por segundo ou um petaflop Introdução 21 / 33
Construindo um computador potente Desejamos construir um computador capaz de realizar (10 15 ) operações por segundo ou um petaflop Enfoque Aprimorar as tecnologias existentes para fabricar o novo computador, Construir um computador seguindo a arquitetura de Von Neumann, Processador de alta velocidade e grande quantidade de memória disponível. Introdução 21 / 33
Construindo um computador potente Arquitetura de Von Neumann Introdução 22 / 33
Construindo um computador potente Objetivo: Executar o seguinte código em 1s 1 / x, y, z arrays de f l o a t s, cada um com / 2 / um t r i l h ã o de dados / 3 for ( i =0; i <ONE_TRILLION ; i ++) 4 z [ i ] = x [ i ] + y [ i ] ; Introdução 23 / 33
Construindo um computador potente Objetivo: Executar o seguinte código em 1s 1 / x, y, z arrays de f l o a t s, cada um com / 2 / um t r i l h ã o de dados / 3 for ( i =0; i <ONE_TRILLION ; i ++) 4 z [ i ] = x [ i ] + y [ i ] ; Execução do código na arquitetura de VN: 1 copiar os valores x i e y i da memória aos registradores, 2 somar os valores, 3 copiar o resultado z i na memória. Introdução 23 / 33
Construindo um computador potente 3.0E + 12 transferências de dados entre a memória e os registradores em 1s, Os dados viajam a velocidade da luz 3.0E + 08 m/s (suposição otimista), r distancia média entre a memória e a CPU, Introdução 24 / 33
Construindo um computador potente Um pouco de física básica, r satisfaz: v = s t s = vt 3.0 10 12 r[m] = 3.0 10 12 [m/s] 1[s] r = 10 4 [m] A memória deve ter capacidade para três trilhões de palavras (x, y, z). Introdução 25 / 33
Construindo um computador potente Propomos um dispositivo de memórias quadrado de lado s, Conectamos a CPU no centro da memória, A distancia média entre a memória e a CPU é s/2 s 2 = r s = 2.0 10 4 [m] Introdução 26 / 33
Construindo um computador potente Em nossa memória uma linha do dispositivo deverá conter 3 10 6 palavras de memória, palavras em uma linha = ( quantidade de palavras ) 1 2 3 10 12 = 3 10 6 Introdução 27 / 33
Construindo um computador potente Calculamos o tamanho de uma célula de memória, Devemos colocar uma palavra de memória em um quadrado de lado s palavras_em_uma_linha = 2 10 4 [m] = 10 10 [m] 3 10 6 10 10 [m] é o tamanho de um átomo pequeno, Como representar 32 bits com um único átomo? Introdução 28 / 33
Construindo um computador potente Calculamos o tamanho de uma célula de memória, Devemos colocar uma palavra de memória em um quadrado de lado s palavras_em_uma_linha = 2 10 4 [m] = 10 10 [m] 3 10 6 10 10 [m] é o tamanho de um átomo pequeno, Como representar 32 bits com um único átomo? Construir nosso computador é impossível!!! Introdução 28 / 33
Construindo um computador potente Entraves de aumentar a velocidade do processador Aquecimento do processador Alto consumo de energia elétrica Introdução 29 / 33
Construindo um computador potente Entraves de aumentar a velocidade do processador Aquecimento do processador Alto consumo de energia elétrica Como termos um computador que realize 10 12 operações por segundo? Introdução 29 / 33
Construindo um computador potente Entraves de aumentar a velocidade do processador Aquecimento do processador Alto consumo de energia elétrica Como termos um computador que realize 10 12 operações por segundo? Introdução 29 / 33
Definindo processamento paralelo Computador paralelo é um computador simples (ou um grupo de computadores) com múltiples processos que trabalham juntos na resolução de um único problema. Processo = processador + memória fornece um poder de computo ilimitado (pelo menos em teoria), Devemos instruir a nossos processos como trabalhar juntos, É preciso fornecer a cada processo um programa e um conjunto de dados a serem computados. Introdução 30 / 33
Entraves processamento paralelo Divisão de tarefas entre os processos encontrar subtarefas independentes pode ser muito complicado; Organização da execução iniciar, gerenciar e terminar processos, precedência de operações, distribuir as instruções; Comunicação entre processos processos adjacentes precisam se comunicar. Introdução 31 / 33
Entraves processamento paralelo é uma ideia simples, Se usarmos uma máquina paralela com p processos para resolver um problema, Obteremos o resultado p vezes mais rápido? Introdução 32 / 33
Entraves processamento paralelo é uma ideia simples, Se usarmos uma máquina paralela com p processos para resolver um problema, Obteremos o resultado p vezes mais rápido? Isso não é certo, por vários motivos: A paralelização tem custos, Mecanismos de controle de falhas e acessos a memória, Custos de comunicação, Balanceamento de carga, Os algoritmos não são completamente paralelizáveis. Introdução 32 / 33
Exemplo - Previsão do clima Introdução 33 / 33
Exemplo - Previsão do clima Balanceamento de carga. Introdução 33 / 33