ISUTIC 2017 Introdução na Computação Distribuída e Paralela Docente: MSc. Angel Alberto Vazquez Sánchez
Características da matéria 90 horas no semestre Conferências, Aulas Práticas, Laboratórios e Seminários Objetivo Introduzir os alunos nos fundamentos de sistemas de computadores paralelos e distribuídos e possibilitar o entendimento dos principais aspectos que intervêm no projecto e na utilização desses sistemas, em vários níveis de complexidade.
Avaliações contínuas Questionários escritos. Participação em aulas. Laboratórios. Seminários. Trabalho Prático Final.
Conteúdos da matéria 1.Definição e Aspectos Básicos de Sistemas Paralelos e Distribuídos 2.Arquitecturas Paralelas e Distribuídas. 3.Aspectos do Projecto de Sistemas Paralelos e Distribuídos 4.Redes de Processadores 5.Sistemas Operacionais Paralelos e Distribuídos 6.Gerência de Processos Distribuídos 7.Comunicação entre Processos Paralelos e Distribuídos: Modelo ClienteServidor.
Conteúdos da matéria 8.Memória Compartilhada Distribuída 9.Gerência de Arquivos Distribuída 10.Banco de Dados Distribuídos 11.Paradigmas da Programação Paralela e Distribuída 12.Avaliação de Desempenho de Sistemas Computacionais Paralelos e Distribuídos 13.Desenvolvimento de Sistemas de Informação Paralelos e Distribuídos
Bibliografia recomendada Coulouris, G., Dollimore, J., Kindberg, T., & Blair, G. (2013). Sistemas Distribuídos-: Conceitos e Projeto. Bookman Editora. Lynch, N. A. (1996). Distributed algorithms. Morgan Kaufmann. Marques, J. A., & Guedes, P. (1998). Tecnologia de sistemas distribuídos. Mullender, S., & others. (1993). Distributed systems (Vol. 12). acm press United States of America. Tanenbaum, A. S. (1995). Distributed operating systems. Pearson Education India. Wilkinson, B., & Allen, M. (1999). Parallel programming: techniques and applications using networked workstations and parallel computers. Prentice-Hall.
Aula de hoje Necessidades e Motivações dos Sistemas Distribuídos e Paralelos. Definição de Sistemas Distribuídos e Paralelos. Classificação de Flynn.
Objetivo Identificar os principais conceitos associados a Sistemas Distribuídos e Paralelos.
Computador convencional Um único processador resolve todas as tarefas
Necessidade O rendimento dos computadores sequenciais está a começar a saturarse. Uma única CPU tem limites físicos: Limite da velocidade da luz: Estancamento nos incrementos da frequência de relógio. Limite de Integração: Cerca do limite máximo. Mais frequência Mais consumo + Temperaturas muitoelevadas. Memória disponível. Características.
Necessidade Há uma demanda contínua de um poder computacional superior: Modelagem e simulação numérica de problemas em ciências e engenharia. Caros cálculos iterativos sobre grandes quantidades de dados e fortes restrições temporárias: Exemplos: predição meteorológica, biocomputación, astrofísica. São sistemas a cada vez mais complexos que requerem maior tempo de cómputo. Os processadores atuais são paralelos: n-core
Motivações Sistemas de Previsão do Tempo: A atmosfera total é dividida em células de tamanho por exemplo 1 milha x 1 milha x 1 milha, para uma alta de 10 milhas = 5 x células. Se cada cálculo requer 200-flops, em um intervalo de tempo flops são necessários. Analisar o clima de 7 dias, com intervalos de 1 minuto, num computador de 1Gflops ( flops) leva segundos 12 dias.
Motivações Problema das N-corpos no espaço: Cada corpo atrai gravitacionalmente todos os outros. O movimento de um corpo depende da força total exercida sobre ele. Para N corpos, N-1 força devem ser calculadas: N 2 cálculos. O cálculo é repetido a intervalos de tempo curtos. A galáxia é de cerca de 10 11 corpos. Se cada cálculo leva 1ms, uma iteração completa leva 3 anos.
Motivações
Motivações
Motivações Problemas de grandes desafios: São problemas fundamentais em ciência ou engenharia muito usados, e cujos soluções exigem da computação de alto rendimento (High Performance Computing, HPC) para alcançar respostas de tempo adequado. Exemplos: A dinâmica de fluidos computacional para: Projeto de aviões hipersônicos, carrocerías de autos eficientes e submarinos silenciosos, Previsão do tempo para o curto e longo prazo, Recuperação de petróleo eficiente
Motivações Problemas de grandes desafios: Cálculos de estrutura eletrônica para a concepção de novos materiais tais como: Catalisadores químicos, Agentes imunológicos, Supercondutores, Simulação de circuitos Processamento de imagem: Aplicação em Medicina, Jogos de vídeo.
Motivações Problemas de grandes desafios: Computação simbólica para: Reconhecimento de voz, Visão por computador, Compreensão da linguagem natural, Razonamiento automático, Ferramentas para design, fabricação e simulação de sistemas complexos. Problemas de astrofísica: Evolução de Galaxias.
Motivações Problemas de grandes desafios: Biologia computacional: Sequência de DNA, Reprodução de Espécies, Funcionamento do cérebro humano. Administração de dados: Banco de dados geográficas, Mineração de Dados, BigData
Motivações Problemas de grandes desafios: Meio ambiente: Contaminação Predição de incêndios e inundações de grande escala, Predição do clima. Simulação: Início do universo, Correntes Oceánicas, Evacuações, Difusão de Doenças, Vírus Informático, etc.
Sistema Distribuido Que têm em comum estes aplicativos? Tomam muito tempo. Manejam grandes volumes de dados. O tamanho do problema é extremamente grande. Para que sejam efetivas se requer um processamento num tempo razoável.
Solução Usar vários processadores
Sistema Distribuido Colecção de computadores separados fisicamente e ligados por uma rede de comunicações; cada máquina tem seus componentes de hardware e software que o programador percebe como um sozinho sistema. O programador acede aos componentes de software (objetos) remotos num grupo de computadores, da mesma maneira em que acederia a componentes locais.
Sistema Distribuido ou Sistema Paralelo Em programação distribuída, existe um conjunto de computadores conectados por uma rede que são usados colectivamente para realizar tarefas distribuídas. Por outro lado nos sistemas paralelos, a solução a um problema importante é dividida em pequenas tarefas que são repartidas e executadas para conseguir um alto rendimento.
Que é a programação paralela? Uso de vários processadores trabalhando juntos para resolver uma tarefa comum. O modo de uso dos processadores pode ser desenhado pelo programador: Cada processador trabalha numa porção do problema. Os processos podem trocar dados, através da memória ou por uma rede de interconexão.
Que é a programação paralela?
Evolução de computadores mais potentes
Tarefa Procurar informação sobre os 10 super computadores mais poderosas da actualidade. Que paises estão mais representados? https://www.top500.org/
Vantagens da Computação Paralela A programação paralela permite: Resolver problemas que não cabem numa CPU. Resolver problemas que não se resolvem num tempo razoável. Podem-se executar: Problemas maiores. Mais rapidamente (aceleração). Mais problemas.
Aplicações distribuídas Funcionam seguindo um modelo cliente/servidor: Um ou mais servidores criam uns objetos locais e depois atendem petições de acesso sobre esses objetos provenientes de clientes situados em lugares remotos da rede. Desta maneira os sistemas distribuídos solucionam as necessidades de: Repartir o volume de informação. Compartilhar recursos, já seja em forma de software ou hardware.
Clasificação de Flynn Fluxo de Instrução vs. Fluxo de Dados SISD SIMD MISD MIMD Letra S M I D Significado Simples Múltipla Instrução Dado
Clasificação de Flynn Aspectos de hardware Fluxo de Instrução vs. Fluxo de Dados SISD: Único fluxo de instruções aplicado a um único fluxo de dados. SIMD: Único fluxo de instruções aplicado a múltiplos fluxos de dados. MISD: Múltiplos fluxos de instruções aplicado a um único fluxo de dados. MIMD: Múltiplos fluxos de instruções aplicado a múltiplos fluxos de dados
Clasificação de Flynn Aspectos de hardware
Tarefa Procurar dados biográficos de Michael J. Flynn e seus principais contribuições científicas
Tarefa Procurar informação para responder asseguintes perguntas: Que diferenças existem entre Memória Compartilhada e Memória Distribuída? Quais são as topologias de interconexão em sistemas distribuídos?
Clasificação de Flynn Aspectos de hardware Fluxo de Instrução vs. Fluxo de Dados SISD: Único fluxo de instruções aplicado a um único fluxo de dados. SIMD: Único fluxo de instruções aplicado a múltiplos fluxos de dados. MISD: Múltiplos fluxos de instruções aplicado a um único fluxo de dados. MIMD: Múltiplos fluxos de instruções aplicado a múltiplos fluxos de dados
ISUTIC 2017 Introdução na Computação Distribuída e Paralela Docente: MSc. Angel Alberto Vazquez Sánchez