Introdução na Computação
Distribuída e Paralela
ISUTIC 2017
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.
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
Computador convencional
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.
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: N2 cálculos.
– O cálculo é repetido a intervalos de tempo curtos. – A galáxia é de cerca de 1011 corpos.
– Se cada cálculo leva 1ms, uma iteração completa
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,
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.
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,
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,
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
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
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
Clasificação de Flynn
● Fluxo de Instrução vs. Fluxo de Dados
– SISD – SIMD – MISD – MIMD Letra Significado S Simples M Múltipla I Instrução
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
Clasificação de Flynn Aspectos de
hardware
Tarefa
● Procurar dados biográficos de Michael J. Flynn
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
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
Introdução na Computação
Distribuída e Paralela
ISUTIC 2017