Você está na página 1de 10

Fundamentos de Sistemas Paralelos e

Distribuídos

Resumo 1

Sumário
Fundamentos de Sistemas Paralelos e Distribuídos......................................................1
Aula1 – Introdução.........................................................................................................1
1.1 Processamento de alto desempenho...................................................................1
1.2 CPU – Arquitetura básica.....................................................................................2
1.3 Sistema Paralelo..................................................................................................3
1.4 Sistema Distribuído..............................................................................................3
1.5 Paralelo x Distribuído...........................................................................................3
Aula 2 - Classificação de sistemas paralelos e distribuídos...........................................4
2.1 Taxonomia de Flynn (1966)..................................................................................4
2.2 Arquitetura SIMD..................................................................................................5
2.3 Arquitetura MIMD.................................................................................................5
2.3.1 Organização de programas paralelos/distribuídos MIMD...............................6
2.4 Arquiteturas distribuídas.......................................................................................6

Aula1 – Introdução
1.1 Processamento de alto desempenho
• Problemas complexos envolvem grandes volumes de dados e de capacidade
de processamento
• Na evolução dos processadores, o número de transistores foi aumentando
• Porque paralelismo é importante? Para extrair o máximo desempenho do
hardware

1.2 CPU – Arquitetura básica


• Uma ou mais várias unidades de processamento (CPU), vários fluxos
diferentes de instruções alimentados um para cada core, podemos então
executar várias instruções paralelamente dentro de uma máquina
(Arquitetura de von Neuman ; Single Core)

1.3 Sistema Paralelo

• “Sistema computacional formado pela combinação de processadores que


podem executar diversos cálculos ou processos simultaneamente.”

1.4 Sistema Distribuído


• “Uma coleção de computadores independentes que, para os usuários do
sistema, parecem agir como um computador único” (Tanenbaum)  Interagem
1.5 Paralelo x Distribuído

• Sistema paralelo: todos os processadores podem ter acesso a uma memória


compartilhada para trocar informação entre eles

• Sistema distribuído: cada processador tem sua própria memória. A informação


é trocada através do envio de mensagens entre eles

(Para cada contexto algum modelo é melhor. Por exemplo, se tenho um


sistema que não pode falhar, talvez eu queira usar um sistema distribuído,
dividindo o sistema entre vários computadores)
Aula 2 - Classificação de sistemas paralelos e
distribuídos

2.1 Taxonomia de Flynn (1966)


• Considera os fluxos de dados e instruções: Dados e instruções podem vir em
um único fluxo ou em paralelo

(Pode, por exemplo, ler um dado e usá-lo para várias instruções etc)

2.2 Arquitetura SIMD


• Uma única instrução é aplicada a diversos dados
• Operação sincronizada
• Apropriada para problemas com um alto grau de regularidade
o Cálculo vetorial/matricial
o GPUs (processador gráfico)

2.3 Arquitetura MIMD


• Cada unidade de processamento opera de forma independente (cada um lê
sua instrução, a que precisar que pode ou não ser a mesma para duas
unidades distintas)
• Operação pode ser sincronizada, mas usualmente não é
• Permite executar tarefas bem diferentes em paralelo
2.3.1 Organização de programas paralelos/distribuídos MIMD
• Single Program Multiple Data (SPMD)
o Aplicação é desenvolvida como um único programa (escrito uma vez)
o Todas as ações/instruções necessárias para executar são descritas
dentro do mesmo código (funções)
o Meu Sistema Operacional/Ambiente de Execução extrai de partes
diferentes do programa as sequências de instruções que serão usadas
para executar cada tarefa
o Mais fácil de depurar inconsistências
o Ex.: Pthreads, MPI, Apache Spark

• Multiple Program Multiple Data (MPMD)


o Varios PCs trabalham para um mesmo obetivo e cada um executa uma
parte da tarefa que pode ter vindo de instruções diferentes 
Comunicam para resolver um problema comum
o Aplicação é composta por mais de um programa fonte
o Partes diferentes podem usar linguagens diferentes
o Integração das partes depende de API/protocolo
o Desenvolvimento não precisa ser todo ao mesmo tempo
o Ex.: aplicações distribuídas em geral (Web services)

2.4 Arquiteturas distribuídas


• Arquiteturas básicas: cliente-servidor (1 servidor atende as demandas de vários
clientes) e par-a-par (sem estrutura pré definida, todos os participantes
equivalente em termo de responsabilidade, características semelhantes)

• Exemplos reais:
(Sistema de arquivos)

(Rede de compartilhamento de arquivos)

2.5 Recaptulando

Aula 3 – Modelos de programação paralela

3.1 Memória compartilhada x troca de mensagens


• Memória compartilhada (forma de organizar a memória de um
multiprocessador/várias CPUs ; 2 fluxos de execução, pa e pb, cada um com
sua sequência de instruções para executar que enxergam uma área de
memória comum, pode haver trocas de informação)
• Troca de mensagens
• São abstrações de programação, então não significa que o hardware por baixo
é exatamente assim, são formas de programar
o Tenho linguagens de programação para máquinas de memória
compartilhada que operam segundo troca de mensagens e existem
abstrações com esquema de memória compartilhada que funcionam
para escrever problemas em máquinas que são na verdade distribuídas
e não tem uma memória em comum. Isso se chama “memória
compartilhada distribuída” (SDM)
o Não confundir o modelo de programação com a arquitetura da máquina!
Não são necessariamente condizentes

3.2 Paralelismo de dados x Paralelismo de tarefas

• Como dividir meu problema já que vou executar várias tarefas/linhas


paralelamente
• Paralelismo de dados (tarefa é igual para todos, cada um pega um pedaço dos
dados e faz algo)
• Paralelismo de tarefas (várias coisas/tarefas diferentes sendo feitas sobre um
mesmo dado ou não)
3.3 Paralelização automática
 Compilador específico toma a decisão de qual tipo de paralelização meu
código seguirá, de acordo com cada caso e se a máquina suporta e com o
mais adequado a uma arquitetura

3.4 Recaptulando

Aula 4 - Execução de um programa paralelo (cat


detector)URL
 Link: https://pamelafox.github.io/parallel-demo/ 
 O problema: Dado um conjunto de fotos (pré-carregadas), identificar as
fotos que contêm gatos
o Se há apenas um processador, ele executará todas as tarefas
o As threads/tarefas são divididas entre os 4 cores da máquina
simulada, não necessariamente 1 para cada, mas há uma média ao
longo do empo
 Mais detalhes e resultados nos Slides
o Depois de 4 processadores não fez muita diferença pelo limite de
nosso hardware
 Na prática as soluções tem certa ligação e isso afeta o desempenho geral

Você também pode gostar