Introdução Processamento Paralelo

Documentos relacionados
FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Organização de Computadores Hardware

Introdução à Computação: Arquitetura von Neumann

Arquitetura de Computadores. por Helcio Wagner da Silva

Sistemas Computacionais II Professor Frederico Sauer

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Informática I. Aula 5. Aula 5-13/05/2006 1

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Introdução. Software (Parte III)

Disciplina: Introdução à Informática Profª Érica Barcelos

SIS17-Arquitetura de Computadores

Componentes de um Computador: Modelo Von Neumann

Organização Básica do Computador

REDES DE COMPUTADORES

Administração de Sistemas de Informação Gerenciais

Sistema de Computação

Programação Concorrente Introdução

Informática I. Aula 4. Aula 4-11/09/2006 1

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Programação de Computadores

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Memórias Prof. Galvez Gonçalves

BARRAMENTO DO SISTEMA

Multicomputadores. Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia da Computação CECOMP

Organização e Arquitetura de Computadores I. de Computadores

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

Técnicas de Manutenção de Computadores

EA960 Redundância e Confiabilidade: RAID

1.1. Organização de um Sistema Computacional

Introdução à Arquitetura de Computadores. Capítulo 1: Introdução

3. Arquitetura Básica do Computador

Edeyson Andrade Gomes

LÓGICA DE PROGRAMAÇÃO

6 Construção de Cenários

Componentes do Computador e. aula 3. Profa. Débora Matos

Fundamentos de Hardware

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina

1. NÍVEL CONVENCIONAL DE MÁQUINA

Memória principal; Unidade de Controle U C P. Unidade Lógica e Aritmética

Parte 01. Fundamentos de Arquitetura de Computadores. Prof. Pedro Neto

Dadas a base e a altura de um triangulo, determinar sua área.

Cálculo Aproximado do número PI utilizando Programação Paralela

Evolução das CPUs: Dual e Quad Core

Unidade 13: Paralelismo:

Algoritmos e Programação I

AULA4: PROCESSADORES. Figura 1 Processadores Intel e AMD.

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Estrutura de um Computador. Linguagem de Programação Rone Ilídio UFSJ - CAP

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Profs. Deja e Andrei

Componentes de um computador típico

ARQUITETURA DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

Introdução à Informática

Prof. Dr. Charlie Antoni Miquelin BÁSICO DE COMPUTAÇÃO EM TC

UNIVERSIDADE FEDERAL DE SANTA CATARINA UFSC DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA INE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO.

Introdução a Informática. Prof.: Roberto Franciscatto

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Tópicos da aula. Histórico e Evolução dos Computadores. Noções Básicas de Arquitetura de Computadores

4 Arquitetura básica de um analisador de elementos de redes


O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Arquitetura de Von Neumann e os Computadores Modernos

AULA 1. Informática Básica. Gustavo Leitão. Disciplina: Professor:

física EXAME DISCURSIVO 2ª fase 30/11/2014

Conceitos Básicos. Conceitos Básicos Memória

Abstrações e Tecnologias Computacionais. Professor: André Luis Meneses Silva /msn: andreluis.ms@gmail.com Página: orgearq20101.wordpress.

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Fonte de Consulta: Sistemas de Informação e as Decisões Gerenciais na Era da Internet James A. O Brien NOTAS DE AULA

TRABALHO COM GRANDES MONTAGENS

Processos de Desenvolvimento de Software

3 Método de Monte Carlo

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Capítulo I : Noções Gerais

UNIVERSIDADE FEDERAL DE PERNAMBUCO - PRÓ-REITORIA PARA ASSUNTOS ACADÊMICOS CURRÍCULO DO CURSO DE GRADUAÇÃO EM ENGENHARIA DA COMPUTAÇÃO PERFIL

As fases na resolução de um problema real podem, de modo geral, ser colocadas na seguinte ordem:

Comparativo de desempenho do Pervasive PSQL v11

Visão geral do sistema de armazenamento e hierarquia de memória

Introdução. Unisinos. Leandro Tonietto ago-08

ALP Algoritmos e Programação. . Linguagens para Computadores

1

Temas para estudo com alunos

Organização de Computadores

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

O que é Grid Computing

1. CAPÍTULO COMPUTADORES

Arquitetura e Organização de Computadores

Introdução aos Sistemas Operacionais

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Organização e Arquitetura de computadores

Introdução ao Processamento Paralelo

Introdução A Engenharia Da Computação

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

Fundamentos de Sistemas de Informação Sistemas de Informação

Observatórios Virtuais

Capítulo 1 Introdução

Admistração de Redes de Computadores (ARC)

Transcrição:

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